diff --git a/.gitignore b/.gitignore index a884bde3..4576069f 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ /[Bb]uilds/ /[Ll]ogs/ /[Mm]emoryCaptures/ +/[Uu]serSettings/ # Never ignore Asset meta data !/[Aa]ssets/**/*.meta diff --git a/.wakatime-project b/.wakatime-project new file mode 100644 index 00000000..f5ab6580 --- /dev/null +++ b/.wakatime-project @@ -0,0 +1,2 @@ +ProjectExa + diff --git a/Assets/Editor.meta b/Assets/Editor.meta new file mode 100644 index 00000000..21b4d56e --- /dev/null +++ b/Assets/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 60dfe253a8da136498038cd0720b380c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/DefaultColors.colors b/Assets/Editor/DefaultColors.colors new file mode 100644 index 00000000..15b89e73 --- /dev/null +++ b/Assets/Editor/DefaultColors.colors @@ -0,0 +1,27 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &1 +MonoBehaviour: + m_ObjectHideFlags: 52 + 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: 12323, guid: 0000000000000000e000000000000000, type: 0} + m_Name: DefaultColors + m_EditorClassIdentifier: + m_Presets: + - m_Name: + m_Color: {r: 0.15686275, g: 0.15686275, b: 0.19607843, a: 1} + - m_Name: + m_Color: {r: 0.23529412, g: 0.23529412, b: 0.27450982, a: 1} + - m_Name: + m_Color: {r: 0.39215687, g: 0.39215687, b: 0.43137255, a: 1} + - m_Name: + m_Color: {r: 0.8627451, g: 0.8627451, b: 0.8627451, a: 1} + - m_Name: + m_Color: {r: 0.29411766, g: 0.7254902, b: 0.7058824, a: 1} + - m_Name: + m_Color: {r: 0.7058824, g: 0.27450982, b: 0.29411766, a: 1} diff --git a/Assets/Editor/DefaultColors.colors.meta b/Assets/Editor/DefaultColors.colors.meta new file mode 100644 index 00000000..24e6b736 --- /dev/null +++ b/Assets/Editor/DefaultColors.colors.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6726356887ef5bb4fa47a62c2e07f870 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.gitignore b/Assets/Plugins/.gitignore new file mode 100644 index 00000000..5df79bc6 --- /dev/null +++ b/Assets/Plugins/.gitignore @@ -0,0 +1 @@ +Vectrosity diff --git a/Assets/Plugins/DOTween/Modules/DOTweenModulePhysics.cs b/Assets/Plugins/DOTween/Modules/DOTweenModulePhysics.cs index 9e4f138a..40ef70bb 100644 --- a/Assets/Plugins/DOTween/Modules/DOTweenModulePhysics.cs +++ b/Assets/Plugins/DOTween/Modules/DOTweenModulePhysics.cs @@ -12,211 +12,316 @@ #pragma warning disable 1591 -namespace DG.Tweening -{ - public static class DOTweenModulePhysics - { - #region Shortcuts +namespace DG.Tweening { + public static class DOTweenModulePhysics { + #region Shortcuts - #region Rigidbody + #region Rigidbody - /// Tweens a Rigidbody's position to the given value. - /// Also stores the rigidbody as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween + /// + /// Tweens a Rigidbody's position to the given value. + /// Also stores the rigidbody as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOMove(this Rigidbody target, Vector3 endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => target.position, target.MovePosition, endValue, duration); + public static TweenerCore DOMove(this Rigidbody target, Vector3 endValue, float duration, bool snapping = false) { + var t = DOTween.To(() => target.position, target.MovePosition, endValue, duration); t.SetOptions(snapping).SetTarget(target); + return t; } - /// Tweens a Rigidbody's X position to the given value. - /// Also stores the rigidbody as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween + /// + /// Tweens a Rigidbody's X position to the given value. + /// Also stores the rigidbody as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOMoveX(this Rigidbody target, float endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => target.position, target.MovePosition, new Vector3(endValue, 0, 0), duration); + public static TweenerCore DOMoveX(this Rigidbody target, float endValue, float duration, bool snapping = false) { + var t = DOTween.To(() => target.position, target.MovePosition, new Vector3(endValue, 0, 0), duration); t.SetOptions(AxisConstraint.X, snapping).SetTarget(target); + return t; } - /// Tweens a Rigidbody's Y position to the given value. - /// Also stores the rigidbody as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween + /// + /// Tweens a Rigidbody's Y position to the given value. + /// Also stores the rigidbody as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOMoveY(this Rigidbody target, float endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => target.position, target.MovePosition, new Vector3(0, endValue, 0), duration); + public static TweenerCore DOMoveY(this Rigidbody target, float endValue, float duration, bool snapping = false) { + var t = DOTween.To(() => target.position, target.MovePosition, new Vector3(0, endValue, 0), duration); t.SetOptions(AxisConstraint.Y, snapping).SetTarget(target); + return t; } - /// Tweens a Rigidbody's Z position to the given value. - /// Also stores the rigidbody as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween + /// + /// Tweens a Rigidbody's Z position to the given value. + /// Also stores the rigidbody as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOMoveZ(this Rigidbody target, float endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => target.position, target.MovePosition, new Vector3(0, 0, endValue), duration); + public static TweenerCore DOMoveZ(this Rigidbody target, float endValue, float duration, bool snapping = false) { + var t = DOTween.To(() => target.position, target.MovePosition, new Vector3(0, 0, endValue), duration); t.SetOptions(AxisConstraint.Z, snapping).SetTarget(target); + return t; } - /// Tweens a Rigidbody's rotation to the given value. - /// Also stores the rigidbody as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween + /// + /// Tweens a Rigidbody's rotation to the given value. + /// Also stores the rigidbody as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween /// Rotation mode - public static TweenerCore DORotate(this Rigidbody target, Vector3 endValue, float duration, RotateMode mode = RotateMode.Fast) - { - TweenerCore t = DOTween.To(() => target.rotation, target.MoveRotation, endValue, duration); + public static TweenerCore DORotate(this Rigidbody target, Vector3 endValue, float duration, RotateMode mode = RotateMode.Fast) { + var t = DOTween.To(() => target.rotation, target.MoveRotation, endValue, duration); t.SetTarget(target); t.plugOptions.rotateMode = mode; + return t; } - /// Tweens a Rigidbody's rotation so that it will look towards the given position. - /// Also stores the rigidbody as the tween's target so it can be used for filtered operations - /// The position to look atThe duration of the tween + /// + /// Tweens a Rigidbody's rotation so that it will look towards the given position. + /// Also stores the rigidbody as the tween's target so it can be used for filtered operations + /// + /// The position to look at + /// The duration of the tween /// Eventual axis constraint for the rotation /// The vector that defines in which direction up is (default: Vector3.up) - public static TweenerCore DOLookAt(this Rigidbody target, Vector3 towards, float duration, AxisConstraint axisConstraint = AxisConstraint.None, Vector3? up = null) - { - TweenerCore t = DOTween.To(() => target.rotation, target.MoveRotation, towards, duration) - .SetTarget(target).SetSpecialStartupMode(SpecialStartupMode.SetLookAt); + public static TweenerCore DOLookAt(this Rigidbody target, Vector3 towards, float duration, AxisConstraint axisConstraint = AxisConstraint.None, Vector3? up = null) { + var t = DOTween.To(() => target.rotation, target.MoveRotation, towards, duration) + .SetTarget(target) + .SetSpecialStartupMode(SpecialStartupMode.SetLookAt); + t.plugOptions.axisConstraint = axisConstraint; - t.plugOptions.up = (up == null) ? Vector3.up : (Vector3)up; + t.plugOptions.up = up == null ? Vector3.up : (Vector3) up; + return t; } - #region Special + #region Special - /// Tweens a Rigidbody's position to the given value, while also applying a jump effect along the Y axis. - /// Returns a Sequence instead of a Tweener. - /// Also stores the Rigidbody as the tween's target so it can be used for filtered operations + /// + /// Tweens a Rigidbody's position to the given value, while also applying a jump effect along the Y axis. + /// Returns a Sequence instead of a Tweener. + /// Also stores the Rigidbody as the tween's target so it can be used for filtered operations + /// /// The end value to reach /// Power of the jump (the max height of the jump is represented by this plus the final Y offset) /// Total number of jumps /// The duration of the tween /// If TRUE the tween will smoothly snap all values to integers - public static Sequence DOJump(this Rigidbody target, Vector3 endValue, float jumpPower, int numJumps, float duration, bool snapping = false) - { - if (numJumps < 1) numJumps = 1; + public static Sequence DOJump(this Rigidbody target, Vector3 endValue, float jumpPower, int numJumps, float duration, bool snapping = false) { + if (numJumps < 1) { + numJumps = 1; + } + float startPosY = 0; float offsetY = -1; - bool offsetYSet = false; - Sequence s = DOTween.Sequence(); + var offsetYSet = false; + var s = DOTween.Sequence(); + Tween yTween = DOTween.To(() => target.position, target.MovePosition, new Vector3(0, jumpPower, 0), duration / (numJumps * 2)) - .SetOptions(AxisConstraint.Y, snapping).SetEase(Ease.OutQuad).SetRelative() + .SetOptions(AxisConstraint.Y, snapping) + .SetEase(Ease.OutQuad) + .SetRelative() .SetLoops(numJumps * 2, LoopType.Yoyo) .OnStart(() => startPosY = target.position.y); - s.Append(DOTween.To(() => target.position, target.MovePosition, new Vector3(endValue.x, 0, 0), duration) - .SetOptions(AxisConstraint.X, snapping).SetEase(Ease.Linear) - ).Join(DOTween.To(() => target.position, target.MovePosition, new Vector3(0, 0, endValue.z), duration) - .SetOptions(AxisConstraint.Z, snapping).SetEase(Ease.Linear) - ).Join(yTween) - .SetTarget(target).SetEase(DOTween.defaultEaseType); - yTween.OnUpdate(() => - { - if (!offsetYSet) - { - offsetYSet = true; - offsetY = s.isRelative ? endValue.y : endValue.y - startPosY; + + s.Append( + DOTween.To(() => target.position, target.MovePosition, new Vector3(endValue.x, 0, 0), duration) + .SetOptions(AxisConstraint.X, snapping) + .SetEase(Ease.Linear) + ) + .Join( + DOTween.To(() => target.position, target.MovePosition, new Vector3(0, 0, endValue.z), duration) + .SetOptions(AxisConstraint.Z, snapping) + .SetEase(Ease.Linear) + ) + .Join(yTween) + .SetTarget(target) + .SetEase(DOTween.defaultEaseType); + + yTween.OnUpdate( + () => { + if (!offsetYSet) { + offsetYSet = true; + offsetY = s.isRelative ? endValue.y : endValue.y - startPosY; + } + + var pos = target.position; + pos.y += DOVirtual.EasedValue(0, offsetY, yTween.ElapsedPercentage(), Ease.OutQuad); + target.MovePosition(pos); } - Vector3 pos = target.position; - pos.y += DOVirtual.EasedValue(0, offsetY, yTween.ElapsedPercentage(), Ease.OutQuad); - target.MovePosition(pos); - }); + ); + return s; } - /// Tweens a Rigidbody's position through the given path waypoints, using the chosen path algorithm. - /// Also stores the Rigidbody as the tween's target so it can be used for filtered operations. - /// NOTE: to tween a rigidbody correctly it should be set to kinematic at least while being tweened. - /// BEWARE: doesn't work on Windows Phone store (waiting for Unity to fix their own bug). - /// If you plan to publish there you should use a regular transform.DOPath. + /// + /// Tweens a Rigidbody's position through the given path waypoints, using the chosen path algorithm. + /// Also stores the Rigidbody as the tween's target so it can be used for filtered operations. + /// NOTE: to tween a rigidbody correctly it should be set to kinematic at least while being tweened. + /// + /// BEWARE: doesn't work on Windows Phone store (waiting for Unity to fix their own bug). + /// If you plan to publish there you should use a regular transform.DOPath. + /// + /// /// The waypoints to go through /// The duration of the tween /// The type of path: Linear (straight path) or CatmullRom (curved CatmullRom path) /// The path mode: 3D, side-scroller 2D, top-down 2D - /// The resolution of the path (useless in case of Linear paths): higher resolutions make for more detailed curved paths but are more expensive. - /// Defaults to 10, but a value of 5 is usually enough if you don't have dramatic long curves between waypoints - /// The color of the path (shown when gizmos are active in the Play panel and the tween is running) + /// + /// The resolution of the path (useless in case of Linear paths): higher resolutions make for more detailed curved + /// paths but are more expensive. + /// Defaults to 10, but a value of 5 is usually enough if you don't have dramatic long curves between waypoints + /// + /// + /// The color of the path (shown when gizmos are active in the Play panel and the tween is + /// running) + /// public static TweenerCore DOPath( - this Rigidbody target, Vector3[] path, float duration, PathType pathType = PathType.Linear, - PathMode pathMode = PathMode.Full3D, int resolution = 10, Color? gizmoColor = null - ) - { - if (resolution < 1) resolution = 1; - TweenerCore t = DOTween.To(PathPlugin.Get(), () => target.position, target.MovePosition, new Path(pathType, path, resolution, gizmoColor), duration) - .SetTarget(target).SetUpdate(UpdateType.Fixed); + this Rigidbody target, + Vector3[] path, + float duration, + PathType pathType = PathType.Linear, + PathMode pathMode = PathMode.Full3D, + int resolution = 10, + Color? gizmoColor = null + ) { + if (resolution < 1) { + resolution = 1; + } + + var t = DOTween.To( + PathPlugin.Get(), + () => target.position, + target.MovePosition, + new Path(pathType, path, resolution, gizmoColor), + duration + ) + .SetTarget(target) + .SetUpdate(UpdateType.Fixed); t.plugOptions.isRigidbody = true; t.plugOptions.mode = pathMode; + return t; } - /// Tweens a Rigidbody's localPosition through the given path waypoints, using the chosen path algorithm. - /// Also stores the Rigidbody as the tween's target so it can be used for filtered operations - /// NOTE: to tween a rigidbody correctly it should be set to kinematic at least while being tweened. - /// BEWARE: doesn't work on Windows Phone store (waiting for Unity to fix their own bug). - /// If you plan to publish there you should use a regular transform.DOLocalPath. + /// + /// Tweens a Rigidbody's localPosition through the given path waypoints, using the chosen path algorithm. + /// Also stores the Rigidbody as the tween's target so it can be used for filtered operations + /// NOTE: to tween a rigidbody correctly it should be set to kinematic at least while being tweened. + /// + /// BEWARE: doesn't work on Windows Phone store (waiting for Unity to fix their own bug). + /// If you plan to publish there you should use a regular transform.DOLocalPath. + /// + /// /// The waypoint to go through /// The duration of the tween /// The type of path: Linear (straight path) or CatmullRom (curved CatmullRom path) /// The path mode: 3D, side-scroller 2D, top-down 2D - /// The resolution of the path: higher resolutions make for more detailed curved paths but are more expensive. - /// Defaults to 10, but a value of 5 is usually enough if you don't have dramatic long curves between waypoints - /// The color of the path (shown when gizmos are active in the Play panel and the tween is running) + /// + /// The resolution of the path: higher resolutions make for more detailed curved paths but are more expensive. + /// Defaults to 10, but a value of 5 is usually enough if you don't have dramatic long curves between waypoints + /// + /// + /// The color of the path (shown when gizmos are active in the Play panel and the tween is + /// running) + /// public static TweenerCore DOLocalPath( - this Rigidbody target, Vector3[] path, float duration, PathType pathType = PathType.Linear, - PathMode pathMode = PathMode.Full3D, int resolution = 10, Color? gizmoColor = null - ) - { - if (resolution < 1) resolution = 1; - Transform trans = target.transform; - TweenerCore t = DOTween.To(PathPlugin.Get(), () => trans.localPosition, x => target.MovePosition(trans.parent == null ? x : trans.parent.TransformPoint(x)), new Path(pathType, path, resolution, gizmoColor), duration) - .SetTarget(target).SetUpdate(UpdateType.Fixed); + this Rigidbody target, + Vector3[] path, + float duration, + PathType pathType = PathType.Linear, + PathMode pathMode = PathMode.Full3D, + int resolution = 10, + Color? gizmoColor = null + ) { + if (resolution < 1) { + resolution = 1; + } + + var trans = target.transform; + + var t = DOTween.To( + PathPlugin.Get(), + () => trans.localPosition, + x => target.MovePosition(trans.parent == null ? x : trans.parent.TransformPoint(x)), + new Path(pathType, path, resolution, gizmoColor), + duration + ) + .SetTarget(target) + .SetUpdate(UpdateType.Fixed); t.plugOptions.isRigidbody = true; t.plugOptions.mode = pathMode; t.plugOptions.useLocalPosition = true; + return t; } // Used by path editor when creating the actual tween, so it can pass a pre-compiled path internal static TweenerCore DOPath( - this Rigidbody target, Path path, float duration, PathMode pathMode = PathMode.Full3D - ) - { - TweenerCore t = DOTween.To(PathPlugin.Get(), () => target.position, target.MovePosition, path, duration) + this Rigidbody target, + Path path, + float duration, + PathMode pathMode = PathMode.Full3D + ) { + var t = DOTween.To( + PathPlugin.Get(), + () => target.position, + target.MovePosition, + path, + duration + ) .SetTarget(target); t.plugOptions.isRigidbody = true; t.plugOptions.mode = pathMode; + return t; } internal static TweenerCore DOLocalPath( - this Rigidbody target, Path path, float duration, PathMode pathMode = PathMode.Full3D - ) - { - Transform trans = target.transform; - TweenerCore t = DOTween.To(PathPlugin.Get(), () => trans.localPosition, x => target.MovePosition(trans.parent == null ? x : trans.parent.TransformPoint(x)), path, duration) + this Rigidbody target, + Path path, + float duration, + PathMode pathMode = PathMode.Full3D + ) { + var trans = target.transform; + + var t = DOTween.To( + PathPlugin.Get(), + () => trans.localPosition, + x => target.MovePosition(trans.parent == null ? x : trans.parent.TransformPoint(x)), + path, + duration + ) .SetTarget(target); t.plugOptions.isRigidbody = true; t.plugOptions.mode = pathMode; t.plugOptions.useLocalPosition = true; + return t; } - #endregion Special + #endregion Special - #endregion Rigidbody + #endregion Rigidbody - #endregion Shortcuts + #endregion Shortcuts } } diff --git a/Assets/Plugins/DOTween/Modules/DOTweenModulePhysics2D.cs b/Assets/Plugins/DOTween/Modules/DOTweenModulePhysics2D.cs index 618049d6..a86eec55 100644 --- a/Assets/Plugins/DOTween/Modules/DOTweenModulePhysics2D.cs +++ b/Assets/Plugins/DOTween/Modules/DOTweenModulePhysics2D.cs @@ -9,102 +9,130 @@ #pragma warning disable 1591 -namespace DG.Tweening -{ - public static class DOTweenModulePhysics2D - { - #region Shortcuts +namespace DG.Tweening { + public static class DOTweenModulePhysics2D { + #region Shortcuts - #region Rigidbody2D Shortcuts + #region Rigidbody2D Shortcuts - /// Tweens a Rigidbody2D's position to the given value. - /// Also stores the Rigidbody2D as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween + /// + /// Tweens a Rigidbody2D's position to the given value. + /// Also stores the Rigidbody2D as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOMove(this Rigidbody2D target, Vector2 endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => target.position, target.MovePosition, endValue, duration); + public static TweenerCore DOMove(this Rigidbody2D target, Vector2 endValue, float duration, bool snapping = false) { + var t = DOTween.To(() => target.position, target.MovePosition, endValue, duration); t.SetOptions(snapping).SetTarget(target); + return t; } - /// Tweens a Rigidbody2D's X position to the given value. - /// Also stores the Rigidbody2D as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween + /// + /// Tweens a Rigidbody2D's X position to the given value. + /// Also stores the Rigidbody2D as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOMoveX(this Rigidbody2D target, float endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => target.position, target.MovePosition, new Vector2(endValue, 0), duration); + public static TweenerCore DOMoveX(this Rigidbody2D target, float endValue, float duration, bool snapping = false) { + var t = DOTween.To(() => target.position, target.MovePosition, new Vector2(endValue, 0), duration); t.SetOptions(AxisConstraint.X, snapping).SetTarget(target); + return t; } - /// Tweens a Rigidbody2D's Y position to the given value. - /// Also stores the Rigidbody2D as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween + /// + /// Tweens a Rigidbody2D's Y position to the given value. + /// Also stores the Rigidbody2D as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOMoveY(this Rigidbody2D target, float endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => target.position, target.MovePosition, new Vector2(0, endValue), duration); + public static TweenerCore DOMoveY(this Rigidbody2D target, float endValue, float duration, bool snapping = false) { + var t = DOTween.To(() => target.position, target.MovePosition, new Vector2(0, endValue), duration); t.SetOptions(AxisConstraint.Y, snapping).SetTarget(target); + return t; } - /// Tweens a Rigidbody2D's rotation to the given value. - /// Also stores the Rigidbody2D as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - public static TweenerCore DORotate(this Rigidbody2D target, float endValue, float duration) - { - TweenerCore t = DOTween.To(() => target.rotation, target.MoveRotation, endValue, duration); + /// + /// Tweens a Rigidbody2D's rotation to the given value. + /// Also stores the Rigidbody2D as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween + public static TweenerCore DORotate(this Rigidbody2D target, float endValue, float duration) { + var t = DOTween.To(() => target.rotation, target.MoveRotation, endValue, duration); t.SetTarget(target); + return t; } - #region Special + #region Special - /// Tweens a Rigidbody2D's position to the given value, while also applying a jump effect along the Y axis. - /// Returns a Sequence instead of a Tweener. - /// Also stores the Rigidbody2D as the tween's target so it can be used for filtered operations. - /// IMPORTANT: a rigidbody2D can't be animated in a jump arc using MovePosition, so the tween will directly set the position + /// + /// Tweens a Rigidbody2D's position to the given value, while also applying a jump effect along the Y axis. + /// Returns a Sequence instead of a Tweener. + /// Also stores the Rigidbody2D as the tween's target so it can be used for filtered operations. + /// + /// IMPORTANT: a rigidbody2D can't be animated in a jump arc using MovePosition, so the tween will directly set + /// the position + /// + /// /// The end value to reach /// Power of the jump (the max height of the jump is represented by this plus the final Y offset) /// Total number of jumps /// The duration of the tween /// If TRUE the tween will smoothly snap all values to integers - public static Sequence DOJump(this Rigidbody2D target, Vector2 endValue, float jumpPower, int numJumps, float duration, bool snapping = false) - { - if (numJumps < 1) numJumps = 1; + public static Sequence DOJump(this Rigidbody2D target, Vector2 endValue, float jumpPower, int numJumps, float duration, bool snapping = false) { + if (numJumps < 1) { + numJumps = 1; + } + float startPosY = 0; float offsetY = -1; - bool offsetYSet = false; - Sequence s = DOTween.Sequence(); + var offsetYSet = false; + var s = DOTween.Sequence(); + Tween yTween = DOTween.To(() => target.position, x => target.position = x, new Vector2(0, jumpPower), duration / (numJumps * 2)) - .SetOptions(AxisConstraint.Y, snapping).SetEase(Ease.OutQuad).SetRelative() + .SetOptions(AxisConstraint.Y, snapping) + .SetEase(Ease.OutQuad) + .SetRelative() .SetLoops(numJumps * 2, LoopType.Yoyo) .OnStart(() => startPosY = target.position.y); - s.Append(DOTween.To(() => target.position, x => target.position = x, new Vector2(endValue.x, 0), duration) - .SetOptions(AxisConstraint.X, snapping).SetEase(Ease.Linear) - ).Join(yTween) - .SetTarget(target).SetEase(DOTween.defaultEaseType); - yTween.OnUpdate(() => - { - if (!offsetYSet) - { - offsetYSet = true; - offsetY = s.isRelative ? endValue.y : endValue.y - startPosY; + + s.Append( + DOTween.To(() => target.position, x => target.position = x, new Vector2(endValue.x, 0), duration) + .SetOptions(AxisConstraint.X, snapping) + .SetEase(Ease.Linear) + ) + .Join(yTween) + .SetTarget(target) + .SetEase(DOTween.defaultEaseType); + + yTween.OnUpdate( + () => { + if (!offsetYSet) { + offsetYSet = true; + offsetY = s.isRelative ? endValue.y : endValue.y - startPosY; + } + + Vector3 pos = target.position; + pos.y += DOVirtual.EasedValue(0, offsetY, yTween.ElapsedPercentage(), Ease.OutQuad); + target.MovePosition(pos); } - Vector3 pos = target.position; - pos.y += DOVirtual.EasedValue(0, offsetY, yTween.ElapsedPercentage(), Ease.OutQuad); - target.MovePosition(pos); - }); + ); + return s; } - #endregion Special + #endregion Special - #endregion Rigidbody2D Shortcuts + #endregion Rigidbody2D Shortcuts - #endregion Shortcuts + #endregion Shortcuts } } diff --git a/Assets/Plugins/DOTween/Modules/DOTweenModuleSprite.cs b/Assets/Plugins/DOTween/Modules/DOTweenModuleSprite.cs index bb56b86c..77ca4b6d 100644 --- a/Assets/Plugins/DOTween/Modules/DOTweenModuleSprite.cs +++ b/Assets/Plugins/DOTween/Modules/DOTweenModuleSprite.cs @@ -9,89 +9,108 @@ #pragma warning disable 1591 -namespace DG.Tweening -{ - public static class DOTweenModuleSprite - { - #region Shortcuts - - #region SpriteRenderer - - /// Tweens a SpriteRenderer's color to the given value. - /// Also stores the spriteRenderer as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - public static TweenerCore DOColor(this SpriteRenderer target, Color endValue, float duration) - { - TweenerCore t = DOTween.To(() => target.color, x => target.color = x, endValue, duration); +namespace DG.Tweening { + public static class DOTweenModuleSprite { + #region Shortcuts + + #region SpriteRenderer + + /// + /// Tweens a SpriteRenderer's color to the given value. + /// Also stores the spriteRenderer as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween + public static TweenerCore DOColor(this SpriteRenderer target, Color endValue, float duration) { + var t = DOTween.To(() => target.color, x => target.color = x, endValue, duration); t.SetTarget(target); + return t; } - /// Tweens a Material's alpha color to the given value. - /// Also stores the spriteRenderer as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - public static TweenerCore DOFade(this SpriteRenderer target, float endValue, float duration) - { - TweenerCore t = DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration); + /// + /// Tweens a Material's alpha color to the given value. + /// Also stores the spriteRenderer as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween + public static TweenerCore DOFade(this SpriteRenderer target, float endValue, float duration) { + var t = DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration); t.SetTarget(target); + return t; } - /// Tweens a SpriteRenderer's color using the given gradient - /// (NOTE 1: only uses the colors of the gradient, not the alphas - NOTE 2: creates a Sequence, not a Tweener). - /// Also stores the image as the tween's target so it can be used for filtered operations - /// The gradient to useThe duration of the tween - public static Sequence DOGradientColor(this SpriteRenderer target, Gradient gradient, float duration) - { - Sequence s = DOTween.Sequence(); - GradientColorKey[] colors = gradient.colorKeys; - int len = colors.Length; - for (int i = 0; i < len; ++i) - { - GradientColorKey c = colors[i]; - if (i == 0 && c.time <= 0) - { + /// + /// Tweens a SpriteRenderer's color using the given gradient + /// (NOTE 1: only uses the colors of the gradient, not the alphas - NOTE 2: creates a Sequence, not a Tweener). + /// Also stores the image as the tween's target so it can be used for filtered operations + /// + /// The gradient to use + /// The duration of the tween + public static Sequence DOGradientColor(this SpriteRenderer target, Gradient gradient, float duration) { + var s = DOTween.Sequence(); + var colors = gradient.colorKeys; + var len = colors.Length; + + for (var i = 0; i < len; ++i) { + var c = colors[i]; + + if (i == 0 && c.time <= 0) { target.color = c.color; + continue; } - float colorDuration = i == len - 1 + + var colorDuration = i == len - 1 ? duration - s.Duration(false) // Verifies that total duration is correct : duration * (i == 0 ? c.time : c.time - colors[i - 1].time); + s.Append(target.DOColor(c.color, colorDuration).SetEase(Ease.Linear)); } + s.SetTarget(target); + return s; } - #endregion SpriteRenderer + #endregion SpriteRenderer - #region Blendables + #region Blendables - #region SpriteRenderer + #region SpriteRenderer - /// Tweens a SpriteRenderer's color to the given value, - /// in a way that allows other DOBlendableColor tweens to work together on the same target, - /// instead than fight each other as multiple DOColor would do. - /// Also stores the SpriteRenderer as the tween's target so it can be used for filtered operations - /// The value to tween toThe duration of the tween - public static Tweener DOBlendableColor(this SpriteRenderer target, Color endValue, float duration) - { + /// + /// Tweens a SpriteRenderer's color to the given value, + /// in a way that allows other DOBlendableColor tweens to work together on the same target, + /// instead than fight each other as multiple DOColor would do. + /// Also stores the SpriteRenderer as the tween's target so it can be used for filtered operations + /// + /// The value to tween to + /// The duration of the tween + public static Tweener DOBlendableColor(this SpriteRenderer target, Color endValue, float duration) { endValue = endValue - target.color; - Color to = new Color(0, 0, 0, 0); - return DOTween.To(() => to, x => - { - Color diff = x - to; - to = x; - target.color += diff; - }, endValue, duration) - .Blendable().SetTarget(target); + var to = new Color(0, 0, 0, 0); + + return DOTween.To( + () => to, + x => { + var diff = x - to; + to = x; + target.color += diff; + }, + endValue, + duration + ) + .Blendable() + .SetTarget(target); } - #endregion SpriteRenderer + #endregion SpriteRenderer - #endregion Blendables + #endregion Blendables - #endregion Shortcuts + #endregion Shortcuts } } diff --git a/Assets/Plugins/DOTween/Modules/DOTweenModuleUI.cs b/Assets/Plugins/DOTween/Modules/DOTweenModuleUI.cs index c21bbbeb..4e9b57da 100644 --- a/Assets/Plugins/DOTween/Modules/DOTweenModuleUI.cs +++ b/Assets/Plugins/DOTween/Modules/DOTweenModuleUI.cs @@ -11,622 +11,836 @@ #pragma warning disable 1591 -namespace DG.Tweening -{ - public static class DOTweenModuleUI - { - #region Shortcuts - - #region CanvasGroup - - /// Tweens a CanvasGroup's alpha color to the given value. - /// Also stores the canvasGroup as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - public static TweenerCore DOFade(this CanvasGroup target, float endValue, float duration) - { - TweenerCore t = DOTween.To(() => target.alpha, x => target.alpha = x, endValue, duration); +namespace DG.Tweening { + public static class DOTweenModuleUI { + // █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ + // ███ INTERNAL CLASSES ████████████████████████████████████████████████████████████████████████████████████████████████ + // █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ + + public static class Utils { + /// + /// Converts the anchoredPosition of the first RectTransform to the second RectTransform, + /// taking into consideration offset, anchors and pivot, and returns the new anchoredPosition + /// + public static Vector2 SwitchToRectTransform(RectTransform from, RectTransform to) { + Vector2 localPoint; + var fromPivotDerivedOffset = new Vector2(from.rect.width * 0.5f + from.rect.xMin, from.rect.height * 0.5f + from.rect.yMin); + var screenP = RectTransformUtility.WorldToScreenPoint(null, from.position); + screenP += fromPivotDerivedOffset; + RectTransformUtility.ScreenPointToLocalPointInRectangle(to, screenP, null, out localPoint); + var pivotDerivedOffset = new Vector2(to.rect.width * 0.5f + to.rect.xMin, to.rect.height * 0.5f + to.rect.yMin); + + return to.anchoredPosition + localPoint - pivotDerivedOffset; + } + } + + #region Shortcuts + + #region CanvasGroup + + /// + /// Tweens a CanvasGroup's alpha color to the given value. + /// Also stores the canvasGroup as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween + public static TweenerCore DOFade(this CanvasGroup target, float endValue, float duration) { + var t = DOTween.To(() => target.alpha, x => target.alpha = x, endValue, duration); t.SetTarget(target); + return t; } - #endregion CanvasGroup + #endregion CanvasGroup - #region Graphic + #region Graphic - /// Tweens an Graphic's color to the given value. - /// Also stores the image as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - public static TweenerCore DOColor(this Graphic target, Color endValue, float duration) - { - TweenerCore t = DOTween.To(() => target.color, x => target.color = x, endValue, duration); + /// + /// Tweens an Graphic's color to the given value. + /// Also stores the image as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween + public static TweenerCore DOColor(this Graphic target, Color endValue, float duration) { + var t = DOTween.To(() => target.color, x => target.color = x, endValue, duration); t.SetTarget(target); + return t; } - /// Tweens an Graphic's alpha color to the given value. - /// Also stores the image as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - public static TweenerCore DOFade(this Graphic target, float endValue, float duration) - { - TweenerCore t = DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration); + /// + /// Tweens an Graphic's alpha color to the given value. + /// Also stores the image as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween + public static TweenerCore DOFade(this Graphic target, float endValue, float duration) { + var t = DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration); t.SetTarget(target); + return t; } - #endregion Graphic + #endregion Graphic - #region Image + #region Image - /// Tweens an Image's color to the given value. - /// Also stores the image as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - public static TweenerCore DOColor(this Image target, Color endValue, float duration) - { - TweenerCore t = DOTween.To(() => target.color, x => target.color = x, endValue, duration); + /// + /// Tweens an Image's color to the given value. + /// Also stores the image as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween + public static TweenerCore DOColor(this Image target, Color endValue, float duration) { + var t = DOTween.To(() => target.color, x => target.color = x, endValue, duration); t.SetTarget(target); + return t; } - /// Tweens an Image's alpha color to the given value. - /// Also stores the image as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - public static TweenerCore DOFade(this Image target, float endValue, float duration) - { - TweenerCore t = DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration); + /// + /// Tweens an Image's alpha color to the given value. + /// Also stores the image as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween + public static TweenerCore DOFade(this Image target, float endValue, float duration) { + var t = DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration); t.SetTarget(target); + return t; } - /// Tweens an Image's fillAmount to the given value. - /// Also stores the image as the tween's target so it can be used for filtered operations - /// The end value to reach (0 to 1)The duration of the tween - public static TweenerCore DOFillAmount(this Image target, float endValue, float duration) - { - if (endValue > 1) endValue = 1; - else if (endValue < 0) endValue = 0; - TweenerCore t = DOTween.To(() => target.fillAmount, x => target.fillAmount = x, endValue, duration); + /// + /// Tweens an Image's fillAmount to the given value. + /// Also stores the image as the tween's target so it can be used for filtered operations + /// + /// The end value to reach (0 to 1) + /// The duration of the tween + public static TweenerCore DOFillAmount(this Image target, float endValue, float duration) { + if (endValue > 1) { + endValue = 1; + } else if (endValue < 0) { + endValue = 0; + } + + var t = DOTween.To(() => target.fillAmount, x => target.fillAmount = x, endValue, duration); t.SetTarget(target); + return t; } - /// Tweens an Image's colors using the given gradient - /// (NOTE 1: only uses the colors of the gradient, not the alphas - NOTE 2: creates a Sequence, not a Tweener). - /// Also stores the image as the tween's target so it can be used for filtered operations - /// The gradient to useThe duration of the tween - public static Sequence DOGradientColor(this Image target, Gradient gradient, float duration) - { - Sequence s = DOTween.Sequence(); - GradientColorKey[] colors = gradient.colorKeys; - int len = colors.Length; - for (int i = 0; i < len; ++i) - { - GradientColorKey c = colors[i]; - if (i == 0 && c.time <= 0) - { + /// + /// Tweens an Image's colors using the given gradient + /// (NOTE 1: only uses the colors of the gradient, not the alphas - NOTE 2: creates a Sequence, not a Tweener). + /// Also stores the image as the tween's target so it can be used for filtered operations + /// + /// The gradient to use + /// The duration of the tween + public static Sequence DOGradientColor(this Image target, Gradient gradient, float duration) { + var s = DOTween.Sequence(); + var colors = gradient.colorKeys; + var len = colors.Length; + + for (var i = 0; i < len; ++i) { + var c = colors[i]; + + if (i == 0 && c.time <= 0) { target.color = c.color; + continue; } - float colorDuration = i == len - 1 + + var colorDuration = i == len - 1 ? duration - s.Duration(false) // Verifies that total duration is correct : duration * (i == 0 ? c.time : c.time - colors[i - 1].time); + s.Append(target.DOColor(c.color, colorDuration).SetEase(Ease.Linear)); } + s.SetTarget(target); + return s; } - #endregion Image + #endregion Image - #region LayoutElement + #region LayoutElement - /// Tweens an LayoutElement's flexibleWidth/Height to the given value. - /// Also stores the LayoutElement as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween + /// + /// Tweens an LayoutElement's flexibleWidth/Height to the given value. + /// Also stores the LayoutElement as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOFlexibleSize(this LayoutElement target, Vector2 endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => new Vector2(target.flexibleWidth, target.flexibleHeight), x => - { - target.flexibleWidth = x.x; - target.flexibleHeight = x.y; - }, endValue, duration); + public static TweenerCore DOFlexibleSize(this LayoutElement target, Vector2 endValue, float duration, bool snapping = false) { + var t = DOTween.To( + () => new Vector2(target.flexibleWidth, target.flexibleHeight), + x => { + target.flexibleWidth = x.x; + target.flexibleHeight = x.y; + }, + endValue, + duration + ); + t.SetOptions(snapping).SetTarget(target); + return t; } - /// Tweens an LayoutElement's minWidth/Height to the given value. - /// Also stores the LayoutElement as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween + /// + /// Tweens an LayoutElement's minWidth/Height to the given value. + /// Also stores the LayoutElement as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOMinSize(this LayoutElement target, Vector2 endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => new Vector2(target.minWidth, target.minHeight), x => - { - target.minWidth = x.x; - target.minHeight = x.y; - }, endValue, duration); + public static TweenerCore DOMinSize(this LayoutElement target, Vector2 endValue, float duration, bool snapping = false) { + var t = DOTween.To( + () => new Vector2(target.minWidth, target.minHeight), + x => { + target.minWidth = x.x; + target.minHeight = x.y; + }, + endValue, + duration + ); + t.SetOptions(snapping).SetTarget(target); + return t; } - /// Tweens an LayoutElement's preferredWidth/Height to the given value. - /// Also stores the LayoutElement as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween + /// + /// Tweens an LayoutElement's preferredWidth/Height to the given value. + /// Also stores the LayoutElement as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOPreferredSize(this LayoutElement target, Vector2 endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => new Vector2(target.preferredWidth, target.preferredHeight), x => - { - target.preferredWidth = x.x; - target.preferredHeight = x.y; - }, endValue, duration); + public static TweenerCore DOPreferredSize(this LayoutElement target, Vector2 endValue, float duration, bool snapping = false) { + var t = DOTween.To( + () => new Vector2(target.preferredWidth, target.preferredHeight), + x => { + target.preferredWidth = x.x; + target.preferredHeight = x.y; + }, + endValue, + duration + ); + t.SetOptions(snapping).SetTarget(target); + return t; } - #endregion LayoutElement + #endregion LayoutElement - #region Outline + #region Outline - /// Tweens a Outline's effectColor to the given value. - /// Also stores the Outline as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - public static TweenerCore DOColor(this Outline target, Color endValue, float duration) - { - TweenerCore t = DOTween.To(() => target.effectColor, x => target.effectColor = x, endValue, duration); + /// + /// Tweens a Outline's effectColor to the given value. + /// Also stores the Outline as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween + public static TweenerCore DOColor(this Outline target, Color endValue, float duration) { + var t = DOTween.To(() => target.effectColor, x => target.effectColor = x, endValue, duration); t.SetTarget(target); + return t; } - /// Tweens a Outline's effectColor alpha to the given value. - /// Also stores the Outline as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - public static TweenerCore DOFade(this Outline target, float endValue, float duration) - { - TweenerCore t = DOTween.ToAlpha(() => target.effectColor, x => target.effectColor = x, endValue, duration); + /// + /// Tweens a Outline's effectColor alpha to the given value. + /// Also stores the Outline as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween + public static TweenerCore DOFade(this Outline target, float endValue, float duration) { + var t = DOTween.ToAlpha(() => target.effectColor, x => target.effectColor = x, endValue, duration); t.SetTarget(target); + return t; } - /// Tweens a Outline's effectDistance to the given value. - /// Also stores the Outline as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - public static TweenerCore DOScale(this Outline target, Vector2 endValue, float duration) - { - TweenerCore t = DOTween.To(() => target.effectDistance, x => target.effectDistance = x, endValue, duration); + /// + /// Tweens a Outline's effectDistance to the given value. + /// Also stores the Outline as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween + public static TweenerCore DOScale(this Outline target, Vector2 endValue, float duration) { + var t = DOTween.To(() => target.effectDistance, x => target.effectDistance = x, endValue, duration); t.SetTarget(target); + return t; } - #endregion Outline + #endregion Outline - #region RectTransform + #region RectTransform - /// Tweens a RectTransform's anchoredPosition to the given value. - /// Also stores the RectTransform as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween + /// + /// Tweens a RectTransform's anchoredPosition to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOAnchorPos(this RectTransform target, Vector2 endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => target.anchoredPosition, x => target.anchoredPosition = x, endValue, duration); + public static TweenerCore DOAnchorPos(this RectTransform target, Vector2 endValue, float duration, bool snapping = false) { + var t = DOTween.To(() => target.anchoredPosition, x => target.anchoredPosition = x, endValue, duration); t.SetOptions(snapping).SetTarget(target); + return t; } - /// Tweens a RectTransform's anchoredPosition X to the given value. - /// Also stores the RectTransform as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween + /// + /// Tweens a RectTransform's anchoredPosition X to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOAnchorPosX(this RectTransform target, float endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => target.anchoredPosition, x => target.anchoredPosition = x, new Vector2(endValue, 0), duration); + public static TweenerCore DOAnchorPosX(this RectTransform target, float endValue, float duration, bool snapping = false) { + var t = DOTween.To(() => target.anchoredPosition, x => target.anchoredPosition = x, new Vector2(endValue, 0), duration); t.SetOptions(AxisConstraint.X, snapping).SetTarget(target); + return t; } - /// Tweens a RectTransform's anchoredPosition Y to the given value. - /// Also stores the RectTransform as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween + /// + /// Tweens a RectTransform's anchoredPosition Y to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOAnchorPosY(this RectTransform target, float endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => target.anchoredPosition, x => target.anchoredPosition = x, new Vector2(0, endValue), duration); + public static TweenerCore DOAnchorPosY(this RectTransform target, float endValue, float duration, bool snapping = false) { + var t = DOTween.To(() => target.anchoredPosition, x => target.anchoredPosition = x, new Vector2(0, endValue), duration); t.SetOptions(AxisConstraint.Y, snapping).SetTarget(target); + return t; } - /// Tweens a RectTransform's anchoredPosition3D to the given value. - /// Also stores the RectTransform as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween + /// + /// Tweens a RectTransform's anchoredPosition3D to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOAnchorPos3D(this RectTransform target, Vector3 endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => target.anchoredPosition3D, x => target.anchoredPosition3D = x, endValue, duration); + public static TweenerCore DOAnchorPos3D(this RectTransform target, Vector3 endValue, float duration, bool snapping = false) { + var t = DOTween.To(() => target.anchoredPosition3D, x => target.anchoredPosition3D = x, endValue, duration); t.SetOptions(snapping).SetTarget(target); + return t; } - /// Tweens a RectTransform's anchoredPosition3D X to the given value. - /// Also stores the RectTransform as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween + /// + /// Tweens a RectTransform's anchoredPosition3D X to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOAnchorPos3DX(this RectTransform target, float endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => target.anchoredPosition3D, x => target.anchoredPosition3D = x, new Vector3(endValue, 0, 0), duration); + public static TweenerCore DOAnchorPos3DX(this RectTransform target, float endValue, float duration, bool snapping = false) { + var t = DOTween.To(() => target.anchoredPosition3D, x => target.anchoredPosition3D = x, new Vector3(endValue, 0, 0), duration); t.SetOptions(AxisConstraint.X, snapping).SetTarget(target); + return t; } - /// Tweens a RectTransform's anchoredPosition3D Y to the given value. - /// Also stores the RectTransform as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween + /// + /// Tweens a RectTransform's anchoredPosition3D Y to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOAnchorPos3DY(this RectTransform target, float endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => target.anchoredPosition3D, x => target.anchoredPosition3D = x, new Vector3(0, endValue, 0), duration); + public static TweenerCore DOAnchorPos3DY(this RectTransform target, float endValue, float duration, bool snapping = false) { + var t = DOTween.To(() => target.anchoredPosition3D, x => target.anchoredPosition3D = x, new Vector3(0, endValue, 0), duration); t.SetOptions(AxisConstraint.Y, snapping).SetTarget(target); + return t; } - /// Tweens a RectTransform's anchoredPosition3D Z to the given value. - /// Also stores the RectTransform as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween + /// + /// Tweens a RectTransform's anchoredPosition3D Z to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOAnchorPos3DZ(this RectTransform target, float endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => target.anchoredPosition3D, x => target.anchoredPosition3D = x, new Vector3(0, 0, endValue), duration); + public static TweenerCore DOAnchorPos3DZ(this RectTransform target, float endValue, float duration, bool snapping = false) { + var t = DOTween.To(() => target.anchoredPosition3D, x => target.anchoredPosition3D = x, new Vector3(0, 0, endValue), duration); t.SetOptions(AxisConstraint.Z, snapping).SetTarget(target); + return t; } - /// Tweens a RectTransform's anchorMax to the given value. - /// Also stores the RectTransform as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween + /// + /// Tweens a RectTransform's anchorMax to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOAnchorMax(this RectTransform target, Vector2 endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => target.anchorMax, x => target.anchorMax = x, endValue, duration); + public static TweenerCore DOAnchorMax(this RectTransform target, Vector2 endValue, float duration, bool snapping = false) { + var t = DOTween.To(() => target.anchorMax, x => target.anchorMax = x, endValue, duration); t.SetOptions(snapping).SetTarget(target); + return t; } - /// Tweens a RectTransform's anchorMin to the given value. - /// Also stores the RectTransform as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween + /// + /// Tweens a RectTransform's anchorMin to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOAnchorMin(this RectTransform target, Vector2 endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => target.anchorMin, x => target.anchorMin = x, endValue, duration); + public static TweenerCore DOAnchorMin(this RectTransform target, Vector2 endValue, float duration, bool snapping = false) { + var t = DOTween.To(() => target.anchorMin, x => target.anchorMin = x, endValue, duration); t.SetOptions(snapping).SetTarget(target); + return t; } - /// Tweens a RectTransform's pivot to the given value. - /// Also stores the RectTransform as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - public static TweenerCore DOPivot(this RectTransform target, Vector2 endValue, float duration) - { - TweenerCore t = DOTween.To(() => target.pivot, x => target.pivot = x, endValue, duration); + /// + /// Tweens a RectTransform's pivot to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween + public static TweenerCore DOPivot(this RectTransform target, Vector2 endValue, float duration) { + var t = DOTween.To(() => target.pivot, x => target.pivot = x, endValue, duration); t.SetTarget(target); + return t; } - /// Tweens a RectTransform's pivot X to the given value. - /// Also stores the RectTransform as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - public static TweenerCore DOPivotX(this RectTransform target, float endValue, float duration) - { - TweenerCore t = DOTween.To(() => target.pivot, x => target.pivot = x, new Vector2(endValue, 0), duration); + /// + /// Tweens a RectTransform's pivot X to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween + public static TweenerCore DOPivotX(this RectTransform target, float endValue, float duration) { + var t = DOTween.To(() => target.pivot, x => target.pivot = x, new Vector2(endValue, 0), duration); t.SetOptions(AxisConstraint.X).SetTarget(target); + return t; } - /// Tweens a RectTransform's pivot Y to the given value. - /// Also stores the RectTransform as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - public static TweenerCore DOPivotY(this RectTransform target, float endValue, float duration) - { - TweenerCore t = DOTween.To(() => target.pivot, x => target.pivot = x, new Vector2(0, endValue), duration); + /// + /// Tweens a RectTransform's pivot Y to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween + public static TweenerCore DOPivotY(this RectTransform target, float endValue, float duration) { + var t = DOTween.To(() => target.pivot, x => target.pivot = x, new Vector2(0, endValue), duration); t.SetOptions(AxisConstraint.Y).SetTarget(target); + return t; } - /// Tweens a RectTransform's sizeDelta to the given value. - /// Also stores the RectTransform as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween + /// + /// Tweens a RectTransform's sizeDelta to the given value. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOSizeDelta(this RectTransform target, Vector2 endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => target.sizeDelta, x => target.sizeDelta = x, endValue, duration); + public static TweenerCore DOSizeDelta(this RectTransform target, Vector2 endValue, float duration, bool snapping = false) { + var t = DOTween.To(() => target.sizeDelta, x => target.sizeDelta = x, endValue, duration); t.SetOptions(snapping).SetTarget(target); + return t; } - /// Punches a RectTransform's anchoredPosition towards the given direction and then back to the starting one - /// as if it was connected to the starting position via an elastic. - /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// + /// Punches a RectTransform's anchoredPosition towards the given direction and then back to the starting one + /// as if it was connected to the starting position via an elastic. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// /// The direction and strength of the punch (added to the RectTransform's current position) /// The duration of the tween /// Indicates how much will the punch vibrate - /// Represents how much (0 to 1) the vector will go beyond the starting position when bouncing backwards. - /// 1 creates a full oscillation between the punch direction and the opposite direction, - /// while 0 oscillates only between the punch and the start position + /// + /// Represents how much (0 to 1) the vector will go beyond the starting position when bouncing backwards. + /// 1 creates a full oscillation between the punch direction and the opposite direction, + /// while 0 oscillates only between the punch and the start position + /// /// If TRUE the tween will smoothly snap all values to integers - public static Tweener DOPunchAnchorPos(this RectTransform target, Vector2 punch, float duration, int vibrato = 10, float elasticity = 1, bool snapping = false) - { - return DOTween.Punch(() => target.anchoredPosition, x => target.anchoredPosition = x, punch, duration, vibrato, elasticity) - .SetTarget(target).SetOptions(snapping); - } - - /// Shakes a RectTransform's anchoredPosition with the given values. - /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + public static Tweener DOPunchAnchorPos(this RectTransform target, Vector2 punch, float duration, int vibrato = 10, float elasticity = 1, bool snapping = false) { + return DOTween.Punch( + () => target.anchoredPosition, + x => target.anchoredPosition = x, + punch, + duration, + vibrato, + elasticity + ) + .SetTarget(target) + .SetOptions(snapping); + } + + /// + /// Shakes a RectTransform's anchoredPosition with the given values. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// /// The duration of the tween /// The shake strength /// Indicates how much will the shake vibrate - /// Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). - /// Setting it to 0 will shake along a single direction. + /// + /// Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + /// Setting it to 0 will shake along a single direction. + /// /// If TRUE the tween will smoothly snap all values to integers - /// If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not - public static Tweener DOShakeAnchorPos(this RectTransform target, float duration, float strength = 100, int vibrato = 10, float randomness = 90, bool snapping = false, bool fadeOut = true) - { - return DOTween.Shake(() => target.anchoredPosition, x => target.anchoredPosition = x, duration, strength, vibrato, randomness, true, fadeOut) - .SetTarget(target).SetSpecialStartupMode(SpecialStartupMode.SetShake).SetOptions(snapping); - } - - /// Shakes a RectTransform's anchoredPosition with the given values. - /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// + /// If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it + /// will not + /// + public static Tweener DOShakeAnchorPos(this RectTransform target, float duration, float strength = 100, int vibrato = 10, float randomness = 90, bool snapping = false, bool fadeOut = true) { + return DOTween.Shake( + () => target.anchoredPosition, + x => target.anchoredPosition = x, + duration, + strength, + vibrato, + randomness, + true, + fadeOut + ) + .SetTarget(target) + .SetSpecialStartupMode(SpecialStartupMode.SetShake) + .SetOptions(snapping); + } + + /// + /// Shakes a RectTransform's anchoredPosition with the given values. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// /// The duration of the tween /// The shake strength on each axis /// Indicates how much will the shake vibrate - /// Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). - /// Setting it to 0 will shake along a single direction. + /// + /// Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + /// Setting it to 0 will shake along a single direction. + /// /// If TRUE the tween will smoothly snap all values to integers - /// If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not - public static Tweener DOShakeAnchorPos(this RectTransform target, float duration, Vector2 strength, int vibrato = 10, float randomness = 90, bool snapping = false, bool fadeOut = true) - { - return DOTween.Shake(() => target.anchoredPosition, x => target.anchoredPosition = x, duration, strength, vibrato, randomness, fadeOut) - .SetTarget(target).SetSpecialStartupMode(SpecialStartupMode.SetShake).SetOptions(snapping); - } - - #region Special - - /// Tweens a RectTransform's anchoredPosition to the given value, while also applying a jump effect along the Y axis. - /// Returns a Sequence instead of a Tweener. - /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// + /// If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it + /// will not + /// + public static Tweener DOShakeAnchorPos(this RectTransform target, float duration, Vector2 strength, int vibrato = 10, float randomness = 90, bool snapping = false, bool fadeOut = true) { + return DOTween.Shake( + () => target.anchoredPosition, + x => target.anchoredPosition = x, + duration, + strength, + vibrato, + randomness, + fadeOut + ) + .SetTarget(target) + .SetSpecialStartupMode(SpecialStartupMode.SetShake) + .SetOptions(snapping); + } + + #region Special + + /// + /// Tweens a RectTransform's anchoredPosition to the given value, while also applying a jump effect along the Y axis. + /// Returns a Sequence instead of a Tweener. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations + /// /// The end value to reach /// Power of the jump (the max height of the jump is represented by this plus the final Y offset) /// Total number of jumps /// The duration of the tween /// If TRUE the tween will smoothly snap all values to integers - public static Sequence DOJumpAnchorPos(this RectTransform target, Vector2 endValue, float jumpPower, int numJumps, float duration, bool snapping = false) - { - if (numJumps < 1) numJumps = 1; + public static Sequence DOJumpAnchorPos(this RectTransform target, Vector2 endValue, float jumpPower, int numJumps, float duration, bool snapping = false) { + if (numJumps < 1) { + numJumps = 1; + } + float startPosY = 0; float offsetY = -1; - bool offsetYSet = false; + var offsetYSet = false; // Separate Y Tween so we can elaborate elapsedPercentage on that insted of on the Sequence // (in case users add a delay or other elements to the Sequence) - Sequence s = DOTween.Sequence(); + var s = DOTween.Sequence(); + Tween yTween = DOTween.To(() => target.anchoredPosition, x => target.anchoredPosition = x, new Vector2(0, jumpPower), duration / (numJumps * 2)) - .SetOptions(AxisConstraint.Y, snapping).SetEase(Ease.OutQuad).SetRelative() + .SetOptions(AxisConstraint.Y, snapping) + .SetEase(Ease.OutQuad) + .SetRelative() .SetLoops(numJumps * 2, LoopType.Yoyo) .OnStart(() => startPosY = target.anchoredPosition.y); - s.Append(DOTween.To(() => target.anchoredPosition, x => target.anchoredPosition = x, new Vector2(endValue.x, 0), duration) - .SetOptions(AxisConstraint.X, snapping).SetEase(Ease.Linear) - ).Join(yTween) - .SetTarget(target).SetEase(DOTween.defaultEaseType); - s.OnUpdate(() => - { - if (!offsetYSet) - { - offsetYSet = true; - offsetY = s.isRelative ? endValue.y : endValue.y - startPosY; + + s.Append( + DOTween.To(() => target.anchoredPosition, x => target.anchoredPosition = x, new Vector2(endValue.x, 0), duration) + .SetOptions(AxisConstraint.X, snapping) + .SetEase(Ease.Linear) + ) + .Join(yTween) + .SetTarget(target) + .SetEase(DOTween.defaultEaseType); + + s.OnUpdate( + () => { + if (!offsetYSet) { + offsetYSet = true; + offsetY = s.isRelative ? endValue.y : endValue.y - startPosY; + } + + var pos = target.anchoredPosition; + pos.y += DOVirtual.EasedValue(0, offsetY, s.ElapsedDirectionalPercentage(), Ease.OutQuad); + target.anchoredPosition = pos; } - Vector2 pos = target.anchoredPosition; - pos.y += DOVirtual.EasedValue(0, offsetY, s.ElapsedDirectionalPercentage(), Ease.OutQuad); - target.anchoredPosition = pos; - }); + ); + return s; } - #endregion Special + #endregion Special - #endregion RectTransform + #endregion RectTransform - #region ScrollRect + #region ScrollRect - /// Tweens a ScrollRect's horizontal/verticalNormalizedPosition to the given value. - /// Also stores the ScrollRect as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween + /// + /// Tweens a ScrollRect's horizontal/verticalNormalizedPosition to the given value. + /// Also stores the ScrollRect as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween /// If TRUE the tween will smoothly snap all values to integers - public static Tweener DONormalizedPos(this ScrollRect target, Vector2 endValue, float duration, bool snapping = false) - { - return DOTween.To(() => new Vector2(target.horizontalNormalizedPosition, target.verticalNormalizedPosition), - x => - { - target.horizontalNormalizedPosition = x.x; - target.verticalNormalizedPosition = x.y; - }, endValue, duration) - .SetOptions(snapping).SetTarget(target); - } - - /// Tweens a ScrollRect's horizontalNormalizedPosition to the given value. - /// Also stores the ScrollRect as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween + public static Tweener DONormalizedPos(this ScrollRect target, Vector2 endValue, float duration, bool snapping = false) { + return DOTween.To( + () => new Vector2(target.horizontalNormalizedPosition, target.verticalNormalizedPosition), + x => { + target.horizontalNormalizedPosition = x.x; + target.verticalNormalizedPosition = x.y; + }, + endValue, + duration + ) + .SetOptions(snapping) + .SetTarget(target); + } + + /// + /// Tweens a ScrollRect's horizontalNormalizedPosition to the given value. + /// Also stores the ScrollRect as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween /// If TRUE the tween will smoothly snap all values to integers - public static Tweener DOHorizontalNormalizedPos(this ScrollRect target, float endValue, float duration, bool snapping = false) - { + public static Tweener DOHorizontalNormalizedPos(this ScrollRect target, float endValue, float duration, bool snapping = false) { return DOTween.To(() => target.horizontalNormalizedPosition, x => target.horizontalNormalizedPosition = x, endValue, duration) - .SetOptions(snapping).SetTarget(target); + .SetOptions(snapping) + .SetTarget(target); } - /// Tweens a ScrollRect's verticalNormalizedPosition to the given value. - /// Also stores the ScrollRect as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween + /// + /// Tweens a ScrollRect's verticalNormalizedPosition to the given value. + /// Also stores the ScrollRect as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween /// If TRUE the tween will smoothly snap all values to integers - public static Tweener DOVerticalNormalizedPos(this ScrollRect target, float endValue, float duration, bool snapping = false) - { + public static Tweener DOVerticalNormalizedPos(this ScrollRect target, float endValue, float duration, bool snapping = false) { return DOTween.To(() => target.verticalNormalizedPosition, x => target.verticalNormalizedPosition = x, endValue, duration) - .SetOptions(snapping).SetTarget(target); + .SetOptions(snapping) + .SetTarget(target); } - #endregion ScrollRect + #endregion ScrollRect - #region Slider + #region Slider - /// Tweens a Slider's value to the given value. - /// Also stores the Slider as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween + /// + /// Tweens a Slider's value to the given value. + /// Also stores the Slider as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween /// If TRUE the tween will smoothly snap all values to integers - public static TweenerCore DOValue(this Slider target, float endValue, float duration, bool snapping = false) - { - TweenerCore t = DOTween.To(() => target.value, x => target.value = x, endValue, duration); + public static TweenerCore DOValue(this Slider target, float endValue, float duration, bool snapping = false) { + var t = DOTween.To(() => target.value, x => target.value = x, endValue, duration); t.SetOptions(snapping).SetTarget(target); + return t; } - #endregion Slider + #endregion Slider - #region Text + #region Text - /// Tweens a Text's color to the given value. - /// Also stores the Text as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - public static TweenerCore DOColor(this Text target, Color endValue, float duration) - { - TweenerCore t = DOTween.To(() => target.color, x => target.color = x, endValue, duration); + /// + /// Tweens a Text's color to the given value. + /// Also stores the Text as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween + public static TweenerCore DOColor(this Text target, Color endValue, float duration) { + var t = DOTween.To(() => target.color, x => target.color = x, endValue, duration); t.SetTarget(target); + return t; } - /// Tweens a Text's alpha color to the given value. - /// Also stores the Text as the tween's target so it can be used for filtered operations - /// The end value to reachThe duration of the tween - public static TweenerCore DOFade(this Text target, float endValue, float duration) - { - TweenerCore t = DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration); + /// + /// Tweens a Text's alpha color to the given value. + /// Also stores the Text as the tween's target so it can be used for filtered operations + /// + /// The end value to reach + /// The duration of the tween + public static TweenerCore DOFade(this Text target, float endValue, float duration) { + var t = DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration); t.SetTarget(target); + return t; } - /// Tweens a Text's text to the given value. - /// Also stores the Text as the tween's target so it can be used for filtered operations - /// The end string to tween toThe duration of the tween - /// If TRUE (default), rich text will be interpreted correctly while animated, - /// otherwise all tags will be considered as normal text + /// + /// Tweens a Text's text to the given value. + /// Also stores the Text as the tween's target so it can be used for filtered operations + /// + /// The end string to tween to + /// The duration of the tween + /// + /// If TRUE (default), rich text will be interpreted correctly while animated, + /// otherwise all tags will be considered as normal text + /// /// The type of scramble mode to use, if any - /// A string containing the characters to use for scrambling. - /// Use as many characters as possible (minimum 10) because DOTween uses a fast scramble mode which gives better results with more characters. - /// Leave it to NULL (default) to use default ones - public static TweenerCore DOText(this Text target, string endValue, float duration, bool richTextEnabled = true, ScrambleMode scrambleMode = ScrambleMode.None, string scrambleChars = null) - { - if (endValue == null) - { - if (Debugger.logPriority > 0) Debugger.LogWarning("You can't pass a NULL string to DOText: an empty string will be used instead to avoid errors"); + /// + /// A string containing the characters to use for scrambling. + /// Use as many characters as possible (minimum 10) because DOTween uses a fast scramble mode which gives better + /// results with more characters. + /// Leave it to NULL (default) to use default ones + /// + public static TweenerCore DOText(this Text target, string endValue, float duration, bool richTextEnabled = true, ScrambleMode scrambleMode = ScrambleMode.None, string scrambleChars = null) { + if (endValue == null) { + if (Debugger.logPriority > 0) { + Debugger.LogWarning("You can't pass a NULL string to DOText: an empty string will be used instead to avoid errors"); + } + endValue = ""; } - TweenerCore t = DOTween.To(() => target.text, x => target.text = x, endValue, duration); + + var t = DOTween.To(() => target.text, x => target.text = x, endValue, duration); + t.SetOptions(richTextEnabled, scrambleMode, scrambleChars) .SetTarget(target); + return t; } - #endregion Text + #endregion Text - #region Blendables + #region Blendables - #region Graphic + #region Graphic - /// Tweens a Graphic's color to the given value, - /// in a way that allows other DOBlendableColor tweens to work together on the same target, - /// instead than fight each other as multiple DOColor would do. - /// Also stores the Graphic as the tween's target so it can be used for filtered operations - /// The value to tween toThe duration of the tween - public static Tweener DOBlendableColor(this Graphic target, Color endValue, float duration) - { - endValue = endValue - target.color; - Color to = new Color(0, 0, 0, 0); - return DOTween.To(() => to, x => - { - Color diff = x - to; - to = x; - target.color += diff; - }, endValue, duration) - .Blendable().SetTarget(target); - } - - #endregion Graphic - - #region Image - - /// Tweens a Image's color to the given value, - /// in a way that allows other DOBlendableColor tweens to work together on the same target, - /// instead than fight each other as multiple DOColor would do. - /// Also stores the Image as the tween's target so it can be used for filtered operations - /// The value to tween toThe duration of the tween - public static Tweener DOBlendableColor(this Image target, Color endValue, float duration) - { - endValue = endValue - target.color; - Color to = new Color(0, 0, 0, 0); - return DOTween.To(() => to, x => - { - Color diff = x - to; - to = x; - target.color += diff; - }, endValue, duration) - .Blendable().SetTarget(target); - } - - #endregion Image - - #region Text - - /// Tweens a Text's color BY the given value, - /// in a way that allows other DOBlendableColor tweens to work together on the same target, - /// instead than fight each other as multiple DOColor would do. - /// Also stores the Text as the tween's target so it can be used for filtered operations - /// The value to tween toThe duration of the tween - public static Tweener DOBlendableColor(this Text target, Color endValue, float duration) - { + /// + /// Tweens a Graphic's color to the given value, + /// in a way that allows other DOBlendableColor tweens to work together on the same target, + /// instead than fight each other as multiple DOColor would do. + /// Also stores the Graphic as the tween's target so it can be used for filtered operations + /// + /// The value to tween to + /// The duration of the tween + public static Tweener DOBlendableColor(this Graphic target, Color endValue, float duration) { endValue = endValue - target.color; - Color to = new Color(0, 0, 0, 0); - return DOTween.To(() => to, x => - { - Color diff = x - to; - to = x; - target.color += diff; - }, endValue, duration) - .Blendable().SetTarget(target); + var to = new Color(0, 0, 0, 0); + + return DOTween.To( + () => to, + x => { + var diff = x - to; + to = x; + target.color += diff; + }, + endValue, + duration + ) + .Blendable() + .SetTarget(target); } - #endregion Text + #endregion Graphic - #endregion Blendables + #region Image - #endregion Shortcuts + /// + /// Tweens a Image's color to the given value, + /// in a way that allows other DOBlendableColor tweens to work together on the same target, + /// instead than fight each other as multiple DOColor would do. + /// Also stores the Image as the tween's target so it can be used for filtered operations + /// + /// The value to tween to + /// The duration of the tween + public static Tweener DOBlendableColor(this Image target, Color endValue, float duration) { + endValue = endValue - target.color; + var to = new Color(0, 0, 0, 0); + + return DOTween.To( + () => to, + x => { + var diff = x - to; + to = x; + target.color += diff; + }, + endValue, + duration + ) + .Blendable() + .SetTarget(target); + } - // █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ - // ███ INTERNAL CLASSES ████████████████████████████████████████████████████████████████████████████████████████████████ - // █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ + #endregion Image - public static class Utils - { - /// - /// Converts the anchoredPosition of the first RectTransform to the second RectTransform, - /// taking into consideration offset, anchors and pivot, and returns the new anchoredPosition - /// - public static Vector2 SwitchToRectTransform(RectTransform from, RectTransform to) - { - Vector2 localPoint; - Vector2 fromPivotDerivedOffset = new Vector2(from.rect.width * 0.5f + from.rect.xMin, from.rect.height * 0.5f + from.rect.yMin); - Vector2 screenP = RectTransformUtility.WorldToScreenPoint(null, from.position); - screenP += fromPivotDerivedOffset; - RectTransformUtility.ScreenPointToLocalPointInRectangle(to, screenP, null, out localPoint); - Vector2 pivotDerivedOffset = new Vector2(to.rect.width * 0.5f + to.rect.xMin, to.rect.height * 0.5f + to.rect.yMin); - return to.anchoredPosition + localPoint - pivotDerivedOffset; - } + #region Text + + /// + /// Tweens a Text's color BY the given value, + /// in a way that allows other DOBlendableColor tweens to work together on the same target, + /// instead than fight each other as multiple DOColor would do. + /// Also stores the Text as the tween's target so it can be used for filtered operations + /// + /// The value to tween to + /// The duration of the tween + public static Tweener DOBlendableColor(this Text target, Color endValue, float duration) { + endValue = endValue - target.color; + var to = new Color(0, 0, 0, 0); + + return DOTween.To( + () => to, + x => { + var diff = x - to; + to = x; + target.color += diff; + }, + endValue, + duration + ) + .Blendable() + .SetTarget(target); } + + #endregion Text + + #endregion Blendables + + #endregion Shortcuts } } diff --git a/Assets/Plugins/DOTween/Modules/DOTweenModuleUnityVersion.cs b/Assets/Plugins/DOTween/Modules/DOTweenModuleUnityVersion.cs index d0760696..3bc9ffa1 100644 --- a/Assets/Plugins/DOTween/Modules/DOTweenModuleUnityVersion.cs +++ b/Assets/Plugins/DOTween/Modules/DOTweenModuleUnityVersion.cs @@ -7,230 +7,271 @@ #pragma warning disable 1591 -namespace DG.Tweening -{ +namespace DG.Tweening { /// - /// Shortcuts/functions that are not strictly related to specific Modules - /// but are available only on some Unity versions + /// Shortcuts/functions that are not strictly related to specific Modules + /// but are available only on some Unity versions /// - public static class DOTweenModuleUnityVersion - { -#if UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_5 || UNITY_2017_1_OR_NEWER - - #region Unity 4.3 or Newer - - #region Material - - /// Tweens a Material's color using the given gradient - /// (NOTE 1: only uses the colors of the gradient, not the alphas - NOTE 2: creates a Sequence, not a Tweener). - /// Also stores the image as the tween's target so it can be used for filtered operations - /// The gradient to useThe duration of the tween - public static Sequence DOGradientColor(this Material target, Gradient gradient, float duration) - { - Sequence s = DOTween.Sequence(); - GradientColorKey[] colors = gradient.colorKeys; - int len = colors.Length; - for (int i = 0; i < len; ++i) - { - GradientColorKey c = colors[i]; - if (i == 0 && c.time <= 0) - { + public static class DOTweenModuleUnityVersion { + #if UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_5 || UNITY_2017_1_OR_NEWER + + #region Unity 4.3 or Newer + + #region Material + + /// + /// Tweens a Material's color using the given gradient + /// (NOTE 1: only uses the colors of the gradient, not the alphas - NOTE 2: creates a Sequence, not a Tweener). + /// Also stores the image as the tween's target so it can be used for filtered operations + /// + /// The gradient to use + /// The duration of the tween + public static Sequence DOGradientColor(this Material target, Gradient gradient, float duration) { + var s = DOTween.Sequence(); + var colors = gradient.colorKeys; + var len = colors.Length; + + for (var i = 0; i < len; ++i) { + var c = colors[i]; + + if (i == 0 && c.time <= 0) { target.color = c.color; + continue; } - float colorDuration = i == len - 1 + + var colorDuration = i == len - 1 ? duration - s.Duration(false) // Verifies that total duration is correct : duration * (i == 0 ? c.time : c.time - colors[i - 1].time); + s.Append(target.DOColor(c.color, colorDuration).SetEase(Ease.Linear)); } + s.SetTarget(target); + return s; } - /// Tweens a Material's named color property using the given gradient - /// (NOTE 1: only uses the colors of the gradient, not the alphas - NOTE 2: creates a Sequence, not a Tweener). - /// Also stores the image as the tween's target so it can be used for filtered operations + /// + /// Tweens a Material's named color property using the given gradient + /// (NOTE 1: only uses the colors of the gradient, not the alphas - NOTE 2: creates a Sequence, not a Tweener). + /// Also stores the image as the tween's target so it can be used for filtered operations + /// /// The gradient to use /// The name of the material property to tween (like _Tint or _SpecColor) /// The duration of the tween - public static Sequence DOGradientColor(this Material target, Gradient gradient, string property, float duration) - { - Sequence s = DOTween.Sequence(); - GradientColorKey[] colors = gradient.colorKeys; - int len = colors.Length; - for (int i = 0; i < len; ++i) - { - GradientColorKey c = colors[i]; - if (i == 0 && c.time <= 0) - { + public static Sequence DOGradientColor(this Material target, Gradient gradient, string property, float duration) { + var s = DOTween.Sequence(); + var colors = gradient.colorKeys; + var len = colors.Length; + + for (var i = 0; i < len; ++i) { + var c = colors[i]; + + if (i == 0 && c.time <= 0) { target.SetColor(property, c.color); + continue; } - float colorDuration = i == len - 1 + + var colorDuration = i == len - 1 ? duration - s.Duration(false) // Verifies that total duration is correct : duration * (i == 0 ? c.time : c.time - colors[i - 1].time); + s.Append(target.DOColor(c.color, property, colorDuration).SetEase(Ease.Linear)); } + s.SetTarget(target); + return s; } - #endregion Material + #endregion Material - #endregion Unity 4.3 or Newer + #endregion Unity 4.3 or Newer -#endif + #endif -#if UNITY_5_3_OR_NEWER || UNITY_2017_1_OR_NEWER + #if UNITY_5_3_OR_NEWER || UNITY_2017_1_OR_NEWER - #region Unity 5.3 or Newer + #region Unity 5.3 or Newer - #region CustomYieldInstructions + #region CustomYieldInstructions /// - /// Returns a that waits until the tween is killed or complete. - /// It can be used inside a coroutine as a yield. - /// Example usage:yield return myTween.WaitForCompletion(true); + /// Returns a that waits until the tween is killed or complete. + /// It can be used inside a coroutine as a yield. + /// Example usage: + /// yield return myTween.WaitForCompletion(true); /// - public static CustomYieldInstruction WaitForCompletion(this Tween t, bool returnCustomYieldInstruction) - { - if (!t.active) - { - if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); + public static CustomYieldInstruction WaitForCompletion(this Tween t, bool returnCustomYieldInstruction) { + if (!t.active) { + if (Debugger.logPriority > 0) { + Debugger.LogInvalidTween(t); + } + return null; } + return new DOTweenCYInstruction.WaitForCompletion(t); } /// - /// Returns a that waits until the tween is killed or rewinded. - /// It can be used inside a coroutine as a yield. - /// Example usage:yield return myTween.WaitForRewind(); + /// Returns a that waits until the tween is killed or rewinded. + /// It can be used inside a coroutine as a yield. + /// Example usage: + /// yield return myTween.WaitForRewind(); /// - public static CustomYieldInstruction WaitForRewind(this Tween t, bool returnCustomYieldInstruction) - { - if (!t.active) - { - if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); + public static CustomYieldInstruction WaitForRewind(this Tween t, bool returnCustomYieldInstruction) { + if (!t.active) { + if (Debugger.logPriority > 0) { + Debugger.LogInvalidTween(t); + } + return null; } + return new DOTweenCYInstruction.WaitForRewind(t); } /// - /// Returns a that waits until the tween is killed. - /// It can be used inside a coroutine as a yield. - /// Example usage:yield return myTween.WaitForKill(); + /// Returns a that waits until the tween is killed. + /// It can be used inside a coroutine as a yield. + /// Example usage: + /// yield return myTween.WaitForKill(); /// - public static CustomYieldInstruction WaitForKill(this Tween t, bool returnCustomYieldInstruction) - { - if (!t.active) - { - if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); + public static CustomYieldInstruction WaitForKill(this Tween t, bool returnCustomYieldInstruction) { + if (!t.active) { + if (Debugger.logPriority > 0) { + Debugger.LogInvalidTween(t); + } + return null; } + return new DOTweenCYInstruction.WaitForKill(t); } /// - /// Returns a that waits until the tween is killed or has gone through the given amount of loops. - /// It can be used inside a coroutine as a yield. - /// Example usage:yield return myTween.WaitForElapsedLoops(2); + /// Returns a that waits until the tween is killed or has gone through the given + /// amount of loops. + /// It can be used inside a coroutine as a yield. + /// Example usage: + /// yield return myTween.WaitForElapsedLoops(2); /// /// Elapsed loops to wait for - public static CustomYieldInstruction WaitForElapsedLoops(this Tween t, int elapsedLoops, bool returnCustomYieldInstruction) - { - if (!t.active) - { - if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); + public static CustomYieldInstruction WaitForElapsedLoops(this Tween t, int elapsedLoops, bool returnCustomYieldInstruction) { + if (!t.active) { + if (Debugger.logPriority > 0) { + Debugger.LogInvalidTween(t); + } + return null; } + return new DOTweenCYInstruction.WaitForElapsedLoops(t, elapsedLoops); } /// - /// Returns a that waits until the tween is killed or has reached the given position (loops included, delays excluded). - /// It can be used inside a coroutine as a yield. - /// Example usage:yield return myTween.WaitForPosition(2.5f); + /// Returns a that waits until the tween is killed or has reached the given + /// position (loops included, delays excluded). + /// It can be used inside a coroutine as a yield. + /// Example usage: + /// yield return myTween.WaitForPosition(2.5f); /// /// Position (loops included, delays excluded) to wait for - public static CustomYieldInstruction WaitForPosition(this Tween t, float position, bool returnCustomYieldInstruction) - { - if (!t.active) - { - if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); + public static CustomYieldInstruction WaitForPosition(this Tween t, float position, bool returnCustomYieldInstruction) { + if (!t.active) { + if (Debugger.logPriority > 0) { + Debugger.LogInvalidTween(t); + } + return null; } + return new DOTweenCYInstruction.WaitForPosition(t, position); } /// - /// Returns a that waits until the tween is killed or started - /// (meaning when the tween is set in a playing state the first time, after any eventual delay). - /// It can be used inside a coroutine as a yield. - /// Example usage:yield return myTween.WaitForStart(); + /// Returns a that waits until the tween is killed or started + /// (meaning when the tween is set in a playing state the first time, after any eventual delay). + /// It can be used inside a coroutine as a yield. + /// Example usage: + /// yield return myTween.WaitForStart(); /// - public static CustomYieldInstruction WaitForStart(this Tween t, bool returnCustomYieldInstruction) - { - if (!t.active) - { - if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); + public static CustomYieldInstruction WaitForStart(this Tween t, bool returnCustomYieldInstruction) { + if (!t.active) { + if (Debugger.logPriority > 0) { + Debugger.LogInvalidTween(t); + } + return null; } + return new DOTweenCYInstruction.WaitForStart(t); } - #endregion CustomYieldInstructions + #endregion CustomYieldInstructions - #endregion Unity 5.3 or Newer + #endregion Unity 5.3 or Newer -#endif + #endif -#if UNITY_2018_1_OR_NEWER + #if UNITY_2018_1_OR_NEWER - #region Unity 2018.1 or Newer + #region Unity 2018.1 or Newer - #region Material + #region Material - /// Tweens a Material's named texture offset property with the given ID to the given value. - /// Also stores the material as the tween's target so it can be used for filtered operations + /// + /// Tweens a Material's named texture offset property with the given ID to the given value. + /// Also stores the material as the tween's target so it can be used for filtered operations + /// /// The end value to reach /// The ID of the material property to tween (also called nameID in Unity's manual) /// The duration of the tween - public static TweenerCore DOOffset(this Material target, Vector2 endValue, int propertyID, float duration) - { - if (!target.HasProperty(propertyID)) - { - if (Debugger.logPriority > 0) Debugger.LogMissingMaterialProperty(propertyID); + public static TweenerCore DOOffset(this Material target, Vector2 endValue, int propertyID, float duration) { + if (!target.HasProperty(propertyID)) { + if (Debugger.logPriority > 0) { + Debugger.LogMissingMaterialProperty(propertyID); + } + return null; } - TweenerCore t = DOTween.To(() => target.GetTextureOffset(propertyID), x => target.SetTextureOffset(propertyID, x), endValue, duration); + + var t = DOTween.To(() => target.GetTextureOffset(propertyID), x => target.SetTextureOffset(propertyID, x), endValue, duration); t.SetTarget(target); + return t; } - /// Tweens a Material's named texture scale property with the given ID to the given value. - /// Also stores the material as the tween's target so it can be used for filtered operations + /// + /// Tweens a Material's named texture scale property with the given ID to the given value. + /// Also stores the material as the tween's target so it can be used for filtered operations + /// /// The end value to reach /// The ID of the material property to tween (also called nameID in Unity's manual) /// The duration of the tween - public static TweenerCore DOTiling(this Material target, Vector2 endValue, int propertyID, float duration) - { - if (!target.HasProperty(propertyID)) - { - if (Debugger.logPriority > 0) Debugger.LogMissingMaterialProperty(propertyID); + public static TweenerCore DOTiling(this Material target, Vector2 endValue, int propertyID, float duration) { + if (!target.HasProperty(propertyID)) { + if (Debugger.logPriority > 0) { + Debugger.LogMissingMaterialProperty(propertyID); + } + return null; } - TweenerCore t = DOTween.To(() => target.GetTextureScale(propertyID), x => target.SetTextureScale(propertyID, x), endValue, duration); + + var t = DOTween.To(() => target.GetTextureScale(propertyID), x => target.SetTextureScale(propertyID, x), endValue, duration); t.SetTarget(target); + return t; } - #endregion Material + #endregion Material - #endregion Unity 2018.1 or Newer + #endregion Unity 2018.1 or Newer -#endif + #endif } // █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ @@ -239,118 +280,83 @@ public static TweenerCore DOTiling(this Materia #if UNITY_5_3_OR_NEWER || UNITY_2017_1_OR_NEWER - public static class DOTweenCYInstruction - { - public class WaitForCompletion : CustomYieldInstruction - { - public override bool keepWaiting - { - get - { - return t.active && !t.IsComplete(); - } - } - + public static class DOTweenCYInstruction { + public class WaitForCompletion : CustomYieldInstruction { private readonly Tween t; - public WaitForCompletion(Tween tween) - { + public WaitForCompletion(Tween tween) { t = tween; } - } - public class WaitForRewind : CustomYieldInstruction - { - public override bool keepWaiting - { - get - { - return t.active && (!t.playedOnce || t.position * (t.CompletedLoops() + 1) > 0); - } + public override bool keepWaiting { + get => t.active && !t.IsComplete(); } + } + public class WaitForRewind : CustomYieldInstruction { private readonly Tween t; - public WaitForRewind(Tween tween) - { + public WaitForRewind(Tween tween) { t = tween; } - } - public class WaitForKill : CustomYieldInstruction - { - public override bool keepWaiting - { - get - { - return t.active; - } + public override bool keepWaiting { + get => t.active && (!t.playedOnce || t.position * (t.CompletedLoops() + 1) > 0); } + } + public class WaitForKill : CustomYieldInstruction { private readonly Tween t; - public WaitForKill(Tween tween) - { + public WaitForKill(Tween tween) { t = tween; } - } - public class WaitForElapsedLoops : CustomYieldInstruction - { - public override bool keepWaiting - { - get - { - return t.active && t.CompletedLoops() < elapsedLoops; - } + public override bool keepWaiting { + get => t.active; } + } - private readonly Tween t; + public class WaitForElapsedLoops : CustomYieldInstruction { private readonly int elapsedLoops; - public WaitForElapsedLoops(Tween tween, int elapsedLoops) - { + private readonly Tween t; + + public WaitForElapsedLoops(Tween tween, int elapsedLoops) { t = tween; this.elapsedLoops = elapsedLoops; } - } - public class WaitForPosition : CustomYieldInstruction - { - public override bool keepWaiting - { - get - { - return t.active && t.position * (t.CompletedLoops() + 1) < position; - } + public override bool keepWaiting { + get => t.active && t.CompletedLoops() < elapsedLoops; } + } - private readonly Tween t; + public class WaitForPosition : CustomYieldInstruction { private readonly float position; - public WaitForPosition(Tween tween, float position) - { + private readonly Tween t; + + public WaitForPosition(Tween tween, float position) { t = tween; this.position = position; } - } - public class WaitForStart : CustomYieldInstruction - { - public override bool keepWaiting - { - get - { - return t.active && !t.playedOnce; - } + public override bool keepWaiting { + get => t.active && t.position * (t.CompletedLoops() + 1) < position; } + } + public class WaitForStart : CustomYieldInstruction { private readonly Tween t; - public WaitForStart(Tween tween) - { + public WaitForStart(Tween tween) { t = tween; } + + public override bool keepWaiting { + get => t.active && !t.playedOnce; + } } } diff --git a/Assets/Plugins/DOTween/Modules/DOTweenModuleUtils.cs b/Assets/Plugins/DOTween/Modules/DOTweenModuleUtils.cs index 4beedaa8..08fd47f9 100644 --- a/Assets/Plugins/DOTween/Modules/DOTweenModuleUtils.cs +++ b/Assets/Plugins/DOTween/Modules/DOTweenModuleUtils.cs @@ -1,165 +1,167 @@ // Author: Daniele Giardini - http://www.demigiant.com // Created: 2018/07/13 +using System; using DG.Tweening.Core; using DG.Tweening.Plugins.Core.PathCore; using DG.Tweening.Plugins.Options; -using System; -using System.Reflection; +using UnityEditor; using UnityEngine; +using UnityEngine.Scripting; #pragma warning disable 1591 -namespace DG.Tweening -{ +namespace DG.Tweening { /// - /// Utility functions that deal with available Modules. - /// Modules defines: - /// - DOTAUDIO - /// - DOTPHYSICS - /// - DOTPHYSICS2D - /// - DOTSPRITE - /// - DOTUI - /// Extra defines set and used for implementation of external assets: - /// - DOTWEEN_TMP ► TextMesh Pro - /// - DOTWEEN_TK2D ► 2D Toolkit + /// Utility functions that deal with available Modules. + /// Modules defines: + /// - DOTAUDIO + /// - DOTPHYSICS + /// - DOTPHYSICS2D + /// - DOTSPRITE + /// - DOTUI + /// Extra defines set and used for implementation of external assets: + /// - DOTWEEN_TMP ► TextMesh Pro + /// - DOTWEEN_TK2D ► 2D Toolkit /// - public static class DOTweenModuleUtils - { + public static class DOTweenModuleUtils { private static bool _initialized; - #region Reflection + #region Reflection /// - /// Called via Reflection by DOTweenComponent on Awake + /// Called via Reflection by DOTweenComponent on Awake /// -#if UNITY_2018_1_OR_NEWER - - [UnityEngine.Scripting.Preserve] -#endif - public static void Init() - { - if (_initialized) return; + #if UNITY_2018_1_OR_NEWER + [Preserve] + #endif + public static void Init() { + if (_initialized) { + return; + } _initialized = true; DOTweenExternalCommand.SetOrientationOnPath += Physics.SetOrientationOnPath; -#if UNITY_EDITOR -#if UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_5 || UNITY_2017_1 + #if UNITY_EDITOR + #if UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_5 || UNITY_2017_1 UnityEditor.EditorApplication.playmodeStateChanged += PlaymodeStateChanged; -#else - UnityEditor.EditorApplication.playModeStateChanged += PlaymodeStateChanged; -#endif -#endif + #else + EditorApplication.playModeStateChanged += PlaymodeStateChanged; + #endif + #endif } -#if UNITY_2018_1_OR_NEWER -#pragma warning disable + #if UNITY_2018_1_OR_NEWER + #pragma warning disable - [UnityEngine.Scripting.Preserve] - private static void Preserver() - { - Assembly[] loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies(); - MethodInfo mi = typeof(MonoBehaviour).GetMethod("Stub"); + [Preserve] + private static void Preserver() { + var loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies(); + var mi = typeof(MonoBehaviour).GetMethod("Stub"); } -#pragma warning restore -#endif + #pragma warning restore + #endif - #endregion Reflection + #endregion Reflection -#if UNITY_EDITOR + #if UNITY_EDITOR // Fires OnApplicationPause in DOTweenComponent even when Editor is paused (otherwise it's only fired at runtime) -#if UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_5 || UNITY_2017_1 + #if UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_5 || UNITY_2017_1 static void PlaymodeStateChanged() -#else + #else - private static void PlaymodeStateChanged(UnityEditor.PlayModeStateChange state) -#endif + private static void PlaymodeStateChanged(PlayModeStateChange state) + #endif { - if (DOTween.instance == null) return; - DOTween.instance.OnApplicationPause(UnityEditor.EditorApplication.isPaused); + if (DOTween.instance == null) { + return; + } + + DOTween.instance.OnApplicationPause(EditorApplication.isPaused); } -#endif + #endif // █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ // ███ INTERNAL CLASSES ████████████████████████████████████████████████████████████████████████████████████████████████ // █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ - public static class Physics - { + public static class Physics { // Called via DOTweenExternalCommand callback - public static void SetOrientationOnPath(PathOptions options, Tween t, Quaternion newRot, Transform trans) - { -#if true // PHYSICS_MARKER - if (options.isRigidbody) ((Rigidbody)t.target).rotation = newRot; - else trans.rotation = newRot; -#else + public static void SetOrientationOnPath(PathOptions options, Tween t, Quaternion newRot, Transform trans) { + #if true // PHYSICS_MARKER + if (options.isRigidbody) { + ((Rigidbody) t.target).rotation = newRot; + } else { + trans.rotation = newRot; + } + #else trans.rotation = newRot; -#endif + #endif } // Returns FALSE if the DOTween's Physics2D Module is disabled, or if there's no Rigidbody2D attached - public static bool HasRigidbody2D(Component target) - { -#if true // PHYSICS2D_MARKER + public static bool HasRigidbody2D(Component target) { + #if true // PHYSICS2D_MARKER return target.GetComponent() != null; -#else + #else return false; -#endif + #endif } - #region Called via Reflection + #region Called via Reflection // Called via Reflection by DOTweenPathInspector // Returns FALSE if the DOTween's Physics Module is disabled, or if there's no rigidbody attached -#if UNITY_2018_1_OR_NEWER + #if UNITY_2018_1_OR_NEWER - [UnityEngine.Scripting.Preserve] -#endif - public static bool HasRigidbody(Component target) - { -#if true // PHYSICS_MARKER + [Preserve] + #endif + public static bool HasRigidbody(Component target) { + #if true // PHYSICS_MARKER return target.GetComponent() != null; -#else + #else return false; -#endif + #endif } // Called via Reflection by DOTweenPath -#if UNITY_2018_1_OR_NEWER + #if UNITY_2018_1_OR_NEWER - [UnityEngine.Scripting.Preserve] -#endif + [Preserve] + #endif public static TweenerCore CreateDOTweenPathTween( - MonoBehaviour target, bool tweenRigidbody, bool isLocal, Path path, float duration, PathMode pathMode - ) - { + MonoBehaviour target, + bool tweenRigidbody, + bool isLocal, + Path path, + float duration, + PathMode pathMode + ) { TweenerCore t; -#if true // PHYSICS_MARKER - Rigidbody rBody = tweenRigidbody ? target.GetComponent() : null; - if (tweenRigidbody && rBody != null) - { + #if true // PHYSICS_MARKER + var rBody = tweenRigidbody ? target.GetComponent() : null; + + if (tweenRigidbody && rBody != null) { t = isLocal ? rBody.DOLocalPath(path, duration, pathMode) : rBody.DOPath(path, duration, pathMode); - } - else - { + } else { t = isLocal ? target.transform.DOLocalPath(path, duration, pathMode) : target.transform.DOPath(path, duration, pathMode); } -#else + #else t = isLocal ? target.transform.DOLocalPath(path, duration, pathMode) : target.transform.DOPath(path, duration, pathMode); -#endif + #endif return t; } - #endregion Called via Reflection + #endregion Called via Reflection } } } \ No newline at end of file diff --git a/Assets/Plugins/DotNetZip.dll b/Assets/Plugins/DotNetZip.dll new file mode 100644 index 00000000..9ad1c18a Binary files /dev/null and b/Assets/Plugins/DotNetZip.dll differ diff --git a/Assets/Plugins/DotNetZip.dll.meta b/Assets/Plugins/DotNetZip.dll.meta new file mode 100644 index 00000000..6c92bf29 --- /dev/null +++ b/Assets/Plugins/DotNetZip.dll.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: 5cb19c9d20bb2784096ec9211f596191 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NAudio.dll b/Assets/Plugins/NAudio.dll new file mode 100644 index 00000000..a709fe0d Binary files /dev/null and b/Assets/Plugins/NAudio.dll differ diff --git a/Assets/Plugins/NAudio.dll.meta b/Assets/Plugins/NAudio.dll.meta new file mode 100644 index 00000000..66a57dfe --- /dev/null +++ b/Assets/Plugins/NAudio.dll.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: 865fdb8766968f143b4135ec110bb3d6 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes.meta b/Assets/Plugins/NaughtyAttributes.meta new file mode 100644 index 00000000..b8028d91 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 22507f83d52c8df4da691149b87b3997 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/README.html b/Assets/Plugins/NaughtyAttributes/README.html new file mode 100644 index 00000000..5df2d2d5 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/README.html @@ -0,0 +1,1648 @@ + + + + + README.md - Grip + + + + + + +
+
+ + + +
+
+
+
+ +

+ + README.md +

+ +
+

+NaughtyAttributes

+

Unity 2018.3+ +openupm +License: MIT

+

NaughtyAttributes is an extension for the Unity Inspector.

+

It expands the range of attributes that Unity provides so that you can create powerful inspectors without the need of custom editors or property drawers. It also provides attributes that can be applied to non-serialized fields or functions.

+

Most of the attributes are implemented using Unity's CustomPropertyDrawer, so they will work in your custom editors. If you want all of the attributes to work in your custom editors, however, you must inherit from NaughtyInspector and use the NaughtyEditorGUI.PropertyField_Layout function instead of EditorGUILayout.PropertyField.

+

+System Requirements

+

Unity 2018.3.0 or later versions. Feel free to try older version. Don't forget to include the NaughtyAttributes namespace.

+

+Installation

+
    +
  1. The package is available on the openupm registry. You can install it via openupm-cli.
  2. +
+
openupm add com.dbrizov.naughtyattributes
+
+
    +
  1. You can also install via git url by adding this entry in your manifest.json +
  2. +
+
"com.dbrizov.naughtyattributes": "https://github.com/dbrizov/NaughtyAttributes.git#upm"
+
+
    +
  1. You can also download it from the Asset Store +
  2. +
+

+Documentation

+ +

+Support

+

NaughtyAttributes is an open-source project that I am developing in my free time. If you like it you can support me by donating.

+ +

+Overview

+

+Drawer Attributes

+

Provide special draw options to serialized fields. +A field can have only one DrawerAttribute. If a field has more than one, only the bottom one will be used.

+

+AnimatorParam

+

Select an Animator paramater via dropdown interface.

+
public class NaughtyComponent : MonoBehaviour
+{
+	public Animator someAnimator;
+
+	[AnimatorParam("someAnimator")]
+	public int paramHash;
+
+	[AnimatorParam("someAnimator")]
+	public string paramName;
+}
+

inspector

+

+Button

+

A method can be marked as a button. A button appears in the inspector and executes the method if clicked. +Works both with instance and static methods.

+
public class NaughtyComponent : MonoBehaviour
+{
+	[Button]
+	private void MethodOne() { }
+
+	[Button("Button Text")]
+	private void MethodTwo() { }
+}
+

inspector

+

+CurveRange

+

Set bounds and modify curve color for AnimationCurves

+
public class NaughtyComponent : MonoBehaviour
+{
+	[CurveRange(-1, -1, 1, 1)]
+	public AnimationCurve curve;
+	
+	[CurveRange(EColor.Orange)]
+	public AnimationCurve curve1;
+	
+	[CurveRange(0, 0, 5, 5, EColor.Red)]
+	public AnimationCurve curve2;
+}
+

inspector

+

+Dropdown

+

Provides an interface for dropdown value selection.

+
public class NaughtyComponent : MonoBehaviour
+{
+	[Dropdown("intValues")]
+	public int intValue;
+
+	[Dropdown("StringValues")]
+	public string stringValue;
+
+	[Dropdown("GetVectorValues")]
+	public Vector3 vectorValue;
+
+	private int[] intValues = new int[] { 1, 2, 3, 4, 5 };
+
+	private List<string> StringValues { get { return new List<string>() { "A", "B", "C", "D", "E" }; } }
+
+	private DropdownList<Vector3> GetVectorValues()
+	{
+		return new DropdownList<Vector3>()
+		{
+			{ "Right",   Vector3.right },
+			{ "Left",    Vector3.left },
+			{ "Up",      Vector3.up },
+			{ "Down",    Vector3.down },
+			{ "Forward", Vector3.forward },
+			{ "Back",    Vector3.back }
+		};
+	}
+}
+

inspector

+

+EnumFlags

+

Provides dropdown interface for setting enum flags.

+
public enum Direction
+{
+	None = 0,
+	Right = 1 << 0,
+	Left = 1 << 1,
+	Up = 1 << 2,
+	Down = 1 << 3
+}
+
+public class NaughtyComponent : MonoBehaviour
+{
+	[EnumFlags]
+	public Direction flags;
+}
+

inspector

+

+Expandable

+

Make scriptable objects expandable.

+
public class NaughtyComponent : MonoBehaviour
+{
+	[Expandable]
+	public ScriptableObject scriptableObject;
+}
+

inspector

+

+HorizontalLine

+
public class NaughtyComponent : MonoBehaviour
+{
+	[HorizontalLine(color: EColor.Red)]
+	public int red;
+
+	[HorizontalLine(color: EColor.Green)]
+	public int green;
+
+	[HorizontalLine(color: EColor.Blue)]
+	public int blue;
+}
+

inspector

+

+InfoBox

+

Used for providing additional information.

+
public class NaughtyComponent : MonoBehaviour
+{
+	[InfoBox("This is my int", EInfoBoxType.Normal)]
+	public int myInt;
+
+	[InfoBox("This is my float", EInfoBoxType.Warning)]
+	public float myFloat;
+
+	[InfoBox("This is my vector", EInfoBoxType.Error)]
+	public Vector3 myVector;
+}
+

inspector

+

+InputAxis

+

Select an input axis via dropdown interface.

+
public class NaughtyComponent : MonoBehaviour
+{
+	[InputAxis]
+	public string inputAxis;
+}
+

inspector

+

+MinMaxSlider

+

A double slider. The min value is saved to the X property, and the max value is saved to the Y property of a Vector2 field.

+
public class NaughtyComponent : MonoBehaviour
+{
+	[MinMaxSlider(0.0f, 100.0f)]
+	public Vector2 minMaxSlider;
+}
+

inspector

+

+ProgressBar

+
public class NaughtyComponent : MonoBehaviour
+{
+	[ProgressBar("Health", 300, EColor.Red)]
+	public int health = 250;
+
+	[ProgressBar("Mana", 100, EColor.Blue)]
+	public int mana = 25;
+
+	[ProgressBar("Stamina", 200, EColor.Green)]
+	public int stamina = 150;
+}
+

inspector

+

+ReorderableList

+

Provides array type fields with an interface for easy reordering of elements.

+
public class NaughtyComponent : MonoBehaviour
+{
+	[ReorderableList]
+	public int[] intArray;
+
+	[ReorderableList]
+	public List<float> floatArray;
+}
+

inspector

+

+ReadOnly

+

Makes a field read only.

+
public class NaughtyComponent : MonoBehaviour
+{
+	[ReadOnly]
+	public Vector3 forwardVector = Vector3.forward;
+}
+

inspector

+

+ResizableTextArea

+

A resizable text area where you can see the whole text. +Unlike Unity's Multiline and TextArea attributes where you can see only 3 rows of a given text, and in order to see it or modify it you have to manually scroll down to the desired row.

+
public class NaughtyComponent : MonoBehaviour
+{
+	[ResizableTextArea]
+	public string resizableTextArea;
+}
+

inspector

+

+Scene

+

Select a scene from the build settings via dropdown interface.

+
public class NaughtyComponent : MonoBehaviour
+{
+	[Scene]
+	public string bootScene; // scene name
+
+	[Scene]
+	public int tutorialScene; // scene index
+}
+

inspector

+

+ShowAssetPreview

+

Shows the texture preview of a given asset (Sprite, Prefab...).

+
public class NaughtyComponent : MonoBehaviour
+{
+	[ShowAssetPreview]
+	public Sprite sprite;
+
+	[ShowAssetPreview(128, 128)]
+	public GameObject prefab;
+}
+

inspector

+

+ShowNativeProperty

+

Shows native C# properties in the inspector. +All native properties are displayed at the bottom of the inspector after the non-serialized fields and before the method buttons. +It supports only certain types (bool, int, long, float, double, string, Vector2, Vector3, Vector4, Color, Bounds, Rect, UnityEngine.Object).

+
public class NaughtyComponent : MonoBehaviour
+{
+	public List<Transform> transforms;
+
+	[ShowNativeProperty]
+	public int TransformsCount => transforms.Count;
+}
+

inspector

+

+ShowNonSerializedField

+

Shows non-serialized fields in the inspector. +All non-serialized fields are displayed at the bottom of the inspector before the method buttons. +Keep in mind that if you change a non-static non-serialized field in the code - the value in the inspector will be updated after you press Play in the editor. +There is no such issue with static non-serialized fields because their values are updated at compile time. +It supports only certain types (bool, int, long, float, double, string, Vector2, Vector3, Vector4, Color, Bounds, Rect, UnityEngine.Object).

+
public class NaughtyComponent : MonoBehaviour
+{
+	[ShowNonSerializedField]
+	private int myInt = 10;
+
+	[ShowNonSerializedField]
+	private const float PI = 3.14159f;
+
+	[ShowNonSerializedField]
+	private static readonly Vector3 CONST_VECTOR = Vector3.one;
+}
+

inspector

+

+Tag

+

Select a tag via dropdown interface.

+
public class NaughtyComponent : MonoBehaviour
+{
+	[Tag]
+	public string tagField;
+}
+

inspector

+

+Meta Attributes

+

Give the fields meta data. A field can have more than one meta attributes.

+

+BoxGroup

+

Surrounds grouped fields with a box.

+
public class NaughtyComponent : MonoBehaviour
+{
+	[BoxGroup("Integers")]
+	public int firstInt;
+	[BoxGroup("Integers")]
+	public int secondInt;
+
+	[BoxGroup("Floats")]
+	public float firstFloat;
+	[BoxGroup("Floats")]
+	public float secondFloat;
+}
+

inspector

+

+Foldout

+

Makes a foldout group.

+
public class NaughtyComponent : MonoBehaviour
+{
+	[Foldout("Integers")]
+	public int firstInt;
+	[Foldout("Integers")]
+	public int secondInt;
+}
+

inspector

+

+EnableIf / DisableIf

+
public class NaughtyComponent : MonoBehaviour
+{
+	public bool enableMyInt;
+
+	[EnableIf("enableMyInt")]
+	public int myInt;
+
+	[EnableIf("Enabled")]
+	public float myFloat;
+
+	[EnableIf("NotEnabled")]
+	public Vector3 myVector;
+
+	public bool Enabled() { return true; }
+
+	public bool NotEnabled => false;
+}
+

inspector

+

You can have more than one condition.

+
public class NaughtyComponent : MonoBehaviour
+{
+	public bool flag0;
+	public bool flag1;
+
+	[EnableIf(EConditionOperator.And, "flag0", "flag1")]
+	public int enabledIfAll;
+
+	[EnableIf(EConditionOperator.Or, "flag0", "flag1")]
+	public int enabledIfAny;
+}
+

+ShowIf / HideIf

+
public class NaughtyComponent : MonoBehaviour
+{
+	public bool showInt;
+
+	[ShowIf("showInt")]
+	public int myInt;
+
+	[ShowIf("AlwaysShow")]
+	public float myFloat;
+
+	[ShowIf("NeverShow")]
+	public Vector3 myVector;
+
+	public bool AlwaysShow() { return true; }
+
+	public bool NeverShow => false;
+}
+

inspector

+

You can have more than one condition.

+
public class NaughtyComponent : MonoBehaviour
+{
+	public bool flag0;
+	public bool flag1;
+
+	[ShowIf(EConditionOperator.And, "flag0", "flag1")]
+	public int showIfAll;
+
+	[ShowIf(EConditionOperator.Or, "flag0", "flag1")]
+	public int showIfAny;
+}
+

+Label

+

Override default field label.

+
public class NaughtyComponent : MonoBehaviour
+{
+	[Label("Short Name")]
+	public string veryVeryLongName;
+
+	[Label("RGB")]
+	public Vector3 vectorXYZ;
+}
+

inspector

+

+OnValueChanged

+

Detects a value change and executes a callback. +Keep in mind that the event is detected only when the value is changed from the inspector. +If you want a runtime event, you should probably use an event/delegate and subscribe to it.

+
public class NaughtyComponent : MonoBehaviour
+{
+	[OnValueChanged("OnValueChangedCallback")]
+	public int myInt;
+
+	private void OnValueChangedCallback()
+	{
+		Debug.Log(myInt);
+	}
+}
+

+Validator Attributes

+

Used for validating the fields. A field can have infinite number of validator attributes.

+

+MinValue / MaxValue

+

Clamps integer and float fields.

+
public class NaughtyComponent : MonoBehaviour
+{
+	[MinValue(0), MaxValue(10)]
+	public int myInt;
+
+	[MinValue(0.0f)]
+	public float myFloat;
+}
+

inspector

+

+Required

+

Used to remind the developer that a given reference type field is required.

+
public class NaughtyComponent : MonoBehaviour
+{
+	[Required]
+	public Transform myTransform;
+
+	[Required("Custom required text")]
+	public GameObject myGameObject;
+}
+

inspector

+

+ValidateInput

+

The most powerful ValidatorAttribute.

+
public class _NaughtyComponent : MonoBehaviour
+{
+	[ValidateInput("IsNotNull")]
+	public Transform myTransform;
+
+	[ValidateInput("IsGreaterThanZero", "myInteger must be greater than zero")]
+	public int myInt;
+
+	private bool IsNotNull(Transform tr)
+	{
+		return tr != null;
+	}
+
+	private bool IsGreaterThanZero(int value)
+	{
+		return value > 0;
+	}
+}
+

inspector

+ +
+
+
+
+
+ + + +
+
 
+
+ + \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/README.html.meta b/Assets/Plugins/NaughtyAttributes/README.html.meta new file mode 100644 index 00000000..42c42d4a --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/README.html.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f1c5c604e6d27cc4d86e81f45c704e11 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Samples.meta b/Assets/Plugins/NaughtyAttributes/Samples.meta new file mode 100644 index 00000000..db0978e4 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Samples.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b1e9ff0668650a54da2c458e80a90032 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Samples/DemoScene.meta b/Assets/Plugins/NaughtyAttributes/Samples/DemoScene.meta new file mode 100644 index 00000000..ea993c66 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Samples/DemoScene.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: afb4c815411c28b449e61fbaa1a8bfa3 +folderAsset: yes +timeCreated: 1507995550 +licenseType: Store +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/DemoScene.unity b/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/DemoScene.unity new file mode 100644 index 00000000..7b9945cb --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/DemoScene.unity @@ -0,0 +1,2108 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0.44657874, g: 0.49641258, b: 0.5748172, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + 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: 98ee975b74776234986f4d35f14c4ccc, + 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 &106181862 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 106181863} + m_Layer: 0 + m_Name: ===== Drawer Attributes ===== + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &106181863 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 106181862} + 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: 1148579784} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &114650323 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 114650324} + - component: {fileID: 114650325} + - component: {fileID: 114650326} + m_Layer: 0 + m_Name: EnableIf_DisableIf + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &114650324 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 114650323} + 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: 1148579784} + m_RootOrder: 23 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &114650325 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 114650323} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bed506d8be3a10f45bec4bf2237bec87, type: 3} + m_Name: + m_EditorClassIdentifier: + enable1: 0 + enable2: 0 + enableIfAll: + enableIfAny: + nest1: + enable1: 1 + enable2: 0 + enableIfAll: 1 + enableIfAny: 2 + nest2: + enable1: 1 + enable2: 1 + enableIfAll: {x: 0.25, y: 0.75} + enableIfAny: {x: 0.25, y: 0.75} +--- !u!114 &114650326 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 114650323} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0e48a088cb96287448c3be58932bfcb7, type: 3} + m_Name: + m_EditorClassIdentifier: + disable1: 0 + disable2: 0 + disableIfAll: + disableIfAny: + nest1: + disable1: 1 + disable2: 0 + disableIfAll: 1 + disableIfAny: 2 + nest2: + disable1: 1 + disable2: 1 + enableIfAll: {x: 0.25, y: 0.75} + enableIfAny: {x: 0.25, y: 0.75} +--- !u!1 &155697335 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 155697336} + - component: {fileID: 155697337} + m_Layer: 0 + m_Name: InputAxis + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &155697336 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 155697335} + 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: 1148579784} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &155697337 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 155697335} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e0cc8a31c22090847b75538c0ed2d2fc, type: 3} + m_Name: + m_EditorClassIdentifier: + inputAxis0: + nest1: + inputAxis1: Horizontal + nest2: + inputAxis2: Vertical +--- !u!1 &237121640 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 237121641} + - component: {fileID: 237121642} + m_Layer: 0 + m_Name: ReadOnly + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &237121641 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 237121640} + 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: 1148579784} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &237121642 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 237121640} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5443d37a05e188846bda9b05b067184e, type: 3} + m_Name: + m_EditorClassIdentifier: + readOnlyInt: 5 + nest1: + readOnlyFloat: 3.14 + nest2: + readOnlyString: +--- !u!1 &369789276 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 369789277} + - component: {fileID: 369789278} + m_Layer: 0 + m_Name: Required + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &369789277 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 369789276} + 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: 1148579784} + m_RootOrder: 29 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &369789278 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 369789276} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9c8c10b2234650d42b2a8efad6b413db, type: 3} + m_Name: + m_EditorClassIdentifier: + trans0: {fileID: 0} + nest1: + trans1: {fileID: 0} + nest2: + trans2: {fileID: 0} +--- !u!1 &572382748 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 572382749} + - component: {fileID: 572382751} + m_Layer: 0 + m_Name: Foldout + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &572382749 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 572382748} + 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: 1148579784} + m_RootOrder: 22 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &572382751 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 572382748} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3b437215d92efa74ea85ff726ca0dd09, type: 3} + m_Name: + m_EditorClassIdentifier: + int0: 0 + int1: 0 + float0: 0 + float1: 0 + slider0: {x: 0.25, y: 0.75} + slider1: {x: 0.25, y: 0.75} + str0: + str1: + trans0: {fileID: 0} + trans1: {fileID: 0} +--- !u!1 &607441873 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 607441874} + - component: {fileID: 607441875} + m_Layer: 0 + m_Name: MinMaxSlider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &607441874 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 607441873} + 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: 1148579784} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &607441875 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 607441873} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fd67fbde6acdd6a44944f12e507067c5, type: 3} + m_Name: + m_EditorClassIdentifier: + minMaxSlider0: {x: 0, y: 0.5} + nest1: + minMaxSlider1: {x: 0.25, y: 0.75} + nest2: + minMaxSlider2: {x: 0.50000006, y: 1} +--- !u!1 &706445688 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 706445689} + - component: {fileID: 706445690} + m_Layer: 0 + m_Name: NaughtyComponent + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &706445689 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 706445688} + 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!114 &706445690 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 706445688} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9c928ea15ae74a44089beb2e534c1a35, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &732714203 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 732714204} + m_Layer: 0 + m_Name: ===== Meta Attributes ===== + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &732714204 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 732714203} + 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: 1148579784} + m_RootOrder: 20 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &779670086 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 779670087} + - component: {fileID: 779670088} + m_Layer: 0 + m_Name: Dropdown + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &779670087 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 779670086} + 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: 1148579784} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &779670088 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 779670086} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3855e37cd6b01194e8166573c7c4b37d, type: 3} + m_Name: + m_EditorClassIdentifier: + intValue: 1 + nest1: + stringValue: A + nest2: + vectorValue: {x: 1, y: 0, z: 0} +--- !u!1 &892661554 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 892661555} + - component: {fileID: 892661556} + m_Layer: 0 + m_Name: Scene + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &892661555 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 892661554} + 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: 1148579784} + m_RootOrder: 15 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &892661556 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 892661554} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 281a85803caf74a459439020a0840fa4, type: 3} + m_Name: + m_EditorClassIdentifier: + scene0: DemoScene + nest1: + scene1: DemoScene + nest2: + scene2: 0 +--- !u!1 &933563384 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 933563385} + - component: {fileID: 933563386} + m_Layer: 0 + m_Name: ShowAssetPreview + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &933563385 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 933563384} + 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: 1148579784} + m_RootOrder: 16 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &933563386 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 933563384} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 705c14aa9ecaa274289972381f471367, type: 3} + m_Name: + m_EditorClassIdentifier: + sprite0: {fileID: 21300000, guid: 005888ede18a58e4db8d069cfa3007cb, type: 3} + prefab0: {fileID: 1981131855061102, guid: 7ec354ef3daae7641b7a3fa5e1fe0c81, type: 3} + nest1: + sprite1: {fileID: 21300000, guid: 005888ede18a58e4db8d069cfa3007cb, type: 3} + prefab1: {fileID: 1981131855061102, guid: 7ec354ef3daae7641b7a3fa5e1fe0c81, type: 3} + nest2: + sprite2: {fileID: 21300000, guid: 005888ede18a58e4db8d069cfa3007cb, type: 3} + prefab2: {fileID: 1981131855061102, guid: 7ec354ef3daae7641b7a3fa5e1fe0c81, + type: 3} +--- !u!1 &948946033 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 948946034} + - component: {fileID: 948946035} + m_Layer: 0 + m_Name: ProgressBar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &948946034 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 948946033} + 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: 1148579784} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &948946035 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 948946033} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 96ca4c27fc649764b9d1625f1740cb9e, type: 3} + m_Name: + m_EditorClassIdentifier: + health: 50 + nest1: + mana: 25 + nest2: + stamina: 75 + elixir: 50 + maxElixir: 100 +--- !u!1 &1139446979 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1139446980} + - component: {fileID: 1139446981} + m_Layer: 0 + m_Name: HorizontalLine + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1139446980 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1139446979} + 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: 1148579784} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1139446981 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1139446979} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5cc6d3f8d4a53374887b3d620a6972e3, type: 3} + m_Name: + m_EditorClassIdentifier: + line0: 0 + nest1: + line1: 0 + nest2: + line2: 0 +--- !u!1 &1148579783 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1148579784} + m_Layer: 0 + m_Name: Tests + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1148579784 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1148579783} + 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: 106181863} + - {fileID: 1178133860} + - {fileID: 2043059161} + - {fileID: 2082563173} + - {fileID: 779670087} + - {fileID: 2015414598} + - {fileID: 1622801696} + - {fileID: 1139446980} + - {fileID: 1552114400} + - {fileID: 155697336} + - {fileID: 607441874} + - {fileID: 948946034} + - {fileID: 237121641} + - {fileID: 1747151588} + - {fileID: 1202167595} + - {fileID: 892661555} + - {fileID: 933563385} + - {fileID: 1989156459} + - {fileID: 1194502638} + - {fileID: 1380469385} + - {fileID: 732714204} + - {fileID: 1784643785} + - {fileID: 572382749} + - {fileID: 114650324} + - {fileID: 1524906391} + - {fileID: 1293624596} + - {fileID: 1871127830} + - {fileID: 1641427334} + - {fileID: 1706612702} + - {fileID: 369789277} + - {fileID: 1463483878} + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1178133859 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1178133860} + - component: {fileID: 1178133862} + - component: {fileID: 1178133861} + m_Layer: 0 + m_Name: AnimatorParam + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1178133860 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1178133859} + 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: 1148579784} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1178133861 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1178133859} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9bff20ccdde00fc49a62bad6a4ef9982, type: 3} + m_Name: + m_EditorClassIdentifier: + animator0: {fileID: 1178133862} + hash0: 1943738498 + name0: Float0 + nest1: + animator1: {fileID: 1178133862} + hash1: 726565755 + name1: Float0 + nest2: + animator2: {fileID: 1178133862} + hash1: -392453409 + name1: Trigger0 +--- !u!95 &1178133862 +Animator: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1178133859} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 9100000, guid: 63ee86efd213bf34285c95f33e79dc6c, type: 2} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorControllerStateOnDisable: 0 +--- !u!1 &1194502637 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1194502638} + - component: {fileID: 1194502639} + m_Layer: 0 + m_Name: ShowNonSerializedField + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1194502638 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1194502637} + 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: 1148579784} + m_RootOrder: 18 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1194502639 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1194502637} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 913d67a695253f744bdc776625b9b948, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1202167594 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1202167595} + - component: {fileID: 1202167596} + m_Layer: 0 + m_Name: ResizableTextArea + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1202167595 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1202167594} + 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: 1148579784} + m_RootOrder: 14 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1202167596 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1202167594} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fb4f4bb2e3e063340a24f4bb24528bb5, type: 3} + m_Name: + m_EditorClassIdentifier: + text0: '1 + + 2 + + 3' + nest1: + text1: '1 + + 2 + + 3 + + 4 + + 5' + nest2: + text2: '1 + + 2 + + 3 + + 4 + + 5 + + 6 + + 7' +--- !u!1 &1293624595 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1293624596} + - component: {fileID: 1293624597} + m_Layer: 0 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1293624596 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1293624595} + 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: 1148579784} + m_RootOrder: 25 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1293624597 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1293624595} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7488af014527ebf42af5c4fc4d5f4f5b, type: 3} + m_Name: + m_EditorClassIdentifier: + int0: 0 + nest1: + int1: 0 + nest2: + vector2: {x: 0.25, y: 0.75} +--- !u!1 &1380469384 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1380469385} + - component: {fileID: 1380469386} + m_Layer: 0 + m_Name: Tag + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1380469385 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1380469384} + 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: 1148579784} + m_RootOrder: 19 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1380469386 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1380469384} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8bcc0d5613b48fb43bd36c9d37e99900, type: 3} + m_Name: + m_EditorClassIdentifier: + tag0: + nest1: + tag1: MainCamera + nest2: + tag2: Player +--- !u!1 &1444377589 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1444377591} + - component: {fileID: 1444377590} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1444377590 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1444377589} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1444377591 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1444377589} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &1463483877 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1463483878} + - component: {fileID: 1463483879} + m_Layer: 0 + m_Name: ValidateInput + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1463483878 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1463483877} + 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: 1148579784} + m_RootOrder: 30 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1463483879 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1463483877} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 94adafcfe59aa344c9b5596b2cc6ecd0, type: 3} + m_Name: + m_EditorClassIdentifier: + int0: 0 + nest1: + int1: 0 + nest2: + int2: 0 +--- !u!1 &1524906390 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1524906391} + - component: {fileID: 1524906392} + - component: {fileID: 1524906393} + m_Layer: 0 + m_Name: ShowIf_HideIf + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1524906391 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1524906390} + 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: 1148579784} + m_RootOrder: 24 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1524906392 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1524906390} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4fdbfcfbf5b056a4bac491fe21569572, type: 3} + m_Name: + m_EditorClassIdentifier: + show1: 0 + show2: 0 + showIfAll: + showIfAny: + nest1: + show1: 1 + show2: 0 + showIfAll: 0 + showIfAny: 0 + nest2: + show1: 1 + show2: 1 + showIfAll: {x: 0.25, y: 0.75} + showIfAny: {x: 0.25, y: 0.75} +--- !u!114 &1524906393 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1524906390} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3cf166cb519e666419bb79b0c50c5ee1, type: 3} + m_Name: + m_EditorClassIdentifier: + hide1: 0 + hide2: 0 + hideIfAll: + hideIfAny: + nest1: + hide1: 1 + hide2: 0 + hideIfAll: 0 + hideIfAny: 0 + nest2: + hide1: 1 + hide2: 1 + hideIfAll: {x: 0.25, y: 0.75} + hideIfAny: {x: 0.25, y: 0.75} +--- !u!1 &1552114399 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1552114400} + - component: {fileID: 1552114401} + m_Layer: 0 + m_Name: InfoBox + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1552114400 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1552114399} + 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: 1148579784} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1552114401 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1552114399} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0dcb08e489c17644e9eacaa1ec5fe781, type: 3} + m_Name: + m_EditorClassIdentifier: + normal: 0 + nest1: + warning: 0 + nest2: + error: 0 +--- !u!1 &1591883662 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1591883666} + - component: {fileID: 1591883665} + - component: {fileID: 1591883664} + - component: {fileID: 1591883663} + 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 &1591883663 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1591883662} + m_Enabled: 1 +--- !u!124 &1591883664 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1591883662} + m_Enabled: 1 +--- !u!20 &1591883665 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1591883662} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_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: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1591883666 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1591883662} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, 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 &1622801695 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1622801696} + - component: {fileID: 1622801697} + m_Layer: 0 + m_Name: Expandable + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1622801696 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1622801695} + 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: 1148579784} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1622801697 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1622801695} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 64c4c9aee2b494d44be9bb0b7f12ed7c, type: 3} + m_Name: + m_EditorClassIdentifier: + obj0: {fileID: 11400000, guid: 9cf80899b80517945a2d2390fb48877f, type: 2} + nest1: + obj1: {fileID: 11400000, guid: 9cf80899b80517945a2d2390fb48877f, type: 2} + nest2: + obj2: {fileID: 11400000, guid: 9cf80899b80517945a2d2390fb48877f, type: 2} +--- !u!1 &1641427333 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1641427334} + m_Layer: 0 + m_Name: ===== Validator Attributes ===== + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1641427334 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1641427333} + 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: 1148579784} + m_RootOrder: 27 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1706612701 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1706612702} + - component: {fileID: 1706612703} + m_Layer: 0 + m_Name: MinValue_MaxValue + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1706612702 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1706612701} + 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: 1148579784} + m_RootOrder: 28 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1706612703 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1706612701} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 450a05787c54e6b4fa88ffe223bcee87, type: 3} + m_Name: + m_EditorClassIdentifier: + min0: 0 + max0: 0 + range01: 0 + nest1: + min0: 0 + max0: 0 + range01: 0 + nest2: + min0: 0 + max0: 0 + range01: 0 +--- !u!1 &1747151587 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1747151588} + - component: {fileID: 1747151589} + m_Layer: 0 + m_Name: ReorderableList + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1747151588 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1747151587} + 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: 1148579784} + m_RootOrder: 13 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1747151589 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1747151587} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c93fde7cd79390148ac576c3a159a77b, type: 3} + m_Name: + m_EditorClassIdentifier: + intArray: 020000000300000001000000 + vectorList: + - {x: 2, y: 2, z: 2} + - {x: 3, y: 3, z: 3} + - {x: 1, y: 1, z: 1} + structList: + - Int: 2 + Float: 2 + Vector: {x: 2, y: 2, z: 2} + - Int: 3 + Float: 3 + Vector: {x: 3, y: 3, z: 3} + - Int: 1 + Float: 1 + Vector: {x: 1, y: 1, z: 1} + gameObjectsList: [] + transformsList: [] + monoBehavioursList: [] +--- !u!1 &1784643784 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1784643785} + - component: {fileID: 1784643786} + m_Layer: 0 + m_Name: BoxGroup + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1784643785 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1784643784} + 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: 1148579784} + m_RootOrder: 21 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1784643786 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1784643784} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3920f5ea384951b4990e4d9e8032d12e, type: 3} + m_Name: + m_EditorClassIdentifier: + int0: 0 + int1: 0 + float0: 0 + float1: 0 + slider0: {x: 0.25, y: 0.75} + slider1: {x: 0.25, y: 0.75} + str0: + str1: + trans0: {fileID: 0} + trans1: {fileID: 0} +--- !u!1 &1871127829 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1871127830} + - component: {fileID: 1871127831} + m_Layer: 0 + m_Name: OnValueChanged + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1871127830 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1871127829} + 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: 1148579784} + m_RootOrder: 26 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1871127831 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1871127829} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ff1df679e5b32f64bb106752c63933fa, type: 3} + m_Name: + m_EditorClassIdentifier: + int0: 0 + nest1: + int1: 0 + nest2: + int2: 0 +--- !u!1 &1989156458 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1989156459} + - component: {fileID: 1989156460} + m_Layer: 0 + m_Name: ShowNativeProperty + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1989156459 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1989156458} + 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: 1148579784} + m_RootOrder: 17 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1989156460 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1989156458} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b5a73795d25dd334e90a5a347c6079d9, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &2015414597 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2015414598} + - component: {fileID: 2015414599} + m_Layer: 0 + m_Name: EnumFlags + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2015414598 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2015414597} + 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: 1148579784} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2015414599 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2015414597} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7b7f6b84ce0d7674d8a386fde729279c, type: 3} + m_Name: + m_EditorClassIdentifier: + flags0: 0 + nest1: + flags1: 6 + nest2: + flags2: -1 +--- !u!1 &2043059160 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2043059161} + - component: {fileID: 2043059162} + m_Layer: 0 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2043059161 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2043059160} + 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: 1148579784} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2043059162 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2043059160} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b592f12a9f69ac3408f6f870762232c7, type: 3} + m_Name: + m_EditorClassIdentifier: + myInt: 0 +--- !u!1 &2082563172 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2082563173} + - component: {fileID: 2082563174} + m_Layer: 0 + m_Name: CurveRange + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2082563173 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2082563172} + 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: 1148579784} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2082563174 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2082563172} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6587b100d001e7e46b9aaae7f1180b40, type: 3} + m_Name: + m_EditorClassIdentifier: + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: -1 + value: -1 + inSlope: 1 + outSlope: 1 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 1 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + curve1: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 1 + outSlope: 1 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 1 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + curve2: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 1 + outSlope: 1 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 10 + value: 10 + inSlope: 1 + outSlope: 1 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + nest1: + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 1 + outSlope: 1 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 1 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + nest2: + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 1 + outSlope: 1 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 5 + value: 5 + inSlope: 1 + outSlope: 1 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 diff --git a/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/DemoScene.unity.meta b/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/DemoScene.unity.meta new file mode 100644 index 00000000..e76127e1 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/DemoScene.unity.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 07845a5477be2b149a6f1cb32b5a3a5b +timeCreated: 1507998788 +licenseType: Store +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/DemoSceneSettings.lighting b/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/DemoSceneSettings.lighting new file mode 100644 index 00000000..a88ae386 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/DemoSceneSettings.lighting @@ -0,0 +1,63 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!850595691 &4890085278179872738 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: DemoSceneSettings + serializedVersion: 2 + m_GIWorkflowMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + 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: 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_PVRRussianRouletteStartBounce: 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/NaughtyAttributes/Samples/DemoScene/DemoSceneSettings.lighting.meta b/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/DemoSceneSettings.lighting.meta new file mode 100644 index 00000000..3af7b5e1 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/DemoSceneSettings.lighting.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 98ee975b74776234986f4d35f14c4ccc +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets.meta b/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets.meta new file mode 100644 index 00000000..d4b6a192 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 53a462744f22ca549927c5e6ea797362 +folderAsset: yes +timeCreated: 1509089305 +licenseType: Store +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/Cube.prefab b/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/Cube.prefab new file mode 100644 index 00000000..64055f67 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/Cube.prefab @@ -0,0 +1,93 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1981131855061102 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4344736110947706} + - component: {fileID: 33062901823624450} + - component: {fileID: 65233182844289960} + - component: {fileID: 23099360439063292} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4344736110947706 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1981131855061102} + 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!33 &33062901823624450 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1981131855061102} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!65 &65233182844289960 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1981131855061102} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &23099360439063292 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1981131855061102} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, 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_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 diff --git a/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/Cube.prefab.meta b/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/Cube.prefab.meta new file mode 100644 index 00000000..5f6520ad --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/Cube.prefab.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 7ec354ef3daae7641b7a3fa5e1fe0c81 +timeCreated: 1509089337 +licenseType: Store +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 100100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimation.anim b/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimation.anim new file mode 100644 index 00000000..9536161f --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimation.anim @@ -0,0 +1,169 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: DummyAnimation + serializedVersion: 6 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: 0, y: 0, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 1 + value: {x: 0, y: 0, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 1 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 1 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 1 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.z + path: + classID: 4 + script: {fileID: 0} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 1 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimation.anim.meta b/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimation.anim.meta new file mode 100644 index 00000000..d66e3b6c --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimation.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 31fbd6c92d19aaa48910857627a54a25 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimatorController.controller b/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimatorController.controller new file mode 100644 index 00000000..bb64cae8 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimatorController.controller @@ -0,0 +1,120 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1102 &-1567792821050049497 +AnimatorState: + serializedVersion: 5 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: DummyAnimation + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 31fbd6c92d19aaa48910857627a54a25, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: DummyAnimatorController + serializedVersion: 5 + m_AnimatorParameters: + - m_Name: Float0 + m_Type: 1 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: Float1 + m_Type: 1 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: Int0 + m_Type: 3 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: Int1 + m_Type: 3 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: Bool0 + m_Type: 4 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: Bool1 + m_Type: 4 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: Trigger0 + m_Type: 9 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: Trigger1 + m_Type: 9 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Base Layer + m_StateMachine: {fileID: 945276690032550857} + m_Mask: {fileID: 0} + m_Motions: [] + m_Behaviours: [] + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_DefaultWeight: 0 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} +--- !u!1107 &945276690032550857 +AnimatorStateMachine: + serializedVersion: 5 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Base Layer + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: -1567792821050049497} + m_Position: {x: 390, y: 80, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_EntryPosition: {x: 50, y: 120, z: 0} + m_ExitPosition: {x: 800, y: 120, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: -1567792821050049497} diff --git a/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimatorController.controller.meta b/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimatorController.controller.meta new file mode 100644 index 00000000..2ce8a9cc --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimatorController.controller.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 63ee86efd213bf34285c95f33e79dc6c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/NaughtyScriptableObject.asset b/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/NaughtyScriptableObject.asset new file mode 100644 index 00000000..d7934a76 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/NaughtyScriptableObject.asset @@ -0,0 +1,20 @@ +%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: 753bdb918c6038142acddbd7aae6958f, type: 3} + m_Name: NaughtyScriptableObject + m_EditorClassIdentifier: + enableMyInt: 0 + showMyFloat: 1 + myInt: 0 + myFloat: 1 + mySlider: {x: 0.25, y: 0.75} + list: 010000000200000003000000 diff --git a/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/NaughtyScriptableObject.asset.meta b/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/NaughtyScriptableObject.asset.meta new file mode 100644 index 00000000..0734977b --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/NaughtyScriptableObject.asset.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 9cf80899b80517945a2d2390fb48877f +timeCreated: 1518639643 +licenseType: Store +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/icon-github.png b/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/icon-github.png new file mode 100644 index 00000000..228b09ac Binary files /dev/null and b/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/icon-github.png differ diff --git a/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/icon-github.png.meta b/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/icon-github.png.meta new file mode 100644 index 00000000..98c09e99 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/icon-github.png.meta @@ -0,0 +1,132 @@ +fileFormatVersion: 2 +guid: 005888ede18a58e4db8d069cfa3007cb +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: 1 + 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: 1 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + 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/NaughtyAttributes/Scripts.meta b/Assets/Plugins/NaughtyAttributes/Scripts.meta new file mode 100644 index 00000000..30b4bb8f --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 66686847ee1fa044bb15dfe473666178 +folderAsset: yes +timeCreated: 1507995546 +licenseType: Store +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core.meta new file mode 100644 index 00000000..f1fc7823 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 1f67e408a6d0adf4ab29d095ccd8b116 +folderAsset: yes +timeCreated: 1507998942 +licenseType: Store +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes.meta new file mode 100644 index 00000000..132a3c27 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c76425e719cd4424d868674bcfb233f2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/AllowNestingAttribute.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/AllowNestingAttribute.cs new file mode 100644 index 00000000..d8e880bb --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/AllowNestingAttribute.cs @@ -0,0 +1,6 @@ +using System; + +namespace NaughtyAttributes { + [AttributeUsage(AttributeTargets.Field)] + public class AllowNestingAttribute : DrawerAttribute { } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/AllowNestingAttribute.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/AllowNestingAttribute.cs.meta new file mode 100644 index 00000000..343dfece --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/AllowNestingAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 95b49d3abe880c044adbe7faf6b7b4ec +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/AnimatorParamAttribute.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/AnimatorParamAttribute.cs new file mode 100644 index 00000000..b44a0a27 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/AnimatorParamAttribute.cs @@ -0,0 +1,20 @@ +using System; +using UnityEngine; + +namespace NaughtyAttributes { + [AttributeUsage(AttributeTargets.Field)] + public class AnimatorParamAttribute : DrawerAttribute { + public AnimatorParamAttribute(string animatorName) { + AnimatorName = animatorName; + AnimatorParamType = null; + } + + public AnimatorParamAttribute(string animatorName, AnimatorControllerParameterType animatorParamType) { + AnimatorName = animatorName; + AnimatorParamType = animatorParamType; + } + + public string AnimatorName { get; } + public AnimatorControllerParameterType? AnimatorParamType { get; } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/AnimatorParamAttribute.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/AnimatorParamAttribute.cs.meta new file mode 100644 index 00000000..db61addc --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/AnimatorParamAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7373332cb77b42744a415d6b4add445d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/CurveRangeAttribute.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/CurveRangeAttribute.cs new file mode 100644 index 00000000..d79b0088 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/CurveRangeAttribute.cs @@ -0,0 +1,23 @@ +using System; +using UnityEngine; + +namespace NaughtyAttributes { + [AttributeUsage(AttributeTargets.Field)] + public class CurveRangeAttribute : DrawerAttribute { + public CurveRangeAttribute(Vector2 min, Vector2 max, EColor color = EColor.Clear) { + Min = min; + Max = max; + Color = color; + } + + public CurveRangeAttribute(EColor color) + : this(Vector2.zero, Vector2.one, color) { } + + public CurveRangeAttribute(float minX, float minY, float maxX, float maxY, EColor color = EColor.Clear) + : this(new Vector2(minX, minY), new Vector2(maxX, maxY), color) { } + + public Vector2 Min { get; } + public Vector2 Max { get; } + public EColor Color { get; } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/CurveRangeAttribute.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/CurveRangeAttribute.cs.meta new file mode 100644 index 00000000..93b60ab0 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/CurveRangeAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bbdf3fb8882c7514c9a01108122cda7e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/DrawerAttribute.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/DrawerAttribute.cs new file mode 100644 index 00000000..e4a7f6a2 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/DrawerAttribute.cs @@ -0,0 +1,8 @@ +using UnityEngine; + +namespace NaughtyAttributes { + /// + /// Base class for all drawer attributes + /// + public class DrawerAttribute : PropertyAttribute, INaughtyAttribute { } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/DrawerAttribute.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/DrawerAttribute.cs.meta new file mode 100644 index 00000000..aa542159 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/DrawerAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9df37fdebccf65c4da5b0a14f6dad5f5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/DropdownAttribute.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/DropdownAttribute.cs new file mode 100644 index 00000000..417f7779 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/DropdownAttribute.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections; +using System.Collections.Generic; + +namespace NaughtyAttributes { + [AttributeUsage(AttributeTargets.Field)] + public class DropdownAttribute : DrawerAttribute { + public DropdownAttribute(string valuesName) { + ValuesName = valuesName; + } + + public string ValuesName { get; } + } + + public interface IDropdownList : IEnumerable> { } + + public class DropdownList : IDropdownList { + private readonly List> _values; + + public DropdownList() { + _values = new List>(); + } + + public IEnumerator> GetEnumerator() { + return _values.GetEnumerator(); + } + + IEnumerator IEnumerable.GetEnumerator() { + return GetEnumerator(); + } + + public void Add(string displayName, T value) { + _values.Add(new KeyValuePair(displayName, value)); + } + + public static explicit operator DropdownList(DropdownList target) { + var result = new DropdownList(); + + foreach (var kvp in target) { + result.Add(kvp.Key, kvp.Value); + } + + return result; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/DropdownAttribute.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/DropdownAttribute.cs.meta new file mode 100644 index 00000000..b25926d7 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/DropdownAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2cb864a1092cec04f8a4dbb556e8ed31 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/EnumFlagsAttribute.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/EnumFlagsAttribute.cs new file mode 100644 index 00000000..2eb5dca6 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/EnumFlagsAttribute.cs @@ -0,0 +1,6 @@ +using System; + +namespace NaughtyAttributes { + [AttributeUsage(AttributeTargets.Field)] + public class EnumFlagsAttribute : DrawerAttribute { } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/EnumFlagsAttribute.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/EnumFlagsAttribute.cs.meta new file mode 100644 index 00000000..25a52af4 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/EnumFlagsAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e8b31eb6d7299e54d89dcabc4cad0e6a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/Expandable.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/Expandable.cs new file mode 100644 index 00000000..9389907d --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/Expandable.cs @@ -0,0 +1,6 @@ +using System; + +namespace NaughtyAttributes { + [AttributeUsage(AttributeTargets.Field)] + public class ExpandableAttribute : DrawerAttribute { } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/Expandable.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/Expandable.cs.meta new file mode 100644 index 00000000..8fa04e48 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/Expandable.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 60926d6ca7f9ced469e9248ff1192da6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/HorizontalLineAttribute.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/HorizontalLineAttribute.cs new file mode 100644 index 00000000..f640a50e --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/HorizontalLineAttribute.cs @@ -0,0 +1,17 @@ +using System; + +namespace NaughtyAttributes { + [AttributeUsage(AttributeTargets.Field, AllowMultiple = true)] + public class HorizontalLineAttribute : DrawerAttribute { + public const float DefaultHeight = 2.0f; + public const EColor DefaultColor = EColor.Gray; + + public HorizontalLineAttribute(float height = DefaultHeight, EColor color = DefaultColor) { + Height = height; + Color = color; + } + + public float Height { get; } + public EColor Color { get; } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/HorizontalLineAttribute.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/HorizontalLineAttribute.cs.meta new file mode 100644 index 00000000..ecfd2587 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/HorizontalLineAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2fdd6f99acca2fd42a4f3162d585ce95 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/InfoBoxAttribute.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/InfoBoxAttribute.cs new file mode 100644 index 00000000..07909bb7 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/InfoBoxAttribute.cs @@ -0,0 +1,20 @@ +using System; + +namespace NaughtyAttributes { + public enum EInfoBoxType { + Normal, + Warning, + Error + } + + [AttributeUsage(AttributeTargets.Field, AllowMultiple = true)] + public class InfoBoxAttribute : DrawerAttribute { + public InfoBoxAttribute(string text, EInfoBoxType type = EInfoBoxType.Normal) { + Text = text; + Type = type; + } + + public string Text { get; } + public EInfoBoxType Type { get; } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/InfoBoxAttribute.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/InfoBoxAttribute.cs.meta new file mode 100644 index 00000000..8748a6e0 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/InfoBoxAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: afd1d6323740c734893fa8397c53113b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/InputAxisAttribute.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/InputAxisAttribute.cs new file mode 100644 index 00000000..ec17c1a8 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/InputAxisAttribute.cs @@ -0,0 +1,6 @@ +using System; + +namespace NaughtyAttributes { + [AttributeUsage(AttributeTargets.Field)] + public class InputAxisAttribute : DrawerAttribute { } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/InputAxisAttribute.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/InputAxisAttribute.cs.meta new file mode 100644 index 00000000..da3b2c44 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/InputAxisAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 85033978c18810f46af271bbe94cf4aa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/MinMaxSliderAttribute.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/MinMaxSliderAttribute.cs new file mode 100644 index 00000000..d473e2aa --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/MinMaxSliderAttribute.cs @@ -0,0 +1,14 @@ +using System; + +namespace NaughtyAttributes { + [AttributeUsage(AttributeTargets.Field)] + public class MinMaxSliderAttribute : DrawerAttribute { + public MinMaxSliderAttribute(float minValue, float maxValue) { + MinValue = minValue; + MaxValue = maxValue; + } + + public float MinValue { get; } + public float MaxValue { get; } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/MinMaxSliderAttribute.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/MinMaxSliderAttribute.cs.meta new file mode 100644 index 00000000..03e5dcff --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/MinMaxSliderAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4aaa73f574deaa54187cb54aae571b24 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/ProgressBarAttribute.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/ProgressBarAttribute.cs new file mode 100644 index 00000000..fc70bd6a --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/ProgressBarAttribute.cs @@ -0,0 +1,29 @@ +using System; + +namespace NaughtyAttributes { + [AttributeUsage(AttributeTargets.Field)] + public class ProgressBarAttribute : DrawerAttribute { + public ProgressBarAttribute(string name, int maxValue, EColor color = EColor.Blue) { + Name = name; + MaxValue = maxValue; + Color = color; + } + + public ProgressBarAttribute(string name, string maxValueName, EColor color = EColor.Blue) { + Name = name; + MaxValueName = maxValueName; + Color = color; + } + + public ProgressBarAttribute(int maxValue, EColor color = EColor.Blue) + : this("", maxValue, color) { } + + public ProgressBarAttribute(string maxValueName, EColor color = EColor.Blue) + : this("", maxValueName, color) { } + + public string Name { get; } + public float MaxValue { get; set; } + public string MaxValueName { get; } + public EColor Color { get; } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/ProgressBarAttribute.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/ProgressBarAttribute.cs.meta new file mode 100644 index 00000000..11029f0e --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/ProgressBarAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e19e4db6f4d08f849aa8ea8155cd2760 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/ReadOnlyAttribute.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/ReadOnlyAttribute.cs new file mode 100644 index 00000000..e300e6e1 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/ReadOnlyAttribute.cs @@ -0,0 +1,6 @@ +using System; + +namespace NaughtyAttributes { + [AttributeUsage(AttributeTargets.Field)] + public class ReadOnlyAttribute : DrawerAttribute { } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/ReadOnlyAttribute.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/ReadOnlyAttribute.cs.meta new file mode 100644 index 00000000..24ec8462 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/ReadOnlyAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e57264747ba93b94fbff12733de29499 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/ResizableTextAreaAttribute.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/ResizableTextAreaAttribute.cs new file mode 100644 index 00000000..cf4912de --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/ResizableTextAreaAttribute.cs @@ -0,0 +1,6 @@ +using System; + +namespace NaughtyAttributes { + [AttributeUsage(AttributeTargets.Field)] + public class ResizableTextAreaAttribute : DrawerAttribute { } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/ResizableTextAreaAttribute.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/ResizableTextAreaAttribute.cs.meta new file mode 100644 index 00000000..cc11d00a --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/ResizableTextAreaAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 56d9a4b795ef4a94d86b94e55fb81240 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/SceneAttribute.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/SceneAttribute.cs new file mode 100644 index 00000000..c7ddafe1 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/SceneAttribute.cs @@ -0,0 +1,6 @@ +using System; + +namespace NaughtyAttributes { + [AttributeUsage(AttributeTargets.Field)] + public class SceneAttribute : DrawerAttribute { } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/SceneAttribute.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/SceneAttribute.cs.meta new file mode 100644 index 00000000..f22649b7 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/SceneAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e054de18423364f4688b72a0f2a472b6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/ShowAssetPreviewAttribute.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/ShowAssetPreviewAttribute.cs new file mode 100644 index 00000000..ed2ce378 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/ShowAssetPreviewAttribute.cs @@ -0,0 +1,17 @@ +using System; + +namespace NaughtyAttributes { + [AttributeUsage(AttributeTargets.Field)] + public class ShowAssetPreviewAttribute : DrawerAttribute { + public const int DefaultWidth = 64; + public const int DefaultHeight = 64; + + public ShowAssetPreviewAttribute(int width = DefaultWidth, int height = DefaultHeight) { + Width = width; + Height = height; + } + + public int Width { get; } + public int Height { get; } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/ShowAssetPreviewAttribute.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/ShowAssetPreviewAttribute.cs.meta new file mode 100644 index 00000000..4893b923 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/ShowAssetPreviewAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4b7dd9b44abc0054cb5cd68d74be2c1a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/TagAttribute.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/TagAttribute.cs new file mode 100644 index 00000000..6c2f761f --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/TagAttribute.cs @@ -0,0 +1,6 @@ +using System; + +namespace NaughtyAttributes { + [AttributeUsage(AttributeTargets.Field)] + public class TagAttribute : DrawerAttribute { } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/TagAttribute.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/TagAttribute.cs.meta new file mode 100644 index 00000000..618033c4 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/TagAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8903399bbd7c9d745a7b9188ab6c8320 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase.meta new file mode 100644 index 00000000..3096ac43 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5cf879ed72221e740a7aa02ef9c366a7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ButtonAttribute.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ButtonAttribute.cs new file mode 100644 index 00000000..12458a9a --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ButtonAttribute.cs @@ -0,0 +1,29 @@ +using System; + +namespace NaughtyAttributes { + public enum EButtonEnableMode { + /// + /// Button should be active always + /// + Always, + /// + /// Button should be active only in editor + /// + Editor, + /// + /// Button should be active only in playmode + /// + Playmode + } + + [AttributeUsage(AttributeTargets.Method)] + public class ButtonAttribute : SpecialCaseDrawerAttribute { + public ButtonAttribute(string text = null, EButtonEnableMode enabledMode = EButtonEnableMode.Always) { + Text = text; + SelectedEnableMode = enabledMode; + } + + public string Text { get; } + public EButtonEnableMode SelectedEnableMode { get; } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ButtonAttribute.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ButtonAttribute.cs.meta new file mode 100644 index 00000000..cc7be5c0 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ButtonAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e8fe363a25ec5e24a9dd510bb0b4a0d4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ReorderableListAttribute.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ReorderableListAttribute.cs new file mode 100644 index 00000000..41dd9cd6 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ReorderableListAttribute.cs @@ -0,0 +1,6 @@ +using System; + +namespace NaughtyAttributes { + [AttributeUsage(AttributeTargets.Field)] + public class ReorderableListAttribute : SpecialCaseDrawerAttribute { } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ReorderableListAttribute.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ReorderableListAttribute.cs.meta new file mode 100644 index 00000000..add3c4a4 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ReorderableListAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6189b48f4055e6c47aa132632d898fa6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNativePropertyAttribute.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNativePropertyAttribute.cs new file mode 100644 index 00000000..6aef90f0 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNativePropertyAttribute.cs @@ -0,0 +1,6 @@ +using System; + +namespace NaughtyAttributes { + [AttributeUsage(AttributeTargets.Property)] + public class ShowNativePropertyAttribute : SpecialCaseDrawerAttribute { } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNativePropertyAttribute.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNativePropertyAttribute.cs.meta new file mode 100644 index 00000000..5aed9a27 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNativePropertyAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a8e9b7b71c94a1f459336a24cfe04b1b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNonSerializedFieldAttribute.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNonSerializedFieldAttribute.cs new file mode 100644 index 00000000..a412bb48 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNonSerializedFieldAttribute.cs @@ -0,0 +1,6 @@ +using System; + +namespace NaughtyAttributes { + [AttributeUsage(AttributeTargets.Field)] + public class ShowNonSerializedFieldAttribute : SpecialCaseDrawerAttribute { } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNonSerializedFieldAttribute.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNonSerializedFieldAttribute.cs.meta new file mode 100644 index 00000000..84d56244 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNonSerializedFieldAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8ea09f60df536734184a8920ff8bda6f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/SpecialCaseDrawerAttribute.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/SpecialCaseDrawerAttribute.cs new file mode 100644 index 00000000..7d8d434f --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/SpecialCaseDrawerAttribute.cs @@ -0,0 +1,5 @@ +using System; + +namespace NaughtyAttributes { + public class SpecialCaseDrawerAttribute : Attribute, INaughtyAttribute { } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/SpecialCaseDrawerAttribute.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/SpecialCaseDrawerAttribute.cs.meta new file mode 100644 index 00000000..3b4bd252 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/SpecialCaseDrawerAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 95a59093f8ed1af48a8be75fa3050a3c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/INaughtyAttribute.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/INaughtyAttribute.cs new file mode 100644 index 00000000..e7e990d3 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/INaughtyAttribute.cs @@ -0,0 +1,3 @@ +namespace NaughtyAttributes { + public interface INaughtyAttribute { } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/INaughtyAttribute.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/INaughtyAttribute.cs.meta new file mode 100644 index 00000000..e2dd9d9b --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/INaughtyAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: edda855906d15e541b46efd812fd70f3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes.meta new file mode 100644 index 00000000..547f24d6 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 64c95d02a2004854585e8d923d6680d0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/BoxGroupAttribute.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/BoxGroupAttribute.cs new file mode 100644 index 00000000..26250a42 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/BoxGroupAttribute.cs @@ -0,0 +1,12 @@ +using System; + +namespace NaughtyAttributes { + [AttributeUsage(AttributeTargets.Field)] + public class BoxGroupAttribute : MetaAttribute, IGroupAttribute { + public BoxGroupAttribute(string name = "") { + Name = name; + } + + public string Name { get; } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/BoxGroupAttribute.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/BoxGroupAttribute.cs.meta new file mode 100644 index 00000000..d68d8de4 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/BoxGroupAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 07da8af1e3be52c4789678bf4138ae11 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/DisableIfAttribute.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/DisableIfAttribute.cs new file mode 100644 index 00000000..85d6ecf4 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/DisableIfAttribute.cs @@ -0,0 +1,16 @@ +using System; + +namespace NaughtyAttributes { + [AttributeUsage(AttributeTargets.Field | AttributeTargets.Method)] + public class DisableIfAttribute : EnableIfAttributeBase { + public DisableIfAttribute(string condition) + : base(condition) { + Inverted = true; + } + + public DisableIfAttribute(EConditionOperator conditionOperator, params string[] conditions) + : base(conditionOperator, conditions) { + Inverted = true; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/DisableIfAttribute.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/DisableIfAttribute.cs.meta new file mode 100644 index 00000000..b91dc528 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/DisableIfAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 52a0d5c249ac8fd42a4fb4d61bc2f797 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttribute.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttribute.cs new file mode 100644 index 00000000..27a73629 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttribute.cs @@ -0,0 +1,16 @@ +using System; + +namespace NaughtyAttributes { + [AttributeUsage(AttributeTargets.Field | AttributeTargets.Method)] + public class EnableIfAttribute : EnableIfAttributeBase { + public EnableIfAttribute(string condition) + : base(condition) { + Inverted = false; + } + + public EnableIfAttribute(EConditionOperator conditionOperator, params string[] conditions) + : base(conditionOperator, conditions) { + Inverted = false; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttribute.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttribute.cs.meta new file mode 100644 index 00000000..f3a696c4 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a616ae826c8ebae45a89d6a8cb68a843 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttributeBase.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttributeBase.cs new file mode 100644 index 00000000..9bf8d46c --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttributeBase.cs @@ -0,0 +1,20 @@ +namespace NaughtyAttributes { + public abstract class EnableIfAttributeBase : MetaAttribute { + public EnableIfAttributeBase(string condition) { + ConditionOperator = EConditionOperator.And; + + Conditions = new string[1] { + condition + }; + } + + public EnableIfAttributeBase(EConditionOperator conditionOperator, params string[] conditions) { + ConditionOperator = conditionOperator; + Conditions = conditions; + } + + public string[] Conditions { get; } + public EConditionOperator ConditionOperator { get; } + public bool Inverted { get; protected set; } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttributeBase.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttributeBase.cs.meta new file mode 100644 index 00000000..45fd5eb3 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttributeBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8ba6385cd022e164b89ead1937173ddc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/FoldoutAttribute.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/FoldoutAttribute.cs new file mode 100644 index 00000000..add4f008 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/FoldoutAttribute.cs @@ -0,0 +1,12 @@ +using System; + +namespace NaughtyAttributes { + [AttributeUsage(AttributeTargets.Field)] + public class FoldoutAttribute : MetaAttribute, IGroupAttribute { + public FoldoutAttribute(string name) { + Name = name; + } + + public string Name { get; } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/FoldoutAttribute.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/FoldoutAttribute.cs.meta new file mode 100644 index 00000000..e39736b2 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/FoldoutAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 95f184555d5079243b2d25b35a641a74 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/HideIfAttribute.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/HideIfAttribute.cs new file mode 100644 index 00000000..25547344 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/HideIfAttribute.cs @@ -0,0 +1,16 @@ +using System; + +namespace NaughtyAttributes { + [AttributeUsage(AttributeTargets.Field | AttributeTargets.Method)] + public class HideIfAttribute : ShowIfAttributeBase { + public HideIfAttribute(string condition) + : base(condition) { + Inverted = true; + } + + public HideIfAttribute(EConditionOperator conditionOperator, params string[] conditions) + : base(conditionOperator, conditions) { + Inverted = true; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/HideIfAttribute.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/HideIfAttribute.cs.meta new file mode 100644 index 00000000..888cf89a --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/HideIfAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9ab2d0fcfb13a214ea6ef7629c96a761 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/IGroupAttribute.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/IGroupAttribute.cs new file mode 100644 index 00000000..9f23b22d --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/IGroupAttribute.cs @@ -0,0 +1,3 @@ +namespace NaughtyAttributes { + public interface IGroupAttribute { } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/IGroupAttribute.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/IGroupAttribute.cs.meta new file mode 100644 index 00000000..47db85d8 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/IGroupAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7c437b9ac50575347a7b12520f37f9a2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/LabelAttribute.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/LabelAttribute.cs new file mode 100644 index 00000000..a3f8fb3c --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/LabelAttribute.cs @@ -0,0 +1,12 @@ +using System; + +namespace NaughtyAttributes { + [AttributeUsage(AttributeTargets.Field)] + public class LabelAttribute : MetaAttribute { + public LabelAttribute(string label) { + Label = label; + } + + public string Label { get; } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/LabelAttribute.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/LabelAttribute.cs.meta new file mode 100644 index 00000000..9488d54a --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/LabelAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 79e0e0c0a7c25ea4fbe8eecaa4d559a0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/MetaAttribute.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/MetaAttribute.cs new file mode 100644 index 00000000..ad8727a8 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/MetaAttribute.cs @@ -0,0 +1,5 @@ +using System; + +namespace NaughtyAttributes { + public class MetaAttribute : Attribute, INaughtyAttribute { } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/MetaAttribute.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/MetaAttribute.cs.meta new file mode 100644 index 00000000..a7be1329 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/MetaAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a482b4e0fbf0f4547a5d522182a68d24 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/OnValueChangedAttribute.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/OnValueChangedAttribute.cs new file mode 100644 index 00000000..0ffa89e9 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/OnValueChangedAttribute.cs @@ -0,0 +1,12 @@ +using System; + +namespace NaughtyAttributes { + [AttributeUsage(AttributeTargets.Field, AllowMultiple = true)] + public class OnValueChangedAttribute : MetaAttribute { + public OnValueChangedAttribute(string callbackName) { + CallbackName = callbackName; + } + + public string CallbackName { get; } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/OnValueChangedAttribute.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/OnValueChangedAttribute.cs.meta new file mode 100644 index 00000000..4a92c4bf --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/OnValueChangedAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e16a27c5576022b4bbe997c7db9051f0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttribute.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttribute.cs new file mode 100644 index 00000000..6032bd53 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttribute.cs @@ -0,0 +1,16 @@ +using System; + +namespace NaughtyAttributes { + [AttributeUsage(AttributeTargets.Field | AttributeTargets.Method)] + public class ShowIfAttribute : ShowIfAttributeBase { + public ShowIfAttribute(string condition) + : base(condition) { + Inverted = false; + } + + public ShowIfAttribute(EConditionOperator conditionOperator, params string[] conditions) + : base(conditionOperator, conditions) { + Inverted = false; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttribute.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttribute.cs.meta new file mode 100644 index 00000000..4556ac23 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1ada427cfd2c9b04989d6d18dea27985 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttributeBase.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttributeBase.cs new file mode 100644 index 00000000..b274574e --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttributeBase.cs @@ -0,0 +1,20 @@ +namespace NaughtyAttributes { + public class ShowIfAttributeBase : MetaAttribute { + public ShowIfAttributeBase(string condition) { + ConditionOperator = EConditionOperator.And; + + Conditions = new string[1] { + condition + }; + } + + public ShowIfAttributeBase(EConditionOperator conditionOperator, params string[] conditions) { + ConditionOperator = conditionOperator; + Conditions = conditions; + } + + public string[] Conditions { get; } + public EConditionOperator ConditionOperator { get; } + public bool Inverted { get; protected set; } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttributeBase.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttributeBase.cs.meta new file mode 100644 index 00000000..e82a9ad3 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttributeBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0532b1c4d8a9ccf4b9f98f0bbe4a6747 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/NaughtyAttributes.Core.asmdef b/Assets/Plugins/NaughtyAttributes/Scripts/Core/NaughtyAttributes.Core.asmdef new file mode 100644 index 00000000..569e4e66 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/NaughtyAttributes.Core.asmdef @@ -0,0 +1,12 @@ +{ + "name": "NaughtyAttributes.Core", + "references": [], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [] +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/NaughtyAttributes.Core.asmdef.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/NaughtyAttributes.Core.asmdef.meta new file mode 100644 index 00000000..731749cb --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/NaughtyAttributes.Core.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 776d03a35f1b52c4a9aed9f56d7b4229 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/Utility.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/Utility.meta new file mode 100644 index 00000000..80be4768 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/Utility.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6d61a3a977073c740ae13a3683ed22a1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/Utility/EColor.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/Utility/EColor.cs new file mode 100644 index 00000000..5065c073 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/Utility/EColor.cs @@ -0,0 +1,51 @@ +using UnityEngine; + +namespace NaughtyAttributes { + public enum EColor { + Clear, + White, + Black, + Gray, + Red, + Pink, + Orange, + Yellow, + Green, + Blue, + Indigo, + Violet + } + + public static class EColorExtensions { + public static Color GetColor(this EColor color) { + switch (color) { + case EColor.Clear: + return new Color32(0, 0, 0, 0); + case EColor.White: + return new Color32(255, 255, 255, 255); + case EColor.Black: + return new Color32(0, 0, 0, 255); + case EColor.Gray: + return new Color32(128, 128, 128, 255); + case EColor.Red: + return new Color32(255, 0, 63, 255); + case EColor.Pink: + return new Color32(255, 152, 203, 255); + case EColor.Orange: + return new Color32(255, 128, 0, 255); + case EColor.Yellow: + return new Color32(255, 211, 0, 255); + case EColor.Green: + return new Color32(98, 200, 79, 255); + case EColor.Blue: + return new Color32(0, 135, 189, 255); + case EColor.Indigo: + return new Color32(75, 0, 130, 255); + case EColor.Violet: + return new Color32(128, 0, 255, 255); + default: + return new Color32(0, 0, 0, 255); + } + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/Utility/EColor.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/Utility/EColor.cs.meta new file mode 100644 index 00000000..0f32c5e0 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/Utility/EColor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 059f8674a8065924ea9c678298b5cd63 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/Utility/EConditionOperator.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/Utility/EConditionOperator.cs new file mode 100644 index 00000000..5ee8b20b --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/Utility/EConditionOperator.cs @@ -0,0 +1,6 @@ +namespace NaughtyAttributes { + public enum EConditionOperator { + And, + Or + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/Utility/EConditionOperator.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/Utility/EConditionOperator.cs.meta new file mode 100644 index 00000000..60e32647 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/Utility/EConditionOperator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3c227b6c19fc67b46ad294d95818f85a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes.meta new file mode 100644 index 00000000..d5aba48f --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bf91d63e37bed3e4cbf75d576fc03a21 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MaxValueAttribute.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MaxValueAttribute.cs new file mode 100644 index 00000000..8597de93 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MaxValueAttribute.cs @@ -0,0 +1,16 @@ +using System; + +namespace NaughtyAttributes { + [AttributeUsage(AttributeTargets.Field)] + public class MaxValueAttribute : ValidatorAttribute { + public MaxValueAttribute(float maxValue) { + MaxValue = maxValue; + } + + public MaxValueAttribute(int maxValue) { + MaxValue = maxValue; + } + + public float MaxValue { get; } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MaxValueAttribute.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MaxValueAttribute.cs.meta new file mode 100644 index 00000000..b02fdbcf --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MaxValueAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a748250af5ccfd7499cfb444aafb8a03 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MinValueAttribute.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MinValueAttribute.cs new file mode 100644 index 00000000..0209c2a4 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MinValueAttribute.cs @@ -0,0 +1,16 @@ +using System; + +namespace NaughtyAttributes { + [AttributeUsage(AttributeTargets.Field)] + public class MinValueAttribute : ValidatorAttribute { + public MinValueAttribute(float minValue) { + MinValue = minValue; + } + + public MinValueAttribute(int minValue) { + MinValue = minValue; + } + + public float MinValue { get; } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MinValueAttribute.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MinValueAttribute.cs.meta new file mode 100644 index 00000000..9d901912 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MinValueAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 40133bac7c8d42b4d837138430a503e0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/RequiredAttribute.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/RequiredAttribute.cs new file mode 100644 index 00000000..c0d80721 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/RequiredAttribute.cs @@ -0,0 +1,12 @@ +using System; + +namespace NaughtyAttributes { + [AttributeUsage(AttributeTargets.Field)] + public class RequiredAttribute : ValidatorAttribute { + public RequiredAttribute(string message = null) { + Message = message; + } + + public string Message { get; } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/RequiredAttribute.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/RequiredAttribute.cs.meta new file mode 100644 index 00000000..7f87cfcb --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/RequiredAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b0cdf49d1687849458b1a8d4786553d4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidateInputAttribute.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidateInputAttribute.cs new file mode 100644 index 00000000..6b618952 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidateInputAttribute.cs @@ -0,0 +1,14 @@ +using System; + +namespace NaughtyAttributes { + [AttributeUsage(AttributeTargets.Field)] + public class ValidateInputAttribute : ValidatorAttribute { + public ValidateInputAttribute(string callbackName, string message = null) { + CallbackName = callbackName; + Message = message; + } + + public string CallbackName { get; } + public string Message { get; } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidateInputAttribute.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidateInputAttribute.cs.meta new file mode 100644 index 00000000..0addd1a9 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidateInputAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6c4171d68fb5bc0448d3ac298973e82c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidatorAttribute.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidatorAttribute.cs new file mode 100644 index 00000000..0cc10382 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidatorAttribute.cs @@ -0,0 +1,5 @@ +using System; + +namespace NaughtyAttributes { + public class ValidatorAttribute : Attribute, INaughtyAttribute { } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidatorAttribute.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidatorAttribute.cs.meta new file mode 100644 index 00000000..f5daea83 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidatorAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0f3c43bed2dbc5249b6c6ec7859c2020 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Editor.meta new file mode 100644 index 00000000..8dd7e3e2 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: b76068e69df25a94ab378b0b6829c4f0 +folderAsset: yes +timeCreated: 1507995613 +licenseType: Store +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/DecoratorDrawers.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/DecoratorDrawers.meta new file mode 100644 index 00000000..79b2c371 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/DecoratorDrawers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d3041a2296f3b1749b3ef18e695adee4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/DecoratorDrawers/HorizontalLineDecoratorDrawer.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/DecoratorDrawers/HorizontalLineDecoratorDrawer.cs new file mode 100644 index 00000000..6352ad89 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/DecoratorDrawers/HorizontalLineDecoratorDrawer.cs @@ -0,0 +1,20 @@ +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor { + [CustomPropertyDrawer(typeof(HorizontalLineAttribute))] + public class HorizontalLineDecoratorDrawer : DecoratorDrawer { + public override float GetHeight() { + var lineAttr = (HorizontalLineAttribute) attribute; + + return EditorGUIUtility.singleLineHeight + lineAttr.Height; + } + + public override void OnGUI(Rect position) { + var rect = EditorGUI.IndentedRect(position); + rect.y += EditorGUIUtility.singleLineHeight / 3.0f; + var lineAttr = (HorizontalLineAttribute) attribute; + NaughtyEditorGUI.HorizontalLine(rect, lineAttr.Height, lineAttr.Color.GetColor()); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/DecoratorDrawers/HorizontalLineDecoratorDrawer.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/DecoratorDrawers/HorizontalLineDecoratorDrawer.cs.meta new file mode 100644 index 00000000..719f6d80 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/DecoratorDrawers/HorizontalLineDecoratorDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3ec99f3a124f20e40b8f5edfeb1ecced +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/DecoratorDrawers/InfoBoxDecoratorDrawer.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/DecoratorDrawers/InfoBoxDecoratorDrawer.cs new file mode 100644 index 00000000..548385ee --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/DecoratorDrawers/InfoBoxDecoratorDrawer.cs @@ -0,0 +1,58 @@ +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor { + [CustomPropertyDrawer(typeof(InfoBoxAttribute))] + public class InfoBoxDecoratorDrawer : DecoratorDrawer { + public override float GetHeight() { + return GetHelpBoxHeight(); + } + + public override void OnGUI(Rect rect) { + var infoBoxAttribute = (InfoBoxAttribute) attribute; + + var indentLength = NaughtyEditorGUI.GetIndentLength(rect); + + var infoBoxRect = new Rect( + rect.x + indentLength, + rect.y, + rect.width - indentLength, + GetHelpBoxHeight() + ); + + DrawInfoBox(infoBoxRect, infoBoxAttribute.Text, infoBoxAttribute.Type); + } + + private float GetHelpBoxHeight() { + var infoBoxAttribute = (InfoBoxAttribute) attribute; + var minHeight = EditorGUIUtility.singleLineHeight * 2.0f; + var desiredHeight = GUI.skin.box.CalcHeight(new GUIContent(infoBoxAttribute.Text), EditorGUIUtility.currentViewWidth); + var height = Mathf.Max(minHeight, desiredHeight); + + return height; + } + + private void DrawInfoBox(Rect rect, string infoText, EInfoBoxType infoBoxType) { + var messageType = MessageType.None; + + switch (infoBoxType) { + case EInfoBoxType.Normal: + messageType = MessageType.Info; + + break; + + case EInfoBoxType.Warning: + messageType = MessageType.Warning; + + break; + + case EInfoBoxType.Error: + messageType = MessageType.Error; + + break; + } + + NaughtyEditorGUI.HelpBox(rect, infoText, messageType); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/DecoratorDrawers/InfoBoxDecoratorDrawer.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/DecoratorDrawers/InfoBoxDecoratorDrawer.cs.meta new file mode 100644 index 00000000..5f50aced --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/DecoratorDrawers/InfoBoxDecoratorDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e9c18b0e698717442b7631c5066d667f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/NaughtyAttributes.Editor.asmdef b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/NaughtyAttributes.Editor.asmdef new file mode 100644 index 00000000..e1aafc26 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/NaughtyAttributes.Editor.asmdef @@ -0,0 +1,16 @@ +{ + "name": "NaughtyAttributes.Editor", + "references": [ + "NaughtyAttributes.Core" + ], + "optionalUnityReferences": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [] +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/NaughtyAttributes.Editor.asmdef.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/NaughtyAttributes.Editor.asmdef.meta new file mode 100644 index 00000000..70dc9f26 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/NaughtyAttributes.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f88fb04354076c646a4107a491394033 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/NaughtyInspector.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/NaughtyInspector.cs new file mode 100644 index 00000000..5cf145e2 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/NaughtyInspector.cs @@ -0,0 +1,204 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using UnityEditor; +using UnityEngine; +using Object = UnityEngine.Object; + +namespace NaughtyAttributes.Editor { + [CanEditMultipleObjects] + [CustomEditor(typeof(Object), true)] + public class NaughtyInspector : UnityEditor.Editor { + private readonly Dictionary _foldouts = new Dictionary(); + private IEnumerable _methods; + private IEnumerable _nativeProperties; + private IEnumerable _nonSerializedFields; + private List _serializedProperties = new List(); + + protected virtual void OnEnable() { + _nonSerializedFields = ReflectionUtility.GetAllFields( + target, + f => f.GetCustomAttributes(typeof(ShowNonSerializedFieldAttribute), true).Length > 0 + ); + + _nativeProperties = ReflectionUtility.GetAllProperties( + target, + p => p.GetCustomAttributes(typeof(ShowNativePropertyAttribute), true).Length > 0 + ); + + _methods = ReflectionUtility.GetAllMethods( + target, + m => m.GetCustomAttributes(typeof(ButtonAttribute), true).Length > 0 + ); + } + + protected virtual void OnDisable() { + ReorderableListPropertyDrawer.Instance.ClearCache(); + } + + public override void OnInspectorGUI() { + GetSerializedProperties(ref _serializedProperties); + + var anyNaughtyAttribute = _serializedProperties.Any(p => PropertyUtility.GetAttribute(p) != null); + + if (!anyNaughtyAttribute) { + DrawDefaultInspector(); + } else { + DrawSerializedProperties(); + } + + DrawNonSerializedFields(); + DrawNativeProperties(); + DrawButtons(); + } + + protected void GetSerializedProperties(ref List outSerializedProperties) { + outSerializedProperties.Clear(); + + using (var iterator = serializedObject.GetIterator()) { + if (iterator.NextVisible(true)) { + do { + outSerializedProperties.Add(serializedObject.FindProperty(iterator.name)); + } while (iterator.NextVisible(false)); + } + } + } + + protected void DrawSerializedProperties() { + serializedObject.Update(); + + // Draw non-grouped serialized properties + foreach (var property in GetNonGroupedProperties(_serializedProperties)) { + if (property.name.Equals("m_Script", StringComparison.Ordinal)) { + using (new EditorGUI.DisabledScope(true)) { + EditorGUILayout.PropertyField(property); + } + } else { + NaughtyEditorGUI.PropertyField_Layout(property, true); + } + } + + // Draw grouped serialized properties + foreach (var group in GetGroupedProperties(_serializedProperties)) { + var visibleProperties = group.Where(p => PropertyUtility.IsVisible(p)); + + if (!visibleProperties.Any()) { + continue; + } + + NaughtyEditorGUI.BeginBoxGroup_Layout(group.Key); + + foreach (var property in visibleProperties) { + NaughtyEditorGUI.PropertyField_Layout(property, true); + } + + NaughtyEditorGUI.EndBoxGroup_Layout(); + } + + // Draw foldout serialized properties + foreach (var group in GetFoldoutProperties(_serializedProperties)) { + var visibleProperties = group.Where(p => PropertyUtility.IsVisible(p)); + + if (!visibleProperties.Any()) { + continue; + } + + if (!_foldouts.ContainsKey(group.Key)) { + _foldouts[group.Key] = new SavedBool($"{target.GetInstanceID()}.{group.Key}", false); + } + + _foldouts[group.Key].Value = EditorGUILayout.Foldout(_foldouts[group.Key].Value, group.Key); + + if (_foldouts[group.Key].Value) { + foreach (var property in visibleProperties) { + NaughtyEditorGUI.PropertyField_Layout(property, true); + } + } + } + + serializedObject.ApplyModifiedProperties(); + } + + protected void DrawNonSerializedFields(bool drawHeader = false) { + if (_nonSerializedFields.Any()) { + if (drawHeader) { + EditorGUILayout.Space(); + EditorGUILayout.LabelField("Non-Serialized Fields", GetHeaderGUIStyle()); + + NaughtyEditorGUI.HorizontalLine( + EditorGUILayout.GetControlRect(false), + HorizontalLineAttribute.DefaultHeight, + HorizontalLineAttribute.DefaultColor.GetColor() + ); + } + + foreach (var field in _nonSerializedFields) { + NaughtyEditorGUI.NonSerializedField_Layout(serializedObject.targetObject, field); + } + } + } + + protected void DrawNativeProperties(bool drawHeader = false) { + if (_nativeProperties.Any()) { + if (drawHeader) { + EditorGUILayout.Space(); + EditorGUILayout.LabelField("Native Properties", GetHeaderGUIStyle()); + + NaughtyEditorGUI.HorizontalLine( + EditorGUILayout.GetControlRect(false), + HorizontalLineAttribute.DefaultHeight, + HorizontalLineAttribute.DefaultColor.GetColor() + ); + } + + foreach (var property in _nativeProperties) { + NaughtyEditorGUI.NativeProperty_Layout(serializedObject.targetObject, property); + } + } + } + + protected void DrawButtons(bool drawHeader = false) { + if (_methods.Any()) { + if (drawHeader) { + EditorGUILayout.Space(); + EditorGUILayout.LabelField("Buttons", GetHeaderGUIStyle()); + + NaughtyEditorGUI.HorizontalLine( + EditorGUILayout.GetControlRect(false), + HorizontalLineAttribute.DefaultHeight, + HorizontalLineAttribute.DefaultColor.GetColor() + ); + } + + foreach (var method in _methods) { + NaughtyEditorGUI.Button(serializedObject.targetObject, method); + } + } + } + + private static IEnumerable GetNonGroupedProperties(IEnumerable properties) { + return properties.Where(p => PropertyUtility.GetAttribute(p) == null); + } + + private static IEnumerable> GetGroupedProperties(IEnumerable properties) { + return properties + .Where(p => PropertyUtility.GetAttribute(p) != null) + .GroupBy(p => PropertyUtility.GetAttribute(p).Name); + } + + private static IEnumerable> GetFoldoutProperties(IEnumerable properties) { + return properties + .Where(p => PropertyUtility.GetAttribute(p) != null) + .GroupBy(p => PropertyUtility.GetAttribute(p).Name); + } + + private static GUIStyle GetHeaderGUIStyle() { + var style = new GUIStyle(EditorStyles.centeredGreyMiniLabel); + style.fontStyle = FontStyle.Bold; + style.alignment = TextAnchor.UpperCenter; + + return style; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/NaughtyInspector.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/NaughtyInspector.cs.meta new file mode 100644 index 00000000..b63e99f9 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/NaughtyInspector.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1b9b53879f7c93b42835c3ad9e0d0a66 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers.meta new file mode 100644 index 00000000..7d7dbed8 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4327d74fca5deaa4c83c483fe468d274 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/AllowNestingPropertyDrawer.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/AllowNestingPropertyDrawer.cs new file mode 100644 index 00000000..c03b015c --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/AllowNestingPropertyDrawer.cs @@ -0,0 +1,13 @@ +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor { + [CustomPropertyDrawer(typeof(AllowNestingAttribute))] + public class AllowNestingPropertyDrawer : PropertyDrawerBase { + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) { + EditorGUI.BeginProperty(rect, label, property); + EditorGUI.PropertyField(rect, property, label, true); + EditorGUI.EndProperty(); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/AllowNestingPropertyDrawer.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/AllowNestingPropertyDrawer.cs.meta new file mode 100644 index 00000000..f2f21454 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/AllowNestingPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a3175e7041b8f4348bd652485a78e7b1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/AnimatorParamPropertyDrawer.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/AnimatorParamPropertyDrawer.cs new file mode 100644 index 00000000..e10f0bf2 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/AnimatorParamPropertyDrawer.cs @@ -0,0 +1,163 @@ +using System.Collections.Generic; +using UnityEditor; +using UnityEditor.Animations; +using UnityEngine; + +namespace NaughtyAttributes.Editor { + [CustomPropertyDrawer(typeof(AnimatorParamAttribute))] + public class AnimatorParamPropertyDrawer : PropertyDrawerBase { + private const string InvalidAnimatorControllerWarningMessage = "Target animator controller is null"; + private const string InvalidTypeWarningMessage = "{0} must be an int or a string"; + + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) { + var animatorParamAttribute = PropertyUtility.GetAttribute(property); + var validAnimatorController = GetAnimatorController(property, animatorParamAttribute.AnimatorName) != null; + var validPropertyType = property.propertyType == SerializedPropertyType.Integer || property.propertyType == SerializedPropertyType.String; + + return validAnimatorController && validPropertyType + ? GetPropertyHeight(property) + : GetPropertyHeight(property) + GetHelpBoxHeight(); + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) { + var animatorParamAttribute = PropertyUtility.GetAttribute(property); + + var animatorController = GetAnimatorController(property, animatorParamAttribute.AnimatorName); + + if (animatorController == null) { + DrawDefaultPropertyAndHelpBox(rect, property, InvalidAnimatorControllerWarningMessage, MessageType.Warning); + + return; + } + + var parametersCount = animatorController.parameters.Length; + var animatorParameters = new List(parametersCount); + + for (var i = 0; i < parametersCount; i++) { + var parameter = animatorController.parameters[i]; + + if (animatorParamAttribute.AnimatorParamType == null || parameter.type == animatorParamAttribute.AnimatorParamType) { + animatorParameters.Add(parameter); + } + } + + switch (property.propertyType) { + case SerializedPropertyType.Integer: + DrawPropertyForInt(rect, property, label, animatorParameters); + + break; + case SerializedPropertyType.String: + DrawPropertyForString(rect, property, label, animatorParameters); + + break; + default: + DrawDefaultPropertyAndHelpBox(rect, property, string.Format(InvalidTypeWarningMessage, property.name), MessageType.Warning); + + break; + } + } + + private static void DrawPropertyForInt(Rect rect, SerializedProperty property, GUIContent label, List animatorParameters) { + var paramNameHash = property.intValue; + var index = 0; + + for (var i = 0; i < animatorParameters.Count; i++) { + if (paramNameHash == animatorParameters[i].nameHash) { + index = i + 1; // +1 because the first option is reserved for (None) + + break; + } + } + + var displayOptions = GetDisplayOptions(animatorParameters); + + var newIndex = EditorGUI.Popup(rect, label.text, index, displayOptions); + + if (newIndex == 0) { + property.intValue = 0; + } else { + property.intValue = animatorParameters[newIndex - 1].nameHash; + } + } + + private static void DrawPropertyForString(Rect rect, SerializedProperty property, GUIContent label, List animatorParameters) { + var paramName = property.stringValue; + var index = 0; + + for (var i = 0; i < animatorParameters.Count; i++) { + if (paramName == animatorParameters[i].name) { + index = i + 1; // +1 because the first option is reserved for (None) + + break; + } + } + + var displayOptions = GetDisplayOptions(animatorParameters); + + var newIndex = EditorGUI.Popup(rect, label.text, index, displayOptions); + + if (newIndex == 0) { + property.stringValue = null; + } else { + property.stringValue = animatorParameters[newIndex - 1].name; + } + } + + private static string[] GetDisplayOptions(List animatorParams) { + var displayOptions = new string[animatorParams.Count + 1]; + displayOptions[0] = "(None)"; + + for (var i = 0; i < animatorParams.Count; i++) { + displayOptions[i + 1] = animatorParams[i].name; + } + + return displayOptions; + } + + private static AnimatorController GetAnimatorController(SerializedProperty property, string animatorName) { + var target = PropertyUtility.GetTargetObjectWithProperty(property); + + var animatorFieldInfo = ReflectionUtility.GetField(target, animatorName); + + if (animatorFieldInfo != null && + animatorFieldInfo.FieldType == typeof(Animator)) { + var animator = animatorFieldInfo.GetValue(target) as Animator; + + if (animator != null) { + var animatorController = animator.runtimeAnimatorController as AnimatorController; + + return animatorController; + } + } + + var animatorPropertyInfo = ReflectionUtility.GetProperty(target, animatorName); + + if (animatorPropertyInfo != null && + animatorPropertyInfo.PropertyType == typeof(Animator)) { + var animator = animatorPropertyInfo.GetValue(target) as Animator; + + if (animator != null) { + var animatorController = animator.runtimeAnimatorController as AnimatorController; + + return animatorController; + } + } + + var animatorGetterMethodInfo = ReflectionUtility.GetMethod(target, animatorName); + + if (animatorGetterMethodInfo != null && + animatorGetterMethodInfo.ReturnType == typeof(Animator) && + animatorGetterMethodInfo.GetParameters().Length == 0) { + var animator = animatorGetterMethodInfo.Invoke(target, null) as Animator; + + if (animator != null) { + var animatorController = animator.runtimeAnimatorController as AnimatorController; + + return animatorController; + } + } + + return null; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/AnimatorParamPropertyDrawer.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/AnimatorParamPropertyDrawer.cs.meta new file mode 100644 index 00000000..4c3a7e64 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/AnimatorParamPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 98ff8cb1bcefae740a68d9a5c5ee3563 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/CurveRangePropertyDrawer.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/CurveRangePropertyDrawer.cs new file mode 100644 index 00000000..694986ce --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/CurveRangePropertyDrawer.cs @@ -0,0 +1,38 @@ +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor { + [CustomPropertyDrawer(typeof(CurveRangeAttribute))] + public class CurveRangePropertyDrawer : PropertyDrawerBase { + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) { + var propertyHeight = property.propertyType == SerializedPropertyType.AnimationCurve + ? GetPropertyHeight(property) + : GetPropertyHeight(property) + GetHelpBoxHeight(); + + return propertyHeight; + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) { + EditorGUI.BeginProperty(rect, label, property); + + // Check user error + if (property.propertyType != SerializedPropertyType.AnimationCurve) { + var message = string.Format("Field {0} is not an AnimationCurve", property.name); + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + + return; + } + + var attribute = PropertyUtility.GetAttribute(property); + + EditorGUI.CurveField( + rect, + property, + attribute.Color == EColor.Clear ? Color.green : attribute.Color.GetColor(), + new Rect(attribute.Min.x, attribute.Min.y, attribute.Max.x - attribute.Min.x, attribute.Max.y - attribute.Min.y) + ); + + EditorGUI.EndProperty(); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/CurveRangePropertyDrawer.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/CurveRangePropertyDrawer.cs.meta new file mode 100644 index 00000000..adea11ef --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/CurveRangePropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 798b8c99fbc072a4b83ee387e472a2bd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/DropdownPropertyDrawer.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/DropdownPropertyDrawer.cs new file mode 100644 index 00000000..00f003fb --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/DropdownPropertyDrawer.cs @@ -0,0 +1,172 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Reflection; +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor { + [CustomPropertyDrawer(typeof(DropdownAttribute))] + public class DropdownPropertyDrawer : PropertyDrawerBase { + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) { + var dropdownAttribute = (DropdownAttribute) attribute; + var values = GetValues(property, dropdownAttribute.ValuesName); + var fieldInfo = ReflectionUtility.GetField(PropertyUtility.GetTargetObjectWithProperty(property), property.name); + + var propertyHeight = AreValuesValid(values, fieldInfo) + ? GetPropertyHeight(property) + : GetPropertyHeight(property) + GetHelpBoxHeight(); + + return propertyHeight; + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) { + EditorGUI.BeginProperty(rect, label, property); + + var dropdownAttribute = (DropdownAttribute) attribute; + var target = PropertyUtility.GetTargetObjectWithProperty(property); + + var valuesObject = GetValues(property, dropdownAttribute.ValuesName); + var dropdownField = ReflectionUtility.GetField(target, property.name); + + if (AreValuesValid(valuesObject, dropdownField)) { + if (valuesObject is IList && dropdownField.FieldType == GetElementType(valuesObject)) { + // Selected value + var selectedValue = dropdownField.GetValue(target); + + // Values and display options + var valuesList = (IList) valuesObject; + var values = new object[valuesList.Count]; + var displayOptions = new string[valuesList.Count]; + + for (var i = 0; i < values.Length; i++) { + var value = valuesList[i]; + values[i] = value; + displayOptions[i] = value == null ? "" : value.ToString(); + } + + // Selected value index + var selectedValueIndex = Array.IndexOf(values, selectedValue); + + if (selectedValueIndex < 0) { + selectedValueIndex = 0; + } + + NaughtyEditorGUI.Dropdown( + rect, + property.serializedObject, + target, + dropdownField, + label.text, + selectedValueIndex, + values, + displayOptions + ); + } else if (valuesObject is IDropdownList) { + // Current value + var selectedValue = dropdownField.GetValue(target); + + // Current value index, values and display options + var index = -1; + var selectedValueIndex = -1; + var values = new List(); + var displayOptions = new List(); + var dropdown = (IDropdownList) valuesObject; + + using (var dropdownEnumerator = dropdown.GetEnumerator()) { + while (dropdownEnumerator.MoveNext()) { + index++; + + var current = dropdownEnumerator.Current; + + if (current.Value?.Equals(selectedValue) == true) { + selectedValueIndex = index; + } + + values.Add(current.Value); + + if (current.Key == null) { + displayOptions.Add(""); + } else if (string.IsNullOrWhiteSpace(current.Key)) { + displayOptions.Add(""); + } else { + displayOptions.Add(current.Key); + } + } + } + + if (selectedValueIndex < 0) { + selectedValueIndex = 0; + } + + NaughtyEditorGUI.Dropdown( + rect, + property.serializedObject, + target, + dropdownField, + label.text, + selectedValueIndex, + values.ToArray(), + displayOptions.ToArray() + ); + } + } else { + var message = string.Format( + "Invalid values with name '{0}' provided to '{1}'. Either the values name is incorrect or the types of the target field and the values field/property/method don't match", + dropdownAttribute.ValuesName, + dropdownAttribute.GetType().Name + ); + + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + } + + EditorGUI.EndProperty(); + } + + private object GetValues(SerializedProperty property, string valuesName) { + var target = PropertyUtility.GetTargetObjectWithProperty(property); + + var valuesFieldInfo = ReflectionUtility.GetField(target, valuesName); + + if (valuesFieldInfo != null) { + return valuesFieldInfo.GetValue(target); + } + + var valuesPropertyInfo = ReflectionUtility.GetProperty(target, valuesName); + + if (valuesPropertyInfo != null) { + return valuesPropertyInfo.GetValue(target); + } + + var methodValuesInfo = ReflectionUtility.GetMethod(target, valuesName); + + if (methodValuesInfo != null && + methodValuesInfo.ReturnType != typeof(void) && + methodValuesInfo.GetParameters().Length == 0) { + return methodValuesInfo.Invoke(target, null); + } + + return null; + } + + private bool AreValuesValid(object values, FieldInfo dropdownField) { + if (values == null || dropdownField == null) { + return false; + } + + if (values is IList && dropdownField.FieldType == GetElementType(values) || + values is IDropdownList) { + return true; + } + + return false; + } + + private Type GetElementType(object values) { + var valuesType = values.GetType(); + var elementType = ReflectionUtility.GetListElementType(valuesType); + + return elementType; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/DropdownPropertyDrawer.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/DropdownPropertyDrawer.cs.meta new file mode 100644 index 00000000..fecae2ce --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/DropdownPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dd080b36769bcd94d909fc0431cf25e0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/EnumFlagsPropertyDrawer.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/EnumFlagsPropertyDrawer.cs new file mode 100644 index 00000000..9daa2a7d --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/EnumFlagsPropertyDrawer.cs @@ -0,0 +1,32 @@ +using System; +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor { + [CustomPropertyDrawer(typeof(EnumFlagsAttribute))] + public class EnumFlagsPropertyDrawer : PropertyDrawerBase { + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) { + var targetEnum = PropertyUtility.GetTargetObjectOfProperty(property) as Enum; + + return targetEnum != null + ? GetPropertyHeight(property) + : GetPropertyHeight(property) + GetHelpBoxHeight(); + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) { + EditorGUI.BeginProperty(rect, label, property); + + var targetEnum = PropertyUtility.GetTargetObjectOfProperty(property) as Enum; + + if (targetEnum != null) { + var enumNew = EditorGUI.EnumFlagsField(rect, label.text, targetEnum); + property.intValue = (int) Convert.ChangeType(enumNew, targetEnum.GetType()); + } else { + var message = attribute.GetType().Name + " can be used only on enums"; + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + } + + EditorGUI.EndProperty(); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/EnumFlagsPropertyDrawer.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/EnumFlagsPropertyDrawer.cs.meta new file mode 100644 index 00000000..c0081d29 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/EnumFlagsPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b750e1461c1126d4399459b90b31e75e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ExpandablePropertyDrawer.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ExpandablePropertyDrawer.cs new file mode 100644 index 00000000..4ae25ad3 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ExpandablePropertyDrawer.cs @@ -0,0 +1,174 @@ +using System; +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor { + [CustomPropertyDrawer(typeof(ExpandableAttribute))] + public class ExpandablePropertyDrawer : PropertyDrawerBase { + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) { + var propertyType = PropertyUtility.GetPropertyType(property); + + if (typeof(ScriptableObject).IsAssignableFrom(propertyType)) { + var scriptableObject = property.objectReferenceValue as ScriptableObject; + + if (scriptableObject == null) { + return GetPropertyHeight(property); + } + + if (property.isExpanded) { + using (var serializedObject = new SerializedObject(scriptableObject)) { + var totalHeight = EditorGUIUtility.singleLineHeight; + + using (var iterator = serializedObject.GetIterator()) { + if (iterator.NextVisible(true)) { + do { + var childProperty = serializedObject.FindProperty(iterator.name); + + if (childProperty.name.Equals("m_Script", StringComparison.Ordinal)) { + continue; + } + + var visible = PropertyUtility.IsVisible(childProperty); + + if (!visible) { + continue; + } + + var height = GetPropertyHeight(childProperty); + totalHeight += height; + } while (iterator.NextVisible(false)); + } + } + + totalHeight += EditorGUIUtility.standardVerticalSpacing; + + return totalHeight; + } + } + + return GetPropertyHeight(property); + } + + return GetPropertyHeight(property) + GetHelpBoxHeight(); + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) { + EditorGUI.BeginProperty(rect, label, property); + + var propertyType = PropertyUtility.GetPropertyType(property); + + if (typeof(ScriptableObject).IsAssignableFrom(propertyType)) { + var scriptableObject = property.objectReferenceValue as ScriptableObject; + + if (scriptableObject == null) { + EditorGUI.PropertyField(rect, property, label, false); + } else { + // Draw a foldout + var foldoutRect = new Rect { + x = rect.x, + y = rect.y, + width = EditorGUIUtility.labelWidth, + height = EditorGUIUtility.singleLineHeight + }; + + property.isExpanded = EditorGUI.Foldout(foldoutRect, property.isExpanded, label, true); + + // Draw the scriptable object field + var indentLength = NaughtyEditorGUI.GetIndentLength(rect); + var labelWidth = EditorGUIUtility.labelWidth - indentLength + NaughtyEditorGUI.HorizontalSpacing; + + var propertyRect = new Rect { + x = rect.x + labelWidth, + y = rect.y, + width = rect.width - labelWidth, + height = EditorGUIUtility.singleLineHeight + }; + + EditorGUI.BeginChangeCheck(); + + property.objectReferenceValue = EditorGUI.ObjectField( + propertyRect, + GUIContent.none, + property.objectReferenceValue, + propertyType, + false + ); + + if (EditorGUI.EndChangeCheck()) { + property.serializedObject.ApplyModifiedProperties(); + } + + // Draw the child properties + if (property.isExpanded) { + DrawChildProperties(rect, property); + } + } + } else { + var message = $"{typeof(ExpandableAttribute).Name} can only be used on scriptable objects"; + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + } + + EditorGUI.EndProperty(); + } + + private void DrawChildProperties(Rect rect, SerializedProperty property) { + var scriptableObject = property.objectReferenceValue as ScriptableObject; + + if (scriptableObject == null) { + return; + } + + var boxRect = new Rect { + x = 0.0f, + y = rect.y + EditorGUIUtility.singleLineHeight, + width = rect.width * 2.0f, + height = rect.height - EditorGUIUtility.singleLineHeight + }; + + GUI.Box(boxRect, GUIContent.none); + + using (new EditorGUI.IndentLevelScope()) { + EditorGUI.BeginChangeCheck(); + + var serializedObject = new SerializedObject(scriptableObject); + + using (var iterator = serializedObject.GetIterator()) { + var yOffset = EditorGUIUtility.singleLineHeight; + + if (iterator.NextVisible(true)) { + do { + var childProperty = serializedObject.FindProperty(iterator.name); + + if (childProperty.name.Equals("m_Script", StringComparison.Ordinal)) { + continue; + } + + var visible = PropertyUtility.IsVisible(childProperty); + + if (!visible) { + continue; + } + + var childHeight = GetPropertyHeight(childProperty); + + var childRect = new Rect { + x = rect.x, + y = rect.y + yOffset, + width = rect.width, + height = childHeight + }; + + NaughtyEditorGUI.PropertyField(childRect, childProperty, true); + + yOffset += childHeight; + } while (iterator.NextVisible(false)); + } + } + + if (EditorGUI.EndChangeCheck()) { + serializedObject.ApplyModifiedProperties(); + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ExpandablePropertyDrawer.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ExpandablePropertyDrawer.cs.meta new file mode 100644 index 00000000..d5925fe0 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ExpandablePropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d1ddb7194615bdc4e8b2088c8d165d8b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/InputAxisPropertyDrawer.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/InputAxisPropertyDrawer.cs new file mode 100644 index 00000000..7d35e81b --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/InputAxisPropertyDrawer.cs @@ -0,0 +1,64 @@ +using System.Collections.Generic; +using System.IO; +using System.Linq; +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor { + [CustomPropertyDrawer(typeof(InputAxisAttribute))] + public class InputAxisPropertyDrawer : PropertyDrawerBase { + private const string AxesPropertyPath = "m_Axes"; + private const string NamePropertyPath = "m_Name"; + private static readonly string AssetPath = Path.Combine("ProjectSettings", "InputManager.asset"); + + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) { + return property.propertyType == SerializedPropertyType.String + ? GetPropertyHeight(property) + : GetPropertyHeight(property) + GetHelpBoxHeight(); + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) { + if (property.propertyType == SerializedPropertyType.String) { + var inputManagerAsset = AssetDatabase.LoadAssetAtPath(AssetPath, typeof(object)); + var inputManager = new SerializedObject(inputManagerAsset); + + var axesProperty = inputManager.FindProperty(AxesPropertyPath); + var axesSet = new HashSet(); + axesSet.Add("(None)"); + + for (var i = 0; i < axesProperty.arraySize; i++) { + var axis = axesProperty.GetArrayElementAtIndex(i).FindPropertyRelative(NamePropertyPath).stringValue; + axesSet.Add(axis); + } + + var axes = axesSet.ToArray(); + + var propertyString = property.stringValue; + var index = 0; + + // check if there is an entry that matches the entry and get the index + // we skip index 0 as that is a special custom case + for (var i = 1; i < axes.Length; i++) { + if (axes[i] == propertyString) { + index = i; + + break; + } + } + + // Draw the popup box with the current selected index + var newIndex = EditorGUI.Popup(rect, label.text, index, axes); + + // Adjust the actual string value of the property based on the selection + if (newIndex > 0) { + property.stringValue = axes[newIndex]; + } else { + property.stringValue = string.Empty; + } + } else { + var message = string.Format("{0} supports only string fields", typeof(InputAxisAttribute).Name); + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + } + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/InputAxisPropertyDrawer.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/InputAxisPropertyDrawer.cs.meta new file mode 100644 index 00000000..08f8f461 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/InputAxisPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0de9d3dfe2d466a458be838edf361645 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/MinMaxSliderPropertyDrawer.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/MinMaxSliderPropertyDrawer.cs new file mode 100644 index 00000000..a30e83cd --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/MinMaxSliderPropertyDrawer.cs @@ -0,0 +1,90 @@ +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor { + [CustomPropertyDrawer(typeof(MinMaxSliderAttribute))] + public class MinMaxSliderPropertyDrawer : PropertyDrawerBase { + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) { + return property.propertyType == SerializedPropertyType.Vector2 + ? GetPropertyHeight(property) + : GetPropertyHeight(property) + GetHelpBoxHeight(); + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) { + EditorGUI.BeginProperty(rect, label, property); + + var minMaxSliderAttribute = (MinMaxSliderAttribute) attribute; + + if (property.propertyType == SerializedPropertyType.Vector2) { + EditorGUI.BeginProperty(rect, label, property); + + var indentLength = NaughtyEditorGUI.GetIndentLength(rect); + var labelWidth = EditorGUIUtility.labelWidth + NaughtyEditorGUI.HorizontalSpacing; + var floatFieldWidth = EditorGUIUtility.fieldWidth; + var sliderWidth = rect.width - labelWidth - 2.0f * floatFieldWidth; + var sliderPadding = 5.0f; + + var labelRect = new Rect( + rect.x, + rect.y, + labelWidth, + rect.height + ); + + var sliderRect = new Rect( + rect.x + labelWidth + floatFieldWidth + sliderPadding - indentLength, + rect.y, + sliderWidth - 2.0f * sliderPadding + indentLength, + rect.height + ); + + var minFloatFieldRect = new Rect( + rect.x + labelWidth - indentLength, + rect.y, + floatFieldWidth + indentLength, + rect.height + ); + + var maxFloatFieldRect = new Rect( + rect.x + labelWidth + floatFieldWidth + sliderWidth - indentLength, + rect.y, + floatFieldWidth + indentLength, + rect.height + ); + + // Draw the label + EditorGUI.LabelField(labelRect, label.text); + + // Draw the slider + EditorGUI.BeginChangeCheck(); + + var sliderValue = property.vector2Value; + + EditorGUI.MinMaxSlider( + sliderRect, + ref sliderValue.x, + ref sliderValue.y, + minMaxSliderAttribute.MinValue, + minMaxSliderAttribute.MaxValue + ); + + sliderValue.x = EditorGUI.FloatField(minFloatFieldRect, sliderValue.x); + sliderValue.x = Mathf.Clamp(sliderValue.x, minMaxSliderAttribute.MinValue, Mathf.Min(minMaxSliderAttribute.MaxValue, sliderValue.y)); + + sliderValue.y = EditorGUI.FloatField(maxFloatFieldRect, sliderValue.y); + sliderValue.y = Mathf.Clamp(sliderValue.y, Mathf.Max(minMaxSliderAttribute.MinValue, sliderValue.x), minMaxSliderAttribute.MaxValue); + + if (EditorGUI.EndChangeCheck()) { + property.vector2Value = sliderValue; + } + + EditorGUI.EndProperty(); + } else { + var message = minMaxSliderAttribute.GetType().Name + " can be used only on Vector2 fields"; + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + } + + EditorGUI.EndProperty(); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/MinMaxSliderPropertyDrawer.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/MinMaxSliderPropertyDrawer.cs.meta new file mode 100644 index 00000000..4613ffec --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/MinMaxSliderPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 27011af81554b5b4489b155f09275475 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ProgressBarPropertyDrawer.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ProgressBarPropertyDrawer.cs new file mode 100644 index 00000000..806e17c6 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ProgressBarPropertyDrawer.cs @@ -0,0 +1,126 @@ +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor { + [CustomPropertyDrawer(typeof(ProgressBarAttribute))] + public class ProgressBarPropertyDrawer : PropertyDrawerBase { + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) { + var progressBarAttribute = PropertyUtility.GetAttribute(property); + var maxValue = GetMaxValue(property, progressBarAttribute); + + return IsNumber(property) && maxValue is float + ? GetPropertyHeight(property) + : GetPropertyHeight(property) + GetHelpBoxHeight(); + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) { + if (!IsNumber(property)) { + var message = string.Format("Field {0} is not a number", property.name); + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + + return; + } + + var progressBarAttribute = PropertyUtility.GetAttribute(property); + var value = property.propertyType == SerializedPropertyType.Integer ? property.intValue : property.floatValue; + var valueFormatted = property.propertyType == SerializedPropertyType.Integer ? value.ToString() : string.Format("{0:0.00}", value); + var maxValue = GetMaxValue(property, progressBarAttribute); + + if (maxValue != null && maxValue is float) { + var fillPercentage = value / (float) maxValue; + var barLabel = (!string.IsNullOrEmpty(progressBarAttribute.Name) ? "[" + progressBarAttribute.Name + "] " : "") + valueFormatted + "/" + maxValue; + var barColor = progressBarAttribute.Color.GetColor(); + var labelColor = Color.white; + + var indentLength = NaughtyEditorGUI.GetIndentLength(rect); + + var barRect = new Rect { + x = rect.x + indentLength, + y = rect.y, + width = rect.width - indentLength, + height = EditorGUIUtility.singleLineHeight + }; + + DrawBar( + barRect, + Mathf.Clamp01(fillPercentage), + barLabel, + barColor, + labelColor + ); + } else { + var message = string.Format( + "The provided dynamic max value for the progress bar is not correct. Please check if the '{0}' is correct, or the return type is float", + nameof(progressBarAttribute.MaxValueName) + ); + + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + } + } + + private object GetMaxValue(SerializedProperty property, ProgressBarAttribute progressBarAttribute) { + if (string.IsNullOrEmpty(progressBarAttribute.MaxValueName)) { + return progressBarAttribute.MaxValue; + } + + var target = PropertyUtility.GetTargetObjectWithProperty(property); + + var valuesFieldInfo = ReflectionUtility.GetField(target, progressBarAttribute.MaxValueName); + + if (valuesFieldInfo != null) { + return valuesFieldInfo.GetValue(target); + } + + var valuesPropertyInfo = ReflectionUtility.GetProperty(target, progressBarAttribute.MaxValueName); + + if (valuesPropertyInfo != null) { + return valuesPropertyInfo.GetValue(target); + } + + var methodValuesInfo = ReflectionUtility.GetMethod(target, progressBarAttribute.MaxValueName); + + if (methodValuesInfo != null && + methodValuesInfo.ReturnType == typeof(float) && + methodValuesInfo.GetParameters().Length == 0) { + return methodValuesInfo.Invoke(target, null); + } + + return null; + } + + private void DrawBar(Rect rect, float fillPercent, string label, Color barColor, Color labelColor) { + if (Event.current.type != EventType.Repaint) { + return; + } + + var fillRect = new Rect(rect.x, rect.y, rect.width * fillPercent, rect.height); + + EditorGUI.DrawRect(rect, new Color(0.13f, 0.13f, 0.13f)); + EditorGUI.DrawRect(fillRect, barColor); + + // set alignment and cache the default + var align = GUI.skin.label.alignment; + GUI.skin.label.alignment = TextAnchor.UpperCenter; + + // set the color and cache the default + var c = GUI.contentColor; + GUI.contentColor = labelColor; + + // calculate the position + var labelRect = new Rect(rect.x, rect.y - 2, rect.width, rect.height); + + // draw~ + EditorGUI.DropShadowLabel(labelRect, label); + + // reset color and alignment + GUI.contentColor = c; + GUI.skin.label.alignment = align; + } + + private bool IsNumber(SerializedProperty property) { + var isNumber = property.propertyType == SerializedPropertyType.Float || property.propertyType == SerializedPropertyType.Integer; + + return isNumber; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ProgressBarPropertyDrawer.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ProgressBarPropertyDrawer.cs.meta new file mode 100644 index 00000000..dfb90f1a --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ProgressBarPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0bcbc424b10864b4eb6e3bcfb276cdf9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/PropertyDrawerBase.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/PropertyDrawerBase.cs new file mode 100644 index 00000000..b269a4e1 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/PropertyDrawerBase.cs @@ -0,0 +1,87 @@ +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor { + public abstract class PropertyDrawerBase : PropertyDrawer { + public sealed override void OnGUI(Rect rect, SerializedProperty property, GUIContent label) { + // Check if visible + var visible = PropertyUtility.IsVisible(property); + + if (!visible) { + return; + } + + // Validate + var validatorAttributes = PropertyUtility.GetAttributes(property); + + foreach (var validatorAttribute in validatorAttributes) { + validatorAttribute.GetValidator().ValidateProperty(property); + } + + // Check if enabled and draw + EditorGUI.BeginChangeCheck(); + var enabled = PropertyUtility.IsEnabled(property); + + using (new EditorGUI.DisabledScope(!enabled)) { + OnGUI_Internal(rect, property, new GUIContent(PropertyUtility.GetLabel(property))); + } + + // Call OnValueChanged callbacks + if (EditorGUI.EndChangeCheck()) { + PropertyUtility.CallOnValueChangedCallbacks(property); + } + } + + protected abstract void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label); + + public sealed override float GetPropertyHeight(SerializedProperty property, GUIContent label) { + var visible = PropertyUtility.IsVisible(property); + + if (!visible) { + return 0.0f; + } + + return GetPropertyHeight_Internal(property, label); + } + + protected virtual float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) { + return base.GetPropertyHeight(property, label); + } + + protected float GetPropertyHeight(SerializedProperty property) { + var specialCaseAttribute = PropertyUtility.GetAttribute(property); + + if (specialCaseAttribute != null) { + return specialCaseAttribute.GetDrawer().GetPropertyHeight(property); + } + + return EditorGUI.GetPropertyHeight(property, true); + } + + public virtual float GetHelpBoxHeight() { + return EditorGUIUtility.singleLineHeight * 2.0f; + } + + public void DrawDefaultPropertyAndHelpBox(Rect rect, SerializedProperty property, string message, MessageType messageType) { + var indentLength = NaughtyEditorGUI.GetIndentLength(rect); + + var helpBoxRect = new Rect( + rect.x + indentLength, + rect.y, + rect.width - indentLength, + GetHelpBoxHeight() + ); + + NaughtyEditorGUI.HelpBox(helpBoxRect, message, MessageType.Warning, property.serializedObject.targetObject); + + var propertyRect = new Rect( + rect.x, + rect.y + GetHelpBoxHeight(), + rect.width, + GetPropertyHeight(property) + ); + + EditorGUI.PropertyField(propertyRect, property, true); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/PropertyDrawerBase.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/PropertyDrawerBase.cs.meta new file mode 100644 index 00000000..71a80b6a --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/PropertyDrawerBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 574f5fa6033f26342816a8a5f39749e5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ReadOnlyPropertyDrawer.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ReadOnlyPropertyDrawer.cs new file mode 100644 index 00000000..738099f9 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ReadOnlyPropertyDrawer.cs @@ -0,0 +1,21 @@ +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor { + [CustomPropertyDrawer(typeof(ReadOnlyAttribute))] + public class ReadOnlyPropertyDrawer : PropertyDrawerBase { + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) { + return GetPropertyHeight(property); + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) { + EditorGUI.BeginProperty(rect, label, property); + + using (new EditorGUI.DisabledScope(true)) { + EditorGUI.PropertyField(rect, property, label, true); + } + + EditorGUI.EndProperty(); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ReadOnlyPropertyDrawer.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ReadOnlyPropertyDrawer.cs.meta new file mode 100644 index 00000000..4a7385e7 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ReadOnlyPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1839b194211d84f4cae22740dbba390f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ResizableTextAreaPropertyDrawer.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ResizableTextAreaPropertyDrawer.cs new file mode 100644 index 00000000..78d0c16e --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ResizableTextAreaPropertyDrawer.cs @@ -0,0 +1,74 @@ +using System; +using System.Text.RegularExpressions; +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor { + [CustomPropertyDrawer(typeof(ResizableTextAreaAttribute))] + public class ResizableTextAreaPropertyDrawer : PropertyDrawerBase { + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) { + if (property.propertyType == SerializedPropertyType.String) { + var labelHeight = EditorGUIUtility.singleLineHeight; + var textAreaHeight = GetTextAreaHeight(property.stringValue); + + return labelHeight + textAreaHeight; + } + + return GetPropertyHeight(property) + GetHelpBoxHeight(); + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) { + EditorGUI.BeginProperty(rect, label, property); + + if (property.propertyType == SerializedPropertyType.String) { + var labelRect = new Rect { + x = rect.x, + y = rect.y, + width = rect.width, + height = EditorGUIUtility.singleLineHeight + }; + + EditorGUI.LabelField(labelRect, label.text); + + EditorGUI.BeginChangeCheck(); + + var textAreaRect = new Rect { + x = labelRect.x, + y = labelRect.y + EditorGUIUtility.singleLineHeight, + width = labelRect.width, + height = GetTextAreaHeight(property.stringValue) + }; + + var textAreaValue = EditorGUI.TextArea(textAreaRect, property.stringValue); + + if (EditorGUI.EndChangeCheck()) { + property.stringValue = textAreaValue; + } + } else { + var message = typeof(ResizableTextAreaAttribute).Name + " can only be used on string fields"; + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + } + + EditorGUI.EndProperty(); + } + + private int GetNumberOfLines(string text) { + var content = Regex.Replace(text, @"\r\n|\n\r|\r|\n", Environment.NewLine); + + var lines = content.Split( + new[] { + Environment.NewLine + }, + StringSplitOptions.None + ); + + return lines.Length; + } + + private float GetTextAreaHeight(string text) { + var height = (EditorGUIUtility.singleLineHeight - 3.0f) * GetNumberOfLines(text) + 3.0f; + + return height; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ResizableTextAreaPropertyDrawer.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ResizableTextAreaPropertyDrawer.cs.meta new file mode 100644 index 00000000..4b1e4a57 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ResizableTextAreaPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6e27ffd9a96b58c46bb74cc93de3e06f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ScenePropertyDrawer.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ScenePropertyDrawer.cs new file mode 100644 index 00000000..4ac8e4d5 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ScenePropertyDrawer.cs @@ -0,0 +1,88 @@ +using System; +using System.Linq; +using System.Text.RegularExpressions; +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor { + [CustomPropertyDrawer(typeof(SceneAttribute))] + public class ScenePropertyDrawer : PropertyDrawerBase { + private const string SceneListItem = "{0} ({1})"; + private const string ScenePattern = @".+\/(.+)\.unity"; + private const string TypeWarningMessage = "{0} must be an int or a string"; + private const string BuildSettingsWarningMessage = "No scenes in the build settings"; + + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) { + var validPropertyType = property.propertyType == SerializedPropertyType.String || property.propertyType == SerializedPropertyType.Integer; + var anySceneInBuildSettings = GetScenes().Length > 0; + + return validPropertyType && anySceneInBuildSettings + ? GetPropertyHeight(property) + : GetPropertyHeight(property) + GetHelpBoxHeight(); + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) { + var scenes = GetScenes(); + var anySceneInBuildSettings = scenes.Length > 0; + + if (!anySceneInBuildSettings) { + DrawDefaultPropertyAndHelpBox(rect, property, BuildSettingsWarningMessage, MessageType.Warning); + + return; + } + + var sceneOptions = GetSceneOptions(scenes); + + switch (property.propertyType) { + case SerializedPropertyType.String: + DrawPropertyForString( + rect, + property, + label, + scenes, + sceneOptions + ); + + break; + case SerializedPropertyType.Integer: + DrawPropertyForInt(rect, property, label, sceneOptions); + + break; + default: + var message = string.Format(TypeWarningMessage, property.name); + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + + break; + } + } + + private string[] GetScenes() { + return EditorBuildSettings.scenes + .Where(scene => scene.enabled) + .Select(scene => Regex.Match(scene.path, ScenePattern).Groups[1].Value) + .ToArray(); + } + + private string[] GetSceneOptions(string[] scenes) { + return scenes.Select((s, i) => string.Format(SceneListItem, s, i)).ToArray(); + } + + private static void DrawPropertyForString(Rect rect, SerializedProperty property, GUIContent label, string[] scenes, string[] sceneOptions) { + var index = IndexOf(scenes, property.stringValue); + var newIndex = EditorGUI.Popup(rect, label.text, index, sceneOptions); + property.stringValue = scenes[newIndex]; + } + + private static void DrawPropertyForInt(Rect rect, SerializedProperty property, GUIContent label, string[] sceneOptions) { + var index = property.intValue; + var newIndex = EditorGUI.Popup(rect, label.text, index, sceneOptions); + property.intValue = newIndex; + } + + private static int IndexOf(string[] scenes, string scene) { + var index = Array.IndexOf(scenes, scene); + + return Mathf.Clamp(index, 0, scenes.Length - 1); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ScenePropertyDrawer.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ScenePropertyDrawer.cs.meta new file mode 100644 index 00000000..a4165442 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ScenePropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7f5ed440d4f429e42a5da7bc5df48fd8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ShowAssetPreviewPropertyDrawer.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ShowAssetPreviewPropertyDrawer.cs new file mode 100644 index 00000000..2869efae --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ShowAssetPreviewPropertyDrawer.cs @@ -0,0 +1,91 @@ +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor { + [CustomPropertyDrawer(typeof(ShowAssetPreviewAttribute))] + public class ShowAssetPreviewPropertyDrawer : PropertyDrawerBase { + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) { + if (property.propertyType == SerializedPropertyType.ObjectReference) { + var previewTexture = GetAssetPreview(property); + + if (previewTexture != null) { + return GetPropertyHeight(property) + GetAssetPreviewSize(property).y; + } + + return GetPropertyHeight(property); + } + + return GetPropertyHeight(property) + GetHelpBoxHeight(); + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) { + EditorGUI.BeginProperty(rect, label, property); + + if (property.propertyType == SerializedPropertyType.ObjectReference) { + var propertyRect = new Rect { + x = rect.x, + y = rect.y, + width = rect.width, + height = EditorGUIUtility.singleLineHeight + }; + + EditorGUI.PropertyField(propertyRect, property, label); + + var previewTexture = GetAssetPreview(property); + + if (previewTexture != null) { + var previewRect = new Rect { + x = rect.x + NaughtyEditorGUI.GetIndentLength(rect), + y = rect.y + EditorGUIUtility.singleLineHeight, + width = rect.width, + height = GetAssetPreviewSize(property).y + }; + + GUI.Label(previewRect, previewTexture); + } + } else { + var message = property.name + " doesn't have an asset preview"; + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + } + + EditorGUI.EndProperty(); + } + + private Texture2D GetAssetPreview(SerializedProperty property) { + if (property.propertyType == SerializedPropertyType.ObjectReference) { + if (property.objectReferenceValue != null) { + var previewTexture = AssetPreview.GetAssetPreview(property.objectReferenceValue); + + return previewTexture; + } + + return null; + } + + return null; + } + + private Vector2 GetAssetPreviewSize(SerializedProperty property) { + var previewTexture = GetAssetPreview(property); + + if (previewTexture == null) { + return Vector2.zero; + } + + var targetWidth = ShowAssetPreviewAttribute.DefaultWidth; + var targetHeight = ShowAssetPreviewAttribute.DefaultHeight; + + var showAssetPreviewAttribute = PropertyUtility.GetAttribute(property); + + if (showAssetPreviewAttribute != null) { + targetWidth = showAssetPreviewAttribute.Width; + targetHeight = showAssetPreviewAttribute.Height; + } + + var width = Mathf.Clamp(targetWidth, 0, previewTexture.width); + var height = Mathf.Clamp(targetHeight, 0, previewTexture.height); + + return new Vector2(width, height); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ShowAssetPreviewPropertyDrawer.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ShowAssetPreviewPropertyDrawer.cs.meta new file mode 100644 index 00000000..5a4d16d2 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ShowAssetPreviewPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 24dee3fc91cfe94438de1e3c158f187f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/TagPropertyDrawer.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/TagPropertyDrawer.cs new file mode 100644 index 00000000..27404306 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/TagPropertyDrawer.cs @@ -0,0 +1,51 @@ +using System.Collections.Generic; +using UnityEditor; +using UnityEditorInternal; +using UnityEngine; + +namespace NaughtyAttributes.Editor { + [CustomPropertyDrawer(typeof(TagAttribute))] + public class TagPropertyDrawer : PropertyDrawerBase { + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) { + return property.propertyType == SerializedPropertyType.String + ? GetPropertyHeight(property) + : GetPropertyHeight(property) + GetHelpBoxHeight(); + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) { + if (property.propertyType == SerializedPropertyType.String) { + // generate the taglist + custom tags + var tagList = new List(); + tagList.Add("(None)"); + tagList.Add("Untagged"); + tagList.AddRange(InternalEditorUtility.tags); + + var propertyString = property.stringValue; + var index = 0; + + // check if there is an entry that matches the entry and get the index + // we skip index 0 as that is a special custom case + for (var i = 1; i < tagList.Count; i++) { + if (tagList[i] == propertyString) { + index = i; + + break; + } + } + + // Draw the popup box with the current selected index + index = EditorGUI.Popup(rect, label.text, index, tagList.ToArray()); + + // Adjust the actual string value of the property based on the selection + if (index > 0) { + property.stringValue = tagList[index]; + } else { + property.stringValue = string.Empty; + } + } else { + var message = string.Format("{0} supports only string fields", typeof(TagAttribute).Name); + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + } + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/TagPropertyDrawer.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/TagPropertyDrawer.cs.meta new file mode 100644 index 00000000..75f76c59 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/TagPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3df4c068c970ab6498df7a60efbde311 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase.meta new file mode 100644 index 00000000..88cd4587 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 750a102004a7e4f46a2046a3d74cae19 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/ReorderableListPropertyDrawer.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/ReorderableListPropertyDrawer.cs new file mode 100644 index 00000000..c13efd3f --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/ReorderableListPropertyDrawer.cs @@ -0,0 +1,167 @@ +using System.Collections.Generic; +using UnityEditor; +using UnityEditorInternal; +using UnityEngine; + +namespace NaughtyAttributes.Editor { + public class ReorderableListPropertyDrawer : SpecialCasePropertyDrawerBase { + public static readonly ReorderableListPropertyDrawer Instance = new ReorderableListPropertyDrawer(); + + private readonly Dictionary _reorderableListsByPropertyName = new Dictionary(); + + private string GetPropertyKeyName(SerializedProperty property) { + return property.serializedObject.targetObject.GetInstanceID() + "." + property.name; + } + + protected override float GetPropertyHeight_Internal(SerializedProperty property) { + if (property.isArray) { + var key = GetPropertyKeyName(property); + + if (_reorderableListsByPropertyName.TryGetValue(key, out var reorderableList) == false) { + return 0; + } + + return reorderableList.GetHeight(); + } + + return EditorGUI.GetPropertyHeight(property, true); + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) { + if (property.isArray) { + var key = GetPropertyKeyName(property); + + ReorderableList reorderableList = null; + + if (!_reorderableListsByPropertyName.ContainsKey(key)) { + reorderableList = new ReorderableList( + property.serializedObject, + property, + true, + true, + true, + true + ) { + drawHeaderCallback = r => { + EditorGUI.LabelField(r, string.Format("{0}: {1}", label.text, property.arraySize), EditorStyles.boldLabel); + HandleDragAndDrop(r, reorderableList); + }, + + drawElementCallback = (r, index, isActive, isFocused) => { + var element = property.GetArrayElementAtIndex(index); + r.y += 1.0f; + r.x += 10.0f; + r.width -= 10.0f; + + EditorGUI.PropertyField(new Rect(r.x, r.y, r.width, 0.0f), element, true); + }, + + elementHeightCallback = index => { return EditorGUI.GetPropertyHeight(property.GetArrayElementAtIndex(index)) + 4.0f; } + }; + + _reorderableListsByPropertyName[key] = reorderableList; + } + + reorderableList = _reorderableListsByPropertyName[key]; + + if (rect == default) { + reorderableList.DoLayoutList(); + } else { + reorderableList.DoList(rect); + } + } else { + var message = typeof(ReorderableListAttribute).Name + " can be used only on arrays or lists"; + NaughtyEditorGUI.HelpBox_Layout(message, MessageType.Warning, property.serializedObject.targetObject); + EditorGUILayout.PropertyField(property, true); + } + } + + public void ClearCache() { + _reorderableListsByPropertyName.Clear(); + } + + private Object GetAssignableObject(Object obj, ReorderableList list) { + var listType = PropertyUtility.GetPropertyType(list.serializedProperty); + var elementType = ReflectionUtility.GetListElementType(listType); + + if (elementType == null) { + return null; + } + + var objType = obj.GetType(); + + if (elementType.IsAssignableFrom(objType)) { + return obj; + } + + if (objType == typeof(GameObject)) { + if (typeof(Transform).IsAssignableFrom(elementType)) { + var transform = ((GameObject) obj).transform; + + if (elementType == typeof(RectTransform)) { + var rectTransform = transform as RectTransform; + + return rectTransform; + } + + return transform; + } + + if (typeof(MonoBehaviour).IsAssignableFrom(elementType)) { + return ((GameObject) obj).GetComponent(elementType); + } + } + + return null; + } + + private void HandleDragAndDrop(Rect rect, ReorderableList list) { + var currentEvent = Event.current; + var usedEvent = false; + + switch (currentEvent.type) { + case EventType.DragExited: + if (GUI.enabled) { + HandleUtility.Repaint(); + } + + break; + + case EventType.DragUpdated: + case EventType.DragPerform: + if (rect.Contains(currentEvent.mousePosition) && GUI.enabled) { + // Check each single object, so we can add multiple objects in a single drag. + var didAcceptDrag = false; + var references = DragAndDrop.objectReferences; + + foreach (var obj in references) { + var assignableObject = GetAssignableObject(obj, list); + + if (assignableObject != null) { + DragAndDrop.visualMode = DragAndDropVisualMode.Copy; + + if (currentEvent.type == EventType.DragPerform) { + list.serializedProperty.arraySize++; + var arrayEnd = list.serializedProperty.arraySize - 1; + list.serializedProperty.GetArrayElementAtIndex(arrayEnd).objectReferenceValue = assignableObject; + didAcceptDrag = true; + } + } + } + + if (didAcceptDrag) { + GUI.changed = true; + DragAndDrop.AcceptDrag(); + usedEvent = true; + } + } + + break; + } + + if (usedEvent) { + currentEvent.Use(); + } + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/ReorderableListPropertyDrawer.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/ReorderableListPropertyDrawer.cs.meta new file mode 100644 index 00000000..4ff1a661 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/ReorderableListPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bf36691a6d456564db2fcbfa8726b3f3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/SpecialCasePropertyDrawerBase.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/SpecialCasePropertyDrawerBase.cs new file mode 100644 index 00000000..14302f94 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/SpecialCasePropertyDrawerBase.cs @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor { + public abstract class SpecialCasePropertyDrawerBase { + public void OnGUI(Rect rect, SerializedProperty property) { + // Check if visible + var visible = PropertyUtility.IsVisible(property); + + if (!visible) { + return; + } + + // Validate + var validatorAttributes = PropertyUtility.GetAttributes(property); + + foreach (var validatorAttribute in validatorAttributes) { + validatorAttribute.GetValidator().ValidateProperty(property); + } + + // Check if enabled and draw + EditorGUI.BeginChangeCheck(); + var enabled = PropertyUtility.IsEnabled(property); + + using (new EditorGUI.DisabledScope(!enabled)) { + OnGUI_Internal(rect, property, new GUIContent(PropertyUtility.GetLabel(property))); + } + + // Call OnValueChanged callbacks + if (EditorGUI.EndChangeCheck()) { + PropertyUtility.CallOnValueChangedCallbacks(property); + } + } + + public float GetPropertyHeight(SerializedProperty property) { + return GetPropertyHeight_Internal(property); + } + + protected abstract void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label); + + protected abstract float GetPropertyHeight_Internal(SerializedProperty property); + } + + public static class SpecialCaseDrawerAttributeExtensions { + private static readonly Dictionary _drawersByAttributeType; + + static SpecialCaseDrawerAttributeExtensions() { + _drawersByAttributeType = new Dictionary(); + _drawersByAttributeType[typeof(ReorderableListAttribute)] = ReorderableListPropertyDrawer.Instance; + } + + public static SpecialCasePropertyDrawerBase GetDrawer(this SpecialCaseDrawerAttribute attr) { + SpecialCasePropertyDrawerBase drawer; + + if (_drawersByAttributeType.TryGetValue(attr.GetType(), out drawer)) { + return drawer; + } + + return null; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/SpecialCasePropertyDrawerBase.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/SpecialCasePropertyDrawerBase.cs.meta new file mode 100644 index 00000000..c60287c7 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/SpecialCasePropertyDrawerBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 771776453ad34b045a41dea54856fa12 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators.meta new file mode 100644 index 00000000..949d96db --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 41caedece93df91439d624dc9d124424 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/MaxValuePropertyValidator.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/MaxValuePropertyValidator.cs new file mode 100644 index 00000000..68996e1c --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/MaxValuePropertyValidator.cs @@ -0,0 +1,23 @@ +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor { + public class MaxValuePropertyValidator : PropertyValidatorBase { + public override void ValidateProperty(SerializedProperty property) { + var maxValueAttribute = PropertyUtility.GetAttribute(property); + + if (property.propertyType == SerializedPropertyType.Integer) { + if (property.intValue > maxValueAttribute.MaxValue) { + property.intValue = (int) maxValueAttribute.MaxValue; + } + } else if (property.propertyType == SerializedPropertyType.Float) { + if (property.floatValue > maxValueAttribute.MaxValue) { + property.floatValue = maxValueAttribute.MaxValue; + } + } else { + var warning = maxValueAttribute.GetType().Name + " can be used only on int or float fields"; + Debug.LogWarning(warning, property.serializedObject.targetObject); + } + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/MaxValuePropertyValidator.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/MaxValuePropertyValidator.cs.meta new file mode 100644 index 00000000..3e809ac2 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/MaxValuePropertyValidator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 627b8e9e7bda6fa408c6f47fb8285665 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/MinValuePropertyValidator.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/MinValuePropertyValidator.cs new file mode 100644 index 00000000..cc003ef1 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/MinValuePropertyValidator.cs @@ -0,0 +1,23 @@ +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor { + public class MinValuePropertyValidator : PropertyValidatorBase { + public override void ValidateProperty(SerializedProperty property) { + var minValueAttribute = PropertyUtility.GetAttribute(property); + + if (property.propertyType == SerializedPropertyType.Integer) { + if (property.intValue < minValueAttribute.MinValue) { + property.intValue = (int) minValueAttribute.MinValue; + } + } else if (property.propertyType == SerializedPropertyType.Float) { + if (property.floatValue < minValueAttribute.MinValue) { + property.floatValue = minValueAttribute.MinValue; + } + } else { + var warning = minValueAttribute.GetType().Name + " can be used only on int or float fields"; + Debug.LogWarning(warning, property.serializedObject.targetObject); + } + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/MinValuePropertyValidator.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/MinValuePropertyValidator.cs.meta new file mode 100644 index 00000000..b3bb871b --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/MinValuePropertyValidator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 03dd23f6c0598074fb1b721dcd8fe023 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/PropertyValidatorBase.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/PropertyValidatorBase.cs new file mode 100644 index 00000000..889757f5 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/PropertyValidatorBase.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using UnityEditor; + +namespace NaughtyAttributes.Editor { + public abstract class PropertyValidatorBase { + public abstract void ValidateProperty(SerializedProperty property); + } + + public static class ValidatorAttributeExtensions { + private static readonly Dictionary _validatorsByAttributeType; + + static ValidatorAttributeExtensions() { + _validatorsByAttributeType = new Dictionary(); + _validatorsByAttributeType[typeof(MinValueAttribute)] = new MinValuePropertyValidator(); + _validatorsByAttributeType[typeof(MaxValueAttribute)] = new MaxValuePropertyValidator(); + _validatorsByAttributeType[typeof(RequiredAttribute)] = new RequiredPropertyValidator(); + _validatorsByAttributeType[typeof(ValidateInputAttribute)] = new ValidateInputPropertyValidator(); + } + + public static PropertyValidatorBase GetValidator(this ValidatorAttribute attr) { + PropertyValidatorBase validator; + + if (_validatorsByAttributeType.TryGetValue(attr.GetType(), out validator)) { + return validator; + } + + return null; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/PropertyValidatorBase.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/PropertyValidatorBase.cs.meta new file mode 100644 index 00000000..97fe5812 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/PropertyValidatorBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f332c8e1c3627d742aa9158af7b02ccc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/RequiredPropertyValidator.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/RequiredPropertyValidator.cs new file mode 100644 index 00000000..864179e4 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/RequiredPropertyValidator.cs @@ -0,0 +1,24 @@ +using UnityEditor; + +namespace NaughtyAttributes.Editor { + public class RequiredPropertyValidator : PropertyValidatorBase { + public override void ValidateProperty(SerializedProperty property) { + var requiredAttribute = PropertyUtility.GetAttribute(property); + + if (property.propertyType == SerializedPropertyType.ObjectReference) { + if (property.objectReferenceValue == null) { + var errorMessage = property.name + " is required"; + + if (!string.IsNullOrEmpty(requiredAttribute.Message)) { + errorMessage = requiredAttribute.Message; + } + + NaughtyEditorGUI.HelpBox_Layout(errorMessage, MessageType.Error, property.serializedObject.targetObject); + } + } else { + var warning = requiredAttribute.GetType().Name + " works only on reference types"; + NaughtyEditorGUI.HelpBox_Layout(warning, MessageType.Warning, property.serializedObject.targetObject); + } + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/RequiredPropertyValidator.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/RequiredPropertyValidator.cs.meta new file mode 100644 index 00000000..d24143ac --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/RequiredPropertyValidator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3a7e657ea45f6414682b5f41be9541b4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/ValidateInputPropertyValidator.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/ValidateInputPropertyValidator.cs new file mode 100644 index 00000000..956a6bd4 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/ValidateInputPropertyValidator.cs @@ -0,0 +1,71 @@ +using UnityEditor; + +namespace NaughtyAttributes.Editor { + public class ValidateInputPropertyValidator : PropertyValidatorBase { + public override void ValidateProperty(SerializedProperty property) { + var validateInputAttribute = PropertyUtility.GetAttribute(property); + var target = PropertyUtility.GetTargetObjectWithProperty(property); + + var validationCallback = ReflectionUtility.GetMethod(target, validateInputAttribute.CallbackName); + + if (validationCallback != null && + validationCallback.ReturnType == typeof(bool)) { + var callbackParameters = validationCallback.GetParameters(); + + if (callbackParameters.Length == 0) { + if (!(bool) validationCallback.Invoke(target, null)) { + if (string.IsNullOrEmpty(validateInputAttribute.Message)) { + NaughtyEditorGUI.HelpBox_Layout( + property.name + " is not valid", + MessageType.Error, + property.serializedObject.targetObject + ); + } else { + NaughtyEditorGUI.HelpBox_Layout( + validateInputAttribute.Message, + MessageType.Error, + property.serializedObject.targetObject + ); + } + } + } else if (callbackParameters.Length == 1) { + var fieldInfo = ReflectionUtility.GetField(target, property.name); + var fieldType = fieldInfo.FieldType; + var parameterType = callbackParameters[0].ParameterType; + + if (fieldType == parameterType) { + if (!(bool) validationCallback.Invoke( + target, + new[] { + fieldInfo.GetValue(target) + } + )) { + if (string.IsNullOrEmpty(validateInputAttribute.Message)) { + NaughtyEditorGUI.HelpBox_Layout( + property.name + " is not valid", + MessageType.Error, + property.serializedObject.targetObject + ); + } else { + NaughtyEditorGUI.HelpBox_Layout( + validateInputAttribute.Message, + MessageType.Error, + property.serializedObject.targetObject + ); + } + } + } else { + var warning = "The field type is not the same as the callback's parameter type"; + NaughtyEditorGUI.HelpBox_Layout(warning, MessageType.Warning, property.serializedObject.targetObject); + } + } else { + var warning = + validateInputAttribute.GetType().Name + + " needs a callback with boolean return type and an optional single parameter of the same type as the field"; + + NaughtyEditorGUI.HelpBox_Layout(warning, MessageType.Warning, property.serializedObject.targetObject); + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/ValidateInputPropertyValidator.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/ValidateInputPropertyValidator.cs.meta new file mode 100644 index 00000000..3f6e5393 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/ValidateInputPropertyValidator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5f6adf84ed53a7840a456e8b4dce38d9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility.meta new file mode 100644 index 00000000..40e857c7 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: acb4475c71a3fe947a81ced84ab89c6d +folderAsset: yes +timeCreated: 1508062761 +licenseType: Store +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/ButtonUtility.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/ButtonUtility.cs new file mode 100644 index 00000000..f706670a --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/ButtonUtility.cs @@ -0,0 +1,48 @@ +using System.Reflection; +using UnityEngine; + +namespace NaughtyAttributes.Editor { + public static class ButtonUtility { + public static bool IsEnabled(Object target, MethodInfo method) { + var enableIfAttribute = method.GetCustomAttribute(); + + if (enableIfAttribute == null) { + return true; + } + + var conditionValues = PropertyUtility.GetConditionValues(target, enableIfAttribute.Conditions); + + if (conditionValues.Count > 0) { + var enabled = PropertyUtility.GetConditionsFlag(conditionValues, enableIfAttribute.ConditionOperator, enableIfAttribute.Inverted); + + return enabled; + } + + var message = enableIfAttribute.GetType().Name + " needs a valid boolean condition field, property or method name to work"; + Debug.LogWarning(message, target); + + return false; + } + + public static bool IsVisible(Object target, MethodInfo method) { + var showIfAttribute = method.GetCustomAttribute(); + + if (showIfAttribute == null) { + return true; + } + + var conditionValues = PropertyUtility.GetConditionValues(target, showIfAttribute.Conditions); + + if (conditionValues.Count > 0) { + var enabled = PropertyUtility.GetConditionsFlag(conditionValues, showIfAttribute.ConditionOperator, showIfAttribute.Inverted); + + return enabled; + } + + var message = showIfAttribute.GetType().Name + " needs a valid boolean condition field, property or method name to work"; + Debug.LogWarning(message, target); + + return false; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/ButtonUtility.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/ButtonUtility.cs.meta new file mode 100644 index 00000000..cf4dacee --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/ButtonUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a273f81125ec52d4cb5dec2228afda0e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/NaughtyEditorGUI.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/NaughtyEditorGUI.cs new file mode 100644 index 00000000..9f1e4523 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/NaughtyEditorGUI.cs @@ -0,0 +1,300 @@ +using System; +using System.Collections; +using System.Linq; +using System.Reflection; +using UnityEditor; +using UnityEditor.Experimental.SceneManagement; +using UnityEditor.SceneManagement; +using UnityEngine; +using UnityEngine.SceneManagement; +using Object = UnityEngine.Object; + +namespace NaughtyAttributes.Editor { + public static class NaughtyEditorGUI { + public const float IndentLength = 15.0f; + public const float HorizontalSpacing = 2.0f; + + public static void PropertyField(Rect rect, SerializedProperty property, bool includeChildren) { + PropertyField_Implementation(rect, property, includeChildren, DrawPropertyField); + } + + public static void PropertyField_Layout(SerializedProperty property, bool includeChildren) { + var dummyRect = new Rect(); + PropertyField_Implementation(dummyRect, property, includeChildren, DrawPropertyField_Layout); + } + + private static void DrawPropertyField(Rect rect, SerializedProperty property, GUIContent label, bool includeChildren) { + EditorGUI.PropertyField(rect, property, label, includeChildren); + } + + private static void DrawPropertyField_Layout(Rect rect, SerializedProperty property, GUIContent label, bool includeChildren) { + EditorGUILayout.PropertyField(property, label, includeChildren); + } + + private static void PropertyField_Implementation(Rect rect, SerializedProperty property, bool includeChildren, PropertyFieldFunction propertyFieldFunction) { + var specialCaseAttribute = PropertyUtility.GetAttribute(property); + + if (specialCaseAttribute != null) { + specialCaseAttribute.GetDrawer().OnGUI(rect, property); + } else { + var label = new GUIContent(PropertyUtility.GetLabel(property)); + var anyDrawerAttribute = PropertyUtility.GetAttributes(property).Any(); + + if (!anyDrawerAttribute) { + // Drawer attributes check for visibility, enableability and validator themselves, + // so if a property doesn't have a DrawerAttribute we need to check for these explicitly + + // Check if visible + var visible = PropertyUtility.IsVisible(property); + + if (!visible) { + return; + } + + // Validate + var validatorAttributes = PropertyUtility.GetAttributes(property); + + foreach (var validatorAttribute in validatorAttributes) { + validatorAttribute.GetValidator().ValidateProperty(property); + } + + // Check if enabled and draw + EditorGUI.BeginChangeCheck(); + var enabled = PropertyUtility.IsEnabled(property); + + using (new EditorGUI.DisabledScope(!enabled)) { + propertyFieldFunction.Invoke(rect, property, label, includeChildren); + } + + // Call OnValueChanged callbacks + if (EditorGUI.EndChangeCheck()) { + PropertyUtility.CallOnValueChangedCallbacks(property); + } + } else { + // We don't need to check for enableIfAttribute + propertyFieldFunction.Invoke(rect, property, label, includeChildren); + } + } + } + + public static float GetIndentLength(Rect sourceRect) { + var indentRect = EditorGUI.IndentedRect(sourceRect); + var indentLength = indentRect.x - sourceRect.x; + + return indentLength; + } + + public static void BeginBoxGroup_Layout(string label = "") { + EditorGUILayout.BeginVertical(GUI.skin.box); + + if (!string.IsNullOrEmpty(label)) { + EditorGUILayout.LabelField(label, EditorStyles.boldLabel); + } + } + + public static void EndBoxGroup_Layout() { + EditorGUILayout.EndVertical(); + } + + /// + /// Creates a dropdown + /// + /// The rect the defines the position and size of the dropdown in the inspector + /// The serialized object that is being updated + /// The target object that contains the dropdown + /// The field of the target object that holds the currently selected dropdown value + /// The label of the dropdown + /// The index of the value from the values array + /// The values of the dropdown + /// The display options for the values + public static void Dropdown( + Rect rect, + SerializedObject serializedObject, + object target, + FieldInfo dropdownField, + string label, + int selectedValueIndex, + object[] values, + string[] displayOptions + ) { + EditorGUI.BeginChangeCheck(); + + var newIndex = EditorGUI.Popup(rect, label, selectedValueIndex, displayOptions); + + if (EditorGUI.EndChangeCheck()) { + Undo.RecordObject(serializedObject.targetObject, "Dropdown"); + + // TODO: Problem with structs, because they are value type. + // The solution is to make boxing/unboxing but unfortunately I don't know the compile time type of the target object + dropdownField.SetValue(target, values[newIndex]); + } + } + + public static void Button(Object target, MethodInfo methodInfo) { + var visible = ButtonUtility.IsVisible(target, methodInfo); + + if (!visible) { + return; + } + + if (methodInfo.GetParameters().All(p => p.IsOptional)) { + var buttonAttribute = (ButtonAttribute) methodInfo.GetCustomAttributes(typeof(ButtonAttribute), true)[0]; + var buttonText = string.IsNullOrEmpty(buttonAttribute.Text) ? ObjectNames.NicifyVariableName(methodInfo.Name) : buttonAttribute.Text; + + var buttonEnabled = ButtonUtility.IsEnabled(target, methodInfo); + + var mode = buttonAttribute.SelectedEnableMode; + + buttonEnabled &= + mode == EButtonEnableMode.Always || + mode == EButtonEnableMode.Editor && !Application.isPlaying || + mode == EButtonEnableMode.Playmode && Application.isPlaying; + + var methodIsCoroutine = methodInfo.ReturnType == typeof(IEnumerator); + + if (methodIsCoroutine) { + buttonEnabled &= Application.isPlaying ? true : false; + } + + EditorGUI.BeginDisabledGroup(!buttonEnabled); + + if (GUILayout.Button(buttonText)) { + var defaultParams = methodInfo.GetParameters().Select(p => p.DefaultValue).ToArray(); + var methodResult = methodInfo.Invoke(target, defaultParams) as IEnumerator; + + if (!Application.isPlaying) { + // Set target object and scene dirty to serialize changes to disk + EditorUtility.SetDirty(target); + + var stage = PrefabStageUtility.GetCurrentPrefabStage(); + + if (stage != null) + // Prefab mode + { + EditorSceneManager.MarkSceneDirty(stage.scene); + } else + // Normal scene + { + EditorSceneManager.MarkSceneDirty(SceneManager.GetActiveScene()); + } + } else if (methodResult != null && target is MonoBehaviour behaviour) { + behaviour.StartCoroutine(methodResult); + } + } + + EditorGUI.EndDisabledGroup(); + } else { + var warning = typeof(ButtonAttribute).Name + " works only on methods with no parameters"; + HelpBox_Layout(warning, MessageType.Warning, target, true); + } + } + + public static void NativeProperty_Layout(Object target, PropertyInfo property) { + var value = property.GetValue(target, null); + + if (value == null) { + var warning = string.Format("{0} is null. {1} doesn't support reference types with null value", property.Name, typeof(ShowNativePropertyAttribute).Name); + HelpBox_Layout(warning, MessageType.Warning, target); + } else if (!Field_Layout(value, property.Name)) { + var warning = string.Format("{0} doesn't support {1} types", typeof(ShowNativePropertyAttribute).Name, property.PropertyType.Name); + HelpBox_Layout(warning, MessageType.Warning, target); + } + } + + public static void NonSerializedField_Layout(Object target, FieldInfo field) { + var value = field.GetValue(target); + + if (value == null) { + var warning = string.Format("{0} is null. {1} doesn't support reference types with null value", field.Name, typeof(ShowNonSerializedFieldAttribute).Name); + HelpBox_Layout(warning, MessageType.Warning, target); + } else if (!Field_Layout(value, field.Name)) { + var warning = string.Format("{0} doesn't support {1} types", typeof(ShowNonSerializedFieldAttribute).Name, field.FieldType.Name); + HelpBox_Layout(warning, MessageType.Warning, target); + } + } + + public static void HorizontalLine(Rect rect, float height, Color color) { + rect.height = height; + EditorGUI.DrawRect(rect, color); + } + + public static void HelpBox(Rect rect, string message, MessageType type, Object context = null, bool logToConsole = false) { + EditorGUI.HelpBox(rect, message, type); + + if (logToConsole) { + DebugLogMessage(message, type, context); + } + } + + public static void HelpBox_Layout(string message, MessageType type, Object context = null, bool logToConsole = false) { + EditorGUILayout.HelpBox(message, type); + + if (logToConsole) { + DebugLogMessage(message, type, context); + } + } + + public static bool Field_Layout(object value, string label) { + using (new EditorGUI.DisabledScope(true)) { + var isDrawn = true; + var valueType = value.GetType(); + + if (valueType == typeof(bool)) { + EditorGUILayout.Toggle(label, (bool) value); + } else if (valueType == typeof(int)) { + EditorGUILayout.IntField(label, (int) value); + } else if (valueType == typeof(long)) { + EditorGUILayout.LongField(label, (long) value); + } else if (valueType == typeof(float)) { + EditorGUILayout.FloatField(label, (float) value); + } else if (valueType == typeof(double)) { + EditorGUILayout.DoubleField(label, (double) value); + } else if (valueType == typeof(string)) { + EditorGUILayout.TextField(label, (string) value); + } else if (valueType == typeof(Vector2)) { + EditorGUILayout.Vector2Field(label, (Vector2) value); + } else if (valueType == typeof(Vector3)) { + EditorGUILayout.Vector3Field(label, (Vector3) value); + } else if (valueType == typeof(Vector4)) { + EditorGUILayout.Vector4Field(label, (Vector4) value); + } else if (valueType == typeof(Color)) { + EditorGUILayout.ColorField(label, (Color) value); + } else if (valueType == typeof(Bounds)) { + EditorGUILayout.BoundsField(label, (Bounds) value); + } else if (valueType == typeof(Rect)) { + EditorGUILayout.RectField(label, (Rect) value); + } else if (typeof(Object).IsAssignableFrom(valueType)) { + EditorGUILayout.ObjectField(label, (Object) value, valueType, true); + } else if (valueType.BaseType == typeof(Enum)) { + EditorGUILayout.EnumPopup(label, (Enum) value); + } else if (valueType.BaseType == typeof(TypeInfo)) { + EditorGUILayout.TextField(label, value.ToString()); + } else { + isDrawn = false; + } + + return isDrawn; + } + } + + private static void DebugLogMessage(string message, MessageType type, Object context) { + switch (type) { + case MessageType.None: + case MessageType.Info: + Debug.Log(message, context); + + break; + case MessageType.Warning: + Debug.LogWarning(message, context); + + break; + case MessageType.Error: + Debug.LogError(message, context); + + break; + } + } + + private delegate void PropertyFieldFunction(Rect rect, SerializedProperty property, GUIContent label, bool includeChildren); + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/NaughtyEditorGUI.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/NaughtyEditorGUI.cs.meta new file mode 100644 index 00000000..782824e0 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/NaughtyEditorGUI.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 6ff27ff7705d6064e935bb2159a1b453 +timeCreated: 1510926159 +licenseType: Store +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/PropertyUtility.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/PropertyUtility.cs new file mode 100644 index 00000000..eed0594b --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/PropertyUtility.cs @@ -0,0 +1,267 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Reflection; +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor { + public static class PropertyUtility { + public static T GetAttribute(SerializedProperty property) + where T : class { + var attributes = GetAttributes(property); + + return attributes.Length > 0 ? attributes[0] : null; + } + + public static T[] GetAttributes(SerializedProperty property) + where T : class { + var fieldInfo = ReflectionUtility.GetField(GetTargetObjectWithProperty(property), property.name); + + if (fieldInfo == null) { + return new T[] { }; + } + + return (T[]) fieldInfo.GetCustomAttributes(typeof(T), true); + } + + public static string GetLabel(SerializedProperty property) { + var labelAttribute = GetAttribute(property); + + return labelAttribute == null + ? property.displayName + : labelAttribute.Label; + } + + public static void CallOnValueChangedCallbacks(SerializedProperty property) { + var onValueChangedAttributes = GetAttributes(property); + + if (onValueChangedAttributes.Length == 0) { + return; + } + + var target = GetTargetObjectWithProperty(property); + property.serializedObject.ApplyModifiedProperties(); // We must apply modifications so that the new value is updated in the serialized object + + foreach (var onValueChangedAttribute in onValueChangedAttributes) { + var callbackMethod = ReflectionUtility.GetMethod(target, onValueChangedAttribute.CallbackName); + + if (callbackMethod != null && + callbackMethod.ReturnType == typeof(void) && + callbackMethod.GetParameters().Length == 0) { + callbackMethod.Invoke(target, new object[] { }); + } else { + var warning = string.Format( + "{0} can invoke only methods with 'void' return type and 0 parameters", + onValueChangedAttribute.GetType().Name + ); + + Debug.LogWarning(warning, property.serializedObject.targetObject); + } + } + } + + public static bool IsEnabled(SerializedProperty property) { + var enableIfAttribute = GetAttribute(property); + + if (enableIfAttribute == null) { + return true; + } + + var target = GetTargetObjectWithProperty(property); + + var conditionValues = GetConditionValues(target, enableIfAttribute.Conditions); + + if (conditionValues.Count > 0) { + var enabled = GetConditionsFlag(conditionValues, enableIfAttribute.ConditionOperator, enableIfAttribute.Inverted); + + return enabled; + } + + var message = enableIfAttribute.GetType().Name + " needs a valid boolean condition field, property or method name to work"; + Debug.LogWarning(message, property.serializedObject.targetObject); + + return false; + } + + public static bool IsVisible(SerializedProperty property) { + var showIfAttribute = GetAttribute(property); + + if (showIfAttribute == null) { + return true; + } + + var target = GetTargetObjectWithProperty(property); + + var conditionValues = GetConditionValues(target, showIfAttribute.Conditions); + + if (conditionValues.Count > 0) { + var enabled = GetConditionsFlag(conditionValues, showIfAttribute.ConditionOperator, showIfAttribute.Inverted); + + return enabled; + } + + var message = showIfAttribute.GetType().Name + " needs a valid boolean condition field, property or method name to work"; + Debug.LogWarning(message, property.serializedObject.targetObject); + + return false; + } + + internal static List GetConditionValues(object target, string[] conditions) { + var conditionValues = new List(); + + foreach (var condition in conditions) { + var conditionField = ReflectionUtility.GetField(target, condition); + + if (conditionField != null && + conditionField.FieldType == typeof(bool)) { + conditionValues.Add((bool) conditionField.GetValue(target)); + } + + var conditionProperty = ReflectionUtility.GetProperty(target, condition); + + if (conditionProperty != null && + conditionProperty.PropertyType == typeof(bool)) { + conditionValues.Add((bool) conditionProperty.GetValue(target)); + } + + var conditionMethod = ReflectionUtility.GetMethod(target, condition); + + if (conditionMethod != null && + conditionMethod.ReturnType == typeof(bool) && + conditionMethod.GetParameters().Length == 0) { + conditionValues.Add((bool) conditionMethod.Invoke(target, null)); + } + } + + return conditionValues; + } + + internal static bool GetConditionsFlag(List conditionValues, EConditionOperator conditionOperator, bool invert) { + bool flag; + + if (conditionOperator == EConditionOperator.And) { + flag = true; + + foreach (var value in conditionValues) { + flag = flag && value; + } + } else { + flag = false; + + foreach (var value in conditionValues) { + flag = flag || value; + } + } + + if (invert) { + flag = !flag; + } + + return flag; + } + + public static Type GetPropertyType(SerializedProperty property) { + var parentType = GetTargetObjectWithProperty(property).GetType(); + var fieldInfo = parentType.GetField(property.name, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); + + return fieldInfo.FieldType; + } + + /// + /// Gets the object the property represents. + /// + /// + /// + public static object GetTargetObjectOfProperty(SerializedProperty property) { + if (property == null) { + return null; + } + + var path = property.propertyPath.Replace(".Array.data[", "["); + object obj = property.serializedObject.targetObject; + var elements = path.Split('.'); + + foreach (var element in elements) { + if (element.Contains("[")) { + var elementName = element.Substring(0, element.IndexOf("[")); + var index = Convert.ToInt32(element.Substring(element.IndexOf("[")).Replace("[", "").Replace("]", "")); + obj = GetValue_Imp(obj, elementName, index); + } else { + obj = GetValue_Imp(obj, element); + } + } + + return obj; + } + + /// + /// Gets the object that the property is a member of + /// + /// + /// + public static object GetTargetObjectWithProperty(SerializedProperty property) { + var path = property.propertyPath.Replace(".Array.data[", "["); + object obj = property.serializedObject.targetObject; + var elements = path.Split('.'); + + for (var i = 0; i < elements.Length - 1; i++) { + var element = elements[i]; + + if (element.Contains("[")) { + var elementName = element.Substring(0, element.IndexOf("[")); + var index = Convert.ToInt32(element.Substring(element.IndexOf("[")).Replace("[", "").Replace("]", "")); + obj = GetValue_Imp(obj, elementName, index); + } else { + obj = GetValue_Imp(obj, element); + } + } + + return obj; + } + + private static object GetValue_Imp(object source, string name) { + if (source == null) { + return null; + } + + var type = source.GetType(); + + while (type != null) { + var field = type.GetField(name, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance); + + if (field != null) { + return field.GetValue(source); + } + + var property = type.GetProperty(name, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); + + if (property != null) { + return property.GetValue(source, null); + } + + type = type.BaseType; + } + + return null; + } + + private static object GetValue_Imp(object source, string name, int index) { + var enumerable = GetValue_Imp(source, name) as IEnumerable; + + if (enumerable == null) { + return null; + } + + var enumerator = enumerable.GetEnumerator(); + + for (var i = 0; i <= index; i++) { + if (!enumerator.MoveNext()) { + return null; + } + } + + return enumerator.Current; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/PropertyUtility.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/PropertyUtility.cs.meta new file mode 100644 index 00000000..dce67c63 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/PropertyUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 312eedcb79c7a5542b87c0b848e3e2fa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/ReflectionUtility.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/ReflectionUtility.cs new file mode 100644 index 00000000..f5649697 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/ReflectionUtility.cs @@ -0,0 +1,95 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using UnityEngine; + +namespace NaughtyAttributes.Editor { + public static class ReflectionUtility { + public static IEnumerable GetAllFields(object target, Func predicate) { + if (target == null) { + Debug.LogError("The target object is null. Check for missing scripts."); + + yield break; + } + + var types = new List { + target.GetType() + }; + + while (types.Last().BaseType != null) { + types.Add(types.Last().BaseType); + } + + for (var i = types.Count - 1; i >= 0; i--) { + var fieldInfos = types[i] + .GetFields(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.DeclaredOnly) + .Where(predicate); + + foreach (var fieldInfo in fieldInfos) { + yield return fieldInfo; + } + } + } + + public static IEnumerable GetAllProperties(object target, Func predicate) { + if (target == null) { + Debug.LogError("The target object is null. Check for missing scripts."); + + yield break; + } + + var types = new List { + target.GetType() + }; + + while (types.Last().BaseType != null) { + types.Add(types.Last().BaseType); + } + + for (var i = types.Count - 1; i >= 0; i--) { + var propertyInfos = types[i] + .GetProperties(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.DeclaredOnly) + .Where(predicate); + + foreach (var propertyInfo in propertyInfos) { + yield return propertyInfo; + } + } + } + + public static IEnumerable GetAllMethods(object target, Func predicate) { + if (target == null) { + Debug.LogError("The target object is null. Check for missing scripts."); + + return null; + } + + var methodInfos = target.GetType() + .GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public) + .Where(predicate); + + return methodInfos; + } + + public static FieldInfo GetField(object target, string fieldName) { + return GetAllFields(target, f => f.Name.Equals(fieldName, StringComparison.InvariantCulture)).FirstOrDefault(); + } + + public static PropertyInfo GetProperty(object target, string propertyName) { + return GetAllProperties(target, p => p.Name.Equals(propertyName, StringComparison.InvariantCulture)).FirstOrDefault(); + } + + public static MethodInfo GetMethod(object target, string methodName) { + return GetAllMethods(target, m => m.Name.Equals(methodName, StringComparison.InvariantCulture)).FirstOrDefault(); + } + + public static Type GetListElementType(Type listType) { + if (listType.IsGenericType) { + return listType.GetGenericArguments()[0]; + } + + return listType.GetElementType(); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/ReflectionUtility.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/ReflectionUtility.cs.meta new file mode 100644 index 00000000..fc012150 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/ReflectionUtility.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 1d86c581f02a55f458e36bf7e81e3084 +timeCreated: 1520258793 +licenseType: Store +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/SavedBool.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/SavedBool.cs new file mode 100644 index 00000000..4a68c04c --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/SavedBool.cs @@ -0,0 +1,25 @@ +using UnityEditor; + +namespace NaughtyAttributes.Editor { + internal class SavedBool { + private readonly string _name; + private bool _value; + + public SavedBool(string name, bool value) { + _name = name; + _value = EditorPrefs.GetBool(name, value); + } + + public bool Value { + get => _value; + set { + if (_value == value) { + return; + } + + _value = value; + EditorPrefs.SetBool(_name, value); + } + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/SavedBool.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/SavedBool.cs.meta new file mode 100644 index 00000000..aebf0075 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/SavedBool.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 18613afe66b0c0344a2be5f430bf965a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Test.meta new file mode 100644 index 00000000..6eca4f65 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ce2bd76b5676a434bb8a84254f67f1dc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/AnimatorParamTest.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Test/AnimatorParamTest.cs new file mode 100644 index 00000000..93b3f89f --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/AnimatorParamTest.cs @@ -0,0 +1,55 @@ +using System; +using UnityEngine; + +namespace NaughtyAttributes.Test { + public class AnimatorParamTest : MonoBehaviour { + public Animator animator0; + + [AnimatorParam("animator0")] + public int hash0; + + [AnimatorParam("animator0")] + public string name0; + + public AnimatorParamNest1 nest1; + + [Button("Log 'hash0' and 'name0'")] + private void TestLog() { + Debug.Log($"hash0 = {hash0}"); + Debug.Log($"name0 = {name0}"); + Debug.Log($"Animator.StringToHash(name0) = {Animator.StringToHash(name0)}"); + } + } + + [Serializable] + public class AnimatorParamNest1 { + public Animator animator1; + + [AnimatorParam("Animator1", AnimatorControllerParameterType.Bool)] + public int hash1; + + [AnimatorParam("Animator1", AnimatorControllerParameterType.Float)] + public string name1; + + public AnimatorParamNest2 nest2; + + private Animator Animator1 { + get => animator1; + } + } + + [Serializable] + public class AnimatorParamNest2 { + public Animator animator2; + + [AnimatorParam("GetAnimator2", AnimatorControllerParameterType.Int)] + public int hash1; + + [AnimatorParam("GetAnimator2", AnimatorControllerParameterType.Trigger)] + public string name1; + + private Animator GetAnimator2() { + return animator2; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/AnimatorParamTest.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Test/AnimatorParamTest.cs.meta new file mode 100644 index 00000000..a8daa631 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/AnimatorParamTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9bff20ccdde00fc49a62bad6a4ef9982 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/BoxGroupTest.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Test/BoxGroupTest.cs new file mode 100644 index 00000000..318774ab --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/BoxGroupTest.cs @@ -0,0 +1,30 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test { + public class BoxGroupTest : MonoBehaviour { + [BoxGroup("Integers")] + public int int0; + [BoxGroup("Integers")] + public int int1; + + [BoxGroup("Floats")] + public float float0; + [BoxGroup("Floats")] + public float float1; + + [BoxGroup("Sliders")] + [MinMaxSlider(0, 1)] + public Vector2 slider0; + [BoxGroup("Sliders")] + [MinMaxSlider(0, 1)] + public Vector2 slider1; + + public string str0; + public string str1; + + [BoxGroup] + public Transform trans0; + [BoxGroup] + public Transform trans1; + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/BoxGroupTest.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Test/BoxGroupTest.cs.meta new file mode 100644 index 00000000..0c5ee54f --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/BoxGroupTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3920f5ea384951b4990e4d9e8032d12e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ButtonTest.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ButtonTest.cs new file mode 100644 index 00000000..65555557 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ButtonTest.cs @@ -0,0 +1,34 @@ +using System.Collections; +using UnityEngine; + +namespace NaughtyAttributes.Test { + public class ButtonTest : MonoBehaviour { + public int myInt; + + [Button(enabledMode: EButtonEnableMode.Always)] + private void IncrementMyInt() { + myInt++; + } + + [Button("Decrement My Int", EButtonEnableMode.Editor)] + private void DecrementMyInt() { + myInt--; + } + + [Button(enabledMode: EButtonEnableMode.Playmode)] + private void LogMyInt(string prefix = "MyInt = ") { + Debug.Log(prefix + myInt); + } + + [Button("StartCoroutine")] + private IEnumerator IncrementMyIntCoroutine() { + var seconds = 5; + + for (var i = 0; i < seconds; i++) { + myInt++; + + yield return new WaitForSeconds(1.0f); + } + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ButtonTest.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ButtonTest.cs.meta new file mode 100644 index 00000000..1d7d58f6 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ButtonTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b592f12a9f69ac3408f6f870762232c7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/CurveRangeTest.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Test/CurveRangeTest.cs new file mode 100644 index 00000000..8a0f4039 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/CurveRangeTest.cs @@ -0,0 +1,48 @@ +using System; +using NaughtyAttributes; +using UnityEngine; + +public class CurveRangeTest : MonoBehaviour { + [CurveRange( + -1, + -1, + 1, + 1, + EColor.Red + )] + public AnimationCurve curve; + + [CurveRange(EColor.Orange)] + public AnimationCurve curve1; + + [CurveRange(0, 0, 10, 10)] + public AnimationCurve curve2; + + public CurveRangeNest1 nest1; + + [Serializable] + public class CurveRangeNest1 { + [CurveRange( + 0, + 0, + 1, + 1, + EColor.Green + )] + public AnimationCurve curve; + + public CurveRangeNest2 nest2; + } + + [Serializable] + public class CurveRangeNest2 { + [CurveRange( + 0, + 0, + 5, + 5, + EColor.Blue + )] + public AnimationCurve curve; + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/CurveRangeTest.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Test/CurveRangeTest.cs.meta new file mode 100644 index 00000000..e43f8f03 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/CurveRangeTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6587b100d001e7e46b9aaae7f1180b40 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/DisableIfTest.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Test/DisableIfTest.cs new file mode 100644 index 00000000..bc0d4098 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/DisableIfTest.cs @@ -0,0 +1,65 @@ +using System; +using UnityEngine; + +namespace NaughtyAttributes.Test { + public class DisableIfTest : MonoBehaviour { + public bool disable1; + public bool disable2; + + [DisableIf(EConditionOperator.And, "disable1", "disable2")] + [ReorderableList] + public int[] disableIfAll; + + [DisableIf(EConditionOperator.Or, "disable1", "disable2")] + [ReorderableList] + public int[] disableIfAny; + + public DisableIfNest1 nest1; + } + + [Serializable] + public class DisableIfNest1 { + public bool disable1; + public bool disable2; + + [DisableIf(EConditionOperator.And, "Disable1", "Disable2")] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int disableIfAll = 1; + + [DisableIf(EConditionOperator.Or, "Disable1", "Disable2")] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int disableIfAny = 2; + + public DisableIfNest2 nest2; + + public bool Disable1 { + get => disable1; + } + + public bool Disable2 { + get => disable2; + } + } + + [Serializable] + public class DisableIfNest2 { + public bool disable1; + public bool disable2; + + [DisableIf(EConditionOperator.And, "GetDisable1", "GetDisable2")] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 enableIfAll = new Vector2(0.25f, 0.75f); + + [DisableIf(EConditionOperator.Or, "GetDisable1", "GetDisable2")] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 enableIfAny = new Vector2(0.25f, 0.75f); + + public bool GetDisable1() { + return disable1; + } + + public bool GetDisable2() { + return disable2; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/DisableIfTest.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Test/DisableIfTest.cs.meta new file mode 100644 index 00000000..c3a1e7af --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/DisableIfTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0e48a088cb96287448c3be58932bfcb7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/DropdownTest.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Test/DropdownTest.cs new file mode 100644 index 00000000..db418153 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/DropdownTest.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace NaughtyAttributes.Test { + public class DropdownTest : MonoBehaviour { + [Dropdown("intValues")] + public int intValue; + + public DropdownNest1 nest1; + + #pragma warning disable 414 + private int[] intValues = { + 1, + 2, + 3 + }; + #pragma warning restore 414 + } + + [Serializable] + public class DropdownNest1 { + [Dropdown("StringValues")] + public string stringValue; + + public DropdownNest2 nest2; + + private List StringValues { + get => new List { + "A", + "B", + "C" + }; + } + } + + [Serializable] + public class DropdownNest2 { + [Dropdown("GetVectorValues")] + public Vector3 vectorValue; + + private DropdownList GetVectorValues() { + return new DropdownList { + { + "Right", Vector3.right + }, { + "Up", Vector3.up + }, { + "Forward", Vector3.forward + } + }; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/DropdownTest.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Test/DropdownTest.cs.meta new file mode 100644 index 00000000..ec7fa241 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/DropdownTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3855e37cd6b01194e8166573c7c4b37d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/EnableIfTest.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Test/EnableIfTest.cs new file mode 100644 index 00000000..74134107 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/EnableIfTest.cs @@ -0,0 +1,65 @@ +using System; +using UnityEngine; + +namespace NaughtyAttributes.Test { + public class EnableIfTest : MonoBehaviour { + public bool enable1; + public bool enable2; + + [EnableIf(EConditionOperator.And, "enable1", "enable2")] + [ReorderableList] + public int[] enableIfAll; + + [EnableIf(EConditionOperator.Or, "enable1", "enable2")] + [ReorderableList] + public int[] enableIfAny; + + public EnableIfNest1 nest1; + } + + [Serializable] + public class EnableIfNest1 { + public bool enable1; + public bool enable2; + + [EnableIf(EConditionOperator.And, "Enable1", "Enable2")] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int enableIfAll; + + [EnableIf(EConditionOperator.Or, "Enable1", "Enable2")] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int enableIfAny; + + public EnableIfNest2 nest2; + + public bool Enable1 { + get => enable1; + } + + public bool Enable2 { + get => enable2; + } + } + + [Serializable] + public class EnableIfNest2 { + public bool enable1; + public bool enable2; + + [EnableIf(EConditionOperator.And, "GetEnable1", "GetEnable2")] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 enableIfAll = new Vector2(0.25f, 0.75f); + + [EnableIf(EConditionOperator.Or, "GetEnable1", "GetEnable2")] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 enableIfAny = new Vector2(0.25f, 0.75f); + + public bool GetEnable1() { + return enable1; + } + + public bool GetEnable2() { + return enable2; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/EnableIfTest.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Test/EnableIfTest.cs.meta new file mode 100644 index 00000000..c22fe7b7 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/EnableIfTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bed506d8be3a10f45bec4bf2237bec87 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/EnumFlagsTest.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Test/EnumFlagsTest.cs new file mode 100644 index 00000000..b7e33ac0 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/EnumFlagsTest.cs @@ -0,0 +1,35 @@ +using System; +using UnityEngine; + +namespace NaughtyAttributes.Test { + public enum TestEnum { + None = 0, + B = 1 << 0, + C = 1 << 1, + D = 1 << 2, + E = 1 << 3, + F = 1 << 4, + All = ~0 + } + + public class EnumFlagsTest : MonoBehaviour { + [EnumFlags] + public TestEnum flags0; + + public EnumFlagsNest1 nest1; + } + + [Serializable] + public class EnumFlagsNest1 { + [EnumFlags] + public TestEnum flags1; + + public EnumFlagsNest2 nest2; + } + + [Serializable] + public class EnumFlagsNest2 { + [EnumFlags] + public TestEnum flags2; + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/EnumFlagsTest.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Test/EnumFlagsTest.cs.meta new file mode 100644 index 00000000..b5486752 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/EnumFlagsTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7b7f6b84ce0d7674d8a386fde729279c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ExpandableTest.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ExpandableTest.cs new file mode 100644 index 00000000..4f324ad5 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ExpandableTest.cs @@ -0,0 +1,25 @@ +using System; +using UnityEngine; + +namespace NaughtyAttributes.Test { + public class ExpandableTest : MonoBehaviour { + [Expandable] + public ScriptableObject obj0; + + public ExpandableScriptableObjectNest1 nest1; + } + + [Serializable] + public class ExpandableScriptableObjectNest1 { + [Expandable] + public ScriptableObject obj1; + + public ExpandableScriptableObjectNest2 nest2; + } + + [Serializable] + public class ExpandableScriptableObjectNest2 { + [Expandable] + public ScriptableObject obj2; + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ExpandableTest.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ExpandableTest.cs.meta new file mode 100644 index 00000000..ffa82d1a --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ExpandableTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 64c4c9aee2b494d44be9bb0b7f12ed7c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/FoldoutTest.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Test/FoldoutTest.cs new file mode 100644 index 00000000..7738783d --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/FoldoutTest.cs @@ -0,0 +1,30 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test { + public class FoldoutTest : MonoBehaviour { + [Foldout("Integers")] + public int int0; + [Foldout("Integers")] + public int int1; + + [Foldout("Floats")] + public float float0; + [Foldout("Floats")] + public float float1; + + [Foldout("Sliders")] + [MinMaxSlider(0, 1)] + public Vector2 slider0; + [Foldout("Sliders")] + [MinMaxSlider(0, 1)] + public Vector2 slider1; + + public string str0; + public string str1; + + [Foldout("Transforms")] + public Transform trans0; + [Foldout("Transforms")] + public Transform trans1; + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/FoldoutTest.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Test/FoldoutTest.cs.meta new file mode 100644 index 00000000..8c72e06b --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/FoldoutTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3b437215d92efa74ea85ff726ca0dd09 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/HideIfTest.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Test/HideIfTest.cs new file mode 100644 index 00000000..b98f8ee5 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/HideIfTest.cs @@ -0,0 +1,65 @@ +using System; +using UnityEngine; + +namespace NaughtyAttributes.Test { + public class HideIfTest : MonoBehaviour { + public bool hide1; + public bool hide2; + + [HideIf(EConditionOperator.And, "hide1", "hide2")] + [ReorderableList] + public int[] hideIfAll; + + [HideIf(EConditionOperator.Or, "hide1", "hide2")] + [ReorderableList] + public int[] hideIfAny; + + public HideIfNest1 nest1; + } + + [Serializable] + public class HideIfNest1 { + public bool hide1; + public bool hide2; + + [HideIf(EConditionOperator.And, "Hide1", "Hide2")] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int hideIfAll; + + [HideIf(EConditionOperator.Or, "Hide1", "Hide2")] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int hideIfAny; + + public HideIfNest2 nest2; + + public bool Hide1 { + get => hide1; + } + + public bool Hide2 { + get => hide2; + } + } + + [Serializable] + public class HideIfNest2 { + public bool hide1; + public bool hide2; + + [HideIf(EConditionOperator.And, "GetHide1", "GetHide2")] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 hideIfAll = new Vector2(0.25f, 0.75f); + + [HideIf(EConditionOperator.Or, "GetHide1", "GetHide2")] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 hideIfAny = new Vector2(0.25f, 0.75f); + + public bool GetHide1() { + return hide1; + } + + public bool GetHide2() { + return hide2; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/HideIfTest.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Test/HideIfTest.cs.meta new file mode 100644 index 00000000..6115ad28 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/HideIfTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3cf166cb519e666419bb79b0c50c5ee1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/HorizontalLineTest.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Test/HorizontalLineTest.cs new file mode 100644 index 00000000..c5184f67 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/HorizontalLineTest.cs @@ -0,0 +1,48 @@ +using System; +using UnityEngine; + +namespace NaughtyAttributes.Test { + public class HorizontalLineTest : MonoBehaviour { + [HorizontalLine(color: EColor.Black)] + [Header("Black")] + [HorizontalLine(color: EColor.Blue)] + [Header("Blue")] + [HorizontalLine(color: EColor.Gray)] + [Header("Gray")] + [HorizontalLine(color: EColor.Green)] + [Header("Green")] + [HorizontalLine(color: EColor.Indigo)] + [Header("Indigo")] + [HorizontalLine(color: EColor.Orange)] + [Header("Orange")] + [HorizontalLine(color: EColor.Pink)] + [Header("Pink")] + [HorizontalLine(color: EColor.Red)] + [Header("Red")] + [HorizontalLine(color: EColor.Violet)] + [Header("Violet")] + [HorizontalLine(color: EColor.White)] + [Header("White")] + [HorizontalLine(color: EColor.Yellow)] + [Header("Yellow")] + [HorizontalLine(10.0f)] + [Header("Thick")] + public int line0; + + public HorizontalLineNest1 nest1; + } + + [Serializable] + public class HorizontalLineNest1 { + [HorizontalLine] + public int line1; + + public HorizontalLineNest2 nest2; + } + + [Serializable] + public class HorizontalLineNest2 { + [HorizontalLine] + public int line2; + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/HorizontalLineTest.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Test/HorizontalLineTest.cs.meta new file mode 100644 index 00000000..4d7ff377 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/HorizontalLineTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5cc6d3f8d4a53374887b3d620a6972e3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/InfoBoxTest.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Test/InfoBoxTest.cs new file mode 100644 index 00000000..36e4ec7b --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/InfoBoxTest.cs @@ -0,0 +1,25 @@ +using System; +using UnityEngine; + +namespace NaughtyAttributes.Test { + public class InfoBoxTest : MonoBehaviour { + [InfoBox("Normal")] + public int normal; + + public InfoBoxNest1 nest1; + } + + [Serializable] + public class InfoBoxNest1 { + [InfoBox("Warning", EInfoBoxType.Warning)] + public int warning; + + public InfoBoxNest2 nest2; + } + + [Serializable] + public class InfoBoxNest2 { + [InfoBox("Error", EInfoBoxType.Error)] + public int error; + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/InfoBoxTest.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Test/InfoBoxTest.cs.meta new file mode 100644 index 00000000..68dc824f --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/InfoBoxTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0dcb08e489c17644e9eacaa1ec5fe781 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/InputAxisTest.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Test/InputAxisTest.cs new file mode 100644 index 00000000..f56036ea --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/InputAxisTest.cs @@ -0,0 +1,30 @@ +using System; +using UnityEngine; + +namespace NaughtyAttributes.Test { + public class InputAxisTest : MonoBehaviour { + [InputAxis] + public string inputAxis0; + + public InputAxisNest1 nest1; + + [Button] + private void LogInputAxis0() { + Debug.Log(inputAxis0); + } + } + + [Serializable] + public class InputAxisNest1 { + [InputAxis] + public string inputAxis1; + + public InputAxisNest2 nest2; + } + + [Serializable] + public struct InputAxisNest2 { + [InputAxis] + public string inputAxis2; + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/InputAxisTest.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Test/InputAxisTest.cs.meta new file mode 100644 index 00000000..b44a8628 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/InputAxisTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e0cc8a31c22090847b75538c0ed2d2fc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/LabelTest.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Test/LabelTest.cs new file mode 100644 index 00000000..8a386304 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/LabelTest.cs @@ -0,0 +1,27 @@ +using System; +using UnityEngine; + +namespace NaughtyAttributes.Test { + public class LabelTest : MonoBehaviour { + [Label("Label 0")] + public int int0; + + public LabelNest1 nest1; + } + + [Serializable] + public class LabelNest1 { + [Label("Label 1")] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int int1; + + public LabelNest2 nest2; + } + + [Serializable] + public class LabelNest2 { + [Label("Label 2")] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 vector2; + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/LabelTest.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Test/LabelTest.cs.meta new file mode 100644 index 00000000..114af72a --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/LabelTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7488af014527ebf42af5c4fc4d5f4f5b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/MinMaxSliderTest.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Test/MinMaxSliderTest.cs new file mode 100644 index 00000000..39a7f4b2 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/MinMaxSliderTest.cs @@ -0,0 +1,25 @@ +using System; +using UnityEngine; + +namespace NaughtyAttributes.Test { + public class MinMaxSliderTest : MonoBehaviour { + [MinMaxSlider(0.0f, 1.0f)] + public Vector2 minMaxSlider0 = new Vector2(0.25f, 0.75f); + + public MinMaxSliderNest1 nest1; + } + + [Serializable] + public class MinMaxSliderNest1 { + [MinMaxSlider(0.0f, 1.0f)] + public Vector2 minMaxSlider1 = new Vector2(0.25f, 0.75f); + + public MinMaxSliderNest2 nest2; + } + + [Serializable] + public class MinMaxSliderNest2 { + [MinMaxSlider(0.0f, 1.0f)] + public Vector2 minMaxSlider2 = new Vector2(0.25f, 0.75f); + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/MinMaxSliderTest.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Test/MinMaxSliderTest.cs.meta new file mode 100644 index 00000000..7580a81b --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/MinMaxSliderTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fd67fbde6acdd6a44944f12e507067c5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/MinMaxValueTest.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Test/MinMaxValueTest.cs new file mode 100644 index 00000000..dd1b7c69 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/MinMaxValueTest.cs @@ -0,0 +1,49 @@ +using System; +using UnityEngine; + +namespace NaughtyAttributes.Test { + public class MinMaxValueTest : MonoBehaviour { + [MinValue(0)] + public int min0; + + [MaxValue(0)] + public int max0; + + [MinValue(0)] [MaxValue(1)] + public float range01; + + public MinMaxValueNest1 nest1; + } + + [Serializable] + public class MinMaxValueNest1 { + [MinValue(0)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int min0; + + [MaxValue(0)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int max0; + + [MinValue(0)] [MaxValue(1)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public float range01; + + public MinMaxValueNest2 nest2; + } + + [Serializable] + public class MinMaxValueNest2 { + [MinValue(0)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int min0; + + [MaxValue(0)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int max0; + + [MinValue(0)] [MaxValue(1)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public float range01; + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/MinMaxValueTest.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Test/MinMaxValueTest.cs.meta new file mode 100644 index 00000000..328dee36 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/MinMaxValueTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 450a05787c54e6b4fa88ffe223bcee87 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/NaughtyAttributes.Test.asmdef b/Assets/Plugins/NaughtyAttributes/Scripts/Test/NaughtyAttributes.Test.asmdef new file mode 100644 index 00000000..910f5483 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/NaughtyAttributes.Test.asmdef @@ -0,0 +1,14 @@ +{ + "name": "NaughtyAttributes.Test", + "references": [ + "NaughtyAttributes.Core" + ], + "optionalUnityReferences": [], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [] +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/NaughtyAttributes.Test.asmdef.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Test/NaughtyAttributes.Test.asmdef.meta new file mode 100644 index 00000000..c3d49e73 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/NaughtyAttributes.Test.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: df1dea26b8503004d92d621e88aa9421 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/OnValueChangedTest.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Test/OnValueChangedTest.cs new file mode 100644 index 00000000..4f0dce00 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/OnValueChangedTest.cs @@ -0,0 +1,44 @@ +using System; +using UnityEngine; + +namespace NaughtyAttributes.Test { + public class OnValueChangedTest : MonoBehaviour { + [OnValueChanged("OnValueChangedMethod1")] + [OnValueChanged("OnValueChangedMethod2")] + public int int0; + + public OnValueChangedNest1 nest1; + + private void OnValueChangedMethod1() { + Debug.LogFormat("int0: {0}", int0); + } + + private void OnValueChangedMethod2() { + Debug.LogFormat("int0: {0}", int0); + } + } + + [Serializable] + public class OnValueChangedNest1 { + [OnValueChanged("OnValueChangedMethod")] + [AllowNesting] + public int int1; + + public OnValueChangedNest2 nest2; + + private void OnValueChangedMethod() { + Debug.LogFormat("int1: {0}", int1); + } + } + + [Serializable] + public class OnValueChangedNest2 { + [OnValueChanged("OnValueChangedMethod")] + [AllowNesting] + public int int2; + + private void OnValueChangedMethod() { + Debug.LogFormat("int2: {0}", int2); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/OnValueChangedTest.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Test/OnValueChangedTest.cs.meta new file mode 100644 index 00000000..bfd1ab25 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/OnValueChangedTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ff1df679e5b32f64bb106752c63933fa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ProgressBarTest.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ProgressBarTest.cs new file mode 100644 index 00000000..0fb0c573 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ProgressBarTest.cs @@ -0,0 +1,32 @@ +using System; +using UnityEngine; + +namespace NaughtyAttributes.Test { + public class ProgressBarTest : MonoBehaviour { + [Header("Constant ProgressBar")] + [ProgressBar("Health", 100, EColor.Red)] + public float health = 50.0f; + + [Header("Nested ProgressBar")] + public ProgressBarNest1 nest1; + + [Header("Dynamic ProgressBar")] + [ProgressBar("Elixir", "maxElixir", EColor.Violet)] + public float elixir = 50.0f; + public float maxElixir = 100.0f; + } + + [Serializable] + public class ProgressBarNest1 { + [ProgressBar("Mana", 100)] + public float mana = 25.0f; + + public ProgressBarNest2 nest2; + } + + [Serializable] + public class ProgressBarNest2 { + [ProgressBar("Stamina", 100, EColor.Green)] + public float stamina = 75.0f; + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ProgressBarTest.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ProgressBarTest.cs.meta new file mode 100644 index 00000000..db884298 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ProgressBarTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 96ca4c27fc649764b9d1625f1740cb9e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ReadOnlyTest.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ReadOnlyTest.cs new file mode 100644 index 00000000..afe4b286 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ReadOnlyTest.cs @@ -0,0 +1,25 @@ +using System; +using UnityEngine; + +namespace NaughtyAttributes.Test { + public class ReadOnlyTest : MonoBehaviour { + [ReadOnly] + public int readOnlyInt = 5; + + public ReadOnlyNest1 nest1; + } + + [Serializable] + public class ReadOnlyNest1 { + [ReadOnly] + public float readOnlyFloat = 3.14f; + + public ReadOnlyNest2 nest2; + } + + [Serializable] + public struct ReadOnlyNest2 { + [ReadOnly] + public string readOnlyString; + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ReadOnlyTest.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ReadOnlyTest.cs.meta new file mode 100644 index 00000000..d65c60ce --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ReadOnlyTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5443d37a05e188846bda9b05b067184e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ReorderableListTest.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ReorderableListTest.cs new file mode 100644 index 00000000..409a4470 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ReorderableListTest.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace NaughtyAttributes.Test { + public class ReorderableListTest : MonoBehaviour { + [ReorderableList] + public int[] intArray; + + [ReorderableList] + public List vectorList; + + [ReorderableList] + public List structList; + + [ReorderableList] + public GameObject[] gameObjectsList; + + [ReorderableList] + public List transformsList; + + [ReorderableList] + public List monoBehavioursList; + } + + [Serializable] + public struct SomeStruct { + public int Int; + public float Float; + public Vector3 Vector; + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ReorderableListTest.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ReorderableListTest.cs.meta new file mode 100644 index 00000000..b993018c --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ReorderableListTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c93fde7cd79390148ac576c3a159a77b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/RequiredTest.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Test/RequiredTest.cs new file mode 100644 index 00000000..2cf6a6e9 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/RequiredTest.cs @@ -0,0 +1,27 @@ +using System; +using UnityEngine; + +namespace NaughtyAttributes.Test { + public class RequiredTest : MonoBehaviour { + [Required] + public Transform trans0; + + public RequiredNest1 nest1; + } + + [Serializable] + public class RequiredNest1 { + [Required] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public Transform trans1; + + public RequiredNest2 nest2; + } + + [Serializable] + public class RequiredNest2 { + [Required("trans2 is invalid custom message - hohoho")] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public Transform trans2; + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/RequiredTest.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Test/RequiredTest.cs.meta new file mode 100644 index 00000000..bc512606 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/RequiredTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9c8c10b2234650d42b2a8efad6b413db +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ResizableTextAreaTest.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ResizableTextAreaTest.cs new file mode 100644 index 00000000..4ecea542 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ResizableTextAreaTest.cs @@ -0,0 +1,25 @@ +using System; +using UnityEngine; + +namespace NaughtyAttributes.Test { + public class ResizableTextAreaTest : MonoBehaviour { + [ResizableTextArea] + public string text0; + + public ResizableTextAreaNest1 nest1; + } + + [Serializable] + public class ResizableTextAreaNest1 { + [ResizableTextArea] + public string text1; + + public ResizableTextAreaNest2 nest2; + } + + [Serializable] + public class ResizableTextAreaNest2 { + [ResizableTextArea] + public string text2; + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ResizableTextAreaTest.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ResizableTextAreaTest.cs.meta new file mode 100644 index 00000000..380566d5 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ResizableTextAreaTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fb4f4bb2e3e063340a24f4bb24528bb5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/SceneTest.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Test/SceneTest.cs new file mode 100644 index 00000000..5194b725 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/SceneTest.cs @@ -0,0 +1,25 @@ +using System; +using UnityEngine; + +namespace NaughtyAttributes.Test { + public class SceneTest : MonoBehaviour { + [Scene] + public string scene0; + + public SceneNest1 nest1; + } + + [Serializable] + public class SceneNest1 { + [Scene] + public string scene1; + + public SceneNest2 nest2; + } + + [Serializable] + public struct SceneNest2 { + [Scene] + public int scene2; + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/SceneTest.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Test/SceneTest.cs.meta new file mode 100644 index 00000000..3ceca2fe --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/SceneTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 281a85803caf74a459439020a0840fa4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowAssetPreviewTest.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowAssetPreviewTest.cs new file mode 100644 index 00000000..b02cdc0a --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowAssetPreviewTest.cs @@ -0,0 +1,34 @@ +using System; +using UnityEngine; + +namespace NaughtyAttributes.Test { + public class ShowAssetPreviewTest : MonoBehaviour { + [ShowAssetPreview] + public Sprite sprite0; + + [ShowAssetPreview(96, 96)] + public GameObject prefab0; + + public ShowAssetPreviewNest1 nest1; + } + + [Serializable] + public class ShowAssetPreviewNest1 { + [ShowAssetPreview] + public Sprite sprite1; + + [ShowAssetPreview(96, 96)] + public GameObject prefab1; + + public ShowAssetPreviewNest2 nest2; + } + + [Serializable] + public class ShowAssetPreviewNest2 { + [ShowAssetPreview] + public Sprite sprite2; + + [ShowAssetPreview(96, 96)] + public GameObject prefab2; + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowAssetPreviewTest.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowAssetPreviewTest.cs.meta new file mode 100644 index 00000000..b636853b --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowAssetPreviewTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 705c14aa9ecaa274289972381f471367 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowIfTest.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowIfTest.cs new file mode 100644 index 00000000..9653dc77 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowIfTest.cs @@ -0,0 +1,65 @@ +using System; +using UnityEngine; + +namespace NaughtyAttributes.Test { + public class ShowIfTest : MonoBehaviour { + public bool show1; + public bool show2; + + [ShowIf(EConditionOperator.And, "show1", "show2")] + [ReorderableList] + public int[] showIfAll; + + [ShowIf(EConditionOperator.Or, "show1", "show2")] + [ReorderableList] + public int[] showIfAny; + + public ShowIfNest1 nest1; + } + + [Serializable] + public class ShowIfNest1 { + public bool show1; + public bool show2; + + [ShowIf(EConditionOperator.And, "Show1", "Show2")] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int showIfAll; + + [ShowIf(EConditionOperator.Or, "Show1", "Show2")] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int showIfAny; + + public ShowIfNest2 nest2; + + public bool Show1 { + get => show1; + } + + public bool Show2 { + get => show2; + } + } + + [Serializable] + public class ShowIfNest2 { + public bool show1; + public bool show2; + + [ShowIf(EConditionOperator.And, "GetShow1", "GetShow2")] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 showIfAll = new Vector2(0.25f, 0.75f); + + [ShowIf(EConditionOperator.Or, "GetShow1", "GetShow2")] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 showIfAny = new Vector2(0.25f, 0.75f); + + public bool GetShow1() { + return show1; + } + + public bool GetShow2() { + return show2; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowIfTest.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowIfTest.cs.meta new file mode 100644 index 00000000..749d05ce --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowIfTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4fdbfcfbf5b056a4bac491fe21569572 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowNativePropertyTest.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowNativePropertyTest.cs new file mode 100644 index 00000000..f31debc4 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowNativePropertyTest.cs @@ -0,0 +1,15 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test { + public class ShowNativePropertyTest : MonoBehaviour { + [ShowNativeProperty] + private Transform Transform { + get => transform; + } + + [ShowNativeProperty] + private Transform ParentTransform { + get => transform.parent; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowNativePropertyTest.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowNativePropertyTest.cs.meta new file mode 100644 index 00000000..19f9e31f --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowNativePropertyTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b5a73795d25dd334e90a5a347c6079d9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowNonSerializedFieldTest.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowNonSerializedFieldTest.cs new file mode 100644 index 00000000..545d6276 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowNonSerializedFieldTest.cs @@ -0,0 +1,16 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test { + public class ShowNonSerializedFieldTest : MonoBehaviour { + #pragma warning disable 414 + [ShowNonSerializedField] + private int myInt = 10; + + [ShowNonSerializedField] + private const float PI = 3.14159f; + + [ShowNonSerializedField] + private static readonly Vector3 CONST_VECTOR = Vector3.one; + #pragma warning restore 414 + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowNonSerializedFieldTest.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowNonSerializedFieldTest.cs.meta new file mode 100644 index 00000000..404ff1bb --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowNonSerializedFieldTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 913d67a695253f744bdc776625b9b948 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/TagTest.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Test/TagTest.cs new file mode 100644 index 00000000..32c92639 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/TagTest.cs @@ -0,0 +1,30 @@ +using System; +using UnityEngine; + +namespace NaughtyAttributes.Test { + public class TagTest : MonoBehaviour { + [Tag] + public string tag0; + + public TagNest1 nest1; + + [Button] + private void LogTag0() { + Debug.Log(tag0); + } + } + + [Serializable] + public class TagNest1 { + [Tag] + public string tag1; + + public TagNest2 nest2; + } + + [Serializable] + public struct TagNest2 { + [Tag] + public string tag2; + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/TagTest.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Test/TagTest.cs.meta new file mode 100644 index 00000000..88ea5af3 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/TagTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8bcc0d5613b48fb43bd36c9d37e99900 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ValidateInputTest.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ValidateInputTest.cs new file mode 100644 index 00000000..eef281b8 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ValidateInputTest.cs @@ -0,0 +1,39 @@ +using System; +using UnityEngine; + +namespace NaughtyAttributes.Test { + public class ValidateInputTest : MonoBehaviour { + [ValidateInput("NotZero0", "int0 must not be zero")] + public int int0; + + public ValidateInputNest1 nest1; + + private bool NotZero0(int value) { + return value != 0; + } + } + + [Serializable] + public class ValidateInputNest1 { + [ValidateInput("NotZero1")] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int int1; + + public ValidateInputNest2 nest2; + + private bool NotZero1(int value) { + return value != 0; + } + } + + [Serializable] + public class ValidateInputNest2 { + [ValidateInput("NotZero2")] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int int2; + + private bool NotZero2(int value) { + return value != 0; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ValidateInputTest.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ValidateInputTest.cs.meta new file mode 100644 index 00000000..f57070a2 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/ValidateInputTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 94adafcfe59aa344c9b5596b2cc6ecd0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/_NaughtyComponent.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Test/_NaughtyComponent.cs new file mode 100644 index 00000000..1b703368 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/_NaughtyComponent.cs @@ -0,0 +1,12 @@ +using System; +using UnityEngine; + +namespace NaughtyAttributes.Test { + public class _NaughtyComponent : MonoBehaviour { } + + [Serializable] + public class MyClass { } + + [Serializable] + public struct MyStruct { } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/_NaughtyComponent.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Test/_NaughtyComponent.cs.meta new file mode 100644 index 00000000..10803eed --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/_NaughtyComponent.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 9c928ea15ae74a44089beb2e534c1a35 +timeCreated: 1507996629 +licenseType: Store +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/_NaughtyScriptableObject.cs b/Assets/Plugins/NaughtyAttributes/Scripts/Test/_NaughtyScriptableObject.cs new file mode 100644 index 00000000..4eedbd3d --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/_NaughtyScriptableObject.cs @@ -0,0 +1,32 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace NaughtyAttributes.Test { + //[CreateAssetMenu(fileName = "NaughtyScriptableObject", menuName = "NaughtyAttributes/_NaughtyScriptableObject")] + public class _NaughtyScriptableObject : ScriptableObject { + public bool enableMyInt = true; + public bool showMyFloat = true; + + [EnableIf("enableMyInt")] + public int myInt; + + [ShowIf("showMyFloat")] + public float myFloat; + + [MinMaxSlider(0.0f, 1.0f)] + public Vector2 mySlider; + + //[ReorderableList] + public List list; + + [Button] + private void IncrementMyInt() { + myInt++; + } + + [Button("Decrement My Int")] + private void DecrementMyInt() { + myInt--; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/_NaughtyScriptableObject.cs.meta b/Assets/Plugins/NaughtyAttributes/Scripts/Test/_NaughtyScriptableObject.cs.meta new file mode 100644 index 00000000..6328fa32 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/Scripts/Test/_NaughtyScriptableObject.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 753bdb918c6038142acddbd7aae6958f +timeCreated: 1518639587 +licenseType: Store +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/package.json b/Assets/Plugins/NaughtyAttributes/package.json new file mode 100644 index 00000000..19532420 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/package.json @@ -0,0 +1,17 @@ +{ + "name": "com.dbrizov.naughtyattributes", + "displayName": "NaughtyAttributes", + "version": "2.0.7", + "unity": "2018.3", + "description": "NaughtyAttributes is an extension for the Unity Inspector.", + "keywords": [ "attribute", "inspector", "editor" ], + "category": "editor extensions", + "dependencies": {}, + "samples": [ + { + "displayName": "Demo Scene", + "description": "Demo Scene", + "path": "Samples~/DemoScene" + } + ] +} diff --git a/Assets/Plugins/NaughtyAttributes/package.json.meta b/Assets/Plugins/NaughtyAttributes/package.json.meta new file mode 100644 index 00000000..6f1fa825 --- /dev/null +++ b/Assets/Plugins/NaughtyAttributes/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: db9a5ca20403b0344ae64015de8f8c86 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/RuntimePreviewGenerator/RuntimePreviewGenerator.cs b/Assets/Plugins/RuntimePreviewGenerator/RuntimePreviewGenerator.cs index 68fb0d4a..1bc773b6 100644 --- a/Assets/Plugins/RuntimePreviewGenerator/RuntimePreviewGenerator.cs +++ b/Assets/Plugins/RuntimePreviewGenerator/RuntimePreviewGenerator.cs @@ -5,53 +5,49 @@ using UnityEngine; using Object = UnityEngine.Object; -public static class RuntimePreviewGenerator -{ +public static class RuntimePreviewGenerator { // Source: https://github.com/MattRix/UnityDecompiled/blob/master/UnityEngine/UnityEngine/Plane.cs - private struct ProjectionPlane - { + private struct ProjectionPlane { private readonly Vector3 m_Normal; private readonly float m_Distance; - public ProjectionPlane(Vector3 inNormal, Vector3 inPoint) - { + public ProjectionPlane(Vector3 inNormal, Vector3 inPoint) { m_Normal = Vector3.Normalize(inNormal); m_Distance = -Vector3.Dot(inNormal, inPoint); } - public Vector3 ClosestPointOnPlane(Vector3 point) - { - float d = Vector3.Dot(m_Normal, point) + m_Distance; + public Vector3 ClosestPointOnPlane(Vector3 point) { + var d = Vector3.Dot(m_Normal, point) + m_Distance; + return point - m_Normal * d; } - public float GetDistanceToPoint(Vector3 point) - { - float signedDistance = Vector3.Dot(m_Normal, point) + m_Distance; - if (signedDistance < 0f) + public float GetDistanceToPoint(Vector3 point) { + var signedDistance = Vector3.Dot(m_Normal, point) + m_Distance; + + if (signedDistance < 0f) { signedDistance = -signedDistance; + } return signedDistance; } } - private class CameraSetup - { - private Vector3 position; - private Quaternion rotation; - - private RenderTexture targetTexture; + private class CameraSetup { + private float aspect; private Color backgroundColor; + private CameraClearFlags clearFlags; + private float farClipPlane; + private float nearClipPlane; private bool orthographic; private float orthographicSize; - private float nearClipPlane; - private float farClipPlane; - private float aspect; - private CameraClearFlags clearFlags; + private Vector3 position; + private Quaternion rotation; + + private RenderTexture targetTexture; - public void GetSetup(Camera camera) - { + public void GetSetup(Camera camera) { position = camera.transform.position; rotation = camera.transform.rotation; @@ -66,8 +62,7 @@ public void GetSetup(Camera camera) clearFlags = camera.clearFlags; } - public void ApplySetup(Camera camera) - { + public void ApplySetup(Camera camera) { camera.transform.position = position; camera.transform.rotation = rotation; @@ -86,13 +81,13 @@ public void ApplySetup(Camera camera) } private const int PREVIEW_LAYER = 22; - private static Vector3 PREVIEW_POSITION = new Vector3(-9245f, 9899f, -9356f); + private static readonly Vector3 PREVIEW_POSITION = new Vector3(-9245f, 9899f, -9356f); private static Camera renderCamera; - private static CameraSetup cameraSetup = new CameraSetup(); + private static readonly CameraSetup cameraSetup = new CameraSetup(); - private static List renderersList = new List(); - private static List layersList = new List(); + private static readonly List renderersList = new List(); + private static readonly List layersList = new List(); private static float aspect; private static float minX, maxX, minY, maxY; @@ -106,14 +101,11 @@ public void ApplySetup(Camera camera) private static Material boundsMaterial; #endif - private static Camera m_internalCamera = null; + private static Camera m_internalCamera; - private static Camera InternalCamera - { - get - { - if (m_internalCamera == null) - { + private static Camera InternalCamera { + get { + if (m_internalCamera == null) { m_internalCamera = new GameObject("ModelPreviewGeneratorCamera").AddComponent(); m_internalCamera.enabled = false; m_internalCamera.nearClipPlane = 0.01f; @@ -125,56 +117,34 @@ private static Camera InternalCamera } } - private static Camera m_previewRenderCamera; - - public static Camera PreviewRenderCamera - { - get { return m_previewRenderCamera; } - set { m_previewRenderCamera = value; } - } + public static Camera PreviewRenderCamera { get; set; } private static Vector3 m_previewDirection; - public static Vector3 PreviewDirection - { - get { return m_previewDirection; } - set { m_previewDirection = value.normalized; } + public static Vector3 PreviewDirection { + get => m_previewDirection; + set => m_previewDirection = value.normalized; } private static float m_padding; - public static float Padding - { - get { return m_padding; } - set { m_padding = Mathf.Clamp(value, -0.25f, 0.25f); } + public static float Padding { + get => m_padding; + set => m_padding = Mathf.Clamp(value, -0.25f, 0.25f); } private static Color m_backgroundColor; - public static Color BackgroundColor - { - get { return m_backgroundColor; } - set { m_backgroundColor = value; } - } - - private static bool m_orthographicMode; - - public static bool OrthographicMode - { - get { return m_orthographicMode; } - set { m_orthographicMode = value; } + public static Color BackgroundColor { + get => m_backgroundColor; + set => m_backgroundColor = value; } - private static bool m_markTextureNonReadable; + public static bool OrthographicMode { get; set; } - public static bool MarkTextureNonReadable - { - get { return m_markTextureNonReadable; } - set { m_markTextureNonReadable = value; } - } + public static bool MarkTextureNonReadable { get; set; } - static RuntimePreviewGenerator() - { + static RuntimePreviewGenerator() { PreviewRenderCamera = null; PreviewDirection = new Vector3(-1f, -1f, -1f); Padding = 0f; @@ -182,135 +152,146 @@ static RuntimePreviewGenerator() OrthographicMode = false; MarkTextureNonReadable = true; -#if DEBUG_BOUNDS + #if DEBUG_BOUNDS boundsMaterial = new Material( Shader.Find( "Legacy Shaders/Diffuse" ) ) { hideFlags = HideFlags.HideAndDontSave, color = new Color( 0f, 1f, 1f, 1f ) }; -#endif + #endif } - public static Texture2D GenerateMaterialPreview(Material material, PrimitiveType previewObject, int width = 64, int height = 64) - { - return GenerateMaterialPreviewWithShader(material, previewObject, null, null, width, height); + public static Texture2D GenerateMaterialPreview(Material material, PrimitiveType previewObject, int width = 64, int height = 64) { + return GenerateMaterialPreviewWithShader( + material, + previewObject, + null, + null, + width, + height + ); } - public static Texture2D GenerateMaterialPreviewWithShader(Material material, PrimitiveType previewPrimitive, Shader shader, string replacementTag, int width = 64, int height = 64) - { - GameObject previewModel = GameObject.CreatePrimitive(previewPrimitive); + public static Texture2D GenerateMaterialPreviewWithShader(Material material, PrimitiveType previewPrimitive, Shader shader, string replacementTag, int width = 64, int height = 64) { + var previewModel = GameObject.CreatePrimitive(previewPrimitive); previewModel.gameObject.hideFlags = HideFlags.HideAndDontSave; previewModel.GetComponent().sharedMaterial = material; - try - { - return GenerateModelPreviewWithShader(previewModel.transform, shader, replacementTag, width, height, false); - } - catch (Exception e) - { + try { + return GenerateModelPreviewWithShader( + previewModel.transform, + shader, + replacementTag, + width, + height + ); + } catch (Exception e) { Debug.LogException(e); - } - finally - { + } finally { Object.DestroyImmediate(previewModel); } return null; } - public static Texture2D GenerateModelPreview(Transform model, int width = 64, int height = 64, bool shouldCloneModel = false) - { - return GenerateModelPreviewWithShader(model, null, null, width, height, shouldCloneModel); + public static Texture2D GenerateModelPreview(Transform model, int width = 64, int height = 64, bool shouldCloneModel = false) { + return GenerateModelPreviewWithShader( + model, + null, + null, + width, + height, + shouldCloneModel + ); } - public static Texture2D GenerateModelPreviewWithShader(Transform model, Shader shader, string replacementTag, int width = 64, int height = 64, bool shouldCloneModel = false) - { - if (model == null || model.Equals(null)) + public static Texture2D GenerateModelPreviewWithShader(Transform model, Shader shader, string replacementTag, int width = 64, int height = 64, bool shouldCloneModel = false) { + if (model == null || model.Equals(null)) { return null; + } Texture2D result = null; - if (!model.gameObject.scene.IsValid() || !model.gameObject.scene.isLoaded) + if (!model.gameObject.scene.IsValid() || !model.gameObject.scene.isLoaded) { shouldCloneModel = true; + } Transform previewObject; - if (shouldCloneModel) - { - previewObject = (Transform)Object.Instantiate(model, null, false); + + if (shouldCloneModel) { + previewObject = Object.Instantiate(model, null, false); previewObject.gameObject.hideFlags = HideFlags.HideAndDontSave; - } - else - { + } else { previewObject = model; layersList.Clear(); GetLayerRecursively(previewObject); } - bool isStatic = IsStatic(model); - bool wasActive = previewObject.gameObject.activeSelf; - Vector3 prevPos = previewObject.position; - Quaternion prevRot = previewObject.rotation; + var isStatic = IsStatic(model); + var wasActive = previewObject.gameObject.activeSelf; + var prevPos = previewObject.position; + var prevRot = previewObject.rotation; - try - { + try { SetupCamera(); SetLayerRecursively(previewObject); - if (!isStatic) - { + if (!isStatic) { previewObject.position = PREVIEW_POSITION; previewObject.rotation = Quaternion.identity; } - if (!wasActive) + if (!wasActive) { previewObject.gameObject.SetActive(true); + } - Vector3 previewDir = previewObject.rotation * m_previewDirection; + var previewDir = previewObject.rotation * m_previewDirection; renderersList.Clear(); previewObject.GetComponentsInChildren(renderersList); - Bounds previewBounds = new Bounds(); - bool init = false; - for (int i = 0; i < renderersList.Count; i++) - { - if (!renderersList[i].enabled) + var previewBounds = new Bounds(); + var init = false; + + for (var i = 0; i < renderersList.Count; i++) { + if (!renderersList[i].enabled) { continue; + } - if (!init) - { + if (!init) { previewBounds = renderersList[i].bounds; init = true; - } - else + } else { previewBounds.Encapsulate(renderersList[i].bounds); + } } - if (!init) - return null; + if (!init) { + throw new Exception("No enabled renderers attached to model"); + } boundsCenter = previewBounds.center; - Vector3 boundsExtents = previewBounds.extents; - Vector3 boundsSize = 2f * boundsExtents; + var boundsExtents = previewBounds.extents; + var boundsSize = 2f * boundsExtents; - aspect = (float)width / height; + aspect = (float) width / height; renderCamera.aspect = aspect; renderCamera.transform.rotation = Quaternion.LookRotation(previewDir, previewObject.up); -#if DEBUG_BOUNDS + #if DEBUG_BOUNDS boundsDebugCubes.Clear(); -#endif + #endif float distance; - if (m_orthographicMode) - { + + if (OrthographicMode) { renderCamera.transform.position = boundsCenter; minX = minY = Mathf.Infinity; maxX = maxY = Mathf.NegativeInfinity; - Vector3 point = boundsCenter + boundsExtents; + var point = boundsCenter + boundsExtents; ProjectBoundingBoxMinMax(point); point.x -= boundsSize.x; ProjectBoundingBoxMinMax(point); @@ -329,15 +310,13 @@ public static Texture2D GenerateModelPreviewWithShader(Transform model, Shader s distance = boundsExtents.magnitude + 1f; renderCamera.orthographicSize = (1f + m_padding * 2f) * Mathf.Max(maxY - minY, (maxX - minX) / aspect) * 0.5f; - } - else - { + } else { projectionPlaneHorizontal = new ProjectionPlane(renderCamera.transform.up, boundsCenter); projectionPlaneVertical = new ProjectionPlane(renderCamera.transform.right, boundsCenter); maxDistance = Mathf.NegativeInfinity; - Vector3 point = boundsCenter + boundsExtents; + var point = boundsCenter + boundsExtents; CalculateMaxDistance(point); point.x -= boundsSize.x; CalculateMaxDistance(point); @@ -360,152 +339,160 @@ public static Texture2D GenerateModelPreviewWithShader(Transform model, Shader s renderCamera.transform.position = boundsCenter - previewDir * distance; renderCamera.farClipPlane = distance * 4f; - RenderTexture temp = RenderTexture.active; - RenderTexture renderTex = RenderTexture.GetTemporary(width, height, 16); + var temp = RenderTexture.active; + var renderTex = RenderTexture.GetTemporary(width, height, 16); RenderTexture.active = renderTex; - if (m_backgroundColor.a < 1f) + + if (m_backgroundColor.a < 1f) { GL.Clear(false, true, m_backgroundColor); + } renderCamera.targetTexture = renderTex; - if (shader == null) + if (shader == null) { renderCamera.Render(); - else - renderCamera.RenderWithShader(shader, replacementTag == null ? string.Empty : replacementTag); + } else { + renderCamera.RenderWithShader(shader, replacementTag ?? string.Empty); + } renderCamera.targetTexture = null; result = new Texture2D(width, height, m_backgroundColor.a < 1f ? TextureFormat.RGBA32 : TextureFormat.RGB24, false); result.ReadPixels(new Rect(0, 0, width, height), 0, 0, false); - result.Apply(false, m_markTextureNonReadable); + result.Apply(false, MarkTextureNonReadable); RenderTexture.active = temp; RenderTexture.ReleaseTemporary(renderTex); - } - catch (Exception e) - { + } catch (Exception e) { Debug.LogException(e); - } - finally - { -#if DEBUG_BOUNDS + } finally { + #if DEBUG_BOUNDS for( int i = 0; i < boundsDebugCubes.Count; i++ ) Object.DestroyImmediate( boundsDebugCubes[i].gameObject ); boundsDebugCubes.Clear(); -#endif + #endif - if (shouldCloneModel) + if (shouldCloneModel) { Object.DestroyImmediate(previewObject.gameObject); - else - { - if (!wasActive) + } else { + if (!wasActive) { previewObject.gameObject.SetActive(false); + } - if (!isStatic) - { + if (!isStatic) { previewObject.position = prevPos; previewObject.rotation = prevRot; } - int index = 0; + var index = 0; SetLayerRecursively(previewObject, ref index); } - if (renderCamera == m_previewRenderCamera) + if (renderCamera == PreviewRenderCamera) { cameraSetup.ApplySetup(renderCamera); + } } return result; } - private static void SetupCamera() - { - if (m_previewRenderCamera != null && !m_previewRenderCamera.Equals(null)) - { - cameraSetup.GetSetup(m_previewRenderCamera); + private static void SetupCamera() { + if (PreviewRenderCamera != null && !PreviewRenderCamera.Equals(null)) { + cameraSetup.GetSetup(PreviewRenderCamera); - renderCamera = m_previewRenderCamera; + renderCamera = PreviewRenderCamera; renderCamera.nearClipPlane = 0.01f; - } - else + } else { renderCamera = InternalCamera; + } renderCamera.backgroundColor = m_backgroundColor; - renderCamera.orthographic = m_orthographicMode; + renderCamera.orthographic = OrthographicMode; renderCamera.clearFlags = m_backgroundColor.a < 1f ? CameraClearFlags.Depth : CameraClearFlags.Color; } - private static void ProjectBoundingBoxMinMax(Vector3 point) - { -#if DEBUG_BOUNDS + private static void ProjectBoundingBoxMinMax(Vector3 point) { + #if DEBUG_BOUNDS CreateDebugCube( point, Vector3.zero, new Vector3( 0.5f, 0.5f, 0.5f ) ); -#endif + #endif + + var localPoint = renderCamera.transform.InverseTransformPoint(point); - Vector3 localPoint = renderCamera.transform.InverseTransformPoint(point); - if (localPoint.x < minX) + if (localPoint.x < minX) { minX = localPoint.x; - if (localPoint.x > maxX) + } + + if (localPoint.x > maxX) { maxX = localPoint.x; - if (localPoint.y < minY) + } + + if (localPoint.y < minY) { minY = localPoint.y; - if (localPoint.y > maxY) + } + + if (localPoint.y > maxY) { maxY = localPoint.y; + } } - private static void CalculateMaxDistance(Vector3 point) - { -#if DEBUG_BOUNDS + private static void CalculateMaxDistance(Vector3 point) { + #if DEBUG_BOUNDS CreateDebugCube( point, Vector3.zero, new Vector3( 0.5f, 0.5f, 0.5f ) ); -#endif + #endif - Vector3 intersectionPoint = projectionPlaneHorizontal.ClosestPointOnPlane(point); + var intersectionPoint = projectionPlaneHorizontal.ClosestPointOnPlane(point); - float horizontalDistance = projectionPlaneHorizontal.GetDistanceToPoint(point); - float verticalDistance = projectionPlaneVertical.GetDistanceToPoint(point); + var horizontalDistance = projectionPlaneHorizontal.GetDistanceToPoint(point); + var verticalDistance = projectionPlaneVertical.GetDistanceToPoint(point); // Credit: https://docs.unity3d.com/Manual/FrustumSizeAtDistance.html - float halfFrustumHeight = Mathf.Max(verticalDistance, horizontalDistance / aspect); - float distance = halfFrustumHeight / Mathf.Tan(renderCamera.fieldOfView * 0.5f * Mathf.Deg2Rad); + var halfFrustumHeight = Mathf.Max(verticalDistance, horizontalDistance / aspect); + var distance = halfFrustumHeight / Mathf.Tan(renderCamera.fieldOfView * 0.5f * Mathf.Deg2Rad); + + var distanceToCenter = (intersectionPoint - m_previewDirection * distance - boundsCenter).sqrMagnitude; - float distanceToCenter = (intersectionPoint - m_previewDirection * distance - boundsCenter).sqrMagnitude; - if (distanceToCenter > maxDistance) + if (distanceToCenter > maxDistance) { maxDistance = distanceToCenter; + } } - private static bool IsStatic(Transform obj) - { - if (obj.gameObject.isStatic) + private static bool IsStatic(Transform obj) { + if (obj.gameObject.isStatic) { return true; + } - for (int i = 0; i < obj.childCount; i++) - { - if (IsStatic(obj.GetChild(i))) + for (var i = 0; i < obj.childCount; i++) { + if (IsStatic(obj.GetChild(i))) { return true; + } } return false; } - private static void SetLayerRecursively(Transform obj) - { + private static void SetLayerRecursively(Transform obj) { obj.gameObject.layer = PREVIEW_LAYER; - for (int i = 0; i < obj.childCount; i++) + + for (var i = 0; i < obj.childCount; i++) { SetLayerRecursively(obj.GetChild(i)); + } } - private static void GetLayerRecursively(Transform obj) - { + private static void GetLayerRecursively(Transform obj) { layersList.Add(obj.gameObject.layer); - for (int i = 0; i < obj.childCount; i++) + + for (var i = 0; i < obj.childCount; i++) { GetLayerRecursively(obj.GetChild(i)); + } } - private static void SetLayerRecursively(Transform obj, ref int index) - { + private static void SetLayerRecursively(Transform obj, ref int index) { obj.gameObject.layer = layersList[index++]; - for (int i = 0; i < obj.childCount; i++) + + for (var i = 0; i < obj.childCount; i++) { SetLayerRecursively(obj.GetChild(i), ref index); + } } #if DEBUG_BOUNDS diff --git a/Assets/Plugins/System.Security.Permissions.dll b/Assets/Plugins/System.Security.Permissions.dll new file mode 100644 index 00000000..86d0d493 Binary files /dev/null and b/Assets/Plugins/System.Security.Permissions.dll differ diff --git a/Assets/Plugins/System.Security.Permissions.dll.meta b/Assets/Plugins/System.Security.Permissions.dll.meta new file mode 100644 index 00000000..f0ef5f8c --- /dev/null +++ b/Assets/Plugins/System.Security.Permissions.dll.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: bc599444224381d4f8e51d380b7f890e +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Drop Shadow.mat b/Assets/Plugins/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Drop Shadow.mat index 5bc142c4..1923fe7b 100644 --- a/Assets/Plugins/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Drop Shadow.mat +++ b/Assets/Plugins/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Drop Shadow.mat @@ -9,7 +9,7 @@ Material: m_PrefabAsset: {fileID: 0} m_Name: LiberationSans SDF - Drop Shadow m_Shader: {fileID: 4800000, guid: fe393ace9b354375a9cb14cdbbc28be4, type: 3} - m_ShaderKeywords: OUTLINE_ON UNDERLAY_ON + m_ShaderKeywords: ETC1_EXTERNAL_ALPHA OUTLINE_ON UNDERLAY_ON m_LightmapFlags: 5 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 @@ -104,3 +104,4 @@ Material: - _ReflectOutlineColor: {r: 0, g: 0, b: 0, a: 1} - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} - _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5} + m_BuildTextureStacks: [] diff --git a/Assets/Plugins/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset b/Assets/Plugins/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset index 00e1a36f..48410af5 100644 --- a/Assets/Plugins/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset +++ b/Assets/Plugins/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset @@ -9,7 +9,7 @@ Material: m_PrefabAsset: {fileID: 0} m_Name: LiberationSans SDF Material m_Shader: {fileID: 4800000, guid: fe393ace9b354375a9cb14cdbbc28be4, type: 3} - m_ShaderKeywords: + m_ShaderKeywords: ETC1_EXTERNAL_ALPHA m_LightmapFlags: 1 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 @@ -106,9 +106,9 @@ Material: - _Parallax: 0.02 - _PerspectiveFilter: 0.875 - _Reflectivity: 10 - - _ScaleRatioA: 0.90909094 + - _ScaleRatioA: 0.9 - _ScaleRatioB: 0.73125 - - _ScaleRatioC: 0.7386364 + - _ScaleRatioC: 0.73125 - _ScaleX: 1 - _ScaleY: 1 - _ShaderFlags: 0 @@ -147,6 +147,7 @@ Material: - _ReflectOutlineColor: {r: 0, g: 0, b: 0, a: 1} - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} - _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5} + m_BuildTextureStacks: [] --- !u!114 &11400000 MonoBehaviour: m_ObjectHideFlags: 0 @@ -161,7 +162,7 @@ MonoBehaviour: m_EditorClassIdentifier: hashCode: -1699145518 material: {fileID: 2180264} - materialHashCode: -1183942120 + materialHashCode: 462855346 m_Version: 1.1.0 m_SourceFontFileGUID: e3265ab4bf004d28a9537516768c1c75 m_SourceFontFile_EditorRef: {fileID: 12800000, guid: e3265ab4bf004d28a9537516768c1c75, @@ -193,6 +194,8 @@ MonoBehaviour: m_AtlasTextures: - {fileID: 28268798066460806} m_AtlasTextureIndex: 0 + m_IsMultiAtlasTexturesEnabled: 0 + m_ClearDynamicDataOnBuild: 0 m_UsedGlyphRects: [] m_FreeGlyphRects: - m_X: 0 @@ -229,6 +232,9 @@ MonoBehaviour: m_glyphInfoList: [] m_KerningTable: kerningPairs: [] + m_FontFeatureTable: + m_GlyphPairAdjustmentRecords: [] + fallbackFontAssets: [] m_FallbackFontAssetTable: [] m_CreationSettings: sourceFontFileName: @@ -307,15 +313,20 @@ Texture2D: Hash: 00000000000000000000000000000000 m_ForcedFallbackFormat: 4 m_DownscaleFallback: 0 + m_IsAlphaChannelOptional: 0 serializedVersion: 2 - m_Width: 0 - m_Height: 0 - m_CompleteImageSize: 0 + m_Width: 512 + m_Height: 512 + m_CompleteImageSize: 262144 + m_MipsStripped: 0 m_TextureFormat: 1 m_MipCount: 1 m_IsReadable: 1 + m_IsPreProcessed: 0 + m_IgnoreMasterTextureLimit: 0 m_StreamingMipmaps: 0 m_StreamingMipmapsPriority: 0 + m_VTOnly: 0 m_AlphaIsTransparency: 0 m_ImageCount: 1 m_TextureDimension: 2 @@ -329,9 +340,11 @@ Texture2D: m_WrapW: 0 m_LightmapFormat: 0 m_ColorSpace: 0 - image data: 0 - _typelessdata: + m_PlatformBlob: + image data: 262144 + _typelessdata: 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004080a0b1313131313131311110e0b060100000000000000000004090e11121313131313131313070705010000000000000000000000060b0e1011131313131313130a0a080400000000000000000000000000020507080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0b090601000000000000000000000000000306131313131313131308070502000000000000000000000005080a0b13131313130e0d0b08030000000000000000000003060809131313131313131306030000000000000000000000000000000000000000000000000000000000000000000000030607090b0d0f1111121313121211100f0d0a0807050200000000000000000000000000000000000000000000000000000000000000000003080c0e0e131313131313130f0e0c09040000000000000000000000000000000000000000000000000000000000000003070b0d0e131313131313130e0e0c08030000000000000000000002070c0f11121313131313131313131313131313131313131313131313131313131313131313131313131308070502000000000000000000000004090e1112131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313130b0a08040000000000000000000000000000050c11141717202020202020201e1d1b17120c0400000000000000080f151a1d1f20202020202020201413110d080200000000000000040b11171a1d1e20202020202020171614100b0500000000000000000003090e12141519191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191816120d0700000000000000000000060c101220202020202020201514120e090200000000000000060c1114171820202020201b1a18140f0801000000000000040a0f131516202020202020202012100c0600000000000000000000000000000000000000000000000000000000000104060b10121315171a1c1d1e1f1f201f1f1e1d1b19171514120e0906030000000000000000000000000000000000000000000000000000000001090f14181a1b202020202020201c1b191510090200000000000000000000000000000000000000000000000000000001080e1317191a202020202020201b1a18140f090100000000000000060d13181c1e1f202020202020202020202020202020202020202020202020202020202020202020202020201514120e09030000000000000000080f151a1d1f20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020171714110c0500000000000000000000000810171c2123242d2d2d2d2d2d2d2b2a27231d160e06000000000009121920262a2c2c2d2d2d2d2d2d2d21201d19130c050000000000050e161d22272a2a2d2d2d2d2d2d2d2423201c17100800000000000000060d141a1e2122262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262525221e18110901000000000000030a11171c1f2d2d2d2d2d2d2d2d21201e1a140d0500000000000810171d2123242d2d2d2d2d272724201a130b0200000000070f151b1f22222d2d2d2d2d2d2d2d1f1c17110a030000000000000000000000000000000000000000000000000001070d1113171c1f20222426292a2b2b2c2c2c2b2b2a28262422211e1a1312100c0600000000000000000000000000000000000000000000000000030b131a202427282d2d2d2d2d2d2d292825211b140c0300000000000000000000000000000000000000000000000000020b12191f2326272d2d2d2d2d2d2d282724201a130b030000000000070f171e24282b2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d22211e1a140e0600000000000009121920262a2c2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2423211c17100800000000000000000008121a22282d3031393939393939393837332e2820180e0400000008121b242b31363839393939393939392e2d2a251e160e05000000040e1720272e3336373939393939393931302d28221a11080000000000060f181f262a2d2e3232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232312e29231b13090000000000030c151c23282c39393939393939392e2d2a251f170f0500000008121a22282d303139393939393433302b251d140b00000007101920272b2e2f39393939393939392c28231c150c030000000000000000000000000000000000000000000003090e13181d2023282b2d2f3133353737383939393837373533312e2d2a26201f1c17110d0802000000000000000000000000000000000000000000010b151d252b303435393939393939393534312c261e150c000000000000000000000000000000000000000000000000000b141d242b303334393939393939393534302b251d150b01000000060f1921292f343738393939393939393939393939393939393939393939393939393939393939393939393939392e2d2b261f180f060000000008121b242b3136383939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393931302d28221a12080000000000000005101a242c33393c3e4646464646464644433f39322a20160c0100040f19242d353d42454646464646464646463936302820160c0200000b16202932393f4344464646464646463d3c39332c231a1005000000030d18212931363a3b3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3e3a342d251b1107000000000a151e262e343846464646464646463b3a36302921170d020006101a242c34393d3e464646464641403c362f261d0d0300040f19222b32373b3c464646464646464638342e261e150a0000000000000000000000000000000000000000040a0f151a1d24292c2e34383a3c3e404244444546464545444342403d3b3a36312d2c28231c19130d08020000000000000000000000000000000000000009131d272f373c40414646464646464642413d3730271e0e050000000000000000000000000000000000000000000000030d1d262e363c3f414646464646464641403c372f271d13090000020d17212b333b404445464646464646464646464646464646464646464646464646464646464646464646464646463b3a37312a21180e030000040f19242d353d4245464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646463e3c39332c241a10050000000000000c17222c363e45494a53535353535353514f4b443c32281d1206000915202b353f474e5253535353535353535346413a32281e13080006111d27323b444a4f51535353535353534a49443e362c22170b00000009141f29333b4246484c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4a463f372d23180d01000006111c2630383f4453535353535353534846423b33291f1409000c17222c363e45494b53535353534e4c4841382f1f150b010a15202b343c4347495353535353535353443f3830261c1106000000000000000000000000000000000000070c151b20262b2f35393a3f4446484a4d4f5051525253525251504e4c4a4846423d3a38342e29251e19140d050000000000000000000000000000000000030f1a252f3941484d4e535353535353534f4d4942393020170d02000000000000000000000000000000000000000000010b151f2e3840474c4d535353535353534e4d4841392f251a0f030007131e29333d454c5052535353535353535353535353535353535353535353535353535353535353535353535353534846423c332a1f140900000915202b353f474e52535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353534a49453e362c22170c000000000004111c28333e48505557606060606060605e5c564e44392e23170b010e1a26313d4751595e5f606060606060605f524c443a3025190d010b17222e39444d555b5d60606060606060575550483e33281c100400020e1a26313b454d535559595959595959595959595959595959595959595959595959595959595959595959595959595959595959595959595959585651493f34291e120600000c17232e38424a505f606060606060605f524d453b30251a0e05111d28343e4850555760606060605a58534a4131271d12070f1b27323c464e5455606060606060605f504a42382e23170c00000000000000000000000000000000030b121820262b31373a4145474a50535557595c5d5e5e5f5f5f5e5e5d5b595755534d4946443f3835302a251e170e08020000000000000000000000000000000814202b37414b53595b606060606060605c59544b4232291f140900000000000000000000000000000000000000000007121d2731404a52585a606060606060605b59534b41372b201408000c18242f3b454f575d5f6060606060606060606060606060606060606060606060606060606060606060606060606055534d453c31261a0e02000e1a26313d4751595e5f606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060575550483e33281c1104000000000814212d3945505a61646c6c6c6c6c6c6c6b6760564b3f33271b0e04111d2a36424e59636a6c6c6c6c6c6c6c6c6c5e564c41362a1d11050e1a27333f4a555f676a6c6c6c6c6c6c6c64615a5044392d2014080005121e2a36424d575f616565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565625b51463a2e2216090003101c28343f4a545c6c6c6c6c6c6c6c6c6c5e574d42362a1e120814212d3945505a61646c6c6c6c6c67645c5343392f23180c131f2b37434e5860626c6c6c6c6c6c6c6c5c544a3f34281c10030000000000000000000000000000070c151d232831373c42474b5154545c60626466686a6a6b6c6c6c6b6a6a686664615f575653504a46413a3630292019130d0500000000000000000000000000000c1824303c48535d64686c6c6c6c6c6c6c68655d54443b3025190e0000000000000000000000000000000000000000000c18232f3943525c64676c6c6c6c6c6c6c68645d53483c3024180c000f1c2834404c5761686b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c5f574d42372b1e120500111d2a36424e59636a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c64615a5045392d211408000000000a1723303c4955616c71797979797979797772675c4f43372a1d1106121f2c3845525e6a75797979797979797976685e5246392d201307101d2a36434f5b67717779797979797979706c6155493c3023160a000714212d3a46535f696e72727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272726d62564a3e3125180b0006121f2c3844505c66767979797979797976695e52463a2d20140a1723303d4955616c717979797979746e64554b4034291c1015222e3b4754606a767979797979797976665c5044382c1f1206000000000000000000000000000810191e272e343c43474d53555d6064666d6f7173757777787979787877767573706e696763605c54524c46413b322a251e170e06000000000000000000000000000e1a2734404d59646f7479797979797979756f65564d42362a1c11060000000000000000000000000000000000000004101c2934404b55646e7479797979797979746f64594d4034271a0e00111e2b3744505d6873787979797979797979797979797979797979797979797979797979797979797979797979797976695f53463a2d21140700121f2c3845525e6a7579797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979716c6155493c3023170a000000000b1724313e4a5764717e8686868686868684776b5e5144382b1e110613202c3946535f6c7987868686868686867a6d6154473a2e211407111e2a3744515d6a7783868686868686867e7064574a3d3124170a000815222e3b4855616e7b7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7265584c3f3225190c000713202d3a4653606d78868686868686867b6e6154483b2e2115121e2a36424d5764717e86868686868074675c5145382c1f1416222f3c4955626f7c86868686868686786d6053463a2d20130700000000000000000000000009111a222a303940454e53575f62676d7175797b7d8082838485858685858483817f7d7b7874706d66615e56524c443e36302920180f070000000000000000000000000e1b2835414e5b687481868686868686868175695e5246382d22170b0000000000000000000000000000000000000006131f2c3845515c677480868686868686868174685b4e4135281b0e00121f2c3845525f6b7885868686868686868686868686868686868686868686868686868686868686868686868686867b6e6155483b2e2215080013202c3946535f6c79878686868686868686868686868686868686868686868686868686868686868686868686868686868686868686867e7164574a3e3124170b000000000b1724313e4a5764717d8a93939393939184776b5e5144382b1e110613202c3946535f6c7986929393939393877a6d6154473a2e211407111e2a3744515d6a77849093939393938a7d7064574a3d3124170a000a1724303d4a5763707d8a8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c86796c5f5346392c2013000713202d3a4653606d79869393939393877b6e6154483b2e211514212d3a46535e6976828f9393939285796d6053473b30251a16222f3c4955626f7c88939393939386796d6053463a2d201307000000000000000000000009121b232c343c424b51585f62696e747a7d8185888a8c8f9091919292929191908e8c8a8884807d79736d68615e565046413a322a2119100700000000000000000000000916232f3c4956626f7c89959393939392867b6e61544a3f33281c0f030000000000000000000000000000000000000714202d3a4753606d7985929393939395897c6f6356493c3023160900121f2c3845525f6b7885929393939393939393939393939393939393939393939393939393939393939393939393887b6e6155483b2e2215080013202c3946535f6c798692939393939393939393939393939393939393939393939393939393939393939393939393939393939393938a7e7164574a3e3124170b000000000b1724313e4a5764717d8a979f9f9f9e9184776b5e5144382b1e110613202c3946535f6c7986929f9f9f9f94877a6d6154473a2e211407111e2a3744515d6a7784909d9f9f9f978a7d7064574a3d3124170a000a1724303d4a5763707d8a96989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989286796c5f5346392c2013000713202d3a4653606d7986939f9f9f94877b6e6154483b2e21151b27333f4953616e7b87939f9fa2978a7e7164574d42362a1e16222f3c4955626f7c88959f9f9f9386796d6053463a2d2013070000000000000000000009121b242d353e464e545c606a6f757b81868a8e929797999b9d9d9e9f9f9f9e9d9d9b999796918d8985807a746e68615a524c443c332b22191007000000000000000000000915222e3b4854606a7783909daa9fa3998c7f73665b5044382b1f1409000000000000000000000000000000000006121f2b37434e5864717e8a97a29f9f9d9083776b6054483b2f22150900121f2c3845525f6b7885929e9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f94887b6e6155483b2e2215080013202c3946535f6c7986929f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f978a7d7164574a3e3124170b000000000b1724313e4a5764717d8a97a4acaa9e9184776b5e5144382b1e110613202c3946535f6c7986929facaca094877a6d6154473a2e211407111e2a3744515d6a7784909daaaca3978a7d7064574a3d3124170a000a1724303d4a5763707d8a969f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9286796c5f5346392c2013000713202d3a4653606d798693a0aca194877b6e6154483b2e21151f2b3744505b65737f8c99a4afa99c8f8276695e52463a2d2016222f3c4955626f7c8895a2aca09386796d6053463a2d20130700000000000000000007101b242d363e474f585f666d737c82878e92989b9ea2a9a6a8aaa8a7a6a6a6a7a8a9a8a6a8a19e9a97928c86807a716c615e564d453c342b22190e0500000000000000000007131f2c38434e5865727e8b98a2aeab9e9184786c6053463b30251a0e00000000000000000000000000000000000814212e3a47535f6a7683909ca9aea2988b7f7265594f43382c1f130700121f2c3845525f6b7885929eabacacaea9a7a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a194887b6e6155483b2e2215080013202c3946535f6c7986929facacacaea9a7a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a4978a7d7164574a3e3124170b000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e110613202c3946535f6c7986929facada094877a6d6154473a2e211407111e2a3744515d6a7784909daab0a3978a7d7064574a3d3124170a000a1724303d4a5763707d8a93939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939286796c5f5346392c2013000713202d3a4653606d798693a0aca194877b6e6154483b2e2115202d394653606c7884919eabb5ac9f93877b6e6154473d32271b222f3c4955626f7c8895a2aca09386796d6053463a2d2013070000000000000000050e19222d363e485059616a6f7980878f93999fa3aaabaaaaa29f9d9b9a9a999a9a9b9d9fa2aaa9aba9a19e98928d857e756d685f574e463c342a20170c030000000000000000030f1b27323d4754606d7a85929facaca1968a7d7063574d42362a1c110600000000000000000000000000000004101c2934404b55626e7b88949fabac9f92867a6d6054473d32271b0f0300121f2c3845525f6b7885929eabb8aea49d9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a94887b6e6155483b2e2215080013202c3946535f6c7986929facb9aea49d9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a978a7d7164574a3e3124170b000000000b1724313e4a5764717d8a97a4acaa9e9184776b5e5144382b1e110613202c3946535f6c7986929facaca094877a6d6154473a2e211407111e2a3744515d6a7784909daaaca3978a7d7064574a3d3124170a000a1724303d4a5763707d8686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686796c5f5346392c2013000713202d3a4653606d798693a0aca194877b6e6154483b2e211d2935414c5563707d8996a0acacafa4998c7f7266584e43382c1d222f3c4955626f7c8895a2aca09386796d6053463a2d20130700000000000000020d17202b343e48505a616b707c838c92999fa4abaca7a09d999892908f8d8d8d8d8d8f909298989c9fa4abaaa29f97928a827a6e6960584e463c32291e150b0000000000000000000a16202c3945515d6774818e9aa7b1a89b8f8275695e5246382e23170b00000000000000000000000000000006131f2c3845515c6774808d9aa6b0a79b8e8174685d5245392b21160a0000121f2c3845525f6b7885929eabb8a99d928d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d887b6e6155483b2e2215080013202c3946535f6c7986929facb9a99d928d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8a7e7164574a3e3124170b000000000b1724313e4a5764717d8a979f9f9f9e9184776b5e5144382b1e110613202c3946535f6c7986929f9f9f9f94877a6d6154473a2e211407111e2a3744515d6a7784909d9f9f9f978a7d7064574a3d3124170a000916232f3c4855616b707979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979746a5e5145382b1f12000713202d3a4653606d798693a0aca194877b6e6154483b2e21202c3945515d6775818e9ba8a39fa3ab9d9184776a605448392f24222f3c4955626f7c8895a2aca09386796d6053463a2d2013070000000000000009141f29323d46505a626c717d8690959fa3ababa49f9b95908c898584828180808081828385888b8f93999fa2aaa9a19e938f847b6f6a60584e443b30271d1207000000000000000004111d2935414b55626f7c88959fabac9f92877b6e61544a3f34281c100300000000000000000000000000000714202d3a4753606d7985929eabaca095897c6f63564c413529190f040000121f2c3845525f6b7885929eabb4a79a8d8080808080808080808080808080808080808080808080808080808080807a6d6154473a2e2114070013202c3946535f6c7986929facb3a79a8d80808080808080808080808080808080808080808080808080808080808080808080808080807c6f6255483c2f221509000000000b1724313e4a5764717d8a93939393939184776b5e5144382b1e110613202c3946535f6c7986929393939393877a6d6154473a2e211407111e2a3744515d6a77849093939393938a7d7064574a3d3124170a000714202c38444f5961636c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6a62584d4135291d10000713202d3a4653606d798693a0aca194877b6e6154483b2e21212d3a4754606d7a86929fa3999299a3a096897c6f62554b403529222f3c4955626f7c8895a2aca09386796d6053463a2d201307000000000000030d1925303b444e58626c717e879298a0a7afa79f99938e88837f7c79777574737373747577797c7f83878d92989ea5ada59e9691857c6f6a5f564c42392e23180c0300000000000000010d18242f3a47535f6a7683909da9afa3998c7f73665c5044382b1f14090a0a0a0a0a0a0a0a0a0a0a0a0a0a121f2b37434e5864717e8b97a2adaa9d9083776b6054443a2f241907000000121f2c3845525f6b7885929eabada194877a73737373737373737373737373737373737373737373737373737373736d685e5246392d2013070013202c3946535f6c7986929facada0938679737373737373737373737373737373737373737373737373737373737373737373737373736f6a5f53473a2e211508000000000b1724313e4a5764717e8686868686868684776b5e5144382b1e110613202c3946535f6c7987868686868686867a6d6154473a2e211407111e2a3744515d6a7783868686868686867e7064574a3d3124170a0004101c28333e474f5557606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060605f5e5850473c3125190d000713202d3a4653606d798693a0aca194877b6e6154483b2e212b37434e5865717e8b98a29f9286929fa89a8e8174675d5145382c222f3c4955626f7c8895a2aca09386796d6053463a2d2013070000000000010b151f2a36424d56606a717e889299a2aaafa49c959087817c77726f6d6668676766676768666c6f72767b80868e939fa3aaa8a09792867c6f685e544b403428201509000000000000000007131d2b37434e5864717e8b97a2adab9e9184786d6053463b31251a16161616161616161616161616161616212e3a47535f6a7683909ca9aea2988b7f7265594f4332281e1308000000121f2c3845525f6b7885929eabada194877a6e67676767676767676767676767676767676767676767676767676767615e564c4135291d11050013202c3946535f6c7986929facada093867a6d676767676767676767676767676767676767676767676767676767676767676767676767625f584e43372b1f1206000000000a1723303c4955616c71797979797979797772675c4f43372a1d1106121f2c3845525e6a75797979797979797976685e5246392d201307101d2a36434f5b67717779797979797979706c6155493c3023160a00000b16212c353e44484a5353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353514d473e352a1f1409000713202d3a4653606d798693a0aca194877b6e6154483b2e212e3a47535f6a7683909daa9b8e828e97a19f9285796d6053473b30252f3c4955626f7c8895a2aca09386796d6053463a2d201307000000000007121d27313946525e696f7c86929aa3ababa39f928d837c756f6a6662605c545a5a5a5a5a545b606265696e747b818a9298a2a9a9a19891847a6e665c51453c31261a0e0500000000000000010f1b26323c4753606d7985929fabada1968a7d7063574d42362a23232323232323232323232323232323232934404b55626e7b88949fabac9f92867a6d6054473d3221160c01000000121f2c3845525f6b7885929eabada194877a6e615a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a54524c443a3025190d010013202c3946535f6c7986929facada093867a6d605a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a55534e463c31261b0f03000000000814212d3945505a61646c6c6c6c6c6c6c6b6760564b3f33271b0e04111d2a36424e59636a6c6c6c6c6c6c6c6c6c5e564c41362a1d11050e1a27333f4a555f676a6c6c6c6c6c6c6c64615a5044392d201408000005101a232c33383c3d464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464645413c352c23190e03000713202d3a4653606d798693a0aca194877b6e6154483b2e28343f4a54626e7b88959fa398897d85919ea2988a7e7164574d42362a2f3c4955626f7c8895a2aca09386796d6053463a2d20130700000000000c18232f3943505a616e7b859198a3acaca399928b80786f6a625f585653504a4e4d4d4d4e4a505355575e61696e757e869297a2aaaaa1969082786d60574e42372b21170b00000000000000000a151f2c3845515d6774808d9aa6b0a89c8f8275695e5346382e3030303030303030303030303030303030303845515c6774808d9aa6b0a79b8e8174685d5245392c20130400000000121f2c3845525f6b7885929eabada194877a6e61544d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4746413a32281e1308000013202c3946535f6c7986929facada093867a6d60534d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4847433c342a20150a000000000004111c28333e48505557606060606060605e5c564e44392e23170b010e1a26313d4751595e5f606060606060605f524c443a3025190d010b17222e39444d555b5d60606060606060575550483e33281c100400000008111a21282c2f3039393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393835312a231a110700000713202d3a4653606d798693a0aca194877b6e6154483b2e2c3844505c6673808d9aa79f928679818e9baa9c8f8276695e52463a2d2f3c4955626f7c8895a2aca09386796d6053463a2d2013070000000004101c2934404b55616c76828f97a1aaafa49a92877e736d665f58534e4946443f41404040413f4446484d53565e616c717c859298a2aca89f948d80736a5f53473e33281c10040000000000000004101d2935404b55626e7b88949fabac9f93877b6e61544a3f3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d4753606d7985929eabaca095897c6f63564c4135291d110400000000121f2c3845525f6b7885929eabada194877a6e615447404040404040404040404040404040404040404040404040403a3935302820160c02000013202c3946535f6c7986929facada093867a6d6053474040404040404040404040404040404040404040404040404040404040404040403c3a37312a22180e040000000000000c17222c363e45494a53535353535353514f4b443c32281d1206000915202b353f474e5253535353535353535346413a32281e13080006111d27323b444a4f51535353535353534a49443e362c22170b00000000000810161c2023242d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2b29251f1911080000000713202d3a4653606d798693a0aca194877b6e6154483b2e2d3a4653606d7985919ea99c8f82767e8a99a39f93877b6e6154483d322f3c4955626f7c8895a2aca09386796d6053463a2d2013070000000006131f2c3845515c67707d8a949fa9b0a69f93887e716c605c544e47433c3a38342e3433342d3338393c42464d525a616a6f7c86929aa4afa69f92877b6e62594f44392d20150a00000000000000000c18242f3947535f6a7683909ca9afa4998c8073665c504949494949494949494949494949494949494949494e5864717e8b97a2adaa9d9083776b6054443a2f24190d0100000000121f2c3845525f6b7885929eabada194877a6e6154473b3434343434343434343434343434343434343434343434342e2d29251e160e0400000013202c3946535f6c7986929facada093867a6d6053473a34343434343434343434343434343434343434343434343434343434343434342f2e2b26201810060000000000000005101a242c33393c3e4646464646464644433f39322a20160c0100040f19242d353d42454646464646464646463936302820160c0200000b16202932393f4344464646464646463d3c39332c231a1005000000000000050b1014161720202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201f1d19140e07000000000713202d3a4653606d798693a0aca194877b6e6154483b2e36414c5664707d8a97a1a8988c7f727a86929fa4998c7f7366594f43382f3c4955626f7c8895a2aca09386796d6053463a2d20130700000003101c28343f4a54606d7984919ea6b0aa9e948c7f736c625a504a423c37322d2c282327272722282b2d31363b42465058606a707e88939fa8aea3998f82766c6155493c31261b0f000000000000000007121d2b37434e5864717e8a97a1adab9e9184796d6056565656565656565656565656565656565656565656565f6a7683909ca9aea2988b7f7265594f4332281e13080000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e272727272727272727272727272727272727272727272721201d19130c040000000013202c3946535f6c7986929facada093867a6d6053473a2d2727272727272727272727272727272727272727272727272727272727272722211f1b150e0600000000000000000008121a22282d3031393939393939393837332e2820180e0400000008121b242b31363839393939393939392e2d2a251e160e05000000040e1720272e3336373939393939393931302d28221a11080000000000000000000407090a131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131312100d090300000000000713202d3a4653606d798693a0aca194877b6e6154483b2e3946525e6875828f9ba9a196887b6f76828f9cab9e9184776b605448392f3c4955626f7c8895a2aca09386796d6053463a2d20130700000006121f2b3844505c66727f8c96a0acaea2988f82776c605a50443f38302b26201f1c171a1a1a171c1f20252a30363e464e58616c73808d96a1acab9f948a7d7064584e43372b1d120700000000000000010f1a26313c4653606d7985929eacada1968a7d70646363636363636363636363636363636363636363636363636e7b88949fabac9f92867a6d6054473d3221160c010000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e211a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1413110d0802000000000013202c3946535f6c7986929facada093867a6d6053473a2d201a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1515120f0a0400000000000000000000000810171c2123242d2d2d2d2d2d2d2b2a27231d160e06000000000009121920262a2c2c2d2d2d2d2d2d2d21201d19130c050000000000050e161d22272a2a2d2d2d2d2d2d2d2423201c17100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0aca194877b6e6154483b2e3a4754616d7a86929fab9e9184786a727f8b99a4a096897c6f63554b40353c4955626f7c8895a2aca09386796d6053463a2d2013070000000713202d3a4653606d7884919ea8b2a99f92867b6e655b50483e342e261e1b1312100c060d060b0f12131a1f252a343d46505a606d7984919ea8b0a69c8f83766a5f5347392e23180c000000000000000009151f2c3845515c6673808d9aa4afa99c8f82757070707070707070707070707070707070707070707070707074808d9aa6b0a79b8e8174685d5245392c201304000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e21140d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d070705010000000000000013202c3946535f6c7986929facada093867a6d6053473a2d20140d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d090806030000000000000000000000000000050c11141717202020202020201e1d1b17120c0400000000000000080f151a1d1f20202020202020201413110d080200000000000000040b11171a1d1e20202020202020171614100b05000000000000000000000000040613131313131313131312110e090400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0aca194877b6e6154483b37434e5865727f8c99a3a99a8d8074676e7b87939fa89a8e8174675d5145393c4955626f7c8895a2aca09386796d6053463a2d201307000005111e2a36414c5664707d8a96a1adada1978c7f72695e53493f3628231c140c0a060300000000000306090e1419222b343e45515d67717e8a96a0acab9f94887c6f62544b4034281c10040000000000000004101c2834404b54616e7b87939facac9f93877d7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7d85929fabaca095897c6f63564c4135291d1104000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080101010101010101010101010101010101010101000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d20140701010101010101010101010101010101010101010101010101010101000000000000000000000000000000000000000004080a0b1313131313131311110e0b060100000000000000000004090e11121313131313131313070705010000000000000000000000060b0e1011131313131313130a0a0804000000000000000000000001070c10132020202020202020201f1d1a150f08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0aca194877b6e6154483b3b4754606a7784909daba197897c70636876838f9caa9f9285796d6053473b3c4955626f7c8895a2aca09386796d6053463a2d20130700000714202d3946525e6876828f9ca8b2ab9e9185796d60574d41382d2417110a02000000000000000000000002091019222935404b55606c7884919dabb0a69a8e8174665c5145382c1f130600000000000000000c18232e3946535f6976828f9ca9afa499938a89898989898989898989898989898989898989898989898989899297a2adaa9d9084776b6054443a2f24190d01000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181c1f2d2d2d2d2d2d2d2d2c2c2a26201912090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0aca194877b6e6154483b404b55626f7c8995a0ab9e9184796d6064717e8b98a2a2988a7e7164574d423c4955626f7c8895a2aca09386796d6053463a2d20130700000814212e3b4754616e7a87939facafa3998c7f72675d51453b2f261b1206000000000000000000000000000000071018242f3944505b66727e8b99a3aeac9f9285796d6053463a2d201308000000000000000007121d2a36424d5764707d8a96a1adaba49f9796969696969696969696969696969696969696969696969696969fa2a9aea2988b7f7265594f4332281e130800000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d20140c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c07060401000000000000000000000000000000000000000000000000000000000000000000000000020507080a0d0e10111212131313131211100f0d0b090706040000000000000000000000000000000000000000000000000000000000000000000000000000030d151d23292c3939393939393939393836312b241b120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0aca194877b6e6154483b45515d6774818d9aa7a6998d8073665c606d7a85929faa9c8f8276695e53463c4955626f7c8895a2aca09386796d6053463a2d20130700030f1b27333f495364717e8b9aa4afac9f92867a6e61554b4033291d140a000000000000000000000000000000000007121d28333f4a54616d7a86929facaea298897d706356493d2f24190d0100000000000000000e1a26313b4653606d7984919eabb5afaca3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3abadb3ac9f92867a6d6054473d3221160c0100000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d2019191919191919191919191919191919191919191919191919191413110d0701000000000000000000000000000000000000000000000000000000000000000406090e12141517191b1d1e1f1f2020201f1f1e1d1c1a18161312100c070502000000000000000000000000000000000000000000000000000000000000000000010b151f272f343846464646464646464645423d352d24190f04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0aca194877b6e6154483b4753606d7985929fab9f94887b6e62545d6774818e9ba89f93877b6e6154483d4955626f7c8895a2aca09386796d6053463a2d2013070005121f2b3744505b6575818e9bacb6a99c8f8276685e5243392f21170b020000000000000000000000000000000000010b17222d3846525d6875828f9ca8b4aa9a8d807367564c4135291d1104000000000000000009141f2c3844505c6673808c99a3afbbb9b1acaa9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa7a9afb8bab1a79b8e8174685d5245392c2013040000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d26262626262626262626262626262626262626262626262626262621201d18130c0400000000000000000000000000000000000000000000000000000001070c1013141a1e2121242628292a2b2c2c2d2c2c2c2b2a29272522201f1c1814120e09030000000000000000000000000000000000000000000000000000000000000007121d2731394045535353535353535353524e473f352b201509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0aca194877b6e615448424d5764717e8a97a2aa9c908376695f535563707d8996a1a49a8c7f7366594f444955626f7c8895a2aca09386796d6053463a2d201307000613202d394653606c7885929eabb3a9988b7f7265564c4131271d0f050000000000000000000000000000000000000006111c2935414c5665727f8b98aab4aa9d918477685d5245392c201306000000000000000003101c28343f4a54616e7b87929facb9b1a7a0939393939393939393939393939393939393939393939b9ea5afb8aca095897c6f63564c4135291d11040000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a333333333333333333333333333333333333333333333333333333332d2c29241d160d0400000000000000000000000000000000000000000000000003090e12181d1f20252a2d2e31333536373839393939393838373534322f2d2c2823211e1a140f0b0600000000000000000000000000000000000000000000000000000000000c18232f39434b515f606060606060605f5e5951473d31261a0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0aca194877b6e61544846535e6976828f9ca9a2988b7e7165574d53606c7884919eac9e9184776b6054484955626f7c8895a2aca09386796d6053463a2d201307000815222e3b4855616e7b8897a1adada197887b6e6255483b3022150b0000000000000000000000000000000000000000000d1924303c4855626f7b8898a2aeaca095877a6d6054473a2d2114070000000000000000000c17232e3846525e6975828f9ca8b2aca095898686868686868686868686868686868686868686868e939ea9b4aa9d9084776b6054443a2f24190d010000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6053473f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3a39352f281f160c0100000000000000000000000000000000000000000002080e151a1d24292c2d31363a3b3d4041434445454646464645444342403e3c3a38342e2d2a261f1b17110a02000000000000000000000000000000000000000000000000000004101c2934404b555c6c6c6c6c6c6c6c6c6c6a63594e42362a1d11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0aca194877b6e6154484953616e7b87939fac9f92867a6d605447505b6573808c99a6a096897c6f63554b4955626f7c8895a2aca09386796d6053463a2d201307000a1724303d4a5763707d8a96a9b3ab9e928578695f53473a2e2114030000000000000000000000000000000000000000000813202d394653606c7985929facb1a795897c6f6256493c2f23160900000000000000000006111c2a36424d5763707d8a96a1acaa9d9083797979797979797979797979797979797979797979818e9ba7aea2988b7f7265594f4332281e1308000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d60534c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4745413a31281d13070000000000000000000000000000000000000000050d14191f262b2f35383a3e4246484a4c4e50515252535353525251504f4d4b494644403b3a36312b27221b140b070100000000000000000000000000000000000000000000000006131f2c3845515c67767979797979797979756a5e5245382c1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0aca194877b6e615448505b6573808c9aa4a89b8e8174675d51454953616e7b88949fa89a8e8174675d514955626f7c8895a2aca09386796d6053463a2d201307000c1926323f4c5965727f8c98a5b2a99c8f837669574d42372b1e120600000000000000000000000000000000000000000006121f2b3844505b667783909daab1a4978b7e7164584b3e3125180b000000000000000000000e1a25303b4653606c7884919eabaca095897c6f6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6d7a86929facac9f92867a6d6054473d3221160c01000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d605959595959595959595959595959595959595959595959595959595959595954514b433a2f24180d01000000000000000000000000000000000000060e171e252a3137394045474a4d535457595b5c5d5e5f5f605f5f5f5e5d5c5a585553514a4846423b37332d261d18120c0400000000000000000000000000000000000000000000000714202d3a4753606d798686868686868687796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0aca194877b6e61544853606c7884919eaca096897c7063554b4146535f697683909caa9f92857a6d60534955626f7c8895a2aca09386796d6053463a2d201307000e1b2834414e5b6774818e9aa7b3a79a8d8074675a4d4131261a0e02000000000000000000000000000000000000000000030f1c28333f4a546875818e9ba8b3a6998d8073665a4d4033271a0d0000000000000000000009141f2b3844505b66727f8c99a3aea79a8d8174675c606060606060606060606060605765717e8b98a2aea79b8e8174685d5245392c20130400000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6666666666666666666666666666666666666666666666666666666666666666605d554b4135291d110400000000000000000000000000000000020a1117202930363c42474b515357575e61646668696a6b6c6c6c6c6c6b6b6a68676562605c5455534d46443f382f29241d160d05000000000000000000000000000000000000000000000714202d3a4753606d7a8693939393939286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0aca194877b6e61544c5663707d8996a1ab9e9184786c6053463a424d5765717e8b98a2a2988b7e7164574d55626f7c8895a2aca09386796d6053463a2d20130700101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190900000000000000000000000000000000000000000000000b17222d404d5a6773808d9aa6b3a89b8e8175685b4f4235281c0f00000000000000000000030f1c28333f4a54616e7a86929facab9f9285796d60535353535353535353535353535f697683909caaaca095897c6f63564c4135291d110400000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada09386797272727272727272727272727272727272727272727272727272727272727272726d675d5145392c201306000000000000000000000000000000020b141c2228323b41464d53555d606468696e70737476777878797979797877767573716f6d6665615f57535049413d352f281f170f060000000000000000000000000000000000000000000714202d3a4753606d7a86939f9f9f9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0aca194877b6e6154525d6875818e9ba8a4998c7f73655b5044373b4754606d7a86929faa9c8f8276695e5355626f7c8895a2aca09386796d6053463a2d20130700101d2a3643505d697683909ca9b1a4978a7e7164574b3e3124180b0000000000000000000000000000000000000000000000061926323f4c5965727f8c98a5b2a89c8f8275695c4f4236291c0f00000000000000000000000b17222d3846525e6875828e9ba8ada2978a7e7164574d42464646464646463f4a54626e7b88949fabaa9d9084776b6054443a2f24190d0100000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb2a6998c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f796d6054473a2d2114070000000000000000000000000000020b141d262d333e444c52575f62676d7174787b7d7f81838485858686868585848382807e7c7976726e6964605b534f454039312921170f0600000000000000000000000000000000000000000714202d3a4753606d7a8693a0acac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0aca194877b6e615454606d7a86929fac9f93877b6e6153493f333945515d6775818e9ba89f93877b6e615355626f7c8895a2aca09386796d6053463a2d20130700111e2a3744515d6a7783909daab0a3968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1a99c908376695d5043362a1d10000000000000000000000006111c2a36414c5663707d8996a0aca99c8f8276695e5246382d393939393844505c6673808d99a6aea2988b7f7265594f4332281e13080000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9a89c918c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c877b6e6154483b2e21150800000000000000000000000000000a141d262f383f4450565e61696e74797d8184878a8c8e8f909192929392929291908f8d8b8886837f7b76706c656059514b433b332921170d04000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0aca194877b6e61545865727e8b98a3a99c8f8276695e5341382d35414b5563707d8996a1a49a8c7f73655b55626f7c8895a2aca09386796d6053463a2d20130700111e2b3844515e6b7784919eaaafa396897c706356493d3023160a00000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1aa9d9083776a5d5044372a1d110000000000000000000000000d1925303b4854606b7784919daaac9f93877b6e6153493f33272d2d2d3a4653606d7984919eabac9f92867a6d6054473d3221160c010000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9ada39c999999999999999999999999999999999999999999999999999999999999999994877b6e6154483b2e2115080000000000000000000000000006111b262f38424a505a61686e747b81858a8e919697999b9c9d9e9f9f9f9f9f9e9e9d9b9a9898928f8c87827d78706b605d554d453b33291f160c010000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0aca194877b6e61545f6a7683909daaa2978a7e7164574d422f262f3a4653606c7884919eac9e9184786c6055626f7c8895a2aca09386796d6053463a2d20130700121f2b3845525e6b7885919eabafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000a1724313d4a5764707d8a97a3b0aa9e9184776b5e5144382b1e1100000000000000000000000008141e2c38444f5965727f8c98a3aea4998c7f73655b5044372b1f2a36414c5663707d8a97a1ada79b8e8174685d5245392c201304000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9b5ada8a6a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a194877b6e6154483b2e211508000000000000000000000000040d17222d38414a545b606c717a81878d92989b9ea1a8a6a7a8a7a5a4a3a3a3a3a4a5a6a8a6aaa39f9c9a938f8a837d746d675e574d453b31281d13070000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0aca194877b6e6154626f7c88959fab9f9285796d6053473b31202b3844505b6673808d99a7a096897c706355626f7c8895a2aca09386796d6053463a2d20130700121f2b3845525e6b7884919eabafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9d9184776a5e5144372b1e1100000000000000000000000002101c27333d4754616d7a86929facab9e9184786c6053463a2f242d3946525e6875828f9ba9aca095897c6f63564c4135291d1104000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9afa7a2a09f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f94877b6e6154483b2e2115080000000000000000000000010c161f27333f49535b666c747e858e92999fa2aaaba9a8a19e9c9a9897979696979798999c9e9fa4acaca49f9c95908981796e695f574d433a2f24180d0400000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0aca194877b6e615c6673808d9aa7a79a8d8174675c5145382c1f28333f4a54626e7b88959fa89b8e8174675d626f7c8895a2aca09386796d6053463a2d20130700111e2b3844515e6b7784919eaab0a396897d7063564a3d3023170a00000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1a99d9083766a5d5043372a1d10000000000000000000000000000b16202d3946525d6875818e9ba7aca096897c7063554b4135292e3a4754616d7a86929facaa9d9084776b6054443a2f24190d01000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9a79d95939393939393939393939393939393939393939393939393939393939393939393877b6e6154483b2e211508000000000000000000000007131d28313a44505b656c78808a92979fa3abaaa69f9c9896918f8d8b8a8a89898a8a8b8d8f91939a9c9fa4aca7a09d938e837b6e695f554b41352921160a00000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0aca194877b6e61606d7985929eaba095897c6f62554b4034291c222d3847535f697683909daa9f92857a6d60626f7c8895a2aca09386796d6053463a2d20130700111e2a3744515d6a7784909daab0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1a99c8f8276695c504336291d100000000000000000000000000005111d2935414c56636f7c8995a0aca89b8e8174675d5145392c37434e5865727f8b99a3aea2988b7f7265594f4332281e130800000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9a2958b868686868686868686868686868686868686868686868686868686868686868686867b6e6154483b2e21150800000000000000000000010d18242f3a434f59606c77818d929fa2a9ada59e9b948f8b888482807f7e7d7d7d7d7e7e808284878b8f939a9ea6aca59d9590847b6e675d51453d32271b0f03000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0aca194877b6e6164707d8a97a1ab9d9083776a605443392f23181c2b37424d5765727e8b98a3a2988b7e7164626f7c8895a2aca09386796d6053463a2d20130700101d2a3643505d697683909ca9b1a5988b7e7265584b3f3225180700000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3a89b8f8275685c4f4235291c0f00000000000000000000000000010d1924303a4854606b7783909daaac9f92857a6d6054473c313b4754606a7783909dabac9f92867a6d6054473d3221160c0100000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867979797979797979797979797979797979797979797979797979797979797979797976695e52463a2d2014070000000000000000000004111d2935414b55616b73808d939da4ada9a29f938e88827e7b78757472717070707071727375777b7e82878f939fa2aaa7a0969183796d60594f43382c1f1409000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0aca194877b6e616875828f9ca9a3998c7f7265584e4331271d121a26313c4754606d7a86929faa9c8f837669626f7c8895a2aca09386796d6053463a2d201307000f1c2835424f5b6875818e9ba8b3a6998c807366594d402f23180c00000000000000000000000000000000000000000000010e1b2834414e5b6774818e9aa7b4a79a8e8174675b4e4134281b0e000000000000000000000000000008131e2c38434f5965727f8b98a2aea2988b7e7165574d4237404b55626f7c8895a0aca79b8e8174685d5245392c2013040000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c5e574d42362a1e1205000000000000000000000613202c3945515d67707d8a929ca5aea9a197928a817c76726e69696765646463636464656669696e72767c828a9298a2aaa8a0958e81746b6054483c31261a0e020000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0aca194877b6e616e7a86929fac9f92867a6d6154473d3221150b15202c3945525d6875818e9ba99f93877b6e626f7c8895a2aca09386796d6053463a2d201307000d1a2734404d5a6773808d9aa6b3a89b8e817568554b4034291c100400000000000000000000000000000000000000000005121e2a36424d576976838f9ca9b2a5988c7f7265594c3f3226190c0000000000000000000000000000020f1b27323d4754606d7a86929facaa9c908376695f53473845515c6774808d9aa7aca095897c6f63564c4135291d11040000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d60606060606060606060606060606060606060606060606060606060606060605f524d453b30251a0e0200000000000000000004101d2935404b55606d7984919ea4aeaaa19791857e756f6a65615f575a58575756565757585a565e61656a6f757e869298a2aea89e93897c6f63574d42372b1e12050000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0aca194877b6e66727f8c99a3a99b8f8275685e5246392d201304111d2935414c5663707d8a97a1a49a8c8073656f7c8895a2aca09386796d6053463a2d201307000c1925323f4c5865727f8b98abb5aa9d908477675c5145382c1f13060000000000000000000000000000000000000000000714212d3a46535f697885929fabb4aa968a7d7063574a3d3024170a0000000000000000000000000000000a16202c3945515d6774818e9aa7ab9f94887b6e62544a3f4653606d7985929fabaa9d9084776b6054443a3024190d010000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d60535353535353535353535353535353535353535353535353535353535353534846423b33291f14090000000000000000000006131f2c3945515d67737f8c96a1adaea29891857b716c625f5855534d4d4c4b4a4a4a4a4b4b4d4d5254585f626c707c86929fa7afa59c8f8276695f53463a2d2114070000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0aca194877b6e6a7784919daba1978a7d7064564c41362a1e11050d19242f3a4653606d7984919eac9e9184786c6f7c8895a2aca09386796d6053463a2d20130700091623303c4956636f7c8999a4afac9f9286796d6053473a2d22170b0000000000000000000000000000000000000000000815222e3b4855616e7b8897a2adaea298887b6e6155483b2e22150800000000000000000000000000000004111d2935414c55626f7c88959faba6998d8073665c50444d5764717e8a97a2ada2988b7f7265594f4332281e1308000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d60534746464646464646464646464646464646464646464646464646464646463b3a36302921170d02000000000000000000000714202d3a4753606d7985929ea8b1a79f92867c6f69615a534e484642413f3e3d3d3d3d3e3f404246474e535a616a717e8b959fabac9f93877b6e6155483b2e2215080000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0aca194877a6e6f7c8995a0ab9e9185796d6053463a3025190d0108131f2b3844505c6673808d9aa7a196897d706f7c8895a2aca09386796d6053463a2d201307000714202d3a4753606d7a86939facaea399897d706353493f33271b0f030000000000000000000000000000000000000004111d2935414c5565717e8b98a9b3ac9f9285786d6053463a2d201307000000000000000000000000000000010d19242f3a47545f6a7783909da9ab9e9184796d605346525e6976828f9ca9ac9f92867a6d6054473d3221160c02000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a393939393939393939393939393939393939393939393939393939392e2d2a251f170f050000000000000000000004101c2834404b5464717e8a97a2acaca0958b7e726a5f575047433c3a3631323131303031313230363a3c43475058616c7683909da9afa49a8c7f7265594c3f322619070000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0aca094877a6d74818d9aa8a79a8d8073665c504438291e13080003101c28343f4a54626e7b88959fa89b8e81746f7c8895a2aca09386796d6053463a2d201307000613202c3945515d677784909daab4ab9a8d8073655b5044372b1f140a000000000000000000000000000000000000010c13202c3945515d6775828e9ba8b5a89c8f8275665c5044382b1f12060000000000000000000000000000000008131e2b37434e5865717e8b97a2ada1968a7d7063564c54616e7b87939faca79b8e8174685d5245392c20130400000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d21201e1a140d05000000000000000000000006131f2c3845515c6675828f9a9c9fa29d9083786d60584e453e37322d2a262524242323242425252a2d32373e46505a64717e8b97aab3ac9c8f8275695c4f422f24180c0000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0aca093877a6d7985919eab9f95887b6e62544a3f3428170d0200000b17232e3847535f6a7783909dab9f9285796f7b8895a2aca09386796d6053463a2d2013070004101d2935404b556773808d9aa9b3ab9e9184786c6053463c2f261b1106000000000000000000000000000000000007131d28333f4a54606d7a86929facb1a7988b7f7265544a3f34281c100300000000000000000000000000000000010f1b26323c4753606d7985929faba99b8e8275685d525966737f8c99a4aca095897c6f63564c4135291d110400000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d2020202020202020202020202020202020202020202020202020201514120e09020000000000000000000000000713202d3a4653606d79868b8d909298988a7e71665c50463c332b26211e1a1918171717171818191e20262b343e4754616e7b8798a2aeaa9e9184776b554b4035291d100400000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0aca093867a6f7c8997a1aa9d9083766a5f5342382e23170500000006111c2b37434e5865727f8b99a3a2988a7e717b8895a1aca09386796d6053463a2d20130700010d18242f3d495663707c8997a1adaca196897d7063584e41382d22170f06000000000000000000000000000000071118242f3844505b66717e8b98a2aeaca095887b6e6155483b2e23170b0000000000000000000000000000000000000a151f2c3945515d6774808d9aa6ac9f92867a6d6154606b7784919eabaa9d9084776b6054443a3024190d0100000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d2014131313131313131313131313131313131313131313131313130807050200000000000000000000000000000613202d394653606c777c7e808385888b867a6d60544a3f342a211b15120e090b0a0a0a0a0b090e11151b222d3a46525e697885929fabac9f928679675d5145392c1f130600000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0aca093867974808d9aa9a3988b7e7265584e4330261c1106000000000f1a26313c4754616d7a86929faa9b8f82757b8894a1aca09386796d6053463a2d20130700000713202d3a4653606d7985929eacb2a89c8f82756a5f53493f332721180f0802000000000000000000000003091119232935404b55606c7884919daab3a99d908477695f53463a2d1c110600000000000000000000000000000000000004101d2935404b55626f7b88949faba3998b7e726557636f7c8996a0aca2988b7f7265594f4332281e13080000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d20140d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0b0a080500000000000000000000000005121f2b3744505b656c6f717476797b7e7e71675d5142382e22180f0a0502000000000000000002050b111e2a36424d566b7884919eabafa399867a6d6053473a2d20140700000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0afa39986797884919eab9f92867a6d6054473c3121150a00000000000a15202d3946525d6875828f9ba99f92867a7b8894a1aca09386796d6053463a2d201307000006121f2c3844505c6673808d9aa4afaa9e94887c6f655b50443d332a2219140e09060400000100000406090e141a232b353d45515d67717e8a95a0acada2978b7e7265574d42362a1e0a00000000000000000000000000000000000000000c18242f3947535f6a7683909ca9ab9d908376695f6774818e9aa8ac9f92867a6d6054473d3221160c020000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d201a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a171714110c0500000000000000000000030f1b27333f49535b60626467666c6e71716c62554b4030261c100600000000000000010507090e12161c222c3845515c677885919eabaea399877a6d6054473a2d21140700000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0ac9f9286797c8996a1a89b8e8175685d5245392c201303000000000005111d2935414c5663707d8a97a1a2988a7d7b8794a1aca09386796d6053463a2d201307000003101c28343f4a54616e7b87939fabb0a69c9083776c60584e453c342a251e1a1312100c070e070c1013131a1f262a353d47505a606d7984919ea7b1a99f9285796d6053473b31261a0e000000000000000000000000000000000000000007121d2b37434e5864717e8a97a1ab9f95887b6e616d7985929faba79b8e8174685d5245392c201304000000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d27272727272727272727272727272727272727272727272727272727272423211c171008000000000000000000000b17222d38414950535558545b60626465625a50433a2f1e140a00000000020507080d1113141a1e21272c343c4653606d7986929facac9f928679675d5145392c20130600000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0ac9f928579808d9aa8a196897d7063564c4135291d11040000000000010d1924303a4653606d7985929eaa9b8e817a8794a0b5a09386796d6053463a2d2013070000000c17232e3846535f6975828e99a3afab9f948b7f726a60574e463e36302a25201f1c181b1a1b181c1f20262b31363f474f59616c74808d96a1adada2978d8073675d5145392a1f14090000000000000000000000000000000000000000010f1a26313c4653606d7985929eaca7998c7f7366717d8a98a2aca095897c6f63564c4135291d1104000000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a34343434343434343434343434343434343434343434343434343434343431302d28221a120800000000000000000006111b262f383f4446484b4a50535558585650483f31281d0c02030506090e121415191d2021262b2d33383e464e58636f7c8999a3afab9e9185786b554b4135291d110400000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0ab9f92857884919eac9e9184786c6053463a2f24190d0100000000000008131f2c3844505c6673808d9aa79e9285798699a3afa09386796d6053463a2d20130700000006111c2a36424d57626e7b87929fa8b0a69f92877c6f695f585046413b36312d2c282327272723282c2d31373b42465159606b717e8a929da8b1a79f92857a6d61554b4035291d10040000000000000000000000000000000000000000000a151f2c3845515c6773808d9aa4aa9d9184776a75828e9baaaa9d9084776b6054443a3024190d01000000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d605347404040404040404040404040404040404040404040404040404040404040403e3c39332c241a10050000000000000000000a141d262d3337393c3e3f4446484b4b4a453f362d1f160c0b0f1213151a1e2121252a2d2e31373a3d44485058606a74818e9babb5a99d9083766a5d50432f24180d0100000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0ab9e92857b8896a1a49a8c8073655b504437281e13080000000000000003101c28343f4a54626f7c8895a0a197897c86929faca09386796d6053463a2d201307000000000e1a26313b47535f6974808d96a0abaea39991857b6e6a615a524c46423c3a38342e3434342e34383a3c42474d535b626b707d86929fa4aeaaa0958b7f72685e5243392f24180d0100000000000000000000000000000000000000000004101c2834404b55616e7b87939faca095887b6f7985929faca3988b7f7265594f4332281e130800000000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d60534d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4a49453e362c22170c000000000000000000020b141b22272b2d2f2d3338393b3e3e3d3a342d241b1114171b1f2022252a2d2e3036393a3d4246484f545a616a6f7c87939facb2a8998d8073665a4d4033271a070000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0ab9e91847f8c99a89f93877b6e6153493f3327160c0100000000000000000c17232e3847535f6a7783909da9998c7f85929faba09386796d6053463a2d2013070000000009141f2b37424d57606d79849199a4afaba19791847c706c615e56534d494644404141414141404546494d53575f616d727d869298a2aeaca2989083786c60564c4131281d120700000000000000000000000000000000000000000000000c18232e3946535f6976828f9ca9a7998c7f737d8a98a2ac9f92867a6d6054473d3221160c0200000000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d605a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a575550483e33281c1105000000000000000000020a11171b1f202222282b2d2f3132312e29221b191e2022272b2d2f31363a3b3e4146474a4d53555960636c717c859199a4afaca096897d706356493d3023160a0000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0aa9e918482909caa9c8f8276695f5341382d22170400000000000000000006111c2b37434e5865727f8b99a39d908384919eaba09386796d6053463a2d20130700000000030e1a26313c45515d676f7d87939fa4aea9a19691867e756e68615e575653514a4e4e4d4e4e4b515356575f62696e767f879298a2aaafa49a92867c6f665b50443a301f160c01000000000000000000000000000000000000000000000007121d2b37424d5764717d8a97a1aa9d908377818e9baaa79b8e8174685d5245392c2013040000000000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6767676767676767676767676767676767676767676767676767676767676767676764615a5045392d2114080000000000000000000000060b0f121315171c1f2022252524211d1d20252a2d2d3337393c3f4246484b4c525457575f61656b70767e859197a1abb1a79d9184786c605346392d2013060000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0ab9e918587929fa2988b7e7164574d422f261b1106000000000000000000000f1b26313c4754616d7a86929f9f928785929eaba09386796d6053463a2d201307000000000009151f2935404b55606b727f8b929da4ada9a198928a817a746e696562605c545b5a5a5a5b545c606266696e747b828b9299a2aaaea39f93887e706a5f544a3f32291e0d04000000000000000000000000000000000000000000000000000e1a26313c4653606d7984919eaba095887b85929faba095897c6f63564c4135291d11040000000000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada09386797373737373737373737373737373737373737373737373737373737373737373737373716c6155493c3023170a00000000000000000000000000030506060b0f12131518181b1e25292d3036393b3f4446484b4d535457565e616467696e72777d828a9297a1a9b3aa9f958b7e71665b5044382b1f12060000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0ada197919299a39f9285796d6053473b3120140a00000000000000000000000a15202d3946525e6875828f9ba399929297a1ada09386796d6053463a2d2013070000000000030d18242f3a434f59626d74808d929ca3adaaa29f938e86807b76726f6d6669686767676869666d6f72777b81868f949fa3ababa39f918c7f726c61584e42382d20170d000000000000000000000000000000000000000000000000000009141f2c3844505c6673808c99a4a79c8f828f97a2aa9d9084776b6054443a3024190d010000000000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb3a79a8d8080808080808080808080808080808080808080808080808080808080808080808080807e7164574a3e3124170b00000000000000000000000000000000000003060b141a20262b3035393b4146474950535558575e616467686d7074777b7f84898f949fa2a9b2aaa2989083786d60544a3f33281c0f030000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0b3a9a19e9fa3a89a8e8174675d5145392c1f1302000000000000000000000005111d2a36414c5664707d8a97a1a39f9ea1a9b3a09386796d6053463a2d20130700000000000007131d28313d47515b606c77808c919ea1a9aea59e98928d87837f7c79777674747474747677797c7f83888e92999fa6aea8a199928b7f736d635a50463c2f261c0e05000000000000000000000000000000000000000000000000000003101c28343f4a54616e7b87939fac9e948f949ea9a3988b7f7265594f4332281e1308000000000000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9a99d928d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8174675b4e4134281b0e0100000000000000000000000000000000020a11171f262a32373a4146474c5254535b60626568696e7174777a7d8084888c91959c9fa6adafa9a19892867b6e665c5142382d22170b000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acb3adabacaca095897c6f62554b4035291d10040000000000000000000000010d1925303a4653606d7985929eabacabadb3aca09386796d6053463a2d201307000000000000010c161f2b353f44505b656c747f8a92979ea6acaaa29f9a93908c898684828181808181828486898c90959a9fa3ababa49f9691877e736d635b51473e342a1d140a000000000000000000000000000000000000000000000000000000000c17232e3846535e6975828f9ca8a69e9c9ea6ac9f92867a6d6054473d3221160c02000000000000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9aea49d9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8e8174675b4e4134281b0e01000000000000000000000000000000040b141c222831363c43474c5254565e6164656c6f7275787b7e8184868a8d9196989da0a8abb0aba59e9791867d6f695f544a402f261c1106000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0acacacacb5ab9d9184776a605443392f24180c0000000000000000000000000008131f2c3844515c6674808d9aa7b1acacacaca09386796d6053463a2d20130700000000000000040d192327333f49535b606d737d858f949da0a7acaca49f9c989892918f8e8d8d8d8e8f919298999d9fa7acaca69f99938d847d716c635b51493f352c22180b020000000000000000000000000000000000000000000000000000000006111c2a36424d5763707d8a96a1acaaa8aab0a79b8e8174685d5245392c20130400000000000000000000000000000000000000000000121f2c3845525f6b7885929eabaca194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facacacaea9a7a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a69a8e8174675b4e4134281b0e010000000000000000000000000000040d161d262d333b42464e53565e6165686e7175787c7e8184878a8e91939a9a9da0a8aaacaeaca69f9c938e857c6f6b60574d42392e1d140a00000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7986939f9f9f9f9f9fa3998c7f7266584e4331271d12070000000000000000000000000004101c2834404a54626f7c8895a09f9f9f9f9f9f9386796d6053463a2d2013070000000000000000071017222d384149505b636b707b828990959c9fa4acaca9aaa39f9d9c9b9a9a9a9b9c9d9fa3aaaaababa39f9b948f878079706b625a514940372e231a10060000000000000000000000000000000000000000000000000000000000000e1a25313b4653606c7884919e9f9f9f9f9fa095897c6f63564c4135291d110400000000000000000000000000000000000000000000121f2c3845525f6b7885929e9f9f9f94877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9a8e8174675b4e4134281b0e0100000000000000000000000000030c161f282f383f444d53585f62686d72767a7e8185888b8e9196979a9d9fa4acaaacafacaba39f9b948f89817a6f6a60594f453b30271c0b0200000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7986939393939393939392867b6e6154473d3221150b0100000000000000000000000000000c18232e394754606a778390939393939393939386796d6053463a2d20130700000000000000000006111b262f383f44515961696e757d83898f939a9c9fa2aaa7a8aaa9a7a7a7a7a7a9a9a8a6a9a29e9b99928e88827c746d676059504840372e251c11080000000000000000000000000000000000000000000000000000000000000009141f2b3844505b66737f8c999393939393939084776b6054443a3024190d0100000000000000000000000000000000000000000000121f2c3845525f6b7885929393939393877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c79869293939393939393939393939393939393939393939393939393939393939393939393939393939393938e8174675b4e4134281b0e01000000000000000000000000000a151e283139424a50575f616a6f757a7f83868b8e9297989b9ea1a8a7aaacafacaaaba39f9c99928e89827c756d6860584f473d33291e150b0000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d78868686868686868686868275685e5246392d20140300000000000000000000000000000007121c2b37434e5865727f86868686868686868686786d6053463a2d201307000000000000000000000a141d262d3340474f575e616b70777d82878b8f9298989a9b9d9e9e9f9f9f9e9d9d9b999797928e8a86817c766f6a605d554f473e362e251c130a0000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a54616e7a8786868686868686867f7265594f4332281e13080000000000000000000000000000000000000000000000121f2c3845525f6b7885868686868686867a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7987868686868686868686868686868686868686868686868686868686868686868686868686868686868686868174675b4e4134281b0e0100000000000000000000000006111c263039434b545b60696e757c81868b9093999b9ea1a9a8abadafaca9a6a8a09d9a99928f8b86817c766f6b605d564e463d352b21180c030000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844505c667679797979797979797979757065564d41362a1e1105000000000000000000000000000000000f1b27323c4a57626d727979797979797979797976665c5044382c1f120600000000000000000000020b141b2227353e454d525960636b70757b7e8285888b8d8f9091929292929191908e8c8a8885817e7a746f6a626058514b433d352d241c130a010000000000000000000000000000000000000000000000000000000000000000000b17222d3846525e686e797979797979797979726d6256473d3220160c020000000000000000000000000000000000000000000000111e2b3744505d6873787979797979797976685e5246392d20140700000000000000000000000000000000000000000000000000000000000000121f2c3845525e6a757979797979797979797979797979797979797979797979797979797979797979797979797979797979797979746f64594c4033271a0d010000000000000000000000020c17232e38424b555d666c727b82888e92999c9fa4ababadaeaca9aba39f9d9a9795918d8a86837e7a756f6b636059524c443c342b23190f06000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a545c6c6c6c6c6c6c6c6c6c6c6c69655e54443b3025190e02000000000000000000000000000000000a15202e3a46515b62656c6c6c6c6c6c6c6c6c6c6c5c544a3f34281c10030000000000000000000000020a1117232c333b42464f54596063696e7276797c7e808283848585868585848382807d7b7975716d68625f58544e45403a312b231b120a010000000000000000000000000000000000000000000000000000000000000000000006111c2a36414d565e616c6c6c6c6c6c6c6c6c65625b5146342b210e040000000000000000000000000000000000000000000000000f1c2834404c5761686b6c6c6c6c6c6c6c6c5e564c41362a1e110500000000000000000000000000000000000000000000000000000000000000111d2a36424e59636a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c67645d53483c3024180b0000000000000000000000000a141e28343f4a545d676d787f868f939b9fa3abacafaca9aaa29f9c999992908d8a8784817d7a76726d68636059544f45413a322b2219110700000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e38424a505f606060606060606060605c5a544c4232291f1408000000000000000000000000000000000004121e29353f49515759606060606060606060605f504a42382e23170c000000000000000000000000000006111a202930363d44484f54565e6165666d6f7174757778787979787877767573716f6d6664605d56534e47433d352f281f191109000000000000000000000000000000000000000000000000000000000000000000000000000e1925303b444d52545f6060606060606060585651493f3422190f000000000000000000000000000000000000000000000000000c18242f3b454f575d5f606060606060605f524c443b3025190e02000000000000000000000000000000000000000000000000000000000000000e1a26313d4751595e5f606060606060606060606060606060606060606060606060606060606060606060606060606060606060605b59534a41362b201408000000000000000000000006111c26303844505c666d79828c92989ea5acaeabaca49f9d9998928f8c898683807d7a7774716d6865615e56544f48443d353028201910070000000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2630383f4453535353535353535353534f4d4942393020170d020000000000000000000000000000000000010d18232d373f464a4c5353535353535353535353443f3830261c1106000000000000000000000000000000080e171f252a33383d44484d5254545c60626567686a6b6b6c6c6c6b6a6a68666462605c5454524c47433c383229241d160d07000000000000000000000000000000000000000000000000000000000000000000000000000008141f29323b4146475353535353535353534c4a463f372d2310070000000000000000000000000000000000000000000000000007131e29333d454c5052535353535353535346413b32291e140800000000000000000000000000000000000000000000000000000000000000000915202b353f474e5253535353535353535353535353535353535353535353535353535353535353535353535353535353535353534e4c4841382f251a0f0300000000000000000000000b17232e38424f59606d78828f949fa3aaafaca7a09d9a93908c8985827f7c7a7673706d686764605d5654524c48433d383229241e160e07000000000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151e262e3438464646464646464646464642413d3730271e0e050000000000000000000000000000000000000007111b252d353a3e3f464646464646464646464638342e261e150a0000000000000000000000000000000000050d141a21272c33383b4246474a505355585a5c5d5e5f5f5f5f5e5e5d5b59575553504a4745413a37312b272018130c04000000000000000000000000000000000000000000000000000000000000000000000000000000020d1720293036393b4646464646464646463f3e3a342d251b110000000000000000000000000000000000000000000000000000020d17212b333b404445464646464646463b3936302920170d020000000000000000000000000000000000000000000000000000000000000000040f19242d353d4245464646464646464646464646464646464646464646464646464646464646464646464646464646464646464641403c362f261d1308000000000000000000000003101c28343f4a54616b74818e949ea6aeafa7a09d95908b8783807c797673706d676764615e565754524c4746413a38322c272119130c0400000000000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151c23282c39393939393939393939393635312c261e150c0000000000000000000000000000000000000000000a131b23292e313239393939393939393939392c28231c150c0300000000000000000000000000000000000002090e161c21272c30363a3b3f4446494b4d4f5051525253525251504f4d4a4846443f3a39352f2b26201b160d07010000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171f252a2d2e39393939393939393932312e29231b1309000000000000000000000000000000000000000000000000000000060f1921292f343738393939393939392e2d2a251e170e050000000000000000000000000000000000000000000000000000000000000000000008121b242b31363839393939393939393939393939393939393939393939393939393939393939393939393939393939393939393433302b251d140b01000000000000000000000006121f2b3844505c66707d89939da6b0aca49f959089837f7b76736f6d666663605d555754524c4a4745413a3936302c27211b160d08020000000000000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a11171c1f2d2d2d2d2d2d2d2d2d2d2d292825211b140c03000000000000000000000000000000000000000000010a11181e2225262d2d2d2d2d2d2d2d2d2d2d1f1c17110a03000000000000000000000000000000000000000000050b10161c1f252a2d2e34383a3c3e414244454546464545444342403e3c3a38342e2c29241e1b150f0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191e20212c2d2d2d2d2d2d2d2d2524221e1811090100000000000000000000000000000000000000000000000000000000070f171e24282b2c2d2d2d2d2d2d2d21201e19140d0500000000000000000000000000000000000000000000000000000000000000000000000009121920262a2c2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d282724201a130b020000000000000000000000000713202d3a4653606d7883909da5afafa49a938c837d77726e686663605c545653514b4a4746413e3a3935302d2a251e1b17151312100b0600010000000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c101220202020202020202020201c1b1915100902000000000000000000000000000000000000000000000000070d12161819202020202020202020202012100c0600000000000000000000000000000000000000000000000000050b1014191e2023282c2d2f3234353738383939393837373533312f2d2b2823201d19130f0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080e111414202020202020202020191816120d0600000000000000000000000000000000000000000000000000000000000000060d13181c1e1f202020202020201414110e08020000000000000000000000000000000000000000000000000000000000000000000000000000080f151a1d1f20202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b1a18140f080100000000000000000000000003101c28343f4a5464717e8a95a0acaea49f93888078706b65615e565653514a494745403d3a3936302d2c292424242b29262422201f1c1711110c0600000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030613131313131313131313130f0f0d09040000000000000000000000000000000000000000000000000000000106090b0c13131313131313131313130603000000000000000000000000000000000000000000000000000000000002090e1114171c1f20222527292a2b2c2c2c2c2b2b2a28262422201f1c1713110d0801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507081313131313131313130c0b09060100000000000000000000000000000000000000000000000000000000000000000002070c0f11121313131313131308070502000000000000000000000000000000000000000000000000000000000000000000000000000000000004090e111213131313131313131313131313131313131313131313131313131313131313131313131313131313131313130e0d0b0803000000000000000000000000000006121f2b3844505c6675828f9ca7b1aa9d928b7e736d66605954524d494644403d3a39352f2e2d2a252120282d3031383533312f2d2b28231c1d181109000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205060c10121316181a1c1d1e1f1f201f1f1e1d1c1a17151312100b06040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7985929facaea3988d80746c605c544f4746413c3a38342e2d2c292421201d19242c34393d3e4442403e3b3a38342e2e29231b12090000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000000000002080d101213131313131313090806030000000000000000000000000000000000000000000000010407071213131313131313131313120f0a0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030607090b0e0f1112121313121211100f0d0b09070603000000000000000000000000000000000000000000000000000000000000000002080d10121313131313131313131313131313131313131313131313121211100e0b0907060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8898a2aeac9f92867a6d615a504a423d3936302d2c282320201d18141317222c363e45494b514f4d4a4846443f383a342d241b110600000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201300000000060d14191c1f1f2020202020201515120f0a030000000000000000000000000000000000000001080d1113141f202020202020202020201e1b161009010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d14191c1f1f202020202020202020202020202020202020202020201f1e1e1c1a18161413100c070501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996aab4a89c8f8275685e52443f38302d2a25201f1c181413100d07111d28343e485055575e5c59575553504a4a453f362d23180c01000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130000000810181f25292b2c2d2d2d2d2d2d22211f1b150e060000000000000000000000000000000000040c13191d20212b2d2d2d2d2d2d2d2d2d2d2b27211b130a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810181f25292b2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2c2b2a29272523201f1c1813110d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0a6998d807366564c41342e26201e191312100c070604010815212d3945505a61646b68666462605c545651483f34291d1105000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000006101a222a303538393939393939392f2e2b2620181006000000000000000000000000000000040d161e24292c2d383939393939393939393937332c251c1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101a222a30353839393939393939393939393939393939393939393939393838373634322f2d2c2923201d19130f0a030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0a5998c7f7266594c3f30231c15110e080807070808090e131925303d4955616c71777573716e6d6665625b51453a2e221509000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201300020d18222c343b4144464646464646463c3a37312a22180e0300000000000000000000000000010c1620282f35393a4546464646464646464646433e372e251b1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18222c343b4144464646464646464646464646464646464646464646464645454443413e3c3a38342f2d29241e1a150f0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a96abb5a69a8d807367544b403428201c1816151514141515171a1e242b37434e5864717e8482807d7b7977726d62564a3d3124170b000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130008141f2a343e464d51525353535353534847433c342a20150a0000000000000000000000000008131e28323a41454752535353535353535353534f4940372c21160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2a343e464d5152535353535353535353535353535353535353535353535251514f4d4b494745403a3935302b26201b150c070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8899a4afa89b8e8275665c51453a322c29232322212121212223252a2f353f47535f6a76828f8f8c8a8886837e7265584b3f3225180c000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000d1925303b4650585d5f60606060606055534e463c31261b0f030000000000000000000000030c19242f3a444c52545e6060606060606060605f5a52493e33271b0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303b4650585d5f6060606060606060606060606060606060606060605f5f5e5d5c5a585653514b4746413a37312b262018120b03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a86939facab9f9285796d60564c443d38342f2f2f2e2d2e2e2f3031363a4145515b626f7c87939b999798928a7e7164574b3e3124180b000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201300101c2935414d5862696c6c6c6c6c6c6c625f584e43372b1f120600000000000000000000000b151e2935414c565d606b6c6c6c6c6c6c6c6c6c6c645a4f43372b1e12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101c2935414d5862696c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b6b6a69676562605c5554524c47433c373228231d150c0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3945515d677683909dabada2978a7e71685e564f4745403e3c3b3b3a3a3b3b3d3f42464c515a626d76828f99a4a6aa9f92857a6d6053473a2d201407000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201300121f2b3844515d697479797979797979766a5f53473a2e2115080000000000000000000007121d27303945525d686d78797979797979797979766c5f5346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121f2b3844515d697479797979797979797979797979797979797979797979797878777674716f6d6764615d56534e47433c342e271e191008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2935404b5566737f8c99a3aea99e91857a6d68605953514b4b494848474748484a4b4d53555d606c727f8c949fabaea3998d8074675d5145392c201306000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201300131f2c3946525f6c79868686868686867c6f6255483c2f221509000000000000000000000c18232e39424f59606d7a85868686868686868686796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c79868686868686868686868686868686868686868686868685848482807e7c7975716d68625f58534e454039302a221a110900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18242f3b4754616e7a86929fa8ada19790827a6f6b63605c5557565554545454555658575e61676d747e88939fa6b0a89f92867b6e61554b4035291d1004000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201300131f2c3946525f6c79859293939393887b6f6255483c2f22150900000000000000000005101c2834404b54606b74818e979393939393939386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929393939393939393939393939393939393939399929291908f8d8b8985827e7a756f6a625f58514b433c342c231b1209000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3946525e6874808d96a1aaa99f9490847c76706d67666462626160616162636567696e737a818b939aa4afaaa1968d8074695e5343392f24180d01000000000000000000000000000000000714202d3a4753606d7a8693a0acac9f9286796c5f5346392c201300131f2c3946525f6c7985929f9f9f95887b6f6255483c2f2215090000000000000000050e1b242c3845515c666f7c88939fa99f9f9f9f9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa39f9e9e9d9c9a9898928f8b86817c756f6a605c554e463e352d241b120900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414c56606d7a849198a2aaa69f969189827d797573716f6e6e6d6d6e6e707274777b80858e939fa4acaba3989184796d60574d4231281d120700000000000000000000000000000000000714202d3a4753606d7a86939f9f9f9f9286796c5f5346392c201300131f2c3946525f6c7985929faca295887b6f6255483c2f22150900000000000000020c16202b37424d57606d7983919aa4afacacacac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facacacada7a5a5a5a5a5a5a5a5a5a5a5a5a5a5a6a6a7aaa9a7aaa29f9b99928e87827c736d675f584f473f362d241b10070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1925303b45525d686f7c869298a0a8a8a09e948f8a8582807e7c7b7b7a7a7b7b7d7e8084878d92979da5afaaa29992867c6f675d51453b311f160c0100000000000000000000000000000000000714202d3a4753606d798693939393939286796c5f5346392c201300131f2c3946525f6c7985929faca295887b6f6255483c2f2215090000000000000008131e28323a47535f69737f8c95a0acb6b8b9beac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facb8ada39c9898989898989898989898989898999a9b9d9fa3aaaaacaba39f9a938f8780796f6a615950483f362d22190f05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141e2935414c56606a707d8691969fa3aba69f9c98928f8c8a89888787878788898b8d9195999fa2a9aba69f9892877e706a60554b4133291f0d040000000000000000000000000000000000000714202d3a4753606d798686868686868687796c5f5346392c201300131f2c3946525f6c7985929faca295887b6f6255483c2f221509000000000000030d1925303a44505a616e7b86929fa7afacabadb3ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facb8a79c918c8b8b8b8b8b8b8b8b8b8b8b8b8b8c8d8e909298999da0a7aaaca49f99928d837c706b625a50483e342b21170d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d19242f3a434e58606b707c848d92999fa2aaaaa29f9c99979595949394949596989a9da0a8abaaa79f9d948f857d706c61584e433a2f21170d0000000000000000000000000000000000000006131f2c3845515c67767979797979797979756a5e5245382c1f1200131f2c3946525f6c7985929faca295887b6f6255483c2f2215090000000000010b151f2a36414c56626c76828f98a3aca49f9ea1a9b39f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facb2a5988c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f80818386888c91959c9ea6acaba39f9591867d716c625a50463d33291f1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28313c464f59606a6f7980878e92989b9fa2aaa6a6a4a2a1a1a0a0a1a1a3a5a7a7aca49f9d9995908a827b706b615a50463d31281d0f050000000000000000000000000000000000000004101c2934404b555c6c6c6c6c6c6c6c6c6c6a63594e42362a1d1100131f2c3946525f6c7985929faca295887b6f6255483c2f221509000000000007121d27313946525e68717e8b949faaa49a939297a1ad9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a7272727272727272727272727273737477797c8084898f949da0a7afa7a09892877e716c61584e453b30251a0d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f2b343d474f585f676d737b81868b8f9298989a9b9d9e9f9f9f9f9f9f9e9d9c9a989a93908d88837d766e69615950483e342b1f160c0000000000000000000000000000000000000000000c18232f39434b515f606060606060605f5e5951473d31261a0e00131f2c3946525f6c7985929faca295887b6f6255483c2f22150900000000020b18232f39434f59616d7a85929ea6a99f938785929eab9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d656565656565656565656565666768666d6f73777c828990959fa4acaaa299928b7e716a60574d42362a1f160c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d19222b353d464e555d60696e747a7e8285888b8d8f909192929292929291908f8d8c898683807c76706c615f574f473e362c22190d0400000000000000000000000000000000000000000007121d2731394045535353535353535353524e473f352b20150900131f2c3946525f6c7985929faca295887b6f6255483c2f221509000000000a141d2934404b55606b74818e97a1ada1978e8183909da99f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d605858585858585858585858595a545c6062666b6f767c838d939aa3ababa39f92867c6f695e52463e31281d13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071019232b343c434b51575f61676d7175797c7e80828384858586868585848482817f7d7a77736f6a64615a534d453e352c241a100700000000000000000000000000000000000000000000010b151f272f343846464646464646464645423d352d24190f0400131f2c3946525f6c7985929faca295887b6f6255483c2f22150900000006111b262f3845515c67707d89939ea9a69e91857a84919daa9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d60544c4c4c4c4c4c4c4c4c4c4c4d4a5053555960636a6f7980889299a3abaea39891857b6e615a50433a2f24180d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071119222a313940454d53555d6065666d6f71737576777879797979787877757472706d6866625f58555046423b332c231a1208000000000000000000000000000000000000000000000000030d151d23292c3939393939393939393836312b241b12080000131f2c3946525f6c7985929faca295887b6f6255483c2f2215090000000b17222d38414e58606d7984919ea5aa9e948a7e7885919eab9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473f3f3f3f3f3f3f3f3f40403f4446494f545860676d737e879299a3aeaaa1978f82766c61554b4135291d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000710181f282f353b42464c5154545c60626567686a6b6c6c6c6c6c6c6b6a69676563605d5655534e49443e36312a211a11080000000000000000000000000000000000000000000000000000030b12181c1f2d2d2d2d2d2d2d2d2c2c2a2620191209000000131f2c3946525f6c7985929faca295887b6f6255483c2f2215090000040f1b27333f49535f6a73808c96a0aca2988f82757985929fac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a3232323232323232332e34383a3d43484e555c606c717e87929fa5afa99f948a7e71675d5145392e23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d161d242931363a4145474a505355585a5c5d5e5f5f5f5f5f5f5e5d5c5a595654524c4847433c39332a261f180f080000000000000000000000000000000000000000000000000000000001070c10132020202020202020201f1d1a150f0800000000131f2c3946525f6c7985929faca295887b6f6255483c2f22150900040d1a232b3744505b656f7c87929fa8a79f92867b6e7986939fac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d252525252525252623282c2d32383d434b515a616c727f8b939ea9b0a69e91847a6d60544b4034281c100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c12181f262a2f35393a3f4446494b4d4f505152525353525251514f4e4c4a4745413c3b37322d28221a140e060000000000000000000000000000000000000000000000000000000000000000040613131313131313131312110e09040000000000131f2c3946525f6c7985929faca295887b6f6255483c2f221509010c161f2a36414c56606c77839099a3aba0958c7f726d7a879aa4af9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2119191919191919171c1f20272c30394045505a626d74818e97a1adada1968c7f73665c5145382c1f1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d141a1e24292c2e34383a3c3e40424344454646464645454442413f3d3a3935302e2b26201c170e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929faca295887b6f6255483c2f22150907121d28313946525e68727e8b949faba3999083786d6e7a8794a1b69f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d21140c0c0c0c0c060c1012131b1e272e343e47515b606d7985919ea7b1a99e9185796d6053463b31251a0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e13191d2023282c2d2f32343537383939393939393837363432302d2c2924211f1b15100b050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929faca295887b6f6255483c2f2215090b18242f39434f59616e7a85929fa6a89f92877c6f666e7b8894a1ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d21140700000000000003060a0c151d2328353f45515d67717e8b95a0acada1978b7e7164574d42362a1e1205000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080d1113171c1f20222527292a2b2c2c2c2c2c2c2b2a2927262321201d1915120f0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929faca295887b6f6255483c2f22150a141d2935404b55616b75818e97a2aca1968d80746a626f7b8895a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d211407000000000000000000030b1218232935414b55606c7883909da9b3a99d908377695e53463a2d211406000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104060c10121316181a1c1d1e1f1f20201f1f1e1e1c1b19171413110d080603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929faca295887b6f6255483c2f2215111c262f3845515d67707d8a939ea9a59e9184796d60626f7c8895a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000071118242f3a44505b65717e8b97a2adab9f95877b6e6154483b2e23170c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030607090b0d0f101112131313131212110f0e0c0a07070401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929faca295887b6f6255483c2f221517222d38424e58606d7984919ea5a99e938a7d70675d626f7c8995a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d21140700000000000000000000000007131d27333f4953606d7985929fabb1a7988b7e7265544a3f34281c10030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929faca295887b6f6255483c2f22151c28333f4a545f6a73808d96a1aca2978e81756b6155626f7c8995a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d211407000000000000000000000000010b17222d3845515d6774818e9aabb5a89c8f8275665c5044382c1f120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070b0f11121313131313131308070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929faca295887b6f6255483c2f221a242b3844505b666f7c87929fa8a69f92857a6e615956626f7c8995a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000006111b2935404b5564717d8a99a3afac9f9285796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c12171b1d1e202020202020201514120e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929faca295887b6f6255483c2f221f2a36424d57606c78839099a3ab9f948b7e71685e5256626f7c8995a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d21140700000000000000000000000000000c18242f3a4754606d7a86929facaea298887b6e6255483b2f22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f161d23272a2b2d2d2d2d2d2d2d22211e1a140e06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929faca295887b6f6255483c2f2228313a46525e69727f8b959faba3999082776c60564c56626f7c8995a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d21140700000000000000000000000000000713202c3945525d687783909daab4aa978a7d7064574a3d3124170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f1820282f333738393939393939392e2d2b261f180f060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929faca295887b6f6255483c2f242f3a43505a616e7b86929fa7a89f92867c6e655b504956626f7c8995a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d211407000000000000000000000000000004111d2935414c566875818e9ba8b2a5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c16202a323a3f4345464646464646463b3a37312a21180e0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929faca295887b6f6255483c2f2935414c55616c75828f98a2aca0968c80736a5f53494956626f7c8995a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000000010d19242f404d596673808c99a6b3a79b8e8174685b4e4135281b0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d28323c444b5051535353535353534846423c332a1f140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929faca295887b6f6255483c2f303845515d67707d8a939eaaa49a9184796d60584e414956626f7c8995a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d211407000000000000000000000000000000081824313e4b5764717e8a97a4b1a89c8f8275695c4f4236291c0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232f3a444e565c5e6060606060606055534d453c31261a0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929faca295887b6f6255483c2e38424e58606d7a84919ea6a99f93887d70675c51463c4956626f7c8995a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000000000a1724303d4a5763707d8a96a3b0a99c908276695d5043362a1d1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b27333f4b5660686b6c6c6c6c6c6c6c6c5f574d42372b1e1205000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929faca295887b6f6255483c343f4a54606a74808d96a1ada1978e81746b60554b403c4956626f7c8995a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000000000a1623303d495663707c8996a3afaa9d9083776a5d5044372a1d110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d2a3743505c6872787979797979797976695f53463a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929faca295887b6f6255483c3844505c666f7c87939fa9a69e92857a6d60594f43393c4956626f7c8995a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000000000916222f3c4955626f7c8895a2afaa9e9184776b5e5144382b1e110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884868686868686867b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929faca295887b6f6255483c424d57606d78839099a4aa9e948a7e71685d52473d303c4956626f7c8995a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000000000916222f3c4955626f7c8895a2afab9e9184786b5e5145382b1e120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919393939393887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929faca295887b6f6255483c46535f69727f8c95a0aba2988f82766c61564c41352f3c4956626f7c8995a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000000000916232f3c4956626f7c8995a2afaa9d9183776a5e5144372b1e110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919e9f9f9f94887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929faca295887b6f62554844505a616e7b86929fa7a79f92867b6e615a50443a302f3c4956626f7c8995a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000000000a1623303d495663707c8996a3afaa9d9083776a5d5044372a1d110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaca194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929faca295887b6f6255484c56616c76828f98a2aba0958c7f72695e53483e32282f3c4956626f7c8995a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000000000b1824313e4b5764717e8a97a4b1a99c8f8276695c504336291d100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929faca295887b6f625548525d68717e8a949faaa4999083786d60574d42362c232f3c4956626f7c8995a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000000000c1926333f4c5966727f8c99a5b2a79b8e8174685b4e4135281b0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929faca295887b6f62554f59606d7a85929ea6a89f93877c6f665c50453b3124232f3c4956626f7c8995a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d211407000000000000000000000000000004101c2934404b556774818e9aa7b3a6998c807366594d4033261a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929faca295887b6f625554606b74818e97a1ada1968d80746a60544a3f33291f232f3c4956626f7c8995a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d211407000000000000000000000000000006131f2c3845515c677783909daab4aa988b7e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929faca295887b6f62555c666f7d88939fa9a59e9184796d60584e42382e2117232f3c4956626f7c8995a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d21140700000000000000000000000000000714202d3a4753606d7986929facaea298887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929faca295887b6f6257606d7984919aa4a99e938a7d70675d51463c30261c16232f3c4956626f7c8995a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000007101d2935404b5563707d8a99a3aeac9f9285796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929faca195887b6e625f69737f8c95a0aca2978e81756b61554b40342b1e1516232f3c4956626f7c8995a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d211407000000000000000000000000050e19222c3945515d6774818e9aabb4a99c908376665c5044382c1f12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929faca194887b6e61626e7b86929fa8a69f92857b6e61594f433a2f22190c16232f3c4956626f7c8995a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000060e17202935404b55606d7985929fabb1a7988c7f7265544a3f34281c10030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929faca194877a6e616c76828f98a3ab9f948b7e72685e52473e31281d100916232f3c4956626f7c8995a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d211407000000000000000000030a0f182029323b45515d67727e8b97a2adab9f95887b6e6155483b2e23170c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929faca094877a6d68717e8b949faaa3999083776c60564d41352c1f160c0916232f3c4956626f7c8995a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d21140700000000000205060b0f151a212a323b444e58606d7984919ea9b2a89d908376695f53463a2d1c1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929faca093867a6d6d7a85929ea6a89f92867c6e655b50443b30231a0d040916232f3c4956626f7c8995a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d21140c0c0c0c0d090e1114171b1f262b333b444c56606a73808c96a1adada1968a7e7164574d42362a1e0a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b6e6155483b2e221508020202020202020202020202020202020202020202020200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929faca39986796d75818e97a2aca0968c80736a5f53493f32291f1108000916232f3c4956626f7c8995a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d211919191919191a191e2022272b31373e454d565e686f7c87929fa8b1a79e9184786d6053463b31261a0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b6e6155483b2e22150f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0b0a0804000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929fac9f928679707d89939ea9a59d9184796d60584e41382d20170d00000916232f3c4956626f7c8995a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2525252525262627252a2d2d33373c434750575f686e7a849199a3afaa9f958b7e71665c504438291f140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b6e6155483b2e221b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b171714110c0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929fac9f9285797984919ea5a99d93897d70675c51463c2f261b0e0500000916232f3c4956626f7c8995a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a32323232323232333430363a3b3f44464e535a61696e7a839096a1abaea3989083786c60544a3f34281c100300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b6e6155483b2e28282828282828282828282828282828282828282828282828282423211c171008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929fab9e918578808d96a0aca1978e81746b60554b40342a1d140a0000000916232f3c4956626f7c8995a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473f3f3f3f3f3f3f3f404042424647495053585f626c717b839095a0a8afa59f92867c6f655b5042382e23170c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b6e6155483b35353535353535353535353535353535353535353535353535353531302d28221a12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929faa9d91847b87929fa8a69e92857a6d61594f43392e22180b020000000916232f3c4956626f7c8995a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d60544c4c4c4c4c4c4c4c4c4c4d4e4d5254535b60636a6e757e859195a0a7afa59d938b7f726a5f53493f30261c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b6e615548424242424242424242424242424242424242424242424242424242423e3c39332c241a100500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929faa9d9083839099a3aa9f948a7e71685d52473d30271d0f06000000000916232f3c4956626f7c8995a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6058585858585858585859595a5b565e6164656c70757c828a9297a0a8afa59e938e81746d62584e41382d1e150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b6e61554e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4a49453e362c22170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929fac9f928790959faba2988f82766c61564c41352b1e150b00000000000916232f3c4956626f7c8995a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d656565656565656565656566676869696e7074787d81878f939ea1a9aca49f938e81786d605b51463c2f261b0c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b6e615b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b575550483e33281c1104000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929faca39992999fa7a79f92867b6e615a50443a3023190c0300000000000916232f3c4956626f7c8995a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a72727272727272727272727273737576787a7d8184898e93999ea6ada8a19a938c81786d665c50493f342a1d140a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b6e6868686868686868686868686868686868686868686868686868686868686864615a5045392d211408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facaba39fa3ababa0958c7f72695f53483e32281e11070000000000000916232f3c4956626f7c8995a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facb2a5988c7f7f7f7f7f7f7f7f7f7f7f7f7f7f80818385878a8d91969b9fa4ababa39f9691887f776d665c544a3f372d22180b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b7575757575757575757575757575757575757575757575757575757575757575716c6155493c3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facb5afacafafa4999083786d60574d42362c20160c000000000000000916232f3c4956626f7c8995a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facb8a79c918c8b8b8b8b8b8b8b8b8b8b8b8c8c8d8e909297979a9ea1a8acaba39f99928d847d736c655c544a42382e241b10060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabb5a89b8f8281818181818181818181818181818181818181818181818181818181818181817e7164574a3e3124170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facb8bbb9b2a89f93877c6f665c50453b31241a0e04000000000000000916232f3c4956626f7c8995a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facb8ada39c98989898989898989898989898999a9b9c9ea1a9a7aba9a8a19e99928e87817a706b605b534a423930261c1209000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabb7aa9e938f8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8c807366594d4033261a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facacacacada1968d80746a60544a3f33291f120900000000000000000916232f3c4956626f7c8995a2ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facacacada7a5a5a5a5a5a5a5a5a5a5a5a5a5a6a6a8a9a8a6aba39f9c9996918c87817b746d6761595049413930271e140a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabb7afa59e9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b998c807366594d4033261a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929f9f9f9f9fa59e9184796d60584e42382e21170d0000000000000000000916232f3c4956626f7c89959f9f9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa39f9f9e9d9c9b99979992908c89847f7b746e69605d554f443f382f271e150c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabb7b8afaaa8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a6998c807366594d4033261a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c798692939393939393938a7d70675d51463d30261c0f060000000000000000000916232f3c4956626f7c89939393939386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c798592939393939393939393939393939393939398929291918f8e8d8b8886837f7c78736e69615f57514c433e332d261d150c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabb7b1a9a3a19f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f998c807366594d4033261a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7986868686868686868681756c61554b40342b1e150a000000000000000000000916232f3c4956626f7c86868686868686796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c798686868686868686868686868686868686868686858585848381807e7c7976736f6c65615e57534d45413a3127221b140b03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabb7a99f9894939393939393939393939393939393939393939393939393939393939393938c807366594d4033261a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121f2b3844515d6974797979797979797979756f65594f433a2f22190c03000000000000000000000815222e3b4754606a6f79797979797979766c5f5346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121f2b3844515d6974797979797979797979797979797979797979797979787877767573716f6d666662605b53534d47423c352f281f17110a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabb7a3988d888686868686868686868686868686868686868686868686868686868686868686807366594d4033261a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101c2935414d5862696c6c6c6c6c6c6c6c6c68655d53473e31281d1007000000000000000000000006131f2b38434e5860626c6c6c6c6c6c6c6c645a4f43372b1e12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101c2935414d5862696c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b6a6968666462605c545653504946423b373129241e160d06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b7979797979797979797979797979797979797979797979797979797979797979736e63574b3f3226190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303b4650585d5f60606060606060605b59534b42352c1f160c000000000000000000000000030f1b27323d464e5456606060606060605f5a52493e33271b0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303b4650585d5f606060606060606060606060606060606060605f5f5e5e5c5b5a585553514b4946443f3836312b261f19130c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b6e6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c66635c52473b2f23170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2a343e464d515253535353535353534f4d48423930231a0d04000000000000000000000000000a16202b343d43474953535353535353534f4940372c21160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2a343e464d51525353535353535353535353535353535353535352525251504e4d4b494645403c3937332d2a251f1a150d08010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b6e616060606060606060606060606060606060606060606060606060606060605957524a40352a1f1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18222c343b414446464646464646464642413d3730271e11080000000000000000000000000000040f19222b32383b3c4646464646464646433e372e251b1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18222c343b41444646464646464646464646464646464646464646464545444342403e3c3a38342e2d2b27221b1a140e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b6e615553535353535353535353535353535353535353535353535353535353534d4b4740382e24190e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101a222a3035383939393939393939393534312c251e150c0000000000000000000000000000000007101920272b2e2f393939393939393937332c251c1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101a222a303538393939393939393939393939393939393939393939393837363533312f2d2c2823201f1b17110e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b6e61554846464646464646464646464646464646464646464646464646464646403f3b352e261c12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810181f25292b2c2d2d2d2d2d2d2d2d282825201b140c030000000000000000000000000000000000070f161b1f22232d2d2d2d2d2d2d2d2b27211b130a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810181f25292b2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2c2b2b2928272522201f1c1813120f0b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b6e6155483b39393939393939393939393939393939393939393939393939393933322f2a241c130a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d14191c1f1f20202020202020201c1b19150f090200000000000000000000000000000000000000040a0f13151620202020202020201e1b161009010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d14191c1f1f202020202020202020202020202020202020201f1f1f1e1d1b1a18161313100c0705030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b6e6155483b2e2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2626231f19120a0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d10121313131313131313130f0e0c09040000000000000000000000000000000000000000000000030608091313131313131313120f0a05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d1012131313131313131313131313131313131313131313121211100f0d0b09070604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b6e6155483b2e22202020202020202020202020202020202020202020202020201a1917130e07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b6e6155483b2e22151313131313131313131313131313131313131313131313130d0c0a070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b6e6155483b2e2215080606060606060606060606060606060606060606060606000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b6e6155483b2e2215080101010101010101010101010101010101010101010101010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b6e6155483b2e22150d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0a09070400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b6e6155483b2e221a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a171614100b050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b6e6155483b2e2727272727272727272727272727272727272727272727272727272423201c16100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b6e6155483b34343434343434343434343434343434343434343434343434343434302f2c28211a1108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b6e61554840404040404040404040404040404040404040404040404040404040403d3c38332c231a10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b6e61554d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4a48443e352c21160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b6e615a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a57554f473e33281c100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b6e67676767676767676767676767676767676767676767676767676767676767676361594f44382c20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabaea194887b737373737373737373737373737373737373737373737373737373737373737373706b6155483c2f23160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabb4a79a8e818080808080808080808080808080808080808080808080808080808080808080807d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabb7a99d938e8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8073665a4d4033271a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabb7afa59d9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a998d8073665a4d4033271a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919eabacacafa9a7a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6998d8073665a4d4033271a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919e9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f998d8073665a4d4033271a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919393939393939393939393939393939393939393939393939393939393939393939393939393938d8073665a4d4033271a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b788486868686868686868686868686868686868686868686868686868686868686868686868686868686868073665a4d4033271a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d2a3743505c6872787979797979797979797979797979797979797979797979797979797979797979797979797979797979736e63584b3f3226190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b27333f4b5660686b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c66635c52473b2f23170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232f3a444e565c5e60606060606060606060606060606060606060606060606060606060606060606060606060606060605a58524a40362a1f13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d28323c444b505153535353535353535353535353535353535353535353535353535353535353535353535353535353534d4b4740382e24190e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c16202a323a3f43454646464646464646464646464646464646464646464646464646464646464646464646464646464646403f3b362e261c1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f1820282f333738393939393939393939393939393939393939393939393939393939393939393939393939393939393933322f2a241c140a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f161d23272a2b2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2726231f19120a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c12171b1d1e20202020202020202020202020202020202020202020202020202020202020202020202020202020201a1917130e0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070b0f111213131313131313131313131313131313131313131313131313131313131313131313131313131313130d0c0a0702000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 m_StreamData: + serializedVersion: 2 offset: 0 size: 0 path: diff --git a/Assets/Plugins/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Outline.mat b/Assets/Plugins/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Outline.mat index cca8ce89..8641035e 100644 --- a/Assets/Plugins/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Outline.mat +++ b/Assets/Plugins/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Outline.mat @@ -9,7 +9,7 @@ Material: m_PrefabAsset: {fileID: 0} m_Name: LiberationSans SDF - Outline m_Shader: {fileID: 4800000, guid: fe393ace9b354375a9cb14cdbbc28be4, type: 3} - m_ShaderKeywords: OUTLINE_ON + m_ShaderKeywords: ETC1_EXTERNAL_ALPHA OUTLINE_ON m_LightmapFlags: 5 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 @@ -102,3 +102,4 @@ Material: - _ReflectOutlineColor: {r: 0, g: 0, b: 0, a: 1} - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} - _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5} + m_BuildTextureStacks: [] diff --git a/Assets/Plugins/TextMesh Pro/Resources/Shaders/TMPro.cginc b/Assets/Plugins/TextMesh Pro/Resources/Shaders/TMPro.cginc index 58981304..728fcd5f 100644 --- a/Assets/Plugins/TextMesh Pro/Resources/Shaders/TMPro.cginc +++ b/Assets/Plugins/TextMesh Pro/Resources/Shaders/TMPro.cginc @@ -1,5 +1,5 @@ float2 UnpackUV(float uv) -{ +{ float2 output; output.x = floor(uv / 4096); output.y = uv - 4096 * output.x; @@ -9,7 +9,7 @@ float2 UnpackUV(float uv) fixed4 GetColor(half d, fixed4 faceColor, fixed4 outlineColor, half outline, half softness) { - half faceAlpha = 1-saturate((d - outline * 0.5 + softness * 0.5) / (1.0 + softness)); + half faceAlpha = 1 - saturate((d - outline * 0.5 + softness * 0.5) / (1.0 + softness)); half outlineAlpha = saturate((d + outline * 0.5)) * sqrt(min(1.0, outline)); faceColor.rgb *= faceColor.a; @@ -26,18 +26,18 @@ float3 GetSurfaceNormal(float4 h, float bias) { bool raisedBevel = step(1, fmod(_ShaderFlags, 2)); - h += bias+_BevelOffset; + h += bias + _BevelOffset; - float bevelWidth = max(.01, _OutlineWidth+_BevelWidth); + float bevelWidth = max(.01, _OutlineWidth + _BevelWidth); - // Track outline + // Track outline h -= .5; h /= bevelWidth; - h = saturate(h+.5); + h = saturate(h + .5); - if(raisedBevel) h = 1 - abs(h*2.0 - 1.0); - h = lerp(h, sin(h*3.141592/2.0), _BevelRoundness); - h = min(h, 1.0-_BevelClamp); + if(raisedBevel) h = 1 - abs(h * 2.0 - 1.0); + h = lerp(h, sin(h * 3.141592 / 2.0), _BevelRoundness); + h = min(h, 1.0 - _BevelClamp); h *= _Bevel * bevelWidth * _GradientScale * -2.0; float3 va = normalize(float3(1.0, 0.0, h.y - h.x)); @@ -49,10 +49,10 @@ float3 GetSurfaceNormal(float4 h, float bias) float3 GetSurfaceNormal(float2 uv, float bias, float3 delta) { // Read "height field" - float4 h = {tex2D(_MainTex, uv - delta.xz).a, - tex2D(_MainTex, uv + delta.xz).a, - tex2D(_MainTex, uv - delta.zy).a, - tex2D(_MainTex, uv + delta.zy).a}; + float4 h = {tex2D(_MainTex, uv - delta.xz).a, + tex2D(_MainTex, uv + delta.xz).a, + tex2D(_MainTex, uv - delta.zy).a, + tex2D(_MainTex, uv + delta.zy).a}; return GetSurfaceNormal(h, bias); } @@ -65,10 +65,10 @@ float3 GetSpecular(float3 n, float3 l) float4 GetGlowColor(float d, float scale) { - float glow = d - (_GlowOffset*_ScaleRatioB) * 0.5 * scale; + float glow = d - (_GlowOffset * _ScaleRatioB) * 0.5 * scale; float t = lerp(_GlowInner, (_GlowOuter * _ScaleRatioB), step(0.0, glow)) * 0.5 * scale; - glow = saturate(abs(glow/(1.0 + t))); - glow = 1.0-pow(glow, _GlowPower); + glow = saturate(abs(glow / (1.0 + t))); + glow = 1.0 - pow(glow, _GlowPower); glow *= sqrt(min(1.0, t)); // Fade off glow thinner than 1 screen pixel return float4(_GlowColor.rgb, saturate(_GlowColor.a * glow * 2)); } @@ -77,8 +77,7 @@ float4 BlendARGB(float4 overlying, float4 underlying) { overlying.rgb *= overlying.a; underlying.rgb *= underlying.a; - float3 blended = overlying.rgb + ((1-overlying.a)*underlying.rgb); - float alpha = underlying.a + (1-underlying.a)*overlying.a; + float3 blended = overlying.rgb + ((1 - overlying.a) * underlying.rgb); + float alpha = underlying.a + (1 - underlying.a) * overlying.a; return float4(blended, alpha); } - diff --git a/Assets/Plugins/TextMesh Pro/Resources/Shaders/TMPro_Properties.cginc b/Assets/Plugins/TextMesh Pro/Resources/Shaders/TMPro_Properties.cginc index 2e962588..2e34911b 100644 --- a/Assets/Plugins/TextMesh Pro/Resources/Shaders/TMPro_Properties.cginc +++ b/Assets/Plugins/TextMesh Pro/Resources/Shaders/TMPro_Properties.cginc @@ -1,85 +1,85 @@ // UI Editable properties -uniform sampler2D _FaceTex; // Alpha : Signed Distance -uniform float _FaceUVSpeedX; -uniform float _FaceUVSpeedY; -uniform fixed4 _FaceColor; // RGBA : Color + Opacity -uniform float _FaceDilate; // v[ 0, 1] -uniform float _OutlineSoftness; // v[ 0, 1] +uniform sampler2D _FaceTex; // Alpha : Signed Distance +uniform float _FaceUVSpeedX; +uniform float _FaceUVSpeedY; +uniform fixed4 _FaceColor; // RGBA : Color + Opacity +uniform float _FaceDilate; // v[ 0, 1] +uniform float _OutlineSoftness; // v[ 0, 1] -uniform sampler2D _OutlineTex; // RGBA : Color + Opacity -uniform float _OutlineUVSpeedX; -uniform float _OutlineUVSpeedY; -uniform fixed4 _OutlineColor; // RGBA : Color + Opacity -uniform float _OutlineWidth; // v[ 0, 1] +uniform sampler2D _OutlineTex; // RGBA : Color + Opacity +uniform float _OutlineUVSpeedX; +uniform float _OutlineUVSpeedY; +uniform fixed4 _OutlineColor; // RGBA : Color + Opacity +uniform float _OutlineWidth; // v[ 0, 1] -uniform float _Bevel; // v[ 0, 1] -uniform float _BevelOffset; // v[-1, 1] -uniform float _BevelWidth; // v[-1, 1] -uniform float _BevelClamp; // v[ 0, 1] -uniform float _BevelRoundness; // v[ 0, 1] +uniform float _Bevel; // v[ 0, 1] +uniform float _BevelOffset; // v[-1, 1] +uniform float _BevelWidth; // v[-1, 1] +uniform float _BevelClamp; // v[ 0, 1] +uniform float _BevelRoundness; // v[ 0, 1] -uniform sampler2D _BumpMap; // Normal map -uniform float _BumpOutline; // v[ 0, 1] -uniform float _BumpFace; // v[ 0, 1] +uniform sampler2D _BumpMap; // Normal map +uniform float _BumpOutline; // v[ 0, 1] +uniform float _BumpFace; // v[ 0, 1] -uniform samplerCUBE _Cube; // Cube / sphere map -uniform fixed4 _ReflectFaceColor; // RGB intensity -uniform fixed4 _ReflectOutlineColor; +uniform samplerCUBE _Cube; // Cube / sphere map +uniform fixed4 _ReflectFaceColor; // RGB intensity +uniform fixed4 _ReflectOutlineColor; //uniform float _EnvTiltX; // v[-1, 1] //uniform float _EnvTiltY; // v[-1, 1] -uniform float3 _EnvMatrixRotation; -uniform float4x4 _EnvMatrix; +uniform float3 _EnvMatrixRotation; +uniform float4x4 _EnvMatrix; -uniform fixed4 _SpecularColor; // RGB intensity -uniform float _LightAngle; // v[ 0,Tau] -uniform float _SpecularPower; // v[ 0, 1] -uniform float _Reflectivity; // v[ 5, 15] -uniform float _Diffuse; // v[ 0, 1] -uniform float _Ambient; // v[ 0, 1] +uniform fixed4 _SpecularColor; // RGB intensity +uniform float _LightAngle; // v[ 0,Tau] +uniform float _SpecularPower; // v[ 0, 1] +uniform float _Reflectivity; // v[ 5, 15] +uniform float _Diffuse; // v[ 0, 1] +uniform float _Ambient; // v[ 0, 1] -uniform fixed4 _UnderlayColor; // RGBA : Color + Opacity -uniform float _UnderlayOffsetX; // v[-1, 1] -uniform float _UnderlayOffsetY; // v[-1, 1] -uniform float _UnderlayDilate; // v[-1, 1] -uniform float _UnderlaySoftness; // v[ 0, 1] +uniform fixed4 _UnderlayColor; // RGBA : Color + Opacity +uniform float _UnderlayOffsetX; // v[-1, 1] +uniform float _UnderlayOffsetY; // v[-1, 1] +uniform float _UnderlayDilate; // v[-1, 1] +uniform float _UnderlaySoftness; // v[ 0, 1] -uniform fixed4 _GlowColor; // RGBA : Color + Intesity -uniform float _GlowOffset; // v[-1, 1] -uniform float _GlowOuter; // v[ 0, 1] -uniform float _GlowInner; // v[ 0, 1] -uniform float _GlowPower; // v[ 1, 1/(1+4*4)] +uniform fixed4 _GlowColor; // RGBA : Color + Intesity +uniform float _GlowOffset; // v[-1, 1] +uniform float _GlowOuter; // v[ 0, 1] +uniform float _GlowInner; // v[ 0, 1] +uniform float _GlowPower; // v[ 1, 1/(1+4*4)] // API Editable properties -uniform float _ShaderFlags; -uniform float _WeightNormal; -uniform float _WeightBold; +uniform float _ShaderFlags; +uniform float _WeightNormal; +uniform float _WeightBold; -uniform float _ScaleRatioA; -uniform float _ScaleRatioB; -uniform float _ScaleRatioC; +uniform float _ScaleRatioA; +uniform float _ScaleRatioB; +uniform float _ScaleRatioC; -uniform float _VertexOffsetX; -uniform float _VertexOffsetY; +uniform float _VertexOffsetX; +uniform float _VertexOffsetY; //uniform float _UseClipRect; -uniform float _MaskID; -uniform sampler2D _MaskTex; -uniform float4 _MaskCoord; -uniform float4 _ClipRect; // bottom left(x,y) : top right(z,w) +uniform float _MaskID; +uniform sampler2D _MaskTex; +uniform float4 _MaskCoord; +uniform float4 _ClipRect; // bottom left(x,y) : top right(z,w) //uniform float _MaskWipeControl; //uniform float _MaskEdgeSoftness; //uniform fixed4 _MaskEdgeColor; //uniform bool _MaskInverse; -uniform float _MaskSoftnessX; -uniform float _MaskSoftnessY; +uniform float _MaskSoftnessX; +uniform float _MaskSoftnessY; // Font Atlas properties -uniform sampler2D _MainTex; -uniform float _TextureWidth; -uniform float _TextureHeight; -uniform float _GradientScale; -uniform float _ScaleX; -uniform float _ScaleY; -uniform float _PerspectiveFilter; -uniform float _Sharpness; +uniform sampler2D _MainTex; +uniform float _TextureWidth; +uniform float _TextureHeight; +uniform float _GradientScale; +uniform float _ScaleX; +uniform float _ScaleY; +uniform float _PerspectiveFilter; +uniform float _Sharpness; diff --git a/Assets/Plugins/TextMesh Pro/Resources/Shaders/TMPro_Surface.cginc b/Assets/Plugins/TextMesh Pro/Resources/Shaders/TMPro_Surface.cginc index 9a58aef2..28350217 100644 --- a/Assets/Plugins/TextMesh Pro/Resources/Shaders/TMPro_Surface.cginc +++ b/Assets/Plugins/TextMesh Pro/Resources/Shaders/TMPro_Surface.cginc @@ -35,14 +35,13 @@ void VertShader(inout appdata_full v, out Input data) void PixShader(Input input, inout SurfaceOutput o) { - #if USE_DERIVATIVE | BEVEL_ON float3 delta = float3(1.0 / _TextureWidth, 1.0 / _TextureHeight, 0.0); - float4 smp4x = { tex2D(_MainTex, input.uv_MainTex - delta.xz).a, - tex2D(_MainTex, input.uv_MainTex + delta.xz).a, - tex2D(_MainTex, input.uv_MainTex - delta.zy).a, - tex2D(_MainTex, input.uv_MainTex + delta.zy).a }; + float4 smp4x = {tex2D(_MainTex, input.uv_MainTex - delta.xz).a, + tex2D(_MainTex, input.uv_MainTex + delta.xz).a, + tex2D(_MainTex, input.uv_MainTex - delta.zy).a, + tex2D(_MainTex, input.uv_MainTex + delta.zy).a}; #endif #if USE_DERIVATIVE @@ -63,8 +62,8 @@ void PixShader(Input input, inout SurfaceOutput o) // Signed distance float c = tex2D(_MainTex, input.uv_MainTex).a; float sd = (.5 - c - input.param.x) * scale + .5; - float outline = _OutlineWidth*_ScaleRatioA * scale; - float softness = _OutlineSoftness*_ScaleRatioA * scale; + float outline = _OutlineWidth * _ScaleRatioA * scale; + float softness = _OutlineSoftness * _ScaleRatioA * scale; // Color & Alpha float4 faceColor = _FaceColor; diff --git a/Assets/Plugins/UCommandConsole/Scripts/Attributes/CommandArgumentAttribute.cs b/Assets/Plugins/UCommandConsole/Scripts/Attributes/CommandArgumentAttribute.cs index 979b5743..3be516d3 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/Attributes/CommandArgumentAttribute.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/Attributes/CommandArgumentAttribute.cs @@ -1,30 +1,26 @@ using System; using UCommandConsole.Exceptions; -namespace UCommandConsole.Attributes -{ +namespace UCommandConsole.Attributes { [AttributeUsage(AttributeTargets.Property)] - public class CommandArgumentAttribute : Attribute, IParameterInfo - { + public class CommandArgumentAttribute : Attribute, IParameterInfo { private Type customParser; - public Type CustomParser - { - set - { - if (!typeof(TypeParser).IsAssignableFrom(value)) - { + + public CommandArgumentAttribute(ParameterType parameterType = ParameterType.Required) { + Required = parameterType == ParameterType.Required; + } + + public Type CustomParser { + set { + if (!typeof(TypeParser).IsAssignableFrom(value)) { throw new TypeMismatchException(typeof(TypeParser), value); } + customParser = value; } get => customParser; } public bool Required { get; } - - public CommandArgumentAttribute(ParameterType parameterType = ParameterType.Required) - { - this.Required = parameterType == ParameterType.Required; - } } } \ No newline at end of file diff --git a/Assets/Plugins/UCommandConsole/Scripts/Attributes/CommandPropertyAttribute.cs b/Assets/Plugins/UCommandConsole/Scripts/Attributes/CommandPropertyAttribute.cs index 33409a37..b46046b5 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/Attributes/CommandPropertyAttribute.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/Attributes/CommandPropertyAttribute.cs @@ -1,28 +1,25 @@ using System; using UCommandConsole.Exceptions; -namespace UCommandConsole.Attributes -{ +namespace UCommandConsole.Attributes { [AttributeUsage(AttributeTargets.Property)] - public class CommandPropertyAttribute : Attribute, IParameterInfo - { - public Type CustomParser { get; } - - public bool Required => false; - - public CommandPropertyAttribute() - { - this.CustomParser = null; + public class CommandPropertyAttribute : Attribute, IParameterInfo { + public CommandPropertyAttribute() { + CustomParser = null; } - public CommandPropertyAttribute(Type customParserType) - { - if (!typeof(TypeParser).IsAssignableFrom(customParserType)) - { + public CommandPropertyAttribute(Type customParserType) { + if (!typeof(TypeParser).IsAssignableFrom(customParserType)) { throw new TypeMismatchException(typeof(TypeParser), customParserType); } - this.CustomParser = customParserType; + CustomParser = customParserType; + } + + public Type CustomParser { get; } + + public bool Required { + get => false; } } } \ No newline at end of file diff --git a/Assets/Plugins/UCommandConsole/Scripts/Attributes/IgnoreHistoryAttribute.cs b/Assets/Plugins/UCommandConsole/Scripts/Attributes/IgnoreHistoryAttribute.cs index 0351e1e1..df77bbc0 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/Attributes/IgnoreHistoryAttribute.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/Attributes/IgnoreHistoryAttribute.cs @@ -1,10 +1,6 @@ using System; -namespace UCommandConsole.Attributes -{ - +namespace UCommandConsole.Attributes { [AttributeUsage(AttributeTargets.Class)] - public class IgnoreHistoryAttribute : Attribute - { - } + public class IgnoreHistoryAttribute : Attribute { } } \ No newline at end of file diff --git a/Assets/Plugins/UCommandConsole/Scripts/Attributes/ParameterType.cs b/Assets/Plugins/UCommandConsole/Scripts/Attributes/ParameterType.cs index a7fcbc14..6f12b3bc 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/Attributes/ParameterType.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/Attributes/ParameterType.cs @@ -1,7 +1,5 @@ -namespace UCommandConsole -{ - public enum ParameterType - { +namespace UCommandConsole { + public enum ParameterType { Required, Optional } diff --git a/Assets/Plugins/UCommandConsole/Scripts/Command.cs b/Assets/Plugins/UCommandConsole/Scripts/Command.cs index 8687c435..c155dbb4 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/Command.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/Command.cs @@ -1,27 +1,23 @@ using UCommandConsole.Models; -namespace UCommandConsole -{ - public abstract class Command - { +namespace UCommandConsole { + public abstract class Command { public CommandContext Context { get; set; } public CommandParser CurrentParser { get; set; } public abstract string GetName(); + public abstract void Execute(Console host); - public virtual void Parameterize() - { + public virtual void Parameterize() { CommandBuilder.Parameterize(this, CurrentParser); } - public virtual void BuildParameters() - { + public virtual void BuildParameters() { CommandBuilder.BuildParameterDictionary(this); } - public virtual void Undo(Console host) - { + public virtual void Undo(Console host) { host.output.Print($"Undid command {GetName()} without applying any changes"); } } diff --git a/Assets/Plugins/UCommandConsole/Scripts/CommandBuilder.cs b/Assets/Plugins/UCommandConsole/Scripts/CommandBuilder.cs index 39f965f1..ca434193 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/CommandBuilder.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/CommandBuilder.cs @@ -5,46 +5,39 @@ using UCommandConsole.Exceptions; using UCommandConsole.Models; -namespace UCommandConsole -{ - internal static class CommandBuilder - { - internal static void Parameterize(Command command, CommandParser parser) - { +namespace UCommandConsole { + internal static class CommandBuilder { + internal static void Parameterize(Command command, CommandParser parser) { var position = 1; - foreach (var item in command.Context.arguments) - { + foreach (var item in command.Context.arguments) { var argument = item.Value; var argumentContext = argument.Context; parser.RemovePadding(); - if (parser.IsEOF) - { - if (argumentContext.Required) - { + if (parser.IsEOF) { + if (argumentContext.Required) { var message = $"Required argument with name: \"{item.Key}\" is not set"; + throw new ParameterizationException(message); } - else return; + + return; } - try - { + try { TypeParser typeParser = null; - if (argumentContext.CustomParser != null) - { + if (argumentContext.CustomParser != null) { typeParser = parser.context.GetTypeParser(argumentContext.CustomParser); } var parsedObj = parser.AsValue(argumentContext.PropertyType, typeParser); argument.SetValue(command, parsedObj); - } - catch (InputFormatException e) - { + } catch (InputFormatException e) { var message = $"Error while parsing property {item.Key} (parameter position: {position}): {e.Message}"; + throw new ParameterizationException(message); } @@ -52,15 +45,12 @@ internal static void Parameterize(Command command, CommandParser parser) } } - internal static void Build(Command command) - { + internal static void Build(Command command) { var commandType = command.GetType(); - var commandContext = new CommandContext - { - info = new CommandInfo - { - ignoresHistory = commandType.IsDefined(typeof(IgnoreHistoryAttribute), false), + var commandContext = new CommandContext { + info = new CommandInfo { + ignoresHistory = commandType.IsDefined(typeof(IgnoreHistoryAttribute), false) }, arguments = new Dictionary(), properties = new Dictionary() @@ -70,29 +60,26 @@ internal static void Build(Command command) command.BuildParameters(); } - internal static void BuildParameterDictionary(Command command) - { + internal static void BuildParameterDictionary(Command command) { var propertyType = command.GetType(); + var props = propertyType.GetProperties() - .Where((prop) => prop.CanWrite && prop.CanRead); + .Where(prop => prop.CanWrite && prop.CanRead); ICommandParameter previousParameter = null; - foreach (var prop in props) - { + foreach (var prop in props) { HandleCommandProp(command, prop, out var parameter); - if (parameter != null) - { - if (previousParameter != null) - { + if (parameter != null) { + if (previousParameter != null) { var prevRequired = previousParameter.Context.Required; var currRequired = parameter.Context.Required; - if (!prevRequired && currRequired) - { + if (!prevRequired && currRequired) { var prevName = previousParameter.Context.Name; var message = $"Required parameter: \"{prop.Name}\" is preceded by a non required parameter: \"{prevName}\""; + throw new CommandParameterException(message, prop.Name); } } @@ -102,43 +89,39 @@ internal static void BuildParameterDictionary(Command command) } } - internal static void HandleCommandProp(Command command, PropertyInfo prop, out ICommandParameter parameter) - { + internal static void HandleCommandProp(Command command, PropertyInfo prop, out ICommandParameter parameter) { parameter = null; var definedArgument = prop.IsDefined(typeof(CommandArgumentAttribute), false); var definedProperty = prop.IsDefined(typeof(CommandPropertyAttribute), false); - if (definedArgument && definedProperty) - { + if (definedArgument && definedProperty) { var message = "Command parameter cannot be defined as argument and property simultaneously"; + throw new CommandParameterException(message, prop.Name); } - if (definedArgument) - { + if (definedArgument) { var attribute = prop.GetCustomAttribute(); parameter = GetCommandParameter(command, prop, attribute); command.Context.arguments[prop.Name] = parameter; } - if (definedProperty) - { + if (definedProperty) { var attribute = prop.GetCustomAttribute(); parameter = GetCommandParameter(command, prop, attribute); command.Context.properties[prop.Name] = parameter; } } - internal static ICommandParameter GetCommandParameter(Command command, PropertyInfo prop, IParameterInfo parameterInfo) - { - var context = new ParameterContext(prop.PropertyType) - { + internal static ICommandParameter GetCommandParameter(Command command, PropertyInfo prop, IParameterInfo parameterInfo) { + var context = new ParameterContext(prop.PropertyType) { CustomParser = parameterInfo.CustomParser, Required = parameterInfo.Required }; var parameter = new CommandParameter(context, prop.GetValue, prop.SetValue); + return parameter; } } diff --git a/Assets/Plugins/UCommandConsole/Scripts/CommandContainer.cs b/Assets/Plugins/UCommandConsole/Scripts/CommandContainer.cs index c9736759..08a27a65 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/CommandContainer.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/CommandContainer.cs @@ -2,40 +2,37 @@ using System.Collections.Generic; using UCommandConsole.Models; -namespace UCommandConsole -{ - public class CommandContainer - { - private Console host; - private Stack commandHistory; - private Dictionary> commandGetters; - - public int Count => commandGetters.Count; - public Dictionary commandContext { get; } +namespace UCommandConsole { + public class CommandContainer { + private readonly Dictionary> commandGetters; + private readonly Stack commandHistory; + private readonly Console host; - public CommandContainer(Console host) - { + public CommandContainer(Console host) { this.host = host; - this.commandHistory = new Stack(); - this.commandGetters = new Dictionary>(StringComparer.OrdinalIgnoreCase); - this.commandContext = new Dictionary(StringComparer.OrdinalIgnoreCase); + commandHistory = new Stack(); + commandGetters = new Dictionary>(StringComparer.OrdinalIgnoreCase); + commandContext = new Dictionary(StringComparer.OrdinalIgnoreCase); AddCommands(); } - protected void AddCommands() - { + public int Count { + get => commandGetters.Count; + } + + public Dictionary commandContext { get; } + + protected void AddCommands() { AddGetter(() => new UndoCommand()); AddGetter(() => new HelpCommand()); } - public void AddGetter(Func commandGetter) - { + public void AddGetter(Func commandGetter) { var command = commandGetter(); var commandName = command.GetName(); - if (ContainsCommand(commandName)) - { + if (ContainsCommand(commandName)) { throw new Exception($"Attempted to add a command with duplicate name: {commandName}"); } @@ -45,35 +42,32 @@ public void AddGetter(Func commandGetter) commandContext[commandName] = command.Context; } - public void AddToHistory(Command command) - { + public void AddToHistory(Command command) { commandHistory.Push(command); } - public Command Undo() - { + public Command Undo() { var command = commandHistory.Pop(); command.Undo(host); + return command; } - public Command PopFromHistory() - { + public Command PopFromHistory() { return commandHistory.Pop(); } - public bool ContainsCommand(string name) - { + public bool ContainsCommand(string name) { return commandGetters.ContainsKey(name); } - public Command GetCommand(string name) - { + public Command GetCommand(string name) { // Create new command var command = commandGetters[name](); // Assign the stateless context command.Context = commandContext[name]; + return command; } } diff --git a/Assets/Plugins/UCommandConsole/Scripts/CommandOutputContainer.cs b/Assets/Plugins/UCommandConsole/Scripts/CommandOutputContainer.cs index 7636db55..9f21a20a 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/CommandOutputContainer.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/CommandOutputContainer.cs @@ -1,10 +1,8 @@ using UnityEngine; using UnityEngine.UI; -namespace UCommandConsole -{ - public class CommandOutputContainer : MonoBehaviour - { +namespace UCommandConsole { + public class CommandOutputContainer : MonoBehaviour { public Text timestamp; public Transform lineContainer; } diff --git a/Assets/Plugins/UCommandConsole/Scripts/CommandParser.cs b/Assets/Plugins/UCommandConsole/Scripts/CommandParser.cs index ac595d78..64e673b9 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/CommandParser.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/CommandParser.cs @@ -3,101 +3,84 @@ using System.IO; using UCommandConsole.Exceptions; -namespace UCommandConsole -{ - public class CommandParser - { +namespace UCommandConsole { + public class CommandParser { public CommandParserContext context; private StringReader reader; + public CommandParser(string value, CommandParserContext parserContext) { + context = parserContext; + Parse(value); + } + public bool IsEOF { get; private set; } public bool CurrentCharIsNegated { get; private set; } public char CurrentChar { get; private set; } - public CommandParser(string value, CommandParserContext parserContext) - { - this.context = parserContext; - Parse(value); - } - - public void Parse(string value) - { + public void Parse(string value) { reader = new StringReader(value); NextChar(); } - public T AsValue(CustomTypeParser typeParser = null) - { - return (T)AsValue(typeof(T), typeParser); + public T AsValue(CustomTypeParser typeParser = null) { + return (T) AsValue(typeof(T), typeParser); } - public object AsValue(Type valueType, TypeParser typeParser = null) - { - try - { + public object AsValue(Type valueType, TypeParser typeParser = null) { + try { return (typeParser ?? context.GetDefaultTypeParser(valueType)).ParseAsObject(this); - } - catch (KeyNotFoundException e) - { + } catch (KeyNotFoundException e) { throw new ArgumentException($"Type {valueType} is not supported", e); } } - public bool Matches(char expectedChar, bool removePadding = false) - { - if (removePadding) - { + public bool Matches(char expectedChar, bool removePadding = false) { + if (removePadding) { RemovePadding(); } return expectedChar == CurrentChar && !CurrentCharIsNegated; } - public void Require(char requiredChar, bool removePadding = false) - { + public void Require(char requiredChar, bool removePadding = false) { var foundChar = Matches(requiredChar, removePadding); NextChar(); - if (!foundChar) - { + if (!foundChar) { throw new InputFormatException($"Required char [{requiredChar}] but received [{CurrentChar}]"); } } - public void RemovePadding() - { - while (char.IsWhiteSpace(CurrentChar) && !IsEOF) - { + public void RemovePadding() { + while (char.IsWhiteSpace(CurrentChar) && !IsEOF) { NextChar(); } } - public char NextChar() - { + public char NextChar() { // Go to next character and get wether or not the character marks EOF var charIsValid = ReadChar(); CurrentCharIsNegated = false; // If the character is a backslash, ignore it - if (CurrentChar == '\\') - { + if (CurrentChar == '\\') { charIsValid = ReadChar(); CurrentCharIsNegated = true; } IsEOF = !charIsValid; + return CurrentChar; } - private bool ReadChar() - { + private bool ReadChar() { var charInt = reader.Read(); var charIsValid = charInt >= 0; CurrentChar = charIsValid - ? (char)charInt + ? (char) charInt : '\0'; return charIsValid; diff --git a/Assets/Plugins/UCommandConsole/Scripts/CommandParserContext.cs b/Assets/Plugins/UCommandConsole/Scripts/CommandParserContext.cs index 06b1d043..7d99eca2 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/CommandParserContext.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/CommandParserContext.cs @@ -3,15 +3,12 @@ using UCommandConsole.TypeParsers; using UnityEngine; -namespace UCommandConsole -{ - public class CommandParserContext : MonoBehaviour - { +namespace UCommandConsole { + public class CommandParserContext : MonoBehaviour { protected Dictionary defaultParsers; protected Dictionary parserInstances; - protected virtual void Awake() - { + protected virtual void Awake() { defaultParsers = new Dictionary(); parserInstances = new Dictionary(); @@ -22,22 +19,18 @@ protected virtual void Awake() } public void AddDefaultParser() - where T : TypeParser - { + where T : TypeParser { var typeParser = Activator.CreateInstance(); defaultParsers.Add(typeParser.Target, typeParser); parserInstances.Add(typeof(T), typeParser); } - public TypeParser GetDefaultTypeParser(Type parserType) - { + public TypeParser GetDefaultTypeParser(Type parserType) { return defaultParsers[parserType]; } - public TypeParser GetTypeParser(Type parserType) - { - if (!parserInstances.ContainsKey(parserType)) - { + public TypeParser GetTypeParser(Type parserType) { + if (!parserInstances.ContainsKey(parserType)) { var typeParser = Activator.CreateInstance(parserType) as TypeParser; parserInstances.Add(parserType, typeParser); } diff --git a/Assets/Plugins/UCommandConsole/Scripts/Commands/GetCommand.cs b/Assets/Plugins/UCommandConsole/Scripts/Commands/GetCommand.cs index b8f14eff..9f964349 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/Commands/GetCommand.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/Commands/GetCommand.cs @@ -1,15 +1,14 @@ using System; using UCommandConsole.Attributes; -namespace UCommandConsole -{ +namespace UCommandConsole { [IgnoreHistory] - internal class GetCommand : Command - { - public override string GetName() => "get"; - - public override void Execute(Console host) - { + internal class GetCommand : Command { + public override string GetName() { + return "get"; + } + + public override void Execute(Console host) { throw new NotImplementedException(); } } diff --git a/Assets/Plugins/UCommandConsole/Scripts/Commands/HelpCommand.cs b/Assets/Plugins/UCommandConsole/Scripts/Commands/HelpCommand.cs index 685d1b16..57b2d0a5 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/Commands/HelpCommand.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/Commands/HelpCommand.cs @@ -2,58 +2,52 @@ using UCommandConsole.Attributes; using UCommandConsole.TypeParsers; -namespace UCommandConsole -{ +namespace UCommandConsole { [IgnoreHistory] - public class HelpCommand : Command - { - [CommandArgument(ParameterType.Optional, CustomParser = typeof(StringLiteralParser))] + public class HelpCommand : Command { + [CommandArgument(ParameterType.Optional, CustomParser = typeof(StringLiteralParser))] public string CommandName { get; set; } - public override void Execute(Console host) - { - if (CommandName == default) HandleCommand(host); - else HandleCommandName(host); + public override void Execute(Console host) { + if (CommandName == default) { + HandleCommand(host); + } else { + HandleCommandName(host); + } } - public override string GetName() - { + public override string GetName() { return "help"; } - private void HandleCommand(Console host) - { + private void HandleCommand(Console host) { host.output.Print($"Availible commands: {host.Container.Count}", OutputColor.accent); - foreach (var item in host.Container.commandContext) - { + + foreach (var item in host.Container.commandContext) { var commandName = item.Key; var argumentFormat = item.Value.GetArgumentFormat(); host.output.Print($"{commandName}: {argumentFormat}", 1, OutputColor.accent, true); } } - private void HandleCommandName(Console host) - { + private void HandleCommandName(Console host) { var context = host.Container.commandContext[CommandName]; host.output.Print($"Command: {CommandName}", OutputColor.accent); host.output.Print($"arguments: {context.GetArgumentFormat()}", 1, OutputColor.accent, true); PrintParameters(host, context.properties, "properties"); } - private void PrintParameters(Console host, Dictionary dictionary, string name) - { + private void PrintParameters(Console host, Dictionary dictionary, string name) { var argumentCount = dictionary.Count; - var argumentCountString = (argumentCount > 0 ? argumentCount.ToString() : "none"); + var argumentCountString = argumentCount > 0 ? argumentCount.ToString() : "none"; host.output.Print($"{name}: {argumentCountString}", 1, OutputColor.accent, true); - foreach (var item in dictionary) - { + foreach (var item in dictionary) { PrintProperty(host, item.Key, item.Value); } } - private void PrintProperty(Console host, string propName, ICommandParameter property) - { + private void PrintProperty(Console host, string propName, ICommandParameter property) { var propHasCustomParser = property.Context.CustomParser != null; var parserContext = CurrentParser.context; @@ -63,8 +57,7 @@ private void PrintProperty(Console host, string propName, ICommandParameter prop var message = $"{propName}: {property.Context.PropertyType.Name} (Format: {typeParser.GetFormatString()})"; - if (propHasCustomParser) - { + if (propHasCustomParser) { message = $"{message} (Custom parser: {property.Context.CustomParser.Name})"; } diff --git a/Assets/Plugins/UCommandConsole/Scripts/Commands/MethodCommand.cs b/Assets/Plugins/UCommandConsole/Scripts/Commands/MethodCommand.cs index 96bab24e..92974708 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/Commands/MethodCommand.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/Commands/MethodCommand.cs @@ -4,73 +4,59 @@ using System.Reflection; using UCommandConsole.Attributes; -namespace UCommandConsole -{ +namespace UCommandConsole { [IgnoreHistory] - public class MethodCommand : Command - { - private string name = ""; - private MethodInfo methodInfo; - private object target; + public class MethodCommand : Command { + private readonly MethodInfo methodInfo; + private readonly string name = ""; + private readonly object target; - public override string GetName() - { - if (name != "") return name; - return methodInfo.Name; - } - - public Dictionary Arguments { get; } - - public MethodCommand(object target, MethodInfo methodInfo) - { + public MethodCommand(object target, MethodInfo methodInfo) { this.target = target; this.methodInfo = methodInfo; - this.Arguments = new Dictionary(); + Arguments = new Dictionary(); } public MethodCommand(object target, string methodName) - : this(target, target.GetType().GetMethod(methodName)) - { - } + : this(target, target.GetType().GetMethod(methodName)) { } public MethodCommand(object target, MethodInfo methodInfo, string name) - : this(target, methodInfo) - { + : this(target, methodInfo) { this.name = name; } public MethodCommand(object target, string methodName, string name) - : this(target, target.GetType().GetMethod(methodName), name) - { + : this(target, target.GetType().GetMethod(methodName), name) { } + + public Dictionary Arguments { get; } + + public override string GetName() { + if (name != "") { + return name; + } + + return methodInfo.Name; } - public override void Execute(Console host) - { + public override void Execute(Console host) { var values = Context.arguments.Values - .Select((prop) => prop.GetValue(this)) + .Select(prop => prop.GetValue(this)) .ToArray(); methodInfo.Invoke(target, values); } - public override void BuildParameters() - { - foreach (var parameterInfo in methodInfo.GetParameters()) - { + public override void BuildParameters() { + foreach (var parameterInfo in methodInfo.GetParameters()) { var parameterName = parameterInfo.Name; - var argumentContext = new MethodArgumentContext - { + + var argumentContext = new MethodArgumentContext { PropertyType = parameterInfo.ParameterType, Name = parameterInfo.Name }; - Func getter = (target) => - { - return (target as MethodCommand).Arguments[parameterName]; - }; - Action setter = (target, value) => - { - (target as MethodCommand).Arguments[parameterName] = value; - }; + + Func getter = target => { return (target as MethodCommand).Arguments[parameterName]; }; + Action setter = (target, value) => { (target as MethodCommand).Arguments[parameterName] = value; }; Context.arguments[parameterInfo.Name] = new CommandParameter(argumentContext, getter, setter); } } diff --git a/Assets/Plugins/UCommandConsole/Scripts/Commands/TestCommand.cs b/Assets/Plugins/UCommandConsole/Scripts/Commands/TestCommand.cs index 588ff3cf..e0c887af 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/Commands/TestCommand.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/Commands/TestCommand.cs @@ -1,16 +1,15 @@ using UCommandConsole.Attributes; using UCommandConsole.TypeParsers; -namespace UCommandConsole -{ - public class TestCommand : Command - { - public override string GetName() => "test"; - +namespace UCommandConsole { + public class TestCommand : Command { [CommandArgument(CustomParser = typeof(StringLiteralParser))] public string Val { get; set; } - public override void Execute(Console host) - { + public override string GetName() { + return "test"; + } + + public override void Execute(Console host) { host.output.Print($"Val value: {Val}", OutputColor.accent); } } diff --git a/Assets/Plugins/UCommandConsole/Scripts/Commands/UndoCommand.cs b/Assets/Plugins/UCommandConsole/Scripts/Commands/UndoCommand.cs index 8f56680b..100fe4b5 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/Commands/UndoCommand.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/Commands/UndoCommand.cs @@ -1,20 +1,18 @@ using System; using UCommandConsole.Attributes; -namespace UCommandConsole -{ +namespace UCommandConsole { [IgnoreHistory] - internal class UndoCommand : Command - { - public override string GetName() => "undo"; + internal class UndoCommand : Command { + public override string GetName() { + return "undo"; + } - public override void Execute(Console host) - { + public override void Execute(Console host) { host.Container.Undo(); } - public override void Undo(Console host) - { + public override void Undo(Console host) { throw new Exception("An undo command cannot be undone"); } } diff --git a/Assets/Plugins/UCommandConsole/Scripts/Console.cs b/Assets/Plugins/UCommandConsole/Scripts/Console.cs index 8ae59ae6..89cc73c5 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/Console.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/Console.cs @@ -3,12 +3,10 @@ using UCommandConsole.TypeParsers; using UnityEngine; -namespace UCommandConsole -{ +namespace UCommandConsole { // TODO: Add named arguments // TODO: Add command output as command - public class Console : MonoBehaviour - { + public class Console : MonoBehaviour { [Header("References")] public ConsoleOutput output; public ConsoleInput input; @@ -16,93 +14,78 @@ public class Console : MonoBehaviour public CommandContainer Container { get; set; } - public void Initialize() - { + public void Initialize() { Container = new CommandContainer(this); } - public void OnSubmit(string input) - { + public void OnSubmit(string input) { output.BeginPrint($"Command output: {input}"); - void HandleException(Exception e, string message) - { + void HandleException(Exception e, string message) { output.Print(message, OutputColor.error); output.DumpExceptionLogRecursively(e); } // Run command - try - { + try { output.Print($"> {input}"); Run(input); - } - catch (InputFormatException e) - { + } catch (InputFormatException e) { HandleException(e, "Unhandled exception encoutered while parsing command string"); - } - catch (Exception e) - { + } catch (Exception e) { HandleException(e, "Unhandled exception encoutered while executing command"); } output.EndPrint(); } - public bool Run(string commandString) - { + public bool Run(string commandString) { var parser = new CommandParser(commandString, parserContext); var commandName = parser.AsValue(new StringLiteralParser()); // Select command - if (!Container.ContainsCommand(commandName)) - { + if (!Container.ContainsCommand(commandName)) { output.Print($"Command: \"{commandName}\" doesn't exist", OutputColor.warning); + return false; } var command = Container.GetCommand(commandName); + return Run(command, parser); } - protected bool Run(Command command, CommandParser parser) - { + protected bool Run(Command command, CommandParser parser) { command.CurrentParser = parser; // Parameterize - try - { + try { command.Parameterize(); - } - catch (ParameterizationException e) - { + } catch (ParameterizationException e) { output.Print(e.Message, OutputColor.warning); + return false; - } - catch (Exception e) - { + } catch (Exception e) { throw new InputFormatException($"Unhandled error while parsing parameters on command: \"{name}\"", e); } // Execute - try - { + try { command.Execute(this); - } - catch(Exception e) - { + } catch (Exception e) { output.Print("Encountered an exception while executing command"); output.DumpExceptionLogRecursively(e); + return false; } // Add command history to queue - if (!command.Context.info.ignoresHistory) - { + if (!command.Context.info.ignoresHistory) { Container.AddToHistory(command); } command.CurrentParser = null; + return true; } } diff --git a/Assets/Plugins/UCommandConsole/Scripts/ConsoleInput.cs b/Assets/Plugins/UCommandConsole/Scripts/ConsoleInput.cs index 7d6e4e70..e91574d4 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/ConsoleInput.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/ConsoleInput.cs @@ -7,15 +7,11 @@ using UnityEngine.UI; using static UnityEngine.InputSystem.InputAction; -namespace UCommandConsole -{ +namespace UCommandConsole { [Serializable] - public class OutputEvent : UnityEvent - { - } + public class OutputEvent : UnityEvent { } - public class ConsoleInput : MonoBehaviour - { + public class ConsoleInput : MonoBehaviour { [Space] [SerializeField] private InputField inputField; @@ -25,34 +21,31 @@ public class ConsoleInput : MonoBehaviour [Space] public OutputEvent submit = new OutputEvent(); - private void Awake() - { + private void Awake() { submitAction.performed += OnSubmit; } - public void Focus() - { - inputField.ActivateInputField(); - } - - private void OnEnable() - { + private void OnEnable() { submitAction.Enable(); Focus(); } - private void OnDisable() - { + private void OnDisable() { submitAction.Disable(); } - private void OnSubmit(CallbackContext context) - { - if (!inputField.isFocused) return; + public void Focus() { + inputField.ActivateInputField(); + } + + private void OnSubmit(CallbackContext context) { + if (!inputField.isFocused) { + return; + } - if (inputField.text == "") - { + if (inputField.text == "") { inputField.ActivateInputField(); + return; } diff --git a/Assets/Plugins/UCommandConsole/Scripts/ConsoleOutput.cs b/Assets/Plugins/UCommandConsole/Scripts/ConsoleOutput.cs index 8cc4e625..d0360a81 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/ConsoleOutput.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/ConsoleOutput.cs @@ -4,18 +4,15 @@ using System.Collections.Generic; using UnityEngine; -namespace UCommandConsole -{ - public enum OutputColor - { +namespace UCommandConsole { + public enum OutputColor { normal, error, warning, - accent, + accent } - public class ConsoleOutput : MonoBehaviour - { + public class ConsoleOutput : MonoBehaviour { [Header("References")] [SerializeField] private Transform outputContent; [SerializeField] private GameObject commandOutputContainerPrefab; @@ -33,38 +30,35 @@ public class ConsoleOutput : MonoBehaviour [Header("Settings")] [SerializeField] private int OutputSize = 100; - [SerializeField] private bool dumpExceptionMessage = false; - [SerializeField] private bool dumpExceptionStackTrace = false; - [SerializeField] private bool dumpInnerException = false; + [SerializeField] private bool dumpExceptionMessage; + [SerializeField] private bool dumpExceptionStackTrace; + [SerializeField] private bool dumpInnerException; + private readonly Queue outputContainersQueue = new Queue(); + private CommandOutputContainer currentContainer; - private bool encapsulatingPrintCalls = false; - private Queue outputContainersQueue = new Queue(); - private CommandOutputContainer currentContainer = null; + private bool encapsulatingPrintCalls; - public void Clear() - { + public void Clear() { currentContainer = null; - while (outputContainersQueue.Count != 0) - { + + while (outputContainersQueue.Count != 0) { var container = outputContainersQueue.Dequeue(); Destroy(container.gameObject); } } - public void DumpExceptionLogRecursively(Exception e, int indentationLevel = 1) - { - if (dumpExceptionMessage) - { + public void DumpExceptionLogRecursively(Exception e, int indentationLevel = 1) { + if (dumpExceptionMessage) { var message = $"Exception Message: {e.Message}"; Print(message, indentationLevel, OutputColor.error, true); } - if (dumpExceptionStackTrace) - { + + if (dumpExceptionStackTrace) { var message = $"Exception StackTrace: {e.StackTrace}".Replace(" ", ""); Print(message, indentationLevel, OutputColor.error, true); } - if (dumpInnerException && e.InnerException != null) - { + + if (dumpInnerException && e.InnerException != null) { indentationLevel++; var message = "Inner exception:"; Print(message, indentationLevel, OutputColor.error, true); @@ -72,8 +66,7 @@ public void DumpExceptionLogRecursively(Exception e, int indentationLevel = 1) } } - public void BeginPrint(string name) - { + public void BeginPrint(string name) { encapsulatingPrintCalls = true; var containerGO = Instantiate(commandOutputContainerPrefab, outputContent); @@ -85,23 +78,19 @@ public void BeginPrint(string name) currentContainer = container; outputContainersQueue.Enqueue(container); - if (outputContainersQueue.Count > OutputSize) - { + if (outputContainersQueue.Count > OutputSize) { var oldContainer = outputContainersQueue.Dequeue(); Destroy(oldContainer.gameObject); } } - public void EndPrint() - { + public void EndPrint() { encapsulatingPrintCalls = false; currentContainer = null; } - public void Print(string line, int indentationLevel, Color color) - { - if (!encapsulatingPrintCalls) - { + public void Print(string line, int indentationLevel, Color color) { + if (!encapsulatingPrintCalls) { throw new Exception("Begin print must be called before any print calls"); } @@ -112,20 +101,16 @@ public void Print(string line, int indentationLevel, Color color) outputLine.text.color = color; } - public void Print(string line, int indentationLevel, OutputColor color = OutputColor.normal, bool dark = false) - { + public void Print(string line, int indentationLevel, OutputColor color = OutputColor.normal, bool dark = false) { Print(line, indentationLevel, GetColor(color, dark)); } - public void Print(string line, OutputColor color = OutputColor.normal, bool dark = false) - { + public void Print(string line, OutputColor color = OutputColor.normal, bool dark = false) { Print(line, 0, GetColor(color, dark)); } - private Color GetColor(OutputColor outputColor, bool dark) - { - switch (outputColor) - { + private Color GetColor(OutputColor outputColor, bool dark) { + switch (outputColor) { case OutputColor.normal: return dark ? darkDefaultColor : defaultColor; diff --git a/Assets/Plugins/UCommandConsole/Scripts/ConsoleOutputLine.cs b/Assets/Plugins/UCommandConsole/Scripts/ConsoleOutputLine.cs index b2414ff5..d9f4b430 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/ConsoleOutputLine.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/ConsoleOutputLine.cs @@ -3,18 +3,14 @@ using UnityEngine; using UnityEngine.UI; -namespace UCommandConsole -{ - public class ConsoleOutputLine : MonoBehaviour - { +namespace UCommandConsole { + public class ConsoleOutputLine : MonoBehaviour { public Text text; [SerializeField] private LayoutElement indentationLayoutElement; - public int Indentation - { - set - { + public int Indentation { + set { var width = value * 16; indentationLayoutElement.minWidth = width; indentationLayoutElement.preferredWidth = width; diff --git a/Assets/Plugins/UCommandConsole/Scripts/Exceptions/CommandParameterException.cs b/Assets/Plugins/UCommandConsole/Scripts/Exceptions/CommandParameterException.cs index 9b6ed953..4254b7b5 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/Exceptions/CommandParameterException.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/Exceptions/CommandParameterException.cs @@ -1,11 +1,8 @@ using System; -namespace UCommandConsole.Exceptions -{ - public class CommandParameterException : ArgumentException - { - public CommandParameterException() - : base() { } +namespace UCommandConsole.Exceptions { + public class CommandParameterException : ArgumentException { + public CommandParameterException() { } public CommandParameterException(string message) : base(message) { } @@ -15,6 +12,7 @@ public CommandParameterException(string message, Exception innerException) public CommandParameterException(string message, string paramName) : base(message, paramName) { } + public CommandParameterException(string message, string paramName, Exception innerException) : base(message, paramName, innerException) { } } diff --git a/Assets/Plugins/UCommandConsole/Scripts/Exceptions/InputFormatException.cs b/Assets/Plugins/UCommandConsole/Scripts/Exceptions/InputFormatException.cs index 566830dd..ed2c4086 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/Exceptions/InputFormatException.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/Exceptions/InputFormatException.cs @@ -1,11 +1,8 @@ using System; -namespace UCommandConsole.Exceptions -{ - public class InputFormatException : Exception - { - public InputFormatException() - : base() { } +namespace UCommandConsole.Exceptions { + public class InputFormatException : Exception { + public InputFormatException() { } public InputFormatException(string message) : base(message) { } diff --git a/Assets/Plugins/UCommandConsole/Scripts/Exceptions/ParameterizationException.cs b/Assets/Plugins/UCommandConsole/Scripts/Exceptions/ParameterizationException.cs index 0a980627..ba2f88d3 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/Exceptions/ParameterizationException.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/Exceptions/ParameterizationException.cs @@ -1,11 +1,8 @@ using System; -namespace UCommandConsole.Exceptions -{ - public class ParameterizationException : InputFormatException - { - public ParameterizationException() - : base() { } +namespace UCommandConsole.Exceptions { + public class ParameterizationException : InputFormatException { + public ParameterizationException() { } public ParameterizationException(string message) : base(message) { } diff --git a/Assets/Plugins/UCommandConsole/Scripts/Exceptions/TypeMismatchException.cs b/Assets/Plugins/UCommandConsole/Scripts/Exceptions/TypeMismatchException.cs index 5af02802..4e36ded9 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/Exceptions/TypeMismatchException.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/Exceptions/TypeMismatchException.cs @@ -1,22 +1,18 @@ using System; -namespace UCommandConsole.Exceptions -{ - public class TypeMismatchException : Exception - { +namespace UCommandConsole.Exceptions { + public class TypeMismatchException : Exception { public Type type0; public Type type1; public TypeMismatchException(Type type0, Type type1) - : base($"Type mismatch between {type0} and {type1}") - { + : base($"Type mismatch between {type0} and {type1}") { this.type0 = type0; this.type1 = type1; } public TypeMismatchException(string message, Type type0, Type type1) - : base(message) - { + : base(message) { this.type0 = type0; this.type1 = type1; } diff --git a/Assets/Plugins/UCommandConsole/Scripts/Models/CommandContext.cs b/Assets/Plugins/UCommandConsole/Scripts/Models/CommandContext.cs index c2cd4003..1246519c 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/Models/CommandContext.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/Models/CommandContext.cs @@ -1,30 +1,27 @@ using System.Collections.Generic; using System.Linq; -namespace UCommandConsole.Models -{ - public class CommandContext - { - public CommandInfo info; +namespace UCommandConsole.Models { + public class CommandContext { public Dictionary arguments; + public CommandInfo info; public Dictionary properties; - public string GetArgumentFormat() - { + public string GetArgumentFormat() { var argumentNames = arguments - .Select((item) => - { - var propName = item.Key; - var propTypeName = item.Value.Context.PropertyType.Name; - var result = $"{propName}: {propTypeName}"; + .Select( + item => { + var propName = item.Key; + var propTypeName = item.Value.Context.PropertyType.Name; + var result = $"{propName}: {propTypeName}"; - if (!item.Value.Context.Required) - { - result = $"[optional] {result}"; - } + if (!item.Value.Context.Required) { + result = $"[optional] {result}"; + } - return result; - }); + return result; + } + ); return $"({string.Join(", ", argumentNames)})"; } diff --git a/Assets/Plugins/UCommandConsole/Scripts/Models/CommandInfo.cs b/Assets/Plugins/UCommandConsole/Scripts/Models/CommandInfo.cs index f545a375..14b48398 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/Models/CommandInfo.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/Models/CommandInfo.cs @@ -1,7 +1,5 @@ -namespace UCommandConsole.Models -{ - public class CommandInfo - { +namespace UCommandConsole.Models { + public class CommandInfo { public bool ignoresHistory; } } \ No newline at end of file diff --git a/Assets/Plugins/UCommandConsole/Scripts/Parameters/CommandMethodArgument.cs b/Assets/Plugins/UCommandConsole/Scripts/Parameters/CommandMethodArgument.cs index a92f01df..95ea3563 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/Parameters/CommandMethodArgument.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/Parameters/CommandMethodArgument.cs @@ -1,7 +1,4 @@ - - -namespace UCommandConsole -{ +namespace UCommandConsole { //public class CommandMethodArgument : ICommandParameter //{ // private MethodArgumentContext propertyContext; diff --git a/Assets/Plugins/UCommandConsole/Scripts/Parameters/CommandParameter.cs b/Assets/Plugins/UCommandConsole/Scripts/Parameters/CommandParameter.cs index ad42982b..ff1fea59 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/Parameters/CommandParameter.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/Parameters/CommandParameter.cs @@ -1,28 +1,23 @@ using System; -namespace UCommandConsole -{ - internal class CommandParameter : ICommandParameter - { - private Func getter; - private Action setter; +namespace UCommandConsole { + internal class CommandParameter : ICommandParameter { + private readonly Func getter; + private readonly Action setter; - public IParameterContext Context { get; } - - public CommandParameter(IParameterContext argumentContext, Func getter, Action setter) - { - this.Context = argumentContext; + public CommandParameter(IParameterContext argumentContext, Func getter, Action setter) { + Context = argumentContext; this.getter = getter; this.setter = setter; } - public void SetValue(object target, object value) - { + public IParameterContext Context { get; } + + public void SetValue(object target, object value) { setter(target, value); } - public object GetValue(object target) - { + public object GetValue(object target) { return getter(target); } } diff --git a/Assets/Plugins/UCommandConsole/Scripts/Parameters/ICommandParameter.cs b/Assets/Plugins/UCommandConsole/Scripts/Parameters/ICommandParameter.cs index a94cf817..56c4052e 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/Parameters/ICommandParameter.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/Parameters/ICommandParameter.cs @@ -1,10 +1,8 @@ -namespace UCommandConsole -{ +namespace UCommandConsole { /// - /// Supports stateless getter, setter and context for a command parameter + /// Supports stateless getter, setter and context for a command parameter /// - public interface ICommandParameter - { + public interface ICommandParameter { IParameterContext Context { get; } void SetValue(object target, object value); diff --git a/Assets/Plugins/UCommandConsole/Scripts/Parameters/IParameterContext.cs b/Assets/Plugins/UCommandConsole/Scripts/Parameters/IParameterContext.cs index 9484d242..1a25b9d5 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/Parameters/IParameterContext.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/Parameters/IParameterContext.cs @@ -1,9 +1,7 @@ using System; -namespace UCommandConsole -{ - public interface IParameterContext : IParameterInfo - { +namespace UCommandConsole { + public interface IParameterContext : IParameterInfo { Type PropertyType { get; } string Name { get; } } diff --git a/Assets/Plugins/UCommandConsole/Scripts/Parameters/IParameterInfo.cs b/Assets/Plugins/UCommandConsole/Scripts/Parameters/IParameterInfo.cs index 4aa20074..26afc2d0 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/Parameters/IParameterInfo.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/Parameters/IParameterInfo.cs @@ -1,9 +1,7 @@ using System; -namespace UCommandConsole -{ - public interface IParameterInfo - { +namespace UCommandConsole { + public interface IParameterInfo { Type CustomParser { get; } bool Required { get; } } diff --git a/Assets/Plugins/UCommandConsole/Scripts/Parameters/MethodArgumentContext.cs b/Assets/Plugins/UCommandConsole/Scripts/Parameters/MethodArgumentContext.cs index f809b7f5..ea26f2f5 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/Parameters/MethodArgumentContext.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/Parameters/MethodArgumentContext.cs @@ -1,14 +1,16 @@ using System; -namespace UCommandConsole -{ - public class MethodArgumentContext : IParameterContext - { - public Type CustomParser => null; +namespace UCommandConsole { + public class MethodArgumentContext : IParameterContext { + public Type CustomParser { + get => null; + } public Type PropertyType { get; set; } - public bool Required => true; + public bool Required { + get => true; + } public string Name { get; set; } } diff --git a/Assets/Plugins/UCommandConsole/Scripts/Parameters/ParameterContext.cs b/Assets/Plugins/UCommandConsole/Scripts/Parameters/ParameterContext.cs index 21069244..fadd0e69 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/Parameters/ParameterContext.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/Parameters/ParameterContext.cs @@ -1,17 +1,14 @@ using System; -namespace UCommandConsole -{ - internal class ParameterContext : IParameterContext - { +namespace UCommandConsole { + internal class ParameterContext : IParameterContext { + public ParameterContext(Type propertyType) { + PropertyType = propertyType; + } + public Type PropertyType { get; } public Type CustomParser { get; set; } public bool Required { get; set; } public string Name { get; set; } - - public ParameterContext(Type propertyType) - { - this.PropertyType = propertyType; - } } } \ No newline at end of file diff --git a/Assets/Plugins/UCommandConsole/Scripts/TypeParser.cs b/Assets/Plugins/UCommandConsole/Scripts/TypeParser.cs index 9da03f2c..50ad78c6 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/TypeParser.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/TypeParser.cs @@ -1,23 +1,23 @@ using System; -namespace UCommandConsole -{ - public abstract class CustomTypeParser : TypeParser - { - public override Type Target => typeof(T); +namespace UCommandConsole { + public abstract class CustomTypeParser : TypeParser { + public override Type Target { + get => typeof(T); + } public abstract T Parse(CommandParser tokenizer); - public override object ParseAsObject(CommandParser tokenizer) - { + public override object ParseAsObject(CommandParser tokenizer) { return Parse(tokenizer); } } - public abstract class TypeParser - { + public abstract class TypeParser { public abstract Type Target { get; } + public abstract object ParseAsObject(CommandParser tokenizer); + public abstract string GetFormatString(); } } \ No newline at end of file diff --git a/Assets/Plugins/UCommandConsole/Scripts/TypeParsers/CodeParser.cs b/Assets/Plugins/UCommandConsole/Scripts/TypeParsers/CodeParser.cs index 35d71d92..bb1f42cd 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/TypeParsers/CodeParser.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/TypeParsers/CodeParser.cs @@ -1,17 +1,13 @@ using System; using UCommandConsole; -namespace Assets.Scripts.TypeParsers -{ - public class CodeParser : CustomTypeParser - { - public override string GetFormatString() - { +namespace Assets.Scripts.TypeParsers { + public class CodeParser : CustomTypeParser { + public override string GetFormatString() { return "{[x]}"; } - public override object Parse(CommandParser tokenizer) - { + public override object Parse(CommandParser tokenizer) { throw new NotImplementedException(); } } diff --git a/Assets/Plugins/UCommandConsole/Scripts/TypeParsers/FloatParser.cs b/Assets/Plugins/UCommandConsole/Scripts/TypeParsers/FloatParser.cs index d3d4407b..203d7cb7 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/TypeParsers/FloatParser.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/TypeParsers/FloatParser.cs @@ -1,25 +1,20 @@ using System.Text; using UCommandConsole.Exceptions; -namespace UCommandConsole.TypeParsers -{ - public class FloatParser : CustomTypeParser - { - public override string GetFormatString() - { +namespace UCommandConsole.TypeParsers { + public class FloatParser : CustomTypeParser { + public override string GetFormatString() { return "[x]"; } - public override float Parse(CommandParser parser) - { + public override float Parse(CommandParser parser) { var sb = new StringBuilder(); - if (char.IsDigit(parser.CurrentChar) || parser.CurrentChar == '.') - { + if (char.IsDigit(parser.CurrentChar) || parser.CurrentChar == '.') { // Capture digits/decimal point var haveDecimalPoint = false; - while (char.IsDigit(parser.CurrentChar) || (!haveDecimalPoint && parser.CurrentChar == '.')) - { + + while (char.IsDigit(parser.CurrentChar) || !haveDecimalPoint && parser.CurrentChar == '.') { sb.Append(parser.CurrentChar); haveDecimalPoint = parser.CurrentChar == '.'; parser.NextChar(); @@ -27,19 +22,14 @@ public override float Parse(CommandParser parser) var stringResult = sb.ToString(); - if (float.TryParse(stringResult, out var result)) - { + if (float.TryParse(stringResult, out var result)) { return result; } - else - { - throw new InputFormatException($"Cannot parse string: \"{stringResult}\" into a float"); - } - } - else - { - throw new InputFormatException($"Cannot parse an empty string"); + + throw new InputFormatException($"Cannot parse string: \"{stringResult}\" into a float"); } + + throw new InputFormatException("Cannot parse an empty string"); } } } \ No newline at end of file diff --git a/Assets/Plugins/UCommandConsole/Scripts/TypeParsers/StringLiteralParser.cs b/Assets/Plugins/UCommandConsole/Scripts/TypeParsers/StringLiteralParser.cs index 13facd13..f494d52e 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/TypeParsers/StringLiteralParser.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/TypeParsers/StringLiteralParser.cs @@ -1,37 +1,28 @@ using System.Text; using UCommandConsole.Exceptions; -namespace UCommandConsole.TypeParsers -{ - public class StringLiteralParser : CustomTypeParser - { - public override string GetFormatString() - { +namespace UCommandConsole.TypeParsers { + public class StringLiteralParser : CustomTypeParser { + public override string GetFormatString() { return "[x]"; } - public override string Parse(CommandParser tokenizer) - { + public override string Parse(CommandParser tokenizer) { var sb = new StringBuilder(); - if (char.IsLetter(tokenizer.CurrentChar)) - { + if (char.IsLetter(tokenizer.CurrentChar)) { while ( - char.IsLetter(tokenizer.CurrentChar) || + char.IsLetter(tokenizer.CurrentChar) || char.IsDigit(tokenizer.CurrentChar) || - tokenizer.CurrentChar == '-') - { + tokenizer.CurrentChar == '-') { sb.Append(tokenizer.CurrentChar); tokenizer.NextChar(); } - if (tokenizer.CurrentChar != ' ' && !tokenizer.IsEOF) - { + if (tokenizer.CurrentChar != ' ' && !tokenizer.IsEOF) { throw new InputFormatException($"Literal string property end must be followed by a space, instead received: \"{tokenizer.CurrentChar}\""); } - } - else - { + } else { throw new InputFormatException($"Literal string property is expected to be followed by a letter, instead received: \"{tokenizer.CurrentChar}\""); } diff --git a/Assets/Plugins/UCommandConsole/Scripts/TypeParsers/StringParser.cs b/Assets/Plugins/UCommandConsole/Scripts/TypeParsers/StringParser.cs index 0b7f5c91..05d33cb0 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/TypeParsers/StringParser.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/TypeParsers/StringParser.cs @@ -1,30 +1,25 @@ using System.Text; using UCommandConsole.Exceptions; -namespace UCommandConsole.TypeParsers -{ - public class StringParser : CustomTypeParser - { - public override string GetFormatString() - { +namespace UCommandConsole.TypeParsers { + public class StringParser : CustomTypeParser { + public override string GetFormatString() { return "\n[x]\n"; } - public override string Parse(CommandParser tokenizer) - { + public override string Parse(CommandParser tokenizer) { var sb = new StringBuilder(); - if (tokenizer.Matches('"')) - { + if (tokenizer.Matches('"')) { tokenizer.NextChar(); var hasClosedParenthesis = false; - while (!tokenizer.IsEOF) - { - if (tokenizer.Matches('"')) - { + + while (!tokenizer.IsEOF) { + if (tokenizer.Matches('"')) { hasClosedParenthesis = true; tokenizer.NextChar(); + break; } @@ -32,8 +27,7 @@ public override string Parse(CommandParser tokenizer) tokenizer.NextChar(); } - if (!hasClosedParenthesis) - { + if (!hasClosedParenthesis) { throw new InputFormatException("String parenthesis not closed"); } } diff --git a/Assets/Plugins/UCommandConsole/Scripts/TypeParsers/Vector2Parser.cs b/Assets/Plugins/UCommandConsole/Scripts/TypeParsers/Vector2Parser.cs index 4a481ff2..54baf3ce 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/TypeParsers/Vector2Parser.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/TypeParsers/Vector2Parser.cs @@ -1,22 +1,17 @@ using UnityEngine; -namespace UCommandConsole.TypeParsers -{ - public class Vector2Parser : CustomTypeParser - { - public override string GetFormatString() - { +namespace UCommandConsole.TypeParsers { + public class Vector2Parser : CustomTypeParser { + public override string GetFormatString() { return "[x],[y]"; } - public override Vector2 Parse(CommandParser tokenizer) - { + public override Vector2 Parse(CommandParser tokenizer) { var float0 = tokenizer.AsValue(); tokenizer.Require(',', true); var float1 = tokenizer.AsValue(); - return new Vector2 - { + return new Vector2 { x = float0, y = float1 }; diff --git a/Assets/Plugins/UCommandConsole/Scripts/TypeParsers/Vector3Parser.cs b/Assets/Plugins/UCommandConsole/Scripts/TypeParsers/Vector3Parser.cs index a0f09d61..5849f899 100644 --- a/Assets/Plugins/UCommandConsole/Scripts/TypeParsers/Vector3Parser.cs +++ b/Assets/Plugins/UCommandConsole/Scripts/TypeParsers/Vector3Parser.cs @@ -1,24 +1,19 @@ using UnityEngine; -namespace UCommandConsole.TypeParsers -{ - public class Vector3Parser : CustomTypeParser - { - public override string GetFormatString() - { +namespace UCommandConsole.TypeParsers { + public class Vector3Parser : CustomTypeParser { + public override string GetFormatString() { return "[x],[y],[z]"; } - public override Vector3 Parse(CommandParser tokenizer) - { + public override Vector3 Parse(CommandParser tokenizer) { var float0 = tokenizer.AsValue(); tokenizer.Require(',', true); var float1 = tokenizer.AsValue(); tokenizer.Require(',', true); var float2 = tokenizer.AsValue(); - return new Vector3 - { + return new Vector3 { x = float0, y = float1, z = float2 diff --git a/Assets/Plugins/Vectrosity.meta b/Assets/Plugins/Vectrosity.meta new file mode 100644 index 00000000..84f02ed1 --- /dev/null +++ b/Assets/Plugins/Vectrosity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 209fedc1cfc8be6428011be82131e912 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/2D Renderer.asset b/Assets/Project/2D Renderer.asset index e9abcd80..b47e3d6e 100644 --- a/Assets/Project/2D Renderer.asset +++ b/Assets/Project/2D Renderer.asset @@ -17,47 +17,26 @@ MonoBehaviour: m_TransparencySortMode: 0 m_TransparencySortAxis: {x: 0, y: 1, z: 0} m_HDREmulationScale: 1 + m_LightRenderTextureScale: 0.5 m_LightBlendStyles: - - enabled: 0 - name: Default + - name: Default maskTextureChannel: 0 - renderTextureScale: 1 blendMode: 1 - customBlendFactors: - multiplicative: 0 - additive: 0 - - enabled: 0 - name: Blend Style 1 + - name: Blend Style 1 maskTextureChannel: 0 - renderTextureScale: 1 blendMode: 1 - customBlendFactors: - multiplicative: 0 - additive: 0 - - enabled: 0 - name: Blend Style 2 + - name: Blend Style 2 maskTextureChannel: 0 - renderTextureScale: 1 blendMode: 1 - customBlendFactors: - multiplicative: 0 - additive: 0 - - enabled: 0 - name: Blend Style 3 + - name: Blend Style 3 maskTextureChannel: 0 - renderTextureScale: 1 blendMode: 1 - customBlendFactors: - multiplicative: 0 - additive: 0 m_UseDepthStencilBuffer: 1 - m_DefaultMaterialType: 0 - m_DefaultCustomMaterial: {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, - type: 2} - m_DefaultLitMaterial: {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, - type: 2} - m_DefaultUnlitMaterial: {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, - type: 2} + m_UseCameraSortingLayersTexture: 0 + m_CameraSortingLayersTextureBound: 0 + m_CameraSortingLayerDownsamplingMethod: 0 + m_MaxLightRenderTextureCount: 16 + m_MaxShadowRenderTextureCount: 1 m_ShapeLightShader: {fileID: 4800000, guid: d79e1c784eaf80c4585c0be7391f757a, type: 3} m_ShapeLightVolumeShader: {fileID: 4800000, guid: 7e60080c8cd24a2468cb08b4bfee5606, type: 3} @@ -65,7 +44,18 @@ MonoBehaviour: m_PointLightVolumeShader: {fileID: 4800000, guid: c7d04ca57e5449d49ad9cee1c604bc26, type: 3} m_BlitShader: {fileID: 4800000, guid: c17132b1f77d20942aa75f8429c0f8bc, type: 3} + m_SamplingShader: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3} m_ShadowGroupShader: {fileID: 4800000, guid: d33b6d70b14697547ad0dc2d4debb009, type: 3} m_RemoveSelfShadowShader: {fileID: 4800000, guid: 02e071f10b6a15d4d87dac88ce529302, type: 3} + m_FallbackErrorShader: {fileID: 4800000, guid: e6e9a19c3678ded42a3bc431ebef7dbd, + type: 3} m_PostProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2} + m_FallOffLookup: {fileID: 2800000, guid: 5688ab254e4c0634f8d6c8e0792331ca, type: 3} + m_DefaultMaterialType: 0 + m_DefaultCustomMaterial: {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, + type: 2} + m_DefaultLitMaterial: {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, + type: 2} + m_DefaultUnlitMaterial: {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, + type: 2} diff --git a/Assets/Project/Animations/Weapons/GaussCannon.meta b/Assets/Project/Animations/Weapons/GaussCannon.meta new file mode 100644 index 00000000..f2d0135b --- /dev/null +++ b/Assets/Project/Animations/Weapons/GaussCannon.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 159a18cdf9a9f9c4ba914f783b7345ae +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Animations/Weapons/GaussCannon/CoilAnimation.anim b/Assets/Project/Animations/Weapons/GaussCannon/CoilAnimation.anim new file mode 100644 index 00000000..651b9841 --- /dev/null +++ b/Assets/Project/Animations/Weapons/GaussCannon/CoilAnimation.anim @@ -0,0 +1,360 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: CoilAnimation + serializedVersion: 6 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.98333335 + value: 2.5 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: material._EmissiveColor.x + path: + classID: 212 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.98333335 + value: 2.5 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: material._EmissiveColor.y + path: + classID: 212 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.98333335 + value: 2.5 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: material._EmissiveColor.z + path: + classID: 212 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.98333335 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: material._EmissiveColor.w + path: + classID: 212 + script: {fileID: 0} + m_PPtrCurves: + - curve: + - time: 0 + value: {fileID: 8500343177690839154, guid: 1df684a472980ef429d70e58a59b3b78, + type: 3} + - time: 0.05 + value: {fileID: -4706438675243731524, guid: 1df684a472980ef429d70e58a59b3b78, + type: 3} + - time: 0.1 + value: {fileID: -3883040197747083646, guid: 1df684a472980ef429d70e58a59b3b78, + type: 3} + - time: 0.15 + value: {fileID: 8520245342746727361, guid: 1df684a472980ef429d70e58a59b3b78, + type: 3} + - time: 0.35 + value: {fileID: -357266675920862457, guid: 1df684a472980ef429d70e58a59b3b78, + type: 3} + - time: 0.4 + value: {fileID: -7461231742267673901, guid: 1df684a472980ef429d70e58a59b3b78, + type: 3} + - time: 0.45 + value: {fileID: -4129081721917932550, guid: 1df684a472980ef429d70e58a59b3b78, + type: 3} + - time: 0.6333333 + value: {fileID: 2977838308912007353, guid: 1df684a472980ef429d70e58a59b3b78, + type: 3} + - time: 0.68333334 + value: {fileID: -2980328173887759716, guid: 1df684a472980ef429d70e58a59b3b78, + type: 3} + - time: 0.73333335 + value: {fileID: -7698326860322731828, guid: 1df684a472980ef429d70e58a59b3b78, + type: 3} + - time: 0.98333335 + value: {fileID: 0} + attribute: m_Sprite + path: + classID: 212 + script: {fileID: 0} + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 2256988 + script: {fileID: 0} + typeID: 212 + customType: 22 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 270692444 + script: {fileID: 0} + typeID: 212 + customType: 22 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 539127900 + script: {fileID: 0} + typeID: 212 + customType: 22 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 0 + script: {fileID: 0} + typeID: 212 + customType: 23 + isPPtrCurve: 1 + - serializedVersion: 2 + path: 0 + attribute: 807563356 + script: {fileID: 0} + typeID: 212 + customType: 22 + isPPtrCurve: 0 + pptrCurveMapping: + - {fileID: 8500343177690839154, guid: 1df684a472980ef429d70e58a59b3b78, type: 3} + - {fileID: -4706438675243731524, guid: 1df684a472980ef429d70e58a59b3b78, type: 3} + - {fileID: -3883040197747083646, guid: 1df684a472980ef429d70e58a59b3b78, type: 3} + - {fileID: 8520245342746727361, guid: 1df684a472980ef429d70e58a59b3b78, type: 3} + - {fileID: -357266675920862457, guid: 1df684a472980ef429d70e58a59b3b78, type: 3} + - {fileID: -7461231742267673901, guid: 1df684a472980ef429d70e58a59b3b78, type: 3} + - {fileID: -4129081721917932550, guid: 1df684a472980ef429d70e58a59b3b78, type: 3} + - {fileID: 2977838308912007353, guid: 1df684a472980ef429d70e58a59b3b78, type: 3} + - {fileID: -2980328173887759716, guid: 1df684a472980ef429d70e58a59b3b78, type: 3} + - {fileID: -7698326860322731828, guid: 1df684a472980ef429d70e58a59b3b78, type: 3} + - {fileID: 0} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 1 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 1 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.98333335 + value: 2.5 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: material._EmissiveColor.x + path: + classID: 212 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.98333335 + value: 2.5 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: material._EmissiveColor.y + path: + classID: 212 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.98333335 + value: 2.5 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: material._EmissiveColor.z + path: + classID: 212 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.98333335 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: material._EmissiveColor.w + path: + classID: 212 + script: {fileID: 0} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Project/Animations/Weapons/GaussCannon/CoilAnimation.anim.meta b/Assets/Project/Animations/Weapons/GaussCannon/CoilAnimation.anim.meta new file mode 100644 index 00000000..84861a69 --- /dev/null +++ b/Assets/Project/Animations/Weapons/GaussCannon/CoilAnimation.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b5155d4d3fbbdf54891142df4666d397 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Animations/Weapons/GaussCannon/CoilAnimator.controller b/Assets/Project/Animations/Weapons/GaussCannon/CoilAnimator.controller new file mode 100644 index 00000000..c5283025 --- /dev/null +++ b/Assets/Project/Animations/Weapons/GaussCannon/CoilAnimator.controller @@ -0,0 +1,255 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1101 &-7660947627446998695 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: [] + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 3309056923867256614} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0 + m_TransitionOffset: 0 + m_ExitTime: 1 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &-4589185697766690888 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: [] + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 2134793011634250567} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0 + m_TransitionOffset: 0 + m_ExitTime: 1 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1109 &-4137329453899255389 +AnimatorTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: [] + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 3309056923867256614} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 1 +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: CoilAnimator + serializedVersion: 5 + m_AnimatorParameters: + - m_Name: ChargeSpeed + m_Type: 1 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: ChargeDecaySpeed + m_Type: 1 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Base Layer + m_StateMachine: {fileID: 4006888543866783765} + m_Mask: {fileID: 0} + m_Motions: [] + m_Behaviours: [] + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_DefaultWeight: 0 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} +--- !u!1102 &138500136470859400 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Charge + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: -4589185697766690888} + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 1 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: b5155d4d3fbbdf54891142df4666d397, type: 2} + m_Tag: + m_SpeedParameter: ChargeSpeed + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: ChargeTime +--- !u!1101 &616896719508147905 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: [] + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 3309056923867256614} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0 + m_TransitionOffset: 0 + m_ExitTime: 0 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1102 &2134793011634250567 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Fire + m_Speed: 20 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 616896719508147905} + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 09534df0b6b327b48af7d8882f400d3f, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1102 &3309056923867256614 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Idle + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 0} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1107 &4006888543866783765 +AnimatorStateMachine: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Base Layer + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: 138500136470859400} + m_Position: {x: 560, y: -130, z: 0} + - serializedVersion: 1 + m_State: {fileID: 3309056923867256614} + m_Position: {x: 430, y: 110, z: 0} + - serializedVersion: 1 + m_State: {fileID: 9114948344688908809} + m_Position: {x: 300, y: -40, z: 0} + - serializedVersion: 1 + m_State: {fileID: 2134793011634250567} + m_Position: {x: 560, y: -40, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: + - {fileID: -4137329453899255389} + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_EntryPosition: {x: 50, y: 120, z: 0} + m_ExitPosition: {x: 800, y: 120, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: 3309056923867256614} +--- !u!1102 &9114948344688908809 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: CancelCharge + m_Speed: -1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: -7660947627446998695} + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 1 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: b5155d4d3fbbdf54891142df4666d397, type: 2} + m_Tag: + m_SpeedParameter: ChargeDecaySpeed + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: diff --git a/Assets/Project/Animations/Weapons/GaussCannon/CoilAnimator.controller.meta b/Assets/Project/Animations/Weapons/GaussCannon/CoilAnimator.controller.meta new file mode 100644 index 00000000..a26c5f56 --- /dev/null +++ b/Assets/Project/Animations/Weapons/GaussCannon/CoilAnimator.controller.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 98aa9dfc44c683d43ada0ee5387461fe +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 9100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Animations/Weapons/GaussCannon/FireAnimation.anim b/Assets/Project/Animations/Weapons/GaussCannon/FireAnimation.anim new file mode 100644 index 00000000..97ba2758 --- /dev/null +++ b/Assets/Project/Animations/Weapons/GaussCannon/FireAnimation.anim @@ -0,0 +1,261 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: FireAnimation + serializedVersion: 6 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: material._EmissiveColor.x + path: + classID: 212 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: material._EmissiveColor.y + path: + classID: 212 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: material._EmissiveColor.z + path: + classID: 212 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: material._EmissiveColor.w + path: + classID: 212 + script: {fileID: 0} + m_PPtrCurves: + - curve: + - time: 0 + value: {fileID: -7698326860322731828, guid: 1df684a472980ef429d70e58a59b3b78, + type: 3} + - time: 0.33333334 + value: {fileID: 5413515514340459201, guid: 1df684a472980ef429d70e58a59b3b78, + type: 3} + - time: 0.6666667 + value: {fileID: 2201436745883532920, guid: 1df684a472980ef429d70e58a59b3b78, + type: 3} + - time: 1 + value: {fileID: 1439543882171662536, guid: 1df684a472980ef429d70e58a59b3b78, + type: 3} + attribute: m_Sprite + path: + classID: 212 + script: {fileID: 0} + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 0 + script: {fileID: 0} + typeID: 212 + customType: 23 + isPPtrCurve: 1 + - serializedVersion: 2 + path: 0 + attribute: 2256988 + script: {fileID: 0} + typeID: 212 + customType: 22 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 270692444 + script: {fileID: 0} + typeID: 212 + customType: 22 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 539127900 + script: {fileID: 0} + typeID: 212 + customType: 22 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 807563356 + script: {fileID: 0} + typeID: 212 + customType: 22 + isPPtrCurve: 0 + pptrCurveMapping: + - {fileID: -7698326860322731828, guid: 1df684a472980ef429d70e58a59b3b78, type: 3} + - {fileID: 5413515514340459201, guid: 1df684a472980ef429d70e58a59b3b78, type: 3} + - {fileID: 2201436745883532920, guid: 1df684a472980ef429d70e58a59b3b78, type: 3} + - {fileID: 1439543882171662536, guid: 1df684a472980ef429d70e58a59b3b78, type: 3} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 1.0166667 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: material._EmissiveColor.x + path: + classID: 212 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: material._EmissiveColor.y + path: + classID: 212 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: material._EmissiveColor.z + path: + classID: 212 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: material._EmissiveColor.w + path: + classID: 212 + script: {fileID: 0} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Project/Animations/Weapons/GaussCannon/FireAnimation.anim.meta b/Assets/Project/Animations/Weapons/GaussCannon/FireAnimation.anim.meta new file mode 100644 index 00000000..4d6f598b --- /dev/null +++ b/Assets/Project/Animations/Weapons/GaussCannon/FireAnimation.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 09534df0b6b327b48af7d8882f400d3f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Animations/Weapons/GaussCannon/GunOverlayAnimation.anim b/Assets/Project/Animations/Weapons/GaussCannon/GunOverlayAnimation.anim new file mode 100644 index 00000000..88249c5e --- /dev/null +++ b/Assets/Project/Animations/Weapons/GaussCannon/GunOverlayAnimation.anim @@ -0,0 +1,97 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: GunOverlayAnimation + serializedVersion: 6 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: + - curve: + - time: 0 + value: {fileID: 8109266117701699947, guid: 03dad263273a9f241b6a232b9be18ae3, + type: 3} + - time: 0.05 + value: {fileID: -3850562526551232557, guid: 03dad263273a9f241b6a232b9be18ae3, + type: 3} + - time: 0.11666667 + value: {fileID: -8257272102382445459, guid: 03dad263273a9f241b6a232b9be18ae3, + type: 3} + - time: 0.21666667 + value: {fileID: 4965069562431324539, guid: 03dad263273a9f241b6a232b9be18ae3, + type: 3} + - time: 0.35 + value: {fileID: 5247248678125133266, guid: 03dad263273a9f241b6a232b9be18ae3, + type: 3} + - time: 0.51666665 + value: {fileID: -6268931531636052934, guid: 03dad263273a9f241b6a232b9be18ae3, + type: 3} + - time: 0.73333335 + value: {fileID: 6931575581690951760, guid: 03dad263273a9f241b6a232b9be18ae3, + type: 3} + - time: 0.98333335 + value: {fileID: 6931575581690951760, guid: 03dad263273a9f241b6a232b9be18ae3, + type: 3} + attribute: m_Sprite + path: + classID: 212 + script: {fileID: 0} + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 0 + script: {fileID: 0} + typeID: 212 + customType: 23 + isPPtrCurve: 1 + pptrCurveMapping: + - {fileID: 8109266117701699947, guid: 03dad263273a9f241b6a232b9be18ae3, type: 3} + - {fileID: -3850562526551232557, guid: 03dad263273a9f241b6a232b9be18ae3, type: 3} + - {fileID: -8257272102382445459, guid: 03dad263273a9f241b6a232b9be18ae3, type: 3} + - {fileID: 4965069562431324539, guid: 03dad263273a9f241b6a232b9be18ae3, type: 3} + - {fileID: 5247248678125133266, guid: 03dad263273a9f241b6a232b9be18ae3, type: 3} + - {fileID: -6268931531636052934, guid: 03dad263273a9f241b6a232b9be18ae3, type: 3} + - {fileID: 6931575581690951760, guid: 03dad263273a9f241b6a232b9be18ae3, type: 3} + - {fileID: 6931575581690951760, guid: 03dad263273a9f241b6a232b9be18ae3, type: 3} + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 1 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 1 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: [] + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Project/Animations/Weapons/GaussCannon/GunOverlayAnimation.anim.meta b/Assets/Project/Animations/Weapons/GaussCannon/GunOverlayAnimation.anim.meta new file mode 100644 index 00000000..0554b586 --- /dev/null +++ b/Assets/Project/Animations/Weapons/GaussCannon/GunOverlayAnimation.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2508f36f134fcdd4fb7a7efd0e601111 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Animations/Weapons/GaussCannon/GunOverlayAnimator.controller b/Assets/Project/Animations/Weapons/GaussCannon/GunOverlayAnimator.controller new file mode 100644 index 00000000..5e6b4773 --- /dev/null +++ b/Assets/Project/Animations/Weapons/GaussCannon/GunOverlayAnimator.controller @@ -0,0 +1,390 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1101 &-7064416080200455067 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: [] + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 6154586370140999145} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0 + m_TransitionOffset: 0 + m_ExitTime: 1 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1107 &-5315618480626997055 +AnimatorStateMachine: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Base Layer + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: 6891982831965768820} + m_Position: {x: 540, y: -60, z: 0} + - serializedVersion: 1 + m_State: {fileID: -661394775933693346} + m_Position: {x: 390, y: 90, z: 0} + - serializedVersion: 1 + m_State: {fileID: 2009383110708075426} + m_Position: {x: 260, y: -60, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: + - {fileID: 3000537207633275422} + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_EntryPosition: {x: 50, y: 120, z: 0} + m_ExitPosition: {x: 800, y: 120, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: -661394775933693346} +--- !u!1101 &-4151719851835631786 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: [] + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 3597147983166572925} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0 + m_TransitionOffset: 0 + m_ExitTime: 0.97 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1102 &-1496821775886584965 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: CancelCharge 0 + m_Speed: -1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: -4151719851835631786} + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 1 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: b5155d4d3fbbdf54891142df4666d397, type: 2} + m_Tag: + m_SpeedParameter: ChargeDecaySpeed + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1102 &-661394775933693346 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Idle + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 0} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: GunOverlayAnimator + serializedVersion: 5 + m_AnimatorParameters: + - m_Name: ChargeSpeed + m_Type: 1 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 0} + - m_Name: ChargeDecaySpeed + m_Type: 1 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 0} + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Base Layer + m_StateMachine: {fileID: -5315618480626997055} + m_Mask: {fileID: 0} + m_Motions: [] + m_Behaviours: [] + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_DefaultWeight: 0 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} +--- !u!1101 &504078475360376143 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: [] + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 3597147983166572925} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0 + m_TransitionOffset: 0 + m_ExitTime: 1 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1102 &2009383110708075426 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: CancelCharge + m_Speed: -1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 6697899706017593366} + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 1 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 2508f36f134fcdd4fb7a7efd0e601111, type: 2} + m_Tag: + m_SpeedParameter: ChargeDecaySpeed + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1101 &2287310811601559698 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: [] + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 2009383110708075426} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0 + m_TransitionOffset: 0 + m_ExitTime: 0.9960151 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1109 &3000537207633275422 +AnimatorTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: [] + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: -661394775933693346} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 1 +--- !u!1102 &3597147983166572925 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Idle 0 + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 0} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1109 &4716678221405356151 +AnimatorTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: [] + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 3597147983166572925} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 1 +--- !u!1102 &6154586370140999145 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Fire 0 + m_Speed: 20 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 504078475360376143} + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 09534df0b6b327b48af7d8882f400d3f, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1101 &6697899706017593366 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: [] + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: -661394775933693346} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.0011894703 + m_TransitionOffset: 0 + m_ExitTime: 0.998391 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1102 &6891982831965768820 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Charge + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 2287310811601559698} + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 1 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 2508f36f134fcdd4fb7a7efd0e601111, type: 2} + m_Tag: + m_SpeedParameter: ChargeSpeed + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: ChargeTime +--- !u!1102 &9218118898435130050 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Charge 0 + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: -7064416080200455067} + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 1 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: b5155d4d3fbbdf54891142df4666d397, type: 2} + m_Tag: + m_SpeedParameter: ChargeSpeed + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: ChargeTime diff --git a/Assets/Project/Animations/Weapons/GaussCannon/GunOverlayAnimator.controller.meta b/Assets/Project/Animations/Weapons/GaussCannon/GunOverlayAnimator.controller.meta new file mode 100644 index 00000000..7e9d7e4d --- /dev/null +++ b/Assets/Project/Animations/Weapons/GaussCannon/GunOverlayAnimator.controller.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 07889620b35fe7e4d8e58b99879b762e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 9100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Audio/AudioBag.asset b/Assets/Project/Audio/AudioBag.asset index b9551104..e44ce2ef 100644 --- a/Assets/Project/Audio/AudioBag.asset +++ b/Assets/Project/Audio/AudioBag.asset @@ -13,9 +13,9 @@ MonoBehaviour: m_Name: AudioBag m_EditorClassIdentifier: objects: - - {fileID: 11400000, guid: dccc669e2843782488b6ed8eb772cba7, type: 2} - {fileID: 11400000, guid: 911c51fedc82b49428337ae7075e4656, type: 2} - {fileID: 11400000, guid: b48159f68624a6f4785ccc1ca593a456, type: 2} - {fileID: 11400000, guid: bdaa7c8727d197444a1b1e9662639ac3, type: 2} - {fileID: 11400000, guid: 9aae5c7b23a755e4d93b870b00a802ed, type: 2} - {fileID: 11400000, guid: 39f12b02ccd77de41825bf98b2a7159c, type: 2} + filter: 6 diff --git a/Assets/Project/Audio/AudioManager.prefab b/Assets/Project/Audio/AudioManager.prefab index 27f8704f..d4c6de8a 100644 --- a/Assets/Project/Audio/AudioManager.prefab +++ b/Assets/Project/Audio/AudioManager.prefab @@ -10,6 +10,7 @@ GameObject: m_Component: - component: {fileID: 1520810962895759472} - component: {fileID: 6437573395784765496} + - component: {fileID: 9123271562733585336} m_Layer: 0 m_Name: ST_AudioTrack m_TagString: Untagged @@ -46,7 +47,20 @@ MonoBehaviour: volumeKey: musicVolume audioMixerGroup: {fileID: 9039013957981596346, guid: f60bfc6b3fd678042befa6c918a4a877, type: 2} - MainMenuTrackList: {fileID: 11400000, guid: 15c3cdf87f8c12649afd5241f73052f8, type: 2} + soundTrackProvider: {fileID: 9123271562733585336} +--- !u!114 &9123271562733585336 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1808218022457454919} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 27a459d32b3d0c64f99cc6cf4b480a63, type: 3} + m_Name: + m_EditorClassIdentifier: + defaultSoundTrack: {fileID: 11400000, guid: 15c3cdf87f8c12649afd5241f73052f8, type: 2} --- !u!1 &2953528372697732043 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Project/Audio/GameplaySFX.meta b/Assets/Project/Audio/GameplaySFX.meta new file mode 100644 index 00000000..1504eaea --- /dev/null +++ b/Assets/Project/Audio/GameplaySFX.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 67d4f6a270076f44aad6618bb919cc2d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon.meta b/Assets/Project/Audio/GameplaySFX/GaussCannon.meta new file mode 100644 index 00000000..928413a5 --- /dev/null +++ b/Assets/Project/Audio/GameplaySFX/GaussCannon.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5e39b9adb5bfa164e8ea1bf01427edce +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips.meta b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips.meta new file mode 100644 index 00000000..0ad1b7d7 --- /dev/null +++ b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2d2b032ee2ae57b4f80b3e16b02059a2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/CoilCharge1.wav b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/CoilCharge1.wav new file mode 100644 index 00000000..71d89bfe Binary files /dev/null and b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/CoilCharge1.wav differ diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/CoilCharge1.wav.meta b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/CoilCharge1.wav.meta new file mode 100644 index 00000000..5bbb38b5 --- /dev/null +++ b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/CoilCharge1.wav.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: b6abfdb885e638f40a1363f75915a17f +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/CoilCharge2.wav b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/CoilCharge2.wav new file mode 100644 index 00000000..d921a92f Binary files /dev/null and b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/CoilCharge2.wav differ diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/CoilCharge2.wav.meta b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/CoilCharge2.wav.meta new file mode 100644 index 00000000..b6c6c82e --- /dev/null +++ b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/CoilCharge2.wav.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 2ba23a69a3189c0428134eeee8839ba9 +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/CoilCharge3.wav b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/CoilCharge3.wav new file mode 100644 index 00000000..488a8ec3 Binary files /dev/null and b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/CoilCharge3.wav differ diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/CoilCharge3.wav.meta b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/CoilCharge3.wav.meta new file mode 100644 index 00000000..9ec0b9d7 --- /dev/null +++ b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/CoilCharge3.wav.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 1f99ac6b3c1b0d44cafea6f2339eff8c +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/ElectricityLoop.wav b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/ElectricityLoop.wav new file mode 100644 index 00000000..8b51dcf7 Binary files /dev/null and b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/ElectricityLoop.wav differ diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/ElectricityLoop.wav.meta b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/ElectricityLoop.wav.meta new file mode 100644 index 00000000..8b0db078 --- /dev/null +++ b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/ElectricityLoop.wav.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 4cf5908572d656c44a2a8913980e85e2 +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/PowerDown1.wav b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/PowerDown1.wav new file mode 100644 index 00000000..5ea0bcd2 Binary files /dev/null and b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/PowerDown1.wav differ diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/PowerDown1.wav.meta b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/PowerDown1.wav.meta new file mode 100644 index 00000000..34bb7159 --- /dev/null +++ b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/PowerDown1.wav.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: de166871044c05a4381550c7c322a3f0 +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/PowerDown2.wav b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/PowerDown2.wav new file mode 100644 index 00000000..70bf555e Binary files /dev/null and b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/PowerDown2.wav differ diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/PowerDown2.wav.meta b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/PowerDown2.wav.meta new file mode 100644 index 00000000..ed0a5f8e --- /dev/null +++ b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/PowerDown2.wav.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 251c3c2a8770e4647a5b70e41ac4355c +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/Shoot1.wav b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/Shoot1.wav new file mode 100644 index 00000000..86b13dac Binary files /dev/null and b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/Shoot1.wav differ diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/Shoot1.wav.meta b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/Shoot1.wav.meta new file mode 100644 index 00000000..6eb081a3 --- /dev/null +++ b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/Shoot1.wav.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 62dc9cb78db80644fa6dfc2a18ab2c40 +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/WeaponCharge1.wav b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/WeaponCharge1.wav new file mode 100644 index 00000000..91932b77 Binary files /dev/null and b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/WeaponCharge1.wav differ diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/WeaponCharge1.wav.meta b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/WeaponCharge1.wav.meta new file mode 100644 index 00000000..6f131f62 --- /dev/null +++ b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/WeaponCharge1.wav.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: bf327d185eabaa14f965dde6195b35df +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/WeaponCharge2.wav b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/WeaponCharge2.wav new file mode 100644 index 00000000..1705e862 Binary files /dev/null and b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/WeaponCharge2.wav differ diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/WeaponCharge2.wav.meta b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/WeaponCharge2.wav.meta new file mode 100644 index 00000000..5180beaa --- /dev/null +++ b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/WeaponCharge2.wav.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: aab7d6086f278b94b9cb9d682343723d +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/WeaponCharge3.wav b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/WeaponCharge3.wav new file mode 100644 index 00000000..3aefe0dd Binary files /dev/null and b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/WeaponCharge3.wav differ diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/WeaponCharge3.wav.meta b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/WeaponCharge3.wav.meta new file mode 100644 index 00000000..eed66a4e --- /dev/null +++ b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/WeaponCharge3.wav.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: cc513befb3ae8e94c997cc5924b3a65e +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/WeaponCharge4.wav b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/WeaponCharge4.wav new file mode 100644 index 00000000..888d54ff Binary files /dev/null and b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/WeaponCharge4.wav differ diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/WeaponCharge4.wav.meta b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/WeaponCharge4.wav.meta new file mode 100644 index 00000000..1e063093 --- /dev/null +++ b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/WeaponCharge4.wav.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: e599fb0154bec9c4aaaa8c85d2d457d5 +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/WeaponShoot1.wav b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/WeaponShoot1.wav new file mode 100644 index 00000000..61f09465 Binary files /dev/null and b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/WeaponShoot1.wav differ diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/WeaponShoot1.wav.meta b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/WeaponShoot1.wav.meta new file mode 100644 index 00000000..ca32f91d --- /dev/null +++ b/Assets/Project/Audio/GameplaySFX/GaussCannon/Clips/WeaponShoot1.wav.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: c44e32178bb5c004d973e73c4f10cd7e +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/ProjectFiles.meta b/Assets/Project/Audio/GameplaySFX/GaussCannon/ProjectFiles.meta new file mode 100644 index 00000000..da85ed67 --- /dev/null +++ b/Assets/Project/Audio/GameplaySFX/GaussCannon/ProjectFiles.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e0b096d680cea8e4f89de899795c3f12 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/ProjectFiles/CoilCharge.flp b/Assets/Project/Audio/GameplaySFX/GaussCannon/ProjectFiles/CoilCharge.flp new file mode 100644 index 00000000..6476b29c Binary files /dev/null and b/Assets/Project/Audio/GameplaySFX/GaussCannon/ProjectFiles/CoilCharge.flp differ diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/ProjectFiles/CoilCharge.flp.meta b/Assets/Project/Audio/GameplaySFX/GaussCannon/ProjectFiles/CoilCharge.flp.meta new file mode 100644 index 00000000..06b9040e --- /dev/null +++ b/Assets/Project/Audio/GameplaySFX/GaussCannon/ProjectFiles/CoilCharge.flp.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ab3f2750888ab2d4d82cb6d8b4f405c2 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/ProjectFiles/Electricity.flp b/Assets/Project/Audio/GameplaySFX/GaussCannon/ProjectFiles/Electricity.flp new file mode 100644 index 00000000..d5e2c78f Binary files /dev/null and b/Assets/Project/Audio/GameplaySFX/GaussCannon/ProjectFiles/Electricity.flp differ diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/ProjectFiles/Electricity.flp.meta b/Assets/Project/Audio/GameplaySFX/GaussCannon/ProjectFiles/Electricity.flp.meta new file mode 100644 index 00000000..be3d0e7a --- /dev/null +++ b/Assets/Project/Audio/GameplaySFX/GaussCannon/ProjectFiles/Electricity.flp.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4ff838df6f8278b4ca6285c9af1adcc8 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/ProjectFiles/WeaponCharge.flp b/Assets/Project/Audio/GameplaySFX/GaussCannon/ProjectFiles/WeaponCharge.flp new file mode 100644 index 00000000..8f880f19 Binary files /dev/null and b/Assets/Project/Audio/GameplaySFX/GaussCannon/ProjectFiles/WeaponCharge.flp differ diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/ProjectFiles/WeaponCharge.flp.meta b/Assets/Project/Audio/GameplaySFX/GaussCannon/ProjectFiles/WeaponCharge.flp.meta new file mode 100644 index 00000000..5b0f5ce2 --- /dev/null +++ b/Assets/Project/Audio/GameplaySFX/GaussCannon/ProjectFiles/WeaponCharge.flp.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d0b66f411cee90c4087a197d4fbf8551 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/ProjectFiles/WeaponShoot.flp b/Assets/Project/Audio/GameplaySFX/GaussCannon/ProjectFiles/WeaponShoot.flp new file mode 100644 index 00000000..6b48ee69 Binary files /dev/null and b/Assets/Project/Audio/GameplaySFX/GaussCannon/ProjectFiles/WeaponShoot.flp differ diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/ProjectFiles/WeaponShoot.flp.meta b/Assets/Project/Audio/GameplaySFX/GaussCannon/ProjectFiles/WeaponShoot.flp.meta new file mode 100644 index 00000000..13f7c2e8 --- /dev/null +++ b/Assets/Project/Audio/GameplaySFX/GaussCannon/ProjectFiles/WeaponShoot.flp.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2d00ad92500024c4ea8a5b2b4f13c1c2 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds.meta b/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds.meta new file mode 100644 index 00000000..12ef8064 --- /dev/null +++ b/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: eb01bb5c02177ad428b55e97f4f088e8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/Charge.asset b/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/Charge.asset new file mode 100644 index 00000000..4d4e3c2c --- /dev/null +++ b/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/Charge.asset @@ -0,0 +1,22 @@ +%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: 09514ecf28b230a408a213dce317ddb0, type: 3} + m_Name: Charge + m_EditorClassIdentifier: + id: GaussCannonCharge + audioType: 4 + audioClip: {fileID: 8300000, guid: e599fb0154bec9c4aaaa8c85d2d457d5, type: 3} + soundConfig: + volume: 1 + pitch: 1 + allowMultipleOfType: 1 + oneShot: 0 diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/Charge.asset.meta b/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/Charge.asset.meta new file mode 100644 index 00000000..cbb8733d --- /dev/null +++ b/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/Charge.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 687fb5b53dd0d0540b6e31e1ed526cf0 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/CoilCharge1.asset b/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/CoilCharge1.asset new file mode 100644 index 00000000..e9394130 --- /dev/null +++ b/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/CoilCharge1.asset @@ -0,0 +1,22 @@ +%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: 09514ecf28b230a408a213dce317ddb0, type: 3} + m_Name: CoilCharge1 + m_EditorClassIdentifier: + id: GaussCannonCoilCharge1 + audioType: 4 + audioClip: {fileID: 8300000, guid: b6abfdb885e638f40a1363f75915a17f, type: 3} + soundConfig: + volume: 1 + pitch: 1 + allowMultipleOfType: 1 + oneShot: 0 diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/CoilCharge1.asset.meta b/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/CoilCharge1.asset.meta new file mode 100644 index 00000000..c646684e --- /dev/null +++ b/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/CoilCharge1.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b2c5fea277a39af439d7225265978b77 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/CoilCharge2.asset b/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/CoilCharge2.asset new file mode 100644 index 00000000..eaeb2248 --- /dev/null +++ b/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/CoilCharge2.asset @@ -0,0 +1,22 @@ +%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: 09514ecf28b230a408a213dce317ddb0, type: 3} + m_Name: CoilCharge2 + m_EditorClassIdentifier: + id: GaussCannonCoilCharge2 + audioType: 4 + audioClip: {fileID: 8300000, guid: 2ba23a69a3189c0428134eeee8839ba9, type: 3} + soundConfig: + volume: 1 + pitch: 1 + allowMultipleOfType: 1 + oneShot: 0 diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/CoilCharge2.asset.meta b/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/CoilCharge2.asset.meta new file mode 100644 index 00000000..f855c422 --- /dev/null +++ b/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/CoilCharge2.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 007c59ddcff68c9448a5fea18f5ae1be +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/CoilCharge3.asset b/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/CoilCharge3.asset new file mode 100644 index 00000000..0ff1946d --- /dev/null +++ b/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/CoilCharge3.asset @@ -0,0 +1,22 @@ +%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: 09514ecf28b230a408a213dce317ddb0, type: 3} + m_Name: CoilCharge3 + m_EditorClassIdentifier: + id: GaussCannonCoilCharge3 + audioType: 4 + audioClip: {fileID: 8300000, guid: 1f99ac6b3c1b0d44cafea6f2339eff8c, type: 3} + soundConfig: + volume: 1 + pitch: 1 + allowMultipleOfType: 1 + oneShot: 0 diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/CoilCharge3.asset.meta b/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/CoilCharge3.asset.meta new file mode 100644 index 00000000..5f9e76ee --- /dev/null +++ b/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/CoilCharge3.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 32a0f80093c784b45be7c63035e0d9b8 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/ElectricityLoop.asset b/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/ElectricityLoop.asset new file mode 100644 index 00000000..e4e66b21 --- /dev/null +++ b/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/ElectricityLoop.asset @@ -0,0 +1,22 @@ +%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: 09514ecf28b230a408a213dce317ddb0, type: 3} + m_Name: ElectricityLoop + m_EditorClassIdentifier: + id: GaussCannonElectricityLoop + audioType: 4 + audioClip: {fileID: 8300000, guid: 4cf5908572d656c44a2a8913980e85e2, type: 3} + soundConfig: + volume: 1 + pitch: 1 + allowMultipleOfType: 1 + oneShot: 0 diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/ElectricityLoop.asset.meta b/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/ElectricityLoop.asset.meta new file mode 100644 index 00000000..154da576 --- /dev/null +++ b/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/ElectricityLoop.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1e8fa8ee2823722409fd3ff24400d43b +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/Fire.asset b/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/Fire.asset new file mode 100644 index 00000000..74af416b --- /dev/null +++ b/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/Fire.asset @@ -0,0 +1,22 @@ +%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: 09514ecf28b230a408a213dce317ddb0, type: 3} + m_Name: Fire + m_EditorClassIdentifier: + id: GaussCannonFire + audioType: 4 + audioClip: {fileID: 8300000, guid: c44e32178bb5c004d973e73c4f10cd7e, type: 3} + soundConfig: + volume: 1 + pitch: 1 + allowMultipleOfType: 1 + oneShot: 0 diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/Fire.asset.meta b/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/Fire.asset.meta new file mode 100644 index 00000000..e2dfcdc5 --- /dev/null +++ b/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/Fire.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b91b8e6ae16a632459f1f81a1fbca2b4 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/WindDown.asset b/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/WindDown.asset new file mode 100644 index 00000000..067d2b3a --- /dev/null +++ b/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/WindDown.asset @@ -0,0 +1,22 @@ +%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: 09514ecf28b230a408a213dce317ddb0, type: 3} + m_Name: WindDown + m_EditorClassIdentifier: + id: GaussCannonWindDown + audioType: 0 + audioClip: {fileID: 8300000, guid: 251c3c2a8770e4647a5b70e41ac4355c, type: 3} + soundConfig: + volume: 1 + pitch: 1 + allowMultipleOfType: 1 + oneShot: 0 diff --git a/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/WindDown.asset.meta b/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/WindDown.asset.meta new file mode 100644 index 00000000..360b2097 --- /dev/null +++ b/Assets/Project/Audio/GameplaySFX/GaussCannon/Sounds/WindDown.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d871658efd5fd8143ac6104f254bf474 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Audio/UI_SFX.meta b/Assets/Project/Audio/InterfaceSFX.meta similarity index 100% rename from Assets/Project/Audio/UI_SFX.meta rename to Assets/Project/Audio/InterfaceSFX.meta diff --git a/Assets/Project/Audio/UI_SFX/Clips.meta b/Assets/Project/Audio/InterfaceSFX/Clips.meta similarity index 100% rename from Assets/Project/Audio/UI_SFX/Clips.meta rename to Assets/Project/Audio/InterfaceSFX/Clips.meta diff --git a/Assets/Project/Audio/UI_SFX/Clips/button-click-3.mp3 b/Assets/Project/Audio/InterfaceSFX/Clips/button-click.mp3 similarity index 100% rename from Assets/Project/Audio/UI_SFX/Clips/button-click-3.mp3 rename to Assets/Project/Audio/InterfaceSFX/Clips/button-click.mp3 diff --git a/Assets/Project/Audio/UI_SFX/Clips/button-click-3.mp3.meta b/Assets/Project/Audio/InterfaceSFX/Clips/button-click.mp3.meta similarity index 100% rename from Assets/Project/Audio/UI_SFX/Clips/button-click-3.mp3.meta rename to Assets/Project/Audio/InterfaceSFX/Clips/button-click.mp3.meta diff --git a/Assets/Project/Audio/UI_SFX/Clips/button-hover-3.mp3 b/Assets/Project/Audio/InterfaceSFX/Clips/button-hover.mp3 similarity index 100% rename from Assets/Project/Audio/UI_SFX/Clips/button-hover-3.mp3 rename to Assets/Project/Audio/InterfaceSFX/Clips/button-hover.mp3 diff --git a/Assets/Project/Audio/UI_SFX/Clips/button-hover-3.mp3.meta b/Assets/Project/Audio/InterfaceSFX/Clips/button-hover.mp3.meta similarity index 100% rename from Assets/Project/Audio/UI_SFX/Clips/button-hover-3.mp3.meta rename to Assets/Project/Audio/InterfaceSFX/Clips/button-hover.mp3.meta diff --git a/Assets/Project/Audio/UI_SFX/Clips/transition-out-3.mp3 b/Assets/Project/Audio/InterfaceSFX/Clips/transition-out.mp3 similarity index 100% rename from Assets/Project/Audio/UI_SFX/Clips/transition-out-3.mp3 rename to Assets/Project/Audio/InterfaceSFX/Clips/transition-out.mp3 diff --git a/Assets/Project/Audio/UI_SFX/Clips/transition-out-3.mp3.meta b/Assets/Project/Audio/InterfaceSFX/Clips/transition-out.mp3.meta similarity index 100% rename from Assets/Project/Audio/UI_SFX/Clips/transition-out-3.mp3.meta rename to Assets/Project/Audio/InterfaceSFX/Clips/transition-out.mp3.meta diff --git a/Assets/Project/Audio/InterfaceSFX/Sounds.meta b/Assets/Project/Audio/InterfaceSFX/Sounds.meta new file mode 100644 index 00000000..163f44ac --- /dev/null +++ b/Assets/Project/Audio/InterfaceSFX/Sounds.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 198bec80ee0d88943b7d991c1b14df62 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Audio/InterfaceSFX/Sounds/ButtonClick.asset b/Assets/Project/Audio/InterfaceSFX/Sounds/ButtonClick.asset new file mode 100644 index 00000000..8f88506d --- /dev/null +++ b/Assets/Project/Audio/InterfaceSFX/Sounds/ButtonClick.asset @@ -0,0 +1,22 @@ +%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: 09514ecf28b230a408a213dce317ddb0, type: 3} + m_Name: ButtonClick + m_EditorClassIdentifier: + id: ButtonClick + audioType: 2 + audioClip: {fileID: 8300000, guid: eba7e061ee425324ba97e904885bc9ea, type: 3} + soundConfig: + volume: 0.6 + pitch: 1 + allowMultipleOfType: 1 + allowMultipleOnTrack: 0 diff --git a/Assets/Project/Audio/UI_SFX/UI_SFX_ButtonClick.asset.meta b/Assets/Project/Audio/InterfaceSFX/Sounds/ButtonClick.asset.meta similarity index 100% rename from Assets/Project/Audio/UI_SFX/UI_SFX_ButtonClick.asset.meta rename to Assets/Project/Audio/InterfaceSFX/Sounds/ButtonClick.asset.meta diff --git a/Assets/Project/Audio/InterfaceSFX/Sounds/ButtonHover.asset b/Assets/Project/Audio/InterfaceSFX/Sounds/ButtonHover.asset new file mode 100644 index 00000000..f2d08a1c --- /dev/null +++ b/Assets/Project/Audio/InterfaceSFX/Sounds/ButtonHover.asset @@ -0,0 +1,22 @@ +%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: 09514ecf28b230a408a213dce317ddb0, type: 3} + m_Name: ButtonHover + m_EditorClassIdentifier: + id: ButtonHover + audioType: 2 + audioClip: {fileID: 8300000, guid: 55350632da60ba94cb593fa6bfe5e07b, type: 3} + soundConfig: + volume: 0.4 + pitch: 1 + allowMultipleOfType: 1 + allowMultipleOnTrack: 1 diff --git a/Assets/Project/Audio/UI_SFX/UI_SFX_ButtonHover.asset.meta b/Assets/Project/Audio/InterfaceSFX/Sounds/ButtonHover.asset.meta similarity index 100% rename from Assets/Project/Audio/UI_SFX/UI_SFX_ButtonHover.asset.meta rename to Assets/Project/Audio/InterfaceSFX/Sounds/ButtonHover.asset.meta diff --git a/Assets/Project/Audio/InterfaceSFX/Sounds/ButtonSelectNegative.asset b/Assets/Project/Audio/InterfaceSFX/Sounds/ButtonSelectNegative.asset new file mode 100644 index 00000000..dd9e6996 --- /dev/null +++ b/Assets/Project/Audio/InterfaceSFX/Sounds/ButtonSelectNegative.asset @@ -0,0 +1,22 @@ +%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: 09514ecf28b230a408a213dce317ddb0, type: 3} + m_Name: ButtonSelectNegative + m_EditorClassIdentifier: + id: ButtonSelectNegative + audioType: 2 + audioClip: {fileID: 8300000, guid: 805a471d5e1285642b49cb687239ea7b, type: 3} + soundConfig: + volume: 0.5 + pitch: 1 + allowMultipleOfType: 1 + allowMultipleOnTrack: 1 diff --git a/Assets/Project/Audio/UI_SFX/UI_SFX_ButtonSelectNegative.asset.meta b/Assets/Project/Audio/InterfaceSFX/Sounds/ButtonSelectNegative.asset.meta similarity index 100% rename from Assets/Project/Audio/UI_SFX/UI_SFX_ButtonSelectNegative.asset.meta rename to Assets/Project/Audio/InterfaceSFX/Sounds/ButtonSelectNegative.asset.meta diff --git a/Assets/Project/Audio/InterfaceSFX/Sounds/ButtonSelectPositive.asset b/Assets/Project/Audio/InterfaceSFX/Sounds/ButtonSelectPositive.asset new file mode 100644 index 00000000..8b75f7d2 --- /dev/null +++ b/Assets/Project/Audio/InterfaceSFX/Sounds/ButtonSelectPositive.asset @@ -0,0 +1,22 @@ +%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: 09514ecf28b230a408a213dce317ddb0, type: 3} + m_Name: ButtonSelectPositive + m_EditorClassIdentifier: + id: ButtonSelectPositive + audioType: 2 + audioClip: {fileID: 8300000, guid: eba7e061ee425324ba97e904885bc9ea, type: 3} + soundConfig: + volume: 0.6 + pitch: 1 + allowMultipleOfType: 1 + allowMultipleOnTrack: 1 diff --git a/Assets/Project/Audio/UI_SFX/UI_SFX_ButtonSelectPositive.asset.meta b/Assets/Project/Audio/InterfaceSFX/Sounds/ButtonSelectPositive.asset.meta similarity index 100% rename from Assets/Project/Audio/UI_SFX/UI_SFX_ButtonSelectPositive.asset.meta rename to Assets/Project/Audio/InterfaceSFX/Sounds/ButtonSelectPositive.asset.meta diff --git a/Assets/Project/Audio/InterfaceSFX/Sounds/MenuTransition.asset b/Assets/Project/Audio/InterfaceSFX/Sounds/MenuTransition.asset new file mode 100644 index 00000000..4c6f6df9 --- /dev/null +++ b/Assets/Project/Audio/InterfaceSFX/Sounds/MenuTransition.asset @@ -0,0 +1,22 @@ +%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: 09514ecf28b230a408a213dce317ddb0, type: 3} + m_Name: MenuTransition + m_EditorClassIdentifier: + id: MenuTransitionOut + audioType: 2 + audioClip: {fileID: 8300000, guid: 805a471d5e1285642b49cb687239ea7b, type: 3} + soundConfig: + volume: 0.5 + pitch: 1 + allowMultipleOfType: 1 + allowMultipleOnTrack: 0 diff --git a/Assets/Project/Audio/UI_SFX/UI_SFX_MenuTransition.asset.meta b/Assets/Project/Audio/InterfaceSFX/Sounds/MenuTransition.asset.meta similarity index 100% rename from Assets/Project/Audio/UI_SFX/UI_SFX_MenuTransition.asset.meta rename to Assets/Project/Audio/InterfaceSFX/Sounds/MenuTransition.asset.meta diff --git a/Assets/Project/Audio/ST/TrackLists.meta b/Assets/Project/Audio/ST/TrackLists.meta deleted file mode 100644 index c5bf5ec0..00000000 --- a/Assets/Project/Audio/ST/TrackLists.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: acc59f61584656846b1af2514ebb8dfe -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Audio/ST/TrackLists/MainMenu.asset b/Assets/Project/Audio/ST/TrackLists/MainMenu.asset deleted file mode 100644 index fbb7f3ec..00000000 --- a/Assets/Project/Audio/ST/TrackLists/MainMenu.asset +++ /dev/null @@ -1,16 +0,0 @@ -%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: 0f66938361dd6ce4c820d1425cb7ed8b, type: 3} - m_Name: MainMenu - m_EditorClassIdentifier: - tracks: - - {fileID: 11400000, guid: dccc669e2843782488b6ed8eb772cba7, type: 2} diff --git a/Assets/Project/Audio/ST/Tracks/ST_DeepSpace.asset b/Assets/Project/Audio/ST/Tracks/ST_DeepSpace.asset deleted file mode 100644 index e9431e91..00000000 --- a/Assets/Project/Audio/ST/Tracks/ST_DeepSpace.asset +++ /dev/null @@ -1,21 +0,0 @@ -%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: 09514ecf28b230a408a213dce317ddb0, type: 3} - m_Name: ST_DeepSpace - m_EditorClassIdentifier: - id: ST_DeepSpace - audioType: 0 - audioClip: {fileID: 8300000, guid: a24bdad56cb0ff9428637a90065c53f8, type: 3} - volume: 1 - pitch: 1 - allowMultipleOnTrack: 1 - allowMultipleOfType: 0 diff --git a/Assets/Project/Audio/ST/Tracks/ST_DeepSpace.asset.meta b/Assets/Project/Audio/ST/Tracks/ST_DeepSpace.asset.meta deleted file mode 100644 index 388cb653..00000000 --- a/Assets/Project/Audio/ST/Tracks/ST_DeepSpace.asset.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: dccc669e2843782488b6ed8eb772cba7 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Audio/ST.meta b/Assets/Project/Audio/Soundtrack.meta similarity index 100% rename from Assets/Project/Audio/ST.meta rename to Assets/Project/Audio/Soundtrack.meta diff --git a/Assets/Project/Audio/ST/Clips.meta b/Assets/Project/Audio/Soundtrack/Clips.meta similarity index 100% rename from Assets/Project/Audio/ST/Clips.meta rename to Assets/Project/Audio/Soundtrack/Clips.meta diff --git a/Assets/Project/Audio/ST/Clips/Deep_Space.mp3 b/Assets/Project/Audio/Soundtrack/Clips/Deep_Space.mp3 similarity index 100% rename from Assets/Project/Audio/ST/Clips/Deep_Space.mp3 rename to Assets/Project/Audio/Soundtrack/Clips/Deep_Space.mp3 diff --git a/Assets/Project/Audio/ST/Clips/Deep_Space.mp3.meta b/Assets/Project/Audio/Soundtrack/Clips/Deep_Space.mp3.meta similarity index 100% rename from Assets/Project/Audio/ST/Clips/Deep_Space.mp3.meta rename to Assets/Project/Audio/Soundtrack/Clips/Deep_Space.mp3.meta diff --git a/Assets/Project/Audio/Soundtrack/DefaultSoundTrack.asset b/Assets/Project/Audio/Soundtrack/DefaultSoundTrack.asset new file mode 100644 index 00000000..d02ef0f6 --- /dev/null +++ b/Assets/Project/Audio/Soundtrack/DefaultSoundTrack.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: 0f66938361dd6ce4c820d1425cb7ed8b, type: 3} + m_Name: DefaultSoundTrack + m_EditorClassIdentifier: + objects: + - {fileID: 11400000, guid: c5ef4957c3911b14e9569388175a80a1, type: 2} diff --git a/Assets/Project/Audio/ST/TrackLists/MainMenu.asset.meta b/Assets/Project/Audio/Soundtrack/DefaultSoundTrack.asset.meta similarity index 100% rename from Assets/Project/Audio/ST/TrackLists/MainMenu.asset.meta rename to Assets/Project/Audio/Soundtrack/DefaultSoundTrack.asset.meta diff --git a/Assets/Project/Audio/ST/Tracks.meta b/Assets/Project/Audio/Soundtrack/Tracks.meta similarity index 100% rename from Assets/Project/Audio/ST/Tracks.meta rename to Assets/Project/Audio/Soundtrack/Tracks.meta diff --git a/Assets/Project/Audio/Soundtrack/Tracks/DeepSpace.asset b/Assets/Project/Audio/Soundtrack/Tracks/DeepSpace.asset new file mode 100644 index 00000000..8db0d4ea --- /dev/null +++ b/Assets/Project/Audio/Soundtrack/Tracks/DeepSpace.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: 5b97a06f550f0ad4bb81dfdca4af6fdc, type: 3} + m_Name: DeepSpace + m_EditorClassIdentifier: + id: DeepSpace + audioType: 1 + audioClip: {fileID: 8300000, guid: a24bdad56cb0ff9428637a90065c53f8, type: 3} + soundConfig: + volume: 1 + pitch: 1 + allowMultipleOfType: 1 + allowMultipleOnTrack: 0 + atmosphereFilter: 2147483647 diff --git a/Assets/Project/Audio/Soundtrack/Tracks/DeepSpace.asset.meta b/Assets/Project/Audio/Soundtrack/Tracks/DeepSpace.asset.meta new file mode 100644 index 00000000..e24431ea --- /dev/null +++ b/Assets/Project/Audio/Soundtrack/Tracks/DeepSpace.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c5ef4957c3911b14e9569388175a80a1 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Audio/UI_SFX/UI_SFX_ButtonClick.asset b/Assets/Project/Audio/UI_SFX/UI_SFX_ButtonClick.asset deleted file mode 100644 index 35859137..00000000 --- a/Assets/Project/Audio/UI_SFX/UI_SFX_ButtonClick.asset +++ /dev/null @@ -1,21 +0,0 @@ -%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: 09514ecf28b230a408a213dce317ddb0, type: 3} - m_Name: UI_SFX_ButtonClick - m_EditorClassIdentifier: - id: UI_SFX_ButtonClick - audioType: 1 - audioClip: {fileID: 8300000, guid: eba7e061ee425324ba97e904885bc9ea, type: 3} - volume: 0.6 - pitch: 1 - allowMultipleOnTrack: 1 - allowMultipleOfType: 0 diff --git a/Assets/Project/Audio/UI_SFX/UI_SFX_ButtonHover.asset b/Assets/Project/Audio/UI_SFX/UI_SFX_ButtonHover.asset deleted file mode 100644 index 28b0696f..00000000 --- a/Assets/Project/Audio/UI_SFX/UI_SFX_ButtonHover.asset +++ /dev/null @@ -1,21 +0,0 @@ -%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: 09514ecf28b230a408a213dce317ddb0, type: 3} - m_Name: UI_SFX_ButtonHover - m_EditorClassIdentifier: - id: UI_SFX_ButtonHover - audioType: 1 - audioClip: {fileID: 8300000, guid: 55350632da60ba94cb593fa6bfe5e07b, type: 3} - volume: 0.4 - pitch: 1 - allowMultipleOnTrack: 1 - allowMultipleOfType: 1 diff --git a/Assets/Project/Audio/UI_SFX/UI_SFX_ButtonSelectNegative.asset b/Assets/Project/Audio/UI_SFX/UI_SFX_ButtonSelectNegative.asset deleted file mode 100644 index 480f4a96..00000000 --- a/Assets/Project/Audio/UI_SFX/UI_SFX_ButtonSelectNegative.asset +++ /dev/null @@ -1,21 +0,0 @@ -%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: 09514ecf28b230a408a213dce317ddb0, type: 3} - m_Name: UI_SFX_ButtonSelectNegative - m_EditorClassIdentifier: - id: UI_SFX_ButtonSelectNegative - audioType: 1 - audioClip: {fileID: 8300000, guid: 805a471d5e1285642b49cb687239ea7b, type: 3} - volume: 0.5 - pitch: 1 - allowMultipleOnTrack: 1 - allowMultipleOfType: 1 diff --git a/Assets/Project/Audio/UI_SFX/UI_SFX_ButtonSelectPositive.asset b/Assets/Project/Audio/UI_SFX/UI_SFX_ButtonSelectPositive.asset deleted file mode 100644 index 34e63017..00000000 --- a/Assets/Project/Audio/UI_SFX/UI_SFX_ButtonSelectPositive.asset +++ /dev/null @@ -1,21 +0,0 @@ -%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: 09514ecf28b230a408a213dce317ddb0, type: 3} - m_Name: UI_SFX_ButtonSelectPositive - m_EditorClassIdentifier: - id: UI_SFX_ButtonSelectPositive - audioType: 1 - audioClip: {fileID: 8300000, guid: eba7e061ee425324ba97e904885bc9ea, type: 3} - volume: 0.6 - pitch: 1 - allowMultipleOnTrack: 1 - allowMultipleOfType: 1 diff --git a/Assets/Project/Audio/UI_SFX/UI_SFX_MenuTransition.asset b/Assets/Project/Audio/UI_SFX/UI_SFX_MenuTransition.asset deleted file mode 100644 index b1e31afc..00000000 --- a/Assets/Project/Audio/UI_SFX/UI_SFX_MenuTransition.asset +++ /dev/null @@ -1,21 +0,0 @@ -%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: 09514ecf28b230a408a213dce317ddb0, type: 3} - m_Name: UI_SFX_MenuTransition - m_EditorClassIdentifier: - id: UI_SFX_MenuTransitionOut - audioType: 1 - audioClip: {fileID: 8300000, guid: 805a471d5e1285642b49cb687239ea7b, type: 3} - volume: 0.5 - pitch: 1 - allowMultipleOnTrack: 1 - allowMultipleOfType: 0 diff --git a/Assets/Project/GameData/Gameplay/MissionBag.asset b/Assets/Project/GameData/Gameplay/MissionBag.asset index 09d449c0..60f9dcf3 100644 --- a/Assets/Project/GameData/Gameplay/MissionBag.asset +++ b/Assets/Project/GameData/Gameplay/MissionBag.asset @@ -14,3 +14,4 @@ MonoBehaviour: m_EditorClassIdentifier: objects: - {fileID: 11400000, guid: 6d85dfa069607da4b997c5475322a21a, type: 2} + - {fileID: 11400000, guid: 005930b4ad0695b43bdf34b7e957b027, type: 2} diff --git a/Assets/Project/GameData/Gameplay/Missions/FirstMission.asset b/Assets/Project/GameData/Gameplay/Missions/FirstMission.asset new file mode 100644 index 00000000..5c905d85 --- /dev/null +++ b/Assets/Project/GameData/Gameplay/Missions/FirstMission.asset @@ -0,0 +1,33 @@ +%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: ab99416c8455443cb579df784e7930cb, type: 3} + m_Name: FirstMission + m_EditorClassIdentifier: + missionName: First + missionDescription: Basic mission with a couple of waves + initialResources: + creditCost: 100 + metalsCost: 10 + resourceMultiplier: 0.2 + waves: + - baseStrength: 0 + blueprints: + - {fileID: 11400000, guid: 587404bb59283c143936ea0c1463d0a6, type: 2} + - baseStrength: 50 + blueprints: + - {fileID: 11400000, guid: 587404bb59283c143936ea0c1463d0a6, type: 2} + - baseStrength: 100 + blueprints: + - {fileID: 11400000, guid: 587404bb59283c143936ea0c1463d0a6, type: 2} + - baseStrength: 200 + blueprints: + - {fileID: 11400000, guid: 587404bb59283c143936ea0c1463d0a6, type: 2} diff --git a/Assets/Project/GameData/Gameplay/Missions/FirstMission.asset.meta b/Assets/Project/GameData/Gameplay/Missions/FirstMission.asset.meta new file mode 100644 index 00000000..882c46e9 --- /dev/null +++ b/Assets/Project/GameData/Gameplay/Missions/FirstMission.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 005930b4ad0695b43bdf34b7e957b027 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/GameData/Grids/BlockTemplateBag.asset b/Assets/Project/GameData/Grids/BlockTemplateBag.asset index 8973ce6e..931567ff 100644 --- a/Assets/Project/GameData/Grids/BlockTemplateBag.asset +++ b/Assets/Project/GameData/Grids/BlockTemplateBag.asset @@ -13,12 +13,15 @@ MonoBehaviour: m_Name: BlockTemplateBag m_EditorClassIdentifier: objects: + - {fileID: 11400000, guid: e688b45b241b3924587544a9db71e8d1, type: 2} + - {fileID: 11400000, guid: 81aa3d02684b5a14a956faee3031142c, type: 2} - {fileID: 11400000, guid: 72dbfdef50baee14eb98d46dcf5ed2b0, type: 2} - {fileID: 11400000, guid: 316a423b1a9ff5f4d8e5fb32f8578a33, type: 2} - {fileID: 11400000, guid: 7f6d6d9743416364db30fe6a43cf5eb4, type: 2} - {fileID: 11400000, guid: 21e0c30209c5fba4ea32c95505f26e1d, type: 2} - {fileID: 11400000, guid: 5224ba5a5fbe20544b567c4b5d4364d7, type: 2} - {fileID: 11400000, guid: 1fd3838f5fe406449b7b7284a9f01e29, type: 2} + - {fileID: 11400000, guid: f363b90cd7044ba49bdbe905875ab529, type: 2} - {fileID: 11400000, guid: 43b2f24ed5f878041b1cf3c53925975b, type: 2} - {fileID: 11400000, guid: cc46058bda4f7b048b583f4fc2fffbc5, type: 2} - {fileID: 11400000, guid: f440fd0d704a52b47b19df71017570ca, type: 2} diff --git a/Assets/Project/GameData/Grids/Blocks/DroneBay.asset b/Assets/Project/GameData/Grids/Blocks/DroneBay.asset new file mode 100644 index 00000000..2038306e --- /dev/null +++ b/Assets/Project/GameData/Grids/Blocks/DroneBay.asset @@ -0,0 +1,39 @@ +%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: c4a9b5a4c4adb3146841421b06d2a73d, type: 3} + m_Name: DroneBay + m_EditorClassIdentifier: + id: DroneBay + displayId: Drone Bay + category: 512 + thumbnail: {fileID: -5935392190051464458, guid: 9bf3524a785798c4cb19748f21802c5f, + type: 3} + size: {x: 2, y: 2} + metadata: + strength: 50 + blockCosts: + creditCost: 50 + metalsCost: 100 + inertPrefab: {fileID: 5985878368135977475, guid: 39fdff68dd14bd84dab48dcac3dac195, + type: 3} + alivePrefab: {fileID: 5475960269345514913, guid: 6bb15bfd671066e4984dec37bd70f834, + type: 3} + physicalPartial: + data: + hull: 500 + armor: 20 + mass: 3.2 + droneBayPartial: + data: + buildTime: 30 + maxPopulation: 3 + droneHull: 100 diff --git a/Assets/Project/GameData/Grids/Blocks/DroneBay.asset.meta b/Assets/Project/GameData/Grids/Blocks/DroneBay.asset.meta new file mode 100644 index 00000000..3be9816c --- /dev/null +++ b/Assets/Project/GameData/Grids/Blocks/DroneBay.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e688b45b241b3924587544a9db71e8d1 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/GameData/Grids/Blocks/GaussCannon.asset b/Assets/Project/GameData/Grids/Blocks/GaussCannon.asset new file mode 100644 index 00000000..069a3431 --- /dev/null +++ b/Assets/Project/GameData/Grids/Blocks/GaussCannon.asset @@ -0,0 +1,45 @@ +%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: 315cff37205d6a74dbb0f786e32cd1e8, type: 3} + m_Name: GaussCannon + m_EditorClassIdentifier: + id: GaussCannon + displayId: Gauss Cannon Core + category: 128 + thumbnail: {fileID: 21300000, guid: ac70595a0ff8dde48bc5686d5106d297, type: 3} + size: {x: 2, y: 2} + metadata: + strength: 30 + blockCosts: + creditCost: 600 + metalsCost: 15 + inertPrefab: {fileID: 8936900360422922243, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + alivePrefab: {fileID: 5810594951229872469, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + physicalPartial: + data: + hull: 500 + armor: 50 + mass: 4 + stationControllerPartial: + data: + powerGeneration: 0.65 + torque: 1000 + gaussCannonPartial: + data: + turningRate: 50 + turretArc: 360 + turretRadius: 3.4375 + damage: 250 + chargeTime: 3 + range: 150 diff --git a/Assets/Project/GameData/Grids/Blocks/GaussCannon.asset.meta b/Assets/Project/GameData/Grids/Blocks/GaussCannon.asset.meta new file mode 100644 index 00000000..8cf6aee0 --- /dev/null +++ b/Assets/Project/GameData/Grids/Blocks/GaussCannon.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 81aa3d02684b5a14a956faee3031142c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/GameData/Grids/Blocks/HeavyArmorBlock.asset b/Assets/Project/GameData/Grids/Blocks/HeavyArmorBlock.asset index 42df192d..8b426ced 100644 --- a/Assets/Project/GameData/Grids/Blocks/HeavyArmorBlock.asset +++ b/Assets/Project/GameData/Grids/Blocks/HeavyArmorBlock.asset @@ -18,11 +18,17 @@ MonoBehaviour: thumbnail: {fileID: -5260229250703764349, guid: b83defb4a441e484193ddcc29009f684, type: 3} size: {x: 1, y: 1} + metadata: + strength: 2 + blockCosts: + creditCost: 15 + metalsCost: 1 inertPrefab: {fileID: 2171179265563681476, guid: bf7e9488ce4c6284f851f7c366bc82f0, type: 3} alivePrefab: {fileID: 3638534093892745918, guid: 3b90ce0ac286b70469ab361066a818c0, type: 3} - physicalTemplatePartial: - maxHull: 35 - armor: 35 - mass: 1.8 + physicalPartial: + data: + hull: 35 + armor: 35 + mass: 1.8 diff --git a/Assets/Project/GameData/Grids/Blocks/LargeHeavyArmor.asset b/Assets/Project/GameData/Grids/Blocks/LargeHeavyArmor.asset index fe77e73a..32cdfdd8 100644 --- a/Assets/Project/GameData/Grids/Blocks/LargeHeavyArmor.asset +++ b/Assets/Project/GameData/Grids/Blocks/LargeHeavyArmor.asset @@ -18,11 +18,17 @@ MonoBehaviour: thumbnail: {fileID: -953787185943740991, guid: cb750ca62cc8eb04bbaefe5c1601e073, type: 3} size: {x: 3, y: 1} + metadata: + strength: 6 + blockCosts: + creditCost: 40 + metalsCost: 3 inertPrefab: {fileID: 629283983640481579, guid: a913b7f6f31d651408e59c414dfb1391, type: 3} alivePrefab: {fileID: 7854684309494694163, guid: ae0ad9411c864ba42add8284bea1367d, type: 3} - physicalTemplatePartial: - maxHull: 110 - armor: 40 - mass: 5.4 + physicalPartial: + data: + hull: 110 + armor: 40 + mass: 5.4 diff --git a/Assets/Project/GameData/Grids/Blocks/LargeLightArmor.asset b/Assets/Project/GameData/Grids/Blocks/LargeLightArmor.asset index c38c95c1..640bd4a0 100644 --- a/Assets/Project/GameData/Grids/Blocks/LargeLightArmor.asset +++ b/Assets/Project/GameData/Grids/Blocks/LargeLightArmor.asset @@ -18,11 +18,17 @@ MonoBehaviour: thumbnail: {fileID: 4255077602726073688, guid: cb750ca62cc8eb04bbaefe5c1601e073, type: 3} size: {x: 3, y: 1} + metadata: + strength: 3 + blockCosts: + creditCost: 15 + metalsCost: 0 inertPrefab: {fileID: 5277436881257897682, guid: ef02463284d922a46b676cdb98f75774, type: 3} alivePrefab: {fileID: 7249312673340749134, guid: 78676fd8964da3a4ab5b445ede918731, type: 3} - physicalTemplatePartial: - maxHull: 50 - armor: 15 - mass: 1.8 + physicalPartial: + data: + hull: 50 + armor: 15 + mass: 1.8 diff --git a/Assets/Project/GameData/Grids/Blocks/LightArmorBlock.asset b/Assets/Project/GameData/Grids/Blocks/LightArmorBlock.asset index 996ade20..4dbd1c1d 100644 --- a/Assets/Project/GameData/Grids/Blocks/LightArmorBlock.asset +++ b/Assets/Project/GameData/Grids/Blocks/LightArmorBlock.asset @@ -18,11 +18,17 @@ MonoBehaviour: thumbnail: {fileID: 8968284143069025193, guid: b83defb4a441e484193ddcc29009f684, type: 3} size: {x: 1, y: 1} + metadata: + strength: 1 + blockCosts: + creditCost: 5 + metalsCost: 0 inertPrefab: {fileID: 99981650681454060, guid: 97bc4225b763ee14693b5f3a172d9f7e, type: 3} alivePrefab: {fileID: 2367148154100342487, guid: 12c02378d4ee4574683e717462817270, type: 3} - physicalTemplatePartial: - maxHull: 15 - armor: 10 - mass: 0.6 + physicalPartial: + data: + hull: 15 + armor: 10 + mass: 0.6 diff --git a/Assets/Project/GameData/Grids/Blocks/MediumCockpit.asset b/Assets/Project/GameData/Grids/Blocks/MediumCockpit.asset index 6bb3fcb5..f11f5f56 100644 --- a/Assets/Project/GameData/Grids/Blocks/MediumCockpit.asset +++ b/Assets/Project/GameData/Grids/Blocks/MediumCockpit.asset @@ -9,7 +9,7 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 81fb5adc618c4a34b9dc96c383c715e5, type: 3} + m_Script: {fileID: 11500000, guid: ccb7e6c2f1d5ffc47978c443fc0e9c85, type: 3} m_Name: MediumCockpit m_EditorClassIdentifier: id: MediumCockpit @@ -18,18 +18,21 @@ MonoBehaviour: thumbnail: {fileID: 8996286793590431966, guid: cb750ca62cc8eb04bbaefe5c1601e073, type: 3} size: {x: 3, y: 1} + metadata: + strength: 10 + blockCosts: + creditCost: 100 + metalsCost: 10 inertPrefab: {fileID: 1524255837376171708, guid: edf254f4645f96b48b0a3338d12f8f67, type: 3} alivePrefab: {fileID: 3867314681599816325, guid: d41aedf958e2ee642b8940842ab9524f, type: 3} - physicalTemplatePartial: - maxHull: 80 - armor: 25 - mass: 1.5 - controllerTemplatePartial: - powerGeneration: 100 - powerConsumption: 100 - powerStorage: 500 - turningRate: 30 - thrustModifier: - scalar: 1 + physicalPartial: + data: + hull: 80 + armor: 25 + mass: 1.5 + shipControllerPartial: + data: + powerGenerationModifier: 0.7 + turningPowerModifier: 1.5 diff --git a/Assets/Project/GameData/Grids/Blocks/MediumThruster.asset b/Assets/Project/GameData/Grids/Blocks/MediumThruster.asset index 90ea58da..cc3c4d69 100644 --- a/Assets/Project/GameData/Grids/Blocks/MediumThruster.asset +++ b/Assets/Project/GameData/Grids/Blocks/MediumThruster.asset @@ -18,13 +18,20 @@ MonoBehaviour: thumbnail: {fileID: 4400518260287964509, guid: cb750ca62cc8eb04bbaefe5c1601e073, type: 3} size: {x: 3, y: 1} + metadata: + strength: 6 + blockCosts: + creditCost: 60 + metalsCost: 3 inertPrefab: {fileID: 5368107407437591167, guid: c93d52622cd16214ab9e1aceda9f5920, type: 3} alivePrefab: {fileID: 6789153558413497451, guid: 199178b81140ae14d816e1dcba5546a0, type: 3} - physicalTemplatePartial: - maxHull: 50 - armor: 5 - mass: 1.5 - thrusterTemplatePartial: - thrust: 6000 + physicalPartial: + data: + hull: 50 + armor: 5 + mass: 1.5 + thrusterPartial: + data: + thrust: 6000 diff --git a/Assets/Project/GameData/Grids/Blocks/ShieldGeneratorMK1.asset b/Assets/Project/GameData/Grids/Blocks/ShieldGeneratorMK1.asset new file mode 100644 index 00000000..1b9e2edc --- /dev/null +++ b/Assets/Project/GameData/Grids/Blocks/ShieldGeneratorMK1.asset @@ -0,0 +1,39 @@ +%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: f16438f0353e4382b0fcd91150af41f4, type: 3} + m_Name: ShieldGeneratorMK1 + m_EditorClassIdentifier: + id: ShieldGeneratorMK1 + displayId: Shield Generator MK1 + category: 256 + thumbnail: {fileID: 3846102588298344479, guid: 937e27828f2f2024ba2726a806ff5d8f, + type: 3} + size: {x: 1, y: 1} + metadata: + strength: 10 + blockCosts: + creditCost: 100 + metalsCost: 5 + inertPrefab: {fileID: 4636372872592261853, guid: 3636cc27c7137c74a956ef3098f8032f, + type: 3} + alivePrefab: {fileID: 6229444498424008411, guid: d06dc347ad0ad5e40aa7d747c62c0471, + type: 3} + physicalPartial: + data: + hull: 50 + armor: 10 + mass: 5 + shieldGeneratorPartial: + data: + shieldRadius: 3 + recoverTime: 5 + health: 600 diff --git a/Assets/Project/GameData/Grids/Blocks/ShieldGeneratorMK1.asset.meta b/Assets/Project/GameData/Grids/Blocks/ShieldGeneratorMK1.asset.meta new file mode 100644 index 00000000..24ac8ee5 --- /dev/null +++ b/Assets/Project/GameData/Grids/Blocks/ShieldGeneratorMK1.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f363b90cd7044ba49bdbe905875ab529 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/GameData/Grids/Blocks/SmallGyroscope.asset b/Assets/Project/GameData/Grids/Blocks/SmallGyroscope.asset index 0f3c5a77..619f7c83 100644 --- a/Assets/Project/GameData/Grids/Blocks/SmallGyroscope.asset +++ b/Assets/Project/GameData/Grids/Blocks/SmallGyroscope.asset @@ -18,14 +18,20 @@ MonoBehaviour: thumbnail: {fileID: -6292391568748222180, guid: b83defb4a441e484193ddcc29009f684, type: 3} size: {x: 1, y: 1} + metadata: + strength: 3 + blockCosts: + creditCost: 30 + metalsCost: 1 inertPrefab: {fileID: 9135450384423534818, guid: ebfb89a637c2e8a4aa93425e10f8bb04, type: 3} alivePrefab: {fileID: 4166625144049295618, guid: c401a2b3fb7edc645ba12478200efbd0, type: 3} - physicalTemplatePartial: - maxHull: 5 - armor: 0 - mass: 1 - gyroscopeTemplatePartial: - turningRate: - scalar: 0 + physicalPartial: + data: + hull: 5 + armor: 0 + mass: 1 + gyroscopePartial: + data: + torque: 400 diff --git a/Assets/Project/GameData/Grids/Blocks/SmallReactor.asset b/Assets/Project/GameData/Grids/Blocks/SmallReactor.asset index dce8e31b..217678b9 100644 --- a/Assets/Project/GameData/Grids/Blocks/SmallReactor.asset +++ b/Assets/Project/GameData/Grids/Blocks/SmallReactor.asset @@ -18,14 +18,20 @@ MonoBehaviour: thumbnail: {fileID: 816631776277785474, guid: b83defb4a441e484193ddcc29009f684, type: 3} size: {x: 1, y: 1} + metadata: + strength: 5 + blockCosts: + creditCost: 70 + metalsCost: 3 inertPrefab: {fileID: 3981359817624512356, guid: a036b52ecda087642a569e5bb8c537ca, type: 3} alivePrefab: {fileID: 37259711147757825, guid: a73af4d5c3260df4eb56f6dfe10585e3, type: 3} - physicalTemplatePartial: - maxHull: 10 - armor: 0 - mass: 1 - powerGeneratorTemplatePartial: - peakGeneration: - scalar: 0 + physicalPartial: + data: + hull: 10 + armor: 0 + mass: 1 + powerGeneratorPartial: + data: + powerGeneration: 10 diff --git a/Assets/Project/GameData/Grids/Blocks/SmallThruster.asset b/Assets/Project/GameData/Grids/Blocks/SmallThruster.asset index 4f41010b..1f64ad75 100644 --- a/Assets/Project/GameData/Grids/Blocks/SmallThruster.asset +++ b/Assets/Project/GameData/Grids/Blocks/SmallThruster.asset @@ -18,13 +18,20 @@ MonoBehaviour: thumbnail: {fileID: 4425202920908239024, guid: b83defb4a441e484193ddcc29009f684, type: 3} size: {x: 1, y: 1} + metadata: + strength: 2 + blockCosts: + creditCost: 25 + metalsCost: 1 inertPrefab: {fileID: 1309453209372291478, guid: 9b2c44f8f2a31e5498ad6b6528f08322, type: 3} alivePrefab: {fileID: 143959867388609834, guid: 473480ed5009fba419516d6b588f746a, type: 3} - physicalTemplatePartial: - maxHull: 15 - armor: 5 - mass: 0.6 - thrusterTemplatePartial: - thrust: 1800 + physicalPartial: + data: + hull: 15 + armor: 5 + mass: 0.6 + thrusterPartial: + data: + thrust: 1800 diff --git a/Assets/Project/GameData/Grids/Blocks/TwinAutocannon.asset b/Assets/Project/GameData/Grids/Blocks/TwinAutocannon.asset index 3e7c22ab..107159dd 100644 --- a/Assets/Project/GameData/Grids/Blocks/TwinAutocannon.asset +++ b/Assets/Project/GameData/Grids/Blocks/TwinAutocannon.asset @@ -18,16 +18,26 @@ MonoBehaviour: thumbnail: {fileID: 4028293609388341736, guid: b83defb4a441e484193ddcc29009f684, type: 3} size: {x: 1, y: 1} + metadata: + strength: 8 + blockCosts: + creditCost: 100 + metalsCost: 2 inertPrefab: {fileID: 3381617769083692569, guid: 32232d525af1553449ae80920da2fe74, type: 3} alivePrefab: {fileID: 5632532741842114357, guid: 67dc6d15d140c08438680a80282db6af, type: 3} - physicalTemplatePartial: - maxHull: 50 - armor: 15 - mass: 3 - autocannonTemplatePartial: - turningRate: 100 - firingRate: 0.5 - damage: 80 - cycleMode: 0 + physicalPartial: + data: + hull: 50 + armor: 15 + mass: 3 + autocannonPartial: + data: + turningRate: 100 + firingRate: 150 + turretArc: 200 + turretRadius: 1.375 + damage: 80 + range: 300 + cycleMode: 0 diff --git a/Assets/Project/GameData/Grids/Blueprints/BlueprintTypeBag.asset b/Assets/Project/GameData/Grids/Blueprints/BlueprintTypeBag.asset index 967e822a..d6528a87 100644 --- a/Assets/Project/GameData/Grids/Blueprints/BlueprintTypeBag.asset +++ b/Assets/Project/GameData/Grids/Blueprints/BlueprintTypeBag.asset @@ -19,3 +19,4 @@ MonoBehaviour: - {fileID: 11400000, guid: 6418ee3cf5aa4b745bcc2db665031053, type: 2} - {fileID: 11400000, guid: 426a246e14732cc4ebecf3702c4a049b, type: 2} - {fileID: 11400000, guid: e524c56f609a0e94ba5ab686b75532e9, type: 2} + - {fileID: 11400000, guid: 6f7bb33c8bf1d3141aacb1a408ac5ded, type: 2} diff --git a/Assets/Project/GameData/Grids/Blueprints/BlueprintTypes/Battleship.asset b/Assets/Project/GameData/Grids/Blueprints/BlueprintTypes/Battleship.asset index 518ec63d..38d752d6 100644 --- a/Assets/Project/GameData/Grids/Blueprints/BlueprintTypes/Battleship.asset +++ b/Assets/Project/GameData/Grids/Blueprints/BlueprintTypes/Battleship.asset @@ -15,4 +15,4 @@ MonoBehaviour: typeGuid: 1 displayName: Battleship maxSize: {x: 22, y: 15} - disallowedBlockCategories: 32 + allowedBlockCategory: 351 diff --git a/Assets/Project/GameData/Grids/Blueprints/BlueprintTypes/Corvette.asset b/Assets/Project/GameData/Grids/Blueprints/BlueprintTypes/Corvette.asset index 441acf42..952a8a92 100644 --- a/Assets/Project/GameData/Grids/Blueprints/BlueprintTypes/Corvette.asset +++ b/Assets/Project/GameData/Grids/Blueprints/BlueprintTypes/Corvette.asset @@ -15,4 +15,4 @@ MonoBehaviour: typeGuid: 2 displayName: Corvette maxSize: {x: 14, y: 9} - disallowedBlockCategories: 32 + allowedBlockCategory: 351 diff --git a/Assets/Project/GameData/Grids/Blueprints/BlueprintTypes/Fighter.asset b/Assets/Project/GameData/Grids/Blueprints/BlueprintTypes/Fighter.asset index 21818dcf..79744e04 100644 --- a/Assets/Project/GameData/Grids/Blueprints/BlueprintTypes/Fighter.asset +++ b/Assets/Project/GameData/Grids/Blueprints/BlueprintTypes/Fighter.asset @@ -15,4 +15,4 @@ MonoBehaviour: typeGuid: 3 displayName: Fighter maxSize: {x: 9, y: 7} - disallowedBlockCategories: 32 + allowedBlockCategory: 95 diff --git a/Assets/Project/GameData/Grids/Blueprints/BlueprintTypes/Mothership.asset b/Assets/Project/GameData/Grids/Blueprints/BlueprintTypes/Mothership.asset index bd634d79..5f357980 100644 --- a/Assets/Project/GameData/Grids/Blueprints/BlueprintTypes/Mothership.asset +++ b/Assets/Project/GameData/Grids/Blueprints/BlueprintTypes/Mothership.asset @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e291881a9bb544546b8fb636a275fc97, type: 3} m_Name: Mothership m_EditorClassIdentifier: + typeGuid: 0 displayName: Mothership - typeGuid: Mothership maxSize: {x: 30, y: 21} - disallowedBlockCategories: 32 + allowedBlockCategory: 863 diff --git a/Assets/Project/GameData/Grids/Blueprints/BlueprintTypes/Scout.asset b/Assets/Project/GameData/Grids/Blueprints/BlueprintTypes/Scout.asset index 8a7192d4..7423692a 100644 --- a/Assets/Project/GameData/Grids/Blueprints/BlueprintTypes/Scout.asset +++ b/Assets/Project/GameData/Grids/Blueprints/BlueprintTypes/Scout.asset @@ -15,4 +15,4 @@ MonoBehaviour: typeGuid: 5 displayName: Scout maxSize: {x: 8, y: 5} - disallowedBlockCategories: 32 + allowedBlockCategory: 95 diff --git a/Assets/Project/GameData/Grids/Blueprints/BlueprintTypes/Station.asset b/Assets/Project/GameData/Grids/Blueprints/BlueprintTypes/Station.asset new file mode 100644 index 00000000..6ae2f178 --- /dev/null +++ b/Assets/Project/GameData/Grids/Blueprints/BlueprintTypes/Station.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: e291881a9bb544546b8fb636a275fc97, type: 3} + m_Name: Station + m_EditorClassIdentifier: + typeGuid: 6 + displayName: Station + maxSize: {x: 30, y: 30} + allowedBlockCategory: 977 diff --git a/Assets/Project/GameData/Grids/Blueprints/BlueprintTypes/Station.asset.meta b/Assets/Project/GameData/Grids/Blueprints/BlueprintTypes/Station.asset.meta new file mode 100644 index 00000000..5c9f21ee --- /dev/null +++ b/Assets/Project/GameData/Grids/Blueprints/BlueprintTypes/Station.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6f7bb33c8bf1d3141aacb1a408ac5ded +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/GameData/Grids/Blueprints/BlueprintTypes/Worker.asset b/Assets/Project/GameData/Grids/Blueprints/BlueprintTypes/Worker.asset index 3f9d2245..0bde8fd5 100644 --- a/Assets/Project/GameData/Grids/Blueprints/BlueprintTypes/Worker.asset +++ b/Assets/Project/GameData/Grids/Blueprints/BlueprintTypes/Worker.asset @@ -15,4 +15,4 @@ MonoBehaviour: typeGuid: 4 displayName: Worker maxSize: {x: 9, y: 7} - disallowedBlockCategories: 0 + allowedBlockCategory: 127 diff --git a/Assets/Project/GameData/Grids/Blueprints/DefaultBlueprintBag.asset b/Assets/Project/GameData/Grids/Blueprints/DefaultBlueprintBag.asset index 90a8ab4c..4eafd667 100644 --- a/Assets/Project/GameData/Grids/Blueprints/DefaultBlueprintBag.asset +++ b/Assets/Project/GameData/Grids/Blueprints/DefaultBlueprintBag.asset @@ -14,4 +14,5 @@ MonoBehaviour: m_EditorClassIdentifier: objects: - {fileID: 11400000, guid: 3c533f14606d1d240b93ba3186dab0da, type: 2} + - {fileID: 11400000, guid: 0a6042f57ce5cfa42b3be1b8c58afb63, type: 2} - {fileID: 11400000, guid: 587404bb59283c143936ea0c1463d0a6, type: 2} diff --git a/Assets/Project/GameData/Grids/Blueprints/DefaultBlueprints.meta b/Assets/Project/GameData/Grids/Blueprints/StaticBlueprints.meta similarity index 100% rename from Assets/Project/GameData/Grids/Blueprints/DefaultBlueprints.meta rename to Assets/Project/GameData/Grids/Blueprints/StaticBlueprints.meta diff --git a/Assets/Project/GameData/Grids/Blueprints/DefaultBlueprints/Mothership.asset b/Assets/Project/GameData/Grids/Blueprints/StaticBlueprints/Mothership.asset similarity index 100% rename from Assets/Project/GameData/Grids/Blueprints/DefaultBlueprints/Mothership.asset rename to Assets/Project/GameData/Grids/Blueprints/StaticBlueprints/Mothership.asset diff --git a/Assets/Project/GameData/Grids/Blueprints/DefaultBlueprints/Mothership.asset.meta b/Assets/Project/GameData/Grids/Blueprints/StaticBlueprints/Mothership.asset.meta similarity index 100% rename from Assets/Project/GameData/Grids/Blueprints/DefaultBlueprints/Mothership.asset.meta rename to Assets/Project/GameData/Grids/Blueprints/StaticBlueprints/Mothership.asset.meta diff --git a/Assets/Project/GameData/Grids/Blueprints/StaticBlueprints/PlayerMothership.asset b/Assets/Project/GameData/Grids/Blueprints/StaticBlueprints/PlayerMothership.asset new file mode 100644 index 00000000..f8d18555 --- /dev/null +++ b/Assets/Project/GameData/Grids/Blueprints/StaticBlueprints/PlayerMothership.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: 06fcb04f4268c2a4ba5d6b8f91425149, type: 3} + m_Name: PlayerMothership + m_EditorClassIdentifier: + blueprintJson: "{\r\n \"name\":\"defaultPlayerMothership\",\r\n \"shipClass\":6,\r\n + \"blocks\":{\r\n \"15,16\":{\r\n \"id\":\"GaussCannon\"\r\n + },\r\n \"17,17\":{\r\n \"id\":\"HeavyArmor\"\r\n },\r\n + \"17,16\":{\r\n \"id\":\"HeavyArmor\"\r\n },\r\n \"15,18\":{\r\n + \"id\":\"SmallReactor\"\r\n },\r\n \"16,18\":{\r\n \"id\":\"SmallReactor\"\r\n + },\r\n \"15,15\":{\r\n \"id\":\"SmallReactor\"\r\n },\r\n + \"16,15\":{\r\n \"id\":\"SmallReactor\"\r\n },\r\n \"17,15\":{\r\n + \"id\":\"LightArmor\"\r\n },\r\n \"17,18\":{\r\n \"id\":\"LightArmor\"\r\n + },\r\n \"14,18\":{\r\n \"id\":\"LightArmor\"\r\n },\r\n + \"14,15\":{\r\n \"id\":\"LightArmor\"\r\n },\r\n \"14,17\":{\r\n + \"id\":\"HeavyArmor\"\r\n },\r\n \"14,16\":{\r\n \"id\":\"HeavyArmor\"\r\n + },\r\n \"15,19\":{\r\n \"id\":\"HeavyArmor\"\r\n },\r\n + \"16,19\":{\r\n \"id\":\"HeavyArmor\"\r\n },\r\n \"15,14\":{\r\n + \"id\":\"HeavyArmor\"\r\n },\r\n \"16,14\":{\r\n \"id\":\"HeavyArmor\"\r\n + }\n }\r\n}" diff --git a/Assets/Project/GameData/Grids/Blueprints/StaticBlueprints/PlayerMothership.asset.meta b/Assets/Project/GameData/Grids/Blueprints/StaticBlueprints/PlayerMothership.asset.meta new file mode 100644 index 00000000..72f8fe16 --- /dev/null +++ b/Assets/Project/GameData/Grids/Blueprints/StaticBlueprints/PlayerMothership.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0a6042f57ce5cfa42b3be1b8c58afb63 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/GameData/Grids/Blueprints/DefaultBlueprints/Scout.asset b/Assets/Project/GameData/Grids/Blueprints/StaticBlueprints/Scout.asset similarity index 100% rename from Assets/Project/GameData/Grids/Blueprints/DefaultBlueprints/Scout.asset rename to Assets/Project/GameData/Grids/Blueprints/StaticBlueprints/Scout.asset diff --git a/Assets/Project/GameData/Grids/Blueprints/DefaultBlueprints/Scout.asset.meta b/Assets/Project/GameData/Grids/Blueprints/StaticBlueprints/Scout.asset.meta similarity index 100% rename from Assets/Project/GameData/Grids/Blueprints/DefaultBlueprints/Scout.asset.meta rename to Assets/Project/GameData/Grids/Blueprints/StaticBlueprints/Scout.asset.meta diff --git a/Assets/Project/GameData/Grids/Blueprints/StaticBlueprints/sta1.asset b/Assets/Project/GameData/Grids/Blueprints/StaticBlueprints/sta1.asset new file mode 100644 index 00000000..127837bb --- /dev/null +++ b/Assets/Project/GameData/Grids/Blueprints/StaticBlueprints/sta1.asset @@ -0,0 +1,127 @@ +%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: 06fcb04f4268c2a4ba5d6b8f91425149, type: 3} + m_Name: sta1 + m_EditorClassIdentifier: + blueprintJson: "{\r\n \"name\": \"sta1\",\r\n \"shipClass\": 6,\r\n \"blocks\": + {\r\n \"14,21\": {\r\n \"id\": \"TwinAutocannon\",\r\n \"Rotation\": + 1\r\n },\r\n \"14,11\": {\r\n \"id\": \"TwinAutocannon\",\r\n + \"flippedY\": true,\r\n \"Rotation\": 1\r\n },\r\n \"16,21\": {\r\n + \"id\": \"TwinAutocannon\",\r\n \"Rotation\": 1\r\n },\r\n \"16,11\": + {\r\n \"id\": \"TwinAutocannon\",\r\n \"flippedY\": true,\r\n + \"Rotation\": 1\r\n },\r\n \"18,20\": {\r\n \"id\": \"TwinAutocannon\",\r\n + \"Rotation\": 1\r\n },\r\n \"18,12\": {\r\n \"id\": \"TwinAutocannon\",\r\n + \"flippedY\": true,\r\n \"Rotation\": 1\r\n },\r\n \"20,20\": {\r\n + \"id\": \"TwinAutocannon\",\r\n \"Rotation\": 1\r\n },\r\n \"20,12\": + {\r\n \"id\": \"TwinAutocannon\",\r\n \"flippedY\": true,\r\n + \"Rotation\": 1\r\n },\r\n \"22,19\": {\r\n \"id\": \"TwinAutocannon\",\r\n + \"Rotation\": 1\r\n },\r\n \"22,13\": {\r\n \"id\": \"TwinAutocannon\",\r\n + \"flippedY\": true,\r\n \"Rotation\": 1\r\n },\r\n \"24,19\": {\r\n + \"id\": \"TwinAutocannon\",\r\n \"Rotation\": 1\r\n },\r\n \"24,13\": + {\r\n \"id\": \"TwinAutocannon\",\r\n \"flippedY\": true,\r\n + \"Rotation\": 1\r\n },\r\n \"26,18\": {\r\n \"id\": \"TwinAutocannon\",\r\n + \"Rotation\": 1\r\n },\r\n \"26,14\": {\r\n \"id\": \"TwinAutocannon\",\r\n + \"flippedY\": true,\r\n \"Rotation\": 1\r\n },\r\n \"28,18\": {\r\n + \"id\": \"TwinAutocannon\",\r\n \"Rotation\": 1\r\n },\r\n \"28,14\": + {\r\n \"id\": \"TwinAutocannon\",\r\n \"flippedY\": true,\r\n + \"Rotation\": 1\r\n },\r\n \"30,17\": {\r\n \"id\": \"TwinAutocannon\",\r\n + \"Rotation\": 1\r\n },\r\n \"30,15\": {\r\n \"id\": \"TwinAutocannon\",\r\n + \"flippedY\": true,\r\n \"Rotation\": 1\r\n },\r\n \"31,16\": {\r\n + \"id\": \"TwinAutocannon\"\r\n },\r\n \"30,16\": {\r\n \"id\": \"HeavyArmor\"\r\n + },\r\n \"29,16\": {\r\n \"id\": \"HeavyArmor\"\r\n },\r\n \"28,16\": + {\r\n \"id\": \"HeavyArmor\"\r\n },\r\n \"27,16\": {\r\n \"id\": + \"HeavyArmor\"\r\n },\r\n \"26,16\": {\r\n \"id\": \"HeavyArmor\"\r\n + },\r\n \"25,16\": {\r\n \"id\": \"HeavyArmor\"\r\n },\r\n \"24,16\": + {\r\n \"id\": \"HeavyArmor\"\r\n },\r\n \"24,15\": {\r\n \"id\": + \"HeavyArmor\"\r\n },\r\n \"24,17\": {\r\n \"id\": \"HeavyArmor\",\r\n + \"flippedY\": true\r\n },\r\n \"23,15\": {\r\n \"id\": \"HeavyArmor\"\r\n + },\r\n \"23,17\": {\r\n \"id\": \"HeavyArmor\",\r\n \"flippedY\": + true\r\n },\r\n \"23,14\": {\r\n \"id\": \"HeavyArmor\"\r\n },\r\n + \"23,18\": {\r\n \"id\": \"HeavyArmor\",\r\n \"flippedY\": true\r\n + },\r\n \"22,14\": {\r\n \"id\": \"HeavyArmor\"\r\n },\r\n \"22,18\": + {\r\n \"id\": \"HeavyArmor\",\r\n \"flippedY\": true\r\n },\r\n + \"21,14\": {\r\n \"id\": \"HeavyArmor\"\r\n },\r\n \"21,18\": {\r\n + \"id\": \"HeavyArmor\",\r\n \"flippedY\": true\r\n },\r\n \"20,14\": + {\r\n \"id\": \"HeavyArmor\"\r\n },\r\n \"20,18\": {\r\n \"id\": + \"HeavyArmor\",\r\n \"flippedY\": true\r\n },\r\n \"19,14\": {\r\n + \"id\": \"HeavyArmor\"\r\n },\r\n \"19,18\": {\r\n \"id\": \"HeavyArmor\",\r\n + \"flippedY\": true\r\n },\r\n \"18,14\": {\r\n \"id\": \"HeavyArmor\"\r\n + },\r\n \"18,18\": {\r\n \"id\": \"HeavyArmor\",\r\n \"flippedY\": + true\r\n },\r\n \"17,14\": {\r\n \"id\": \"HeavyArmor\"\r\n },\r\n + \"17,18\": {\r\n \"id\": \"HeavyArmor\",\r\n \"flippedY\": true\r\n + },\r\n \"16,14\": {\r\n \"id\": \"HeavyArmor\"\r\n },\r\n \"16,18\": + {\r\n \"id\": \"HeavyArmor\",\r\n \"flippedY\": true\r\n },\r\n + \"15,13\": {\r\n \"id\": \"HeavyArmor\"\r\n },\r\n \"15,19\": {\r\n + \"id\": \"HeavyArmor\",\r\n \"flippedY\": true\r\n },\r\n \"15,12\": + {\r\n \"id\": \"HeavyArmor\"\r\n },\r\n \"15,20\": {\r\n \"id\": + \"HeavyArmor\",\r\n \"flippedY\": true\r\n },\r\n \"14,12\": {\r\n + \"id\": \"HeavyArmor\"\r\n },\r\n \"14,20\": {\r\n \"id\": \"HeavyArmor\",\r\n + \"flippedY\": true\r\n },\r\n \"16,12\": {\r\n \"id\": \"HeavyArmor\"\r\n + },\r\n \"16,20\": {\r\n \"id\": \"HeavyArmor\",\r\n \"flippedY\": + true\r\n },\r\n \"17,12\": {\r\n \"id\": \"HeavyArmor\"\r\n },\r\n + \"17,20\": {\r\n \"id\": \"HeavyArmor\",\r\n \"flippedY\": true\r\n + },\r\n \"17,13\": {\r\n \"id\": \"HeavyArmor\"\r\n },\r\n \"17,19\": + {\r\n \"id\": \"HeavyArmor\",\r\n \"flippedY\": true\r\n },\r\n + \"16,13\": {\r\n \"id\": \"HeavyArmor\"\r\n },\r\n \"16,19\": {\r\n + \"id\": \"HeavyArmor\",\r\n \"flippedY\": true\r\n },\r\n \"18,13\": + {\r\n \"id\": \"HeavyArmor\"\r\n },\r\n \"18,19\": {\r\n \"id\": + \"HeavyArmor\",\r\n \"flippedY\": true\r\n },\r\n \"19,13\": {\r\n + \"id\": \"HeavyArmor\"\r\n },\r\n \"19,19\": {\r\n \"id\": \"HeavyArmor\",\r\n + \"flippedY\": true\r\n },\r\n \"20,13\": {\r\n \"id\": \"HeavyArmor\"\r\n + },\r\n \"20,19\": {\r\n \"id\": \"HeavyArmor\",\r\n \"flippedY\": + true\r\n },\r\n \"21,13\": {\r\n \"id\": \"HeavyArmor\"\r\n },\r\n + \"21,19\": {\r\n \"id\": \"HeavyArmor\",\r\n \"flippedY\": true\r\n + },\r\n \"24,14\": {\r\n \"id\": \"HeavyArmor\"\r\n },\r\n \"24,18\": + {\r\n \"id\": \"HeavyArmor\",\r\n \"flippedY\": true\r\n },\r\n + \"25,14\": {\r\n \"id\": \"HeavyArmor\"\r\n },\r\n \"25,18\": {\r\n + \"id\": \"HeavyArmor\",\r\n \"flippedY\": true\r\n },\r\n \"26,15\": + {\r\n \"id\": \"HeavyArmor\"\r\n },\r\n \"26,17\": {\r\n \"id\": + \"HeavyArmor\",\r\n \"flippedY\": true\r\n },\r\n \"27,15\": {\r\n + \"id\": \"HeavyArmor\"\r\n },\r\n \"27,17\": {\r\n \"id\": \"HeavyArmor\",\r\n + \"flippedY\": true\r\n },\r\n \"25,15\": {\r\n \"id\": \"HeavyArmor\"\r\n + },\r\n \"25,17\": {\r\n \"id\": \"HeavyArmor\",\r\n \"flippedY\": + true\r\n },\r\n \"28,15\": {\r\n \"id\": \"HeavyArmor\"\r\n },\r\n + \"28,17\": {\r\n \"id\": \"HeavyArmor\",\r\n \"flippedY\": true\r\n + },\r\n \"29,15\": {\r\n \"id\": \"HeavyArmor\"\r\n },\r\n \"29,17\": + {\r\n \"id\": \"HeavyArmor\",\r\n \"flippedY\": true\r\n },\r\n + \"27,14\": {\r\n \"id\": \"HeavyArmor\"\r\n },\r\n \"27,18\": {\r\n + \"id\": \"HeavyArmor\",\r\n \"flippedY\": true\r\n },\r\n \"23,13\": + {\r\n \"id\": \"HeavyArmor\"\r\n },\r\n \"23,19\": {\r\n \"id\": + \"HeavyArmor\",\r\n \"flippedY\": true\r\n },\r\n \"19,12\": {\r\n + \"id\": \"HeavyArmor\"\r\n },\r\n \"19,20\": {\r\n \"id\": \"HeavyArmor\",\r\n + \"flippedY\": true\r\n },\r\n \"14,13\": {\r\n \"id\": \"HeavyArmor\"\r\n + },\r\n \"14,19\": {\r\n \"id\": \"HeavyArmor\",\r\n \"flippedY\": + true\r\n },\r\n \"14,14\": {\r\n \"id\": \"HeavyArmor\"\r\n },\r\n + \"14,18\": {\r\n \"id\": \"HeavyArmor\",\r\n \"flippedY\": true\r\n + },\r\n \"17,16\": {\r\n \"id\": \"HeavyArmor\"\r\n },\r\n \"16,15\": + {\r\n \"id\": \"HeavyArmor\"\r\n },\r\n \"18,17\": {\r\n \"id\": + \"HeavyArmor\"\r\n },\r\n \"18,15\": {\r\n \"id\": \"HeavyArmor\",\r\n + \"flippedY\": true\r\n },\r\n \"18,16\": {\r\n \"id\": \"HeavyArmor\"\r\n + },\r\n \"19,15\": {\r\n \"id\": \"HeavyArmor\"\r\n },\r\n \"19,17\": + {\r\n \"id\": \"HeavyArmor\",\r\n \"flippedY\": true\r\n },\r\n + \"19,16\": {\r\n \"id\": \"HeavyArmor\"\r\n },\r\n \"20,17\": {\r\n + \"id\": \"HeavyArmor\"\r\n },\r\n \"20,15\": {\r\n \"id\": \"HeavyArmor\",\r\n + \"flippedY\": true\r\n },\r\n \"20,16\": {\r\n \"id\": \"HeavyArmor\"\r\n + },\r\n \"21,16\": {\r\n \"id\": \"HeavyArmor\"\r\n },\r\n \"21,15\": + {\r\n \"id\": \"HeavyArmor\"\r\n },\r\n \"21,17\": {\r\n \"id\": + \"HeavyArmor\",\r\n \"flippedY\": true\r\n },\r\n \"22,17\": {\r\n + \"id\": \"HeavyArmor\"\r\n },\r\n \"22,15\": {\r\n \"id\": \"HeavyArmor\",\r\n + \"flippedY\": true\r\n },\r\n \"22,16\": {\r\n \"id\": \"HeavyArmor\"\r\n + },\r\n \"23,16\": {\r\n \"id\": \"HeavyArmor\"\r\n },\r\n \"16,16\": + {\r\n \"id\": \"HeavyArmor\"\r\n },\r\n \"16,17\": {\r\n \"id\": + \"HeavyArmor\"\r\n },\r\n \"15,14\": {\r\n \"id\": \"SmallReactor\"\r\n + },\r\n \"15,18\": {\r\n \"id\": \"SmallReactor\",\r\n \"flippedY\": + true\r\n },\r\n \"17,15\": {\r\n \"id\": \"SmallReactor\"\r\n },\r\n + \"17,17\": {\r\n \"id\": \"SmallReactor\",\r\n \"flippedY\": true\r\n + },\r\n \"14,15\": {\r\n \"id\": \"GaussCannon\"\r\n },\r\n \"15,17\": + {\r\n \"id\": \"LightArmor\"\r\n },\r\n \"14,17\": {\r\n \"id\": + \"LightArmor\"\r\n }\r\n }\r\n}" diff --git a/Assets/Project/GameData/Grids/Blueprints/StaticBlueprints/sta1.asset.meta b/Assets/Project/GameData/Grids/Blueprints/StaticBlueprints/sta1.asset.meta new file mode 100644 index 00000000..3cc72a5f --- /dev/null +++ b/Assets/Project/GameData/Grids/Blueprints/StaticBlueprints/sta1.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 76ae96edac549084ab1b645e7aa87db7 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/GameData/Research.meta b/Assets/Project/GameData/Research.meta new file mode 100644 index 00000000..8c846c28 --- /dev/null +++ b/Assets/Project/GameData/Research.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b4c424c01b33cf24b8e4c91600f980ca +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/GameData/Research/GaussCannonExplosiveUpgrade.asset b/Assets/Project/GameData/Research/GaussCannonExplosiveUpgrade.asset new file mode 100644 index 00000000..e51b1908 --- /dev/null +++ b/Assets/Project/GameData/Research/GaussCannonExplosiveUpgrade.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: 7284ed509dd5c9d4a9196237c9a7789a, type: 3} + m_Name: GaussCannonExplosiveUpgrade + m_EditorClassIdentifier: + autoEnableOn: 0 diff --git a/Assets/Project/GameData/Research/GaussCannonExplosiveUpgrade.asset.meta b/Assets/Project/GameData/Research/GaussCannonExplosiveUpgrade.asset.meta new file mode 100644 index 00000000..bdffcdd0 --- /dev/null +++ b/Assets/Project/GameData/Research/GaussCannonExplosiveUpgrade.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a970d0facbb1f1b43b386e57a391b144 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/GameData/Research/ResearchItemBag.asset b/Assets/Project/GameData/Research/ResearchItemBag.asset new file mode 100644 index 00000000..2b85f764 --- /dev/null +++ b/Assets/Project/GameData/Research/ResearchItemBag.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: 7ce01822a88a42c40a160fb3eda20674, type: 3} + m_Name: ResearchItemBag + m_EditorClassIdentifier: Assembly-CSharp:Exa.Research:ResearchItemBag + objects: + - {fileID: 11400000, guid: a970d0facbb1f1b43b386e57a391b144, type: 2} + - {fileID: 11400000, guid: 15a6113968eb4884e812fcd2326562b3, type: 2} diff --git a/Assets/Project/GameData/Research/ResearchItemBag.asset.meta b/Assets/Project/GameData/Research/ResearchItemBag.asset.meta new file mode 100644 index 00000000..3f802d41 --- /dev/null +++ b/Assets/Project/GameData/Research/ResearchItemBag.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7d48555a753b13d45ada7eab83ce695e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/GameData/Research/WeakAutocannonMod.asset b/Assets/Project/GameData/Research/WeakAutocannonMod.asset new file mode 100644 index 00000000..fdb54497 --- /dev/null +++ b/Assets/Project/GameData/Research/WeakAutocannonMod.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: b8e576c87acc7ad4782dbfe5fea273eb, type: 3} + m_Name: WeakAutocannonMod + m_EditorClassIdentifier: + autoEnableOn: 0 diff --git a/Assets/Project/GameData/Research/WeakAutocannonMod.asset.meta b/Assets/Project/GameData/Research/WeakAutocannonMod.asset.meta new file mode 100644 index 00000000..94befe0e --- /dev/null +++ b/Assets/Project/GameData/Research/WeakAutocannonMod.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 15a6113968eb4884e812fcd2326562b3 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/GameData/UI/MainMenu/0.5PreviewBuildMessage.asset b/Assets/Project/GameData/UI/MainMenu/0.5PreviewBuildMessage.asset new file mode 100644 index 00000000..ad85f5aa --- /dev/null +++ b/Assets/Project/GameData/UI/MainMenu/0.5PreviewBuildMessage.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: af089c8e6cc9c9f4eae72cf6cbf22524, type: 3} + m_Name: 0.5PreviewBuildMessage + m_EditorClassIdentifier: + buildMessage: "Preview for the 0.5 release. \n\nContains a new and improved editor + and the possibility to add you custom soundtracks." diff --git a/Assets/Project/GameData/UI/MainMenu/0.5PreviewBuildMessage.asset.meta b/Assets/Project/GameData/UI/MainMenu/0.5PreviewBuildMessage.asset.meta new file mode 100644 index 00000000..05f7f0fe --- /dev/null +++ b/Assets/Project/GameData/UI/MainMenu/0.5PreviewBuildMessage.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 74820e15d951b2941aa32bc37a851c90 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/256x256-ffffffff.png b/Assets/Project/Graphics/256x256-ffffffff.png new file mode 100644 index 00000000..31afa733 Binary files /dev/null and b/Assets/Project/Graphics/256x256-ffffffff.png differ diff --git a/Assets/Project/Graphics/256x256-ffffffff.png.meta b/Assets/Project/Graphics/256x256-ffffffff.png.meta new file mode 100644 index 00000000..653cfe51 --- /dev/null +++ b/Assets/Project/Graphics/256x256-ffffffff.png.meta @@ -0,0 +1,108 @@ +fileFormatVersion: 2 +guid: ce7cf152a2e1f5542b566f51a61bf6a7 +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: 256 + 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 + - serializedVersion: 3 + buildTarget: Standalone + 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/Project/Graphics/Blocks/Core.meta b/Assets/Project/Graphics/Blocks/Core.meta new file mode 100644 index 00000000..80e4f17e --- /dev/null +++ b/Assets/Project/Graphics/Blocks/Core.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 29688e6767f697740a94f17d7e6c9a13 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/Blocks/Core/core-base.aseprite b/Assets/Project/Graphics/Blocks/Core/core-base.aseprite new file mode 100644 index 00000000..f79ef79a Binary files /dev/null and b/Assets/Project/Graphics/Blocks/Core/core-base.aseprite differ diff --git a/Assets/Project/Graphics/Blocks/Core/core-base.aseprite.meta b/Assets/Project/Graphics/Blocks/Core/core-base.aseprite.meta new file mode 100644 index 00000000..4efac32d --- /dev/null +++ b/Assets/Project/Graphics/Blocks/Core/core-base.aseprite.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1699297db03463b4397ae057e0664ba0 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/Blocks/Core/core-base.png b/Assets/Project/Graphics/Blocks/Core/core-base.png new file mode 100644 index 00000000..541049c5 Binary files /dev/null and b/Assets/Project/Graphics/Blocks/Core/core-base.png differ diff --git a/Assets/Project/Graphics/Blocks/Core/core-base.png.meta b/Assets/Project/Graphics/Blocks/Core/core-base.png.meta new file mode 100644 index 00000000..ab420d86 --- /dev/null +++ b/Assets/Project/Graphics/Blocks/Core/core-base.png.meta @@ -0,0 +1,108 @@ +fileFormatVersion: 2 +guid: ac70595a0ff8dde48bc5686d5106d297 +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: 32 + 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: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + 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/Project/Graphics/Blocks/DroneBay.meta b/Assets/Project/Graphics/Blocks/DroneBay.meta new file mode 100644 index 00000000..3f4ea2c3 --- /dev/null +++ b/Assets/Project/Graphics/Blocks/DroneBay.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 08c25f0b6a7f11246b2d8a6d4990721e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/Blocks/DroneBay/DroneBay-output.meta b/Assets/Project/Graphics/Blocks/DroneBay/DroneBay-output.meta new file mode 100644 index 00000000..a6692765 --- /dev/null +++ b/Assets/Project/Graphics/Blocks/DroneBay/DroneBay-output.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fe4e4aa553b0c6345b2438ae6f1eb5af +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/Blocks/DroneBay/DroneBay-output/DroneBay-frame.png b/Assets/Project/Graphics/Blocks/DroneBay/DroneBay-output/DroneBay-frame.png new file mode 100644 index 00000000..13919c98 Binary files /dev/null and b/Assets/Project/Graphics/Blocks/DroneBay/DroneBay-output/DroneBay-frame.png differ diff --git a/Assets/Project/Graphics/Blocks/DroneBay/DroneBay-output/DroneBay-frame.png.meta b/Assets/Project/Graphics/Blocks/DroneBay/DroneBay-output/DroneBay-frame.png.meta new file mode 100644 index 00000000..9e097e81 --- /dev/null +++ b/Assets/Project/Graphics/Blocks/DroneBay/DroneBay-output/DroneBay-frame.png.meta @@ -0,0 +1,132 @@ +fileFormatVersion: 2 +guid: 9bf3524a785798c4cb19748f21802c5f +TextureImporter: + internalIDToNameTable: + - first: + 213: -5935392190051464458 + second: DroneBay-frame-0 + 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: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 32 + 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: 16384 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 16384 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: DroneBay-frame-0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 64 + height: 64 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 6faca5d004041ada0800000000000000 + internalID: -5935392190051464458 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/Blocks/DroneBay/DroneBay.aseprite b/Assets/Project/Graphics/Blocks/DroneBay/DroneBay.aseprite new file mode 100644 index 00000000..c9c1e2ac Binary files /dev/null and b/Assets/Project/Graphics/Blocks/DroneBay/DroneBay.aseprite differ diff --git a/Assets/Project/Graphics/Blocks/DroneBay/DroneBay.aseprite.meta b/Assets/Project/Graphics/Blocks/DroneBay/DroneBay.aseprite.meta new file mode 100644 index 00000000..273a46a5 --- /dev/null +++ b/Assets/Project/Graphics/Blocks/DroneBay/DroneBay.aseprite.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7a4e05b7a2127234b9a6d05a05d3e221 +DefaultImporter: + externalObjects: {} + userData: "{\r\n \"layers\": {\r\n \"frame\": {\r\n \"mergeUp\": false,\r\n + \"exportOnlyFirstFrame\": false,\r\n \"name\": \"frame\",\r\n \"index\": + 0\r\n },\r\n \"background\": {\r\n \"mergeUp\": true,\r\n \"exportOnlyFirstFrame\": + false,\r\n \"name\": \"background\",\r\n \"index\": 1\r\n },\r\n + \"blastdoor\": {\r\n \"mergeUp\": true,\r\n \"exportOnlyFirstFrame\": + true,\r\n \"name\": \"blastdoor\",\r\n \"index\": 2\r\n }\r\n }\r\n}" + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/Blocks/GaussCannon.meta b/Assets/Project/Graphics/Blocks/GaussCannon.meta new file mode 100644 index 00000000..db9691c0 --- /dev/null +++ b/Assets/Project/Graphics/Blocks/GaussCannon.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: aa7353ed24232754ea455bd5ab1b7ca6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon-2-output.meta b/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon-2-output.meta new file mode 100644 index 00000000..3cbb5512 --- /dev/null +++ b/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon-2-output.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 997d3be9bc6da154a8ca05fe21217d4d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon-2-output/gauss-cannon-2-turret-body-overlay.png b/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon-2-output/gauss-cannon-2-turret-body-overlay.png new file mode 100644 index 00000000..605e33f8 Binary files /dev/null and b/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon-2-output/gauss-cannon-2-turret-body-overlay.png differ diff --git a/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon-2-output/gauss-cannon-2-turret-body-overlay.png.meta b/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon-2-output/gauss-cannon-2-turret-body-overlay.png.meta new file mode 100644 index 00000000..075b7b96 --- /dev/null +++ b/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon-2-output/gauss-cannon-2-turret-body-overlay.png.meta @@ -0,0 +1,171 @@ +fileFormatVersion: 2 +guid: 8696fa522d1a95242bd8cb8a60c88bdd +TextureImporter: + internalIDToNameTable: + - first: + 213: 4832217876462474993 + second: gauss-cannon-2-turret-body-overlay_0 + - first: + 213: -6238854588986108936 + second: turret-body-overlay_0 + - first: + 213: 6050708127486344681 + second: turret-body-overlay_1 + - first: + 213: -4845861996426006968 + second: turret-body-overlay_2 + - first: + 213: -1434968985562409513 + second: turret-body-overlay_3 + - first: + 213: -5303971531435702369 + second: turret-body-overlay_4 + - first: + 213: -7366791808677366294 + second: turret-body-overlay_5 + - first: + 213: 222563443745118093 + second: turret-body-overlay_6 + - first: + 213: -3687473235541946033 + second: turret-body-overlay_7 + - first: + 213: -2941201455976413282 + second: turret-body-overlay_8 + - first: + 213: -1574685939341810562 + second: turret-body-overlay_9 + - first: + 213: 3503560673037679602 + second: turret-body-overlay_10 + - first: + 213: 5233304454890802401 + second: turret-body-overlay_11 + - first: + 213: -8656379700624669197 + second: turret-body-overlay_12 + 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: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 32 + 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: 32768 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: turret-body-overlay_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 288 + height: 288 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 8f3da226ec22b69a0800000000000000 + internalID: -6238854588986108936 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon-2-output/gauss-cannon-2-turret-coils-internal.png b/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon-2-output/gauss-cannon-2-turret-coils-internal.png new file mode 100644 index 00000000..1cfa9176 Binary files /dev/null and b/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon-2-output/gauss-cannon-2-turret-coils-internal.png differ diff --git a/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon-2-output/gauss-cannon-2-turret-coils-internal.png.meta b/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon-2-output/gauss-cannon-2-turret-coils-internal.png.meta new file mode 100644 index 00000000..fe3801d9 --- /dev/null +++ b/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon-2-output/gauss-cannon-2-turret-coils-internal.png.meta @@ -0,0 +1,459 @@ +fileFormatVersion: 2 +guid: 1df684a472980ef429d70e58a59b3b78 +TextureImporter: + internalIDToNameTable: + - first: + 213: -5342509726151235980 + second: gauss-cannon-2-turret-coils-internal_0 + - first: + 213: -6423068623626256384 + second: gauss-cannon-2-turret-coils-internal_1 + - first: + 213: 4727609730902152853 + second: gauss-cannon-2-turret-coils-internal_2 + - first: + 213: 3144888550660901207 + second: gauss-cannon-2-turret-coils-internal_3 + - first: + 213: -2911662582839553295 + second: gauss-cannon-2-turret-coils-internal_4 + - first: + 213: -7061886536164023558 + second: gauss-cannon-2-turret-coils-internal_5 + - first: + 213: -1325433909676573871 + second: gauss-cannon-2-turret-coils-internal_6 + - first: + 213: 7907929658184626101 + second: gauss-cannon-2-turret-coils-internal_7 + - first: + 213: 1907213141992463400 + second: gauss-cannon-2-turret-coils-internal_8 + - first: + 213: -5009406334271097437 + second: gauss-cannon-2-turret-coils-internal_9 + - first: + 213: 460486767183993379 + second: gauss-cannon-2-turret-coils-internal_10 + - first: + 213: -6821801688206468192 + second: gauss-cannon-2-turret-coils-internal_11 + - first: + 213: 3731233528268892607 + second: gauss-cannon-2-turret-coils-internal_12 + - first: + 213: 8500343177690839154 + second: turret-coils-internal_0 + - first: + 213: -4706438675243731524 + second: turret-coils-internal_1 + - first: + 213: -3883040197747083646 + second: turret-coils-internal_2 + - first: + 213: 8520245342746727361 + second: turret-coils-internal_3 + - first: + 213: -357266675920862457 + second: turret-coils-internal_4 + - first: + 213: -7461231742267673901 + second: turret-coils-internal_5 + - first: + 213: -4129081721917932550 + second: turret-coils-internal_6 + - first: + 213: 2977838308912007353 + second: turret-coils-internal_7 + - first: + 213: -2980328173887759716 + second: turret-coils-internal_8 + - first: + 213: -7698326860322731828 + second: turret-coils-internal_9 + - first: + 213: 5413515514340459201 + second: turret-coils-internal_10 + - first: + 213: 2201436745883532920 + second: turret-coils-internal_11 + - first: + 213: 1439543882171662536 + second: turret-coils-internal_12 + 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: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 32 + 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: 32768 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 16384 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: turret-coils-internal_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 288 + height: 288 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 2787d27551947f570800000000000000 + internalID: 8500343177690839154 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: turret-coils-internal_1 + rect: + serializedVersion: 2 + x: 288 + y: 0 + width: 288 + height: 288 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: cb5ffece5fe5faeb0800000000000000 + internalID: -4706438675243731524 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: turret-coils-internal_2 + rect: + serializedVersion: 2 + x: 576 + y: 0 + width: 288 + height: 288 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 286f8bc638bac1ac0800000000000000 + internalID: -3883040197747083646 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: turret-coils-internal_3 + rect: + serializedVersion: 2 + x: 864 + y: 0 + width: 288 + height: 288 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 1c3589d3ffdfd3670800000000000000 + internalID: 8520245342746727361 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: turret-coils-internal_4 + rect: + serializedVersion: 2 + x: 1152 + y: 0 + width: 288 + height: 288 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 70307a3e9dbba0bf0800000000000000 + internalID: -357266675920862457 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: turret-coils-internal_5 + rect: + serializedVersion: 2 + x: 1440 + y: 0 + width: 288 + height: 288 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 3d2344ff241647890800000000000000 + internalID: -7461231742267673901 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: turret-coils-internal_6 + rect: + serializedVersion: 2 + x: 1728 + y: 0 + width: 288 + height: 288 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: afbf58cfc0e82b6c0800000000000000 + internalID: -4129081721917932550 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: turret-coils-internal_7 + rect: + serializedVersion: 2 + x: 2016 + y: 0 + width: 288 + height: 288 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 9b800492a28635920800000000000000 + internalID: 2977838308912007353 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: turret-coils-internal_8 + rect: + serializedVersion: 2 + x: 2304 + y: 0 + width: 288 + height: 288 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: c9ad459f05fb3a6d0800000000000000 + internalID: -2980328173887759716 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: turret-coils-internal_9 + rect: + serializedVersion: 2 + x: 2592 + y: 0 + width: 288 + height: 288 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: cc88d9d028c0a2590800000000000000 + internalID: -7698326860322731828 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: turret-coils-internal_10 + rect: + serializedVersion: 2 + x: 2880 + y: 0 + width: 288 + height: 288 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 1c24452adaba02b40800000000000000 + internalID: 5413515514340459201 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: turret-coils-internal_11 + rect: + serializedVersion: 2 + x: 3168 + y: 0 + width: 288 + height: 288 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 87e31e18e031d8e10800000000000000 + internalID: 2201436745883532920 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: turret-coils-internal_12 + rect: + serializedVersion: 2 + x: 3456 + y: 0 + width: 288 + height: 288 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 8c0cd67a8894af310800000000000000 + internalID: 1439543882171662536 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon-2-output/gauss-cannon-2-turret-gun-details.png b/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon-2-output/gauss-cannon-2-turret-gun-details.png new file mode 100644 index 00000000..6c1fb9f0 Binary files /dev/null and b/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon-2-output/gauss-cannon-2-turret-gun-details.png differ diff --git a/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon-2-output/gauss-cannon-2-turret-gun-details.png.meta b/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon-2-output/gauss-cannon-2-turret-gun-details.png.meta new file mode 100644 index 00000000..1c9f047a --- /dev/null +++ b/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon-2-output/gauss-cannon-2-turret-gun-details.png.meta @@ -0,0 +1,420 @@ +fileFormatVersion: 2 +guid: 03dad263273a9f241b6a232b9be18ae3 +TextureImporter: + internalIDToNameTable: + - first: + 213: 8109266117701699947 + second: turret-gun-details_0 + - first: + 213: -3850562526551232557 + second: turret-gun-details_1 + - first: + 213: -8257272102382445459 + second: turret-gun-details_2 + - first: + 213: 4965069562431324539 + second: turret-gun-details_3 + - first: + 213: 5247248678125133266 + second: turret-gun-details_4 + - first: + 213: -6268931531636052934 + second: turret-gun-details_5 + - first: + 213: 6931575581690951760 + second: turret-gun-details_6 + - first: + 213: 9017403412495835625 + second: turret-gun-details_7 + - first: + 213: -89065760440910555 + second: turret-gun-details_8 + - first: + 213: 4679061549409924974 + second: turret-gun-details_9 + - first: + 213: -477098319113332455 + second: turret-gun-details_10 + - first: + 213: -4732933142599852837 + second: turret-gun-details_11 + - first: + 213: 9108049554396727757 + second: turret-gun-details_12 + 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: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 32 + 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: 32768 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 32768 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: turret-gun-details_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 288 + height: 288 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: b6988beb196e98070800000000000000 + internalID: 8109266117701699947 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: turret-gun-details_1 + rect: + serializedVersion: 2 + x: 288 + y: 0 + width: 288 + height: 288 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 3dfab7388cd009ac0800000000000000 + internalID: -3850562526551232557 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: turret-gun-details_2 + rect: + serializedVersion: 2 + x: 576 + y: 0 + width: 288 + height: 288 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: d6c50c395c6486d80800000000000000 + internalID: -8257272102382445459 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: turret-gun-details_3 + rect: + serializedVersion: 2 + x: 864 + y: 0 + width: 288 + height: 288 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: b71c2d1067877e440800000000000000 + internalID: 4965069562431324539 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: turret-gun-details_4 + rect: + serializedVersion: 2 + x: 1152 + y: 0 + width: 288 + height: 288 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 2dd59c32fd8f1d840800000000000000 + internalID: 5247248678125133266 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: turret-gun-details_5 + rect: + serializedVersion: 2 + x: 1440 + y: 0 + width: 288 + height: 288 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: a3c66977cf74009a0800000000000000 + internalID: -6268931531636052934 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: turret-gun-details_6 + rect: + serializedVersion: 2 + x: 1728 + y: 0 + width: 288 + height: 288 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 058f5783447e13060800000000000000 + internalID: 6931575581690951760 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: turret-gun-details_7 + rect: + serializedVersion: 2 + x: 2016 + y: 0 + width: 288 + height: 288 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 9e1a53e90a0442d70800000000000000 + internalID: 9017403412495835625 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: turret-gun-details_8 + rect: + serializedVersion: 2 + x: 2304 + y: 0 + width: 288 + height: 288 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 52df44ba92393cef0800000000000000 + internalID: -89065760440910555 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: turret-gun-details_9 + rect: + serializedVersion: 2 + x: 2592 + y: 0 + width: 288 + height: 288 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: e6774ce30bd5fe040800000000000000 + internalID: 4679061549409924974 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: turret-gun-details_10 + rect: + serializedVersion: 2 + x: 2880 + y: 0 + width: 288 + height: 288 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 91950564b910169f0800000000000000 + internalID: -477098319113332455 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: turret-gun-details_11 + rect: + serializedVersion: 2 + x: 3168 + y: 0 + width: 288 + height: 288 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: bdc99a9026e315eb0800000000000000 + internalID: -4732933142599852837 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: turret-gun-details_12 + rect: + serializedVersion: 2 + x: 3456 + y: 0 + width: 288 + height: 288 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: dc9c87e20da466e70800000000000000 + internalID: 9108049554396727757 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon-2-output/gauss-cannon-2-turret-gun.png b/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon-2-output/gauss-cannon-2-turret-gun.png new file mode 100644 index 00000000..b3cd2353 Binary files /dev/null and b/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon-2-output/gauss-cannon-2-turret-gun.png differ diff --git a/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon-2-output/gauss-cannon-2-turret-gun.png.meta b/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon-2-output/gauss-cannon-2-turret-gun.png.meta new file mode 100644 index 00000000..cebf86b1 --- /dev/null +++ b/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon-2-output/gauss-cannon-2-turret-gun.png.meta @@ -0,0 +1,123 @@ +fileFormatVersion: 2 +guid: 67c8534fc3e9a6b44a90643517cba89d +TextureImporter: + internalIDToNameTable: + - first: + 213: -6880830933794462612 + second: gauss-cannon-2-turret-gun_0 + - first: + 213: -2905475788228011879 + second: turret-gun_0 + 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: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 32 + 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: 32768 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: turret-gun_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 288 + height: 288 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 998db2b1a2dada7d0800000000000000 + internalID: -2905475788228011879 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon-2.aseprite b/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon-2.aseprite new file mode 100644 index 00000000..ad1b048c Binary files /dev/null and b/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon-2.aseprite differ diff --git a/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon-2.aseprite.meta b/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon-2.aseprite.meta new file mode 100644 index 00000000..91c2a79d --- /dev/null +++ b/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon-2.aseprite.meta @@ -0,0 +1,27 @@ +fileFormatVersion: 2 +guid: c8210ef37892ed34a82c59289079486f +DefaultImporter: + externalObjects: {} + userData: "{\r\n \"layers\": {\r\n \"turret-body-overlay\": {\r\n \"mergeUp\": + true,\r\n \"exportOnlyFirstFrame\": true,\r\n \"name\": \"turret-body-overlay\",\r\n + \"index\": 1\r\n },\r\n \"turret-coils-body\": {\r\n \"mergeUp\": + true,\r\n \"exportOnlyFirstFrame\": false,\r\n \"name\": \"turret-coils-body\",\r\n + \"index\": 2\r\n },\r\n \"turret-coils-internal\": {\r\n \"mergeUp\": + false,\r\n \"exportOnlyFirstFrame\": false,\r\n \"name\": \"turret-coils-internal\",\r\n + \"index\": 3\r\n },\r\n \"turret-gun\": {\r\n \"mergeUp\": false,\r\n + \"exportOnlyFirstFrame\": true,\r\n \"name\": \"turret-gun\",\r\n \"index\": + 5\r\n },\r\n \"turret-arms\": {\r\n \"mergeUp\": true,\r\n \"exportOnlyFirstFrame\": + false,\r\n \"name\": \"turret-arms\",\r\n \"index\": 6\r\n },\r\n + \"turret-body\": {\r\n \"mergeUp\": true,\r\n \"exportOnlyFirstFrame\": + false,\r\n \"name\": \"turret-body\",\r\n \"index\": 7\r\n },\r\n + \"turret-core\": {\r\n \"mergeUp\": true,\r\n \"exportOnlyFirstFrame\": + false,\r\n \"name\": \"turret-core\",\r\n \"index\": 8\r\n },\r\n + \"turret-arms-base\": {\r\n \"mergeUp\": true,\r\n \"exportOnlyFirstFrame\": + false,\r\n \"name\": \"turret-arms-base\",\r\n \"index\": 9\r\n + },\r\n \"turret-back\": {\r\n \"mergeUp\": false,\r\n \"exportOnlyFirstFrame\": + true,\r\n \"name\": \"turret-body-overlay\",\r\n \"index\": 0\r\n + },\r\n \"turret-gun-details\": {\r\n \"mergeUp\": false,\r\n \"exportOnlyFirstFrame\": + false,\r\n \"name\": \"turret-gun-details\",\r\n \"index\": 4\r\n + }\r\n }\r\n}" + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon.aseprite b/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon.aseprite new file mode 100644 index 00000000..cadb00c9 Binary files /dev/null and b/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon.aseprite differ diff --git a/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon.aseprite.meta b/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon.aseprite.meta new file mode 100644 index 00000000..69f01523 --- /dev/null +++ b/Assets/Project/Graphics/Blocks/GaussCannon/gauss-cannon.aseprite.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a645ca3d437a91d46b8a7ec38dd4f8f5 +DefaultImporter: + externalObjects: {} + userData: '{}' + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/Blocks/Output.meta b/Assets/Project/Graphics/Blocks/Output.meta new file mode 100644 index 00000000..e13c8230 --- /dev/null +++ b/Assets/Project/Graphics/Blocks/Output.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1cdbfa2a84b09464c8f4cf4e8d2e1831 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/Blocks/Output/autocannon-Base.png b/Assets/Project/Graphics/Blocks/Output/autocannon-Base.png new file mode 100644 index 00000000..2b7fda21 Binary files /dev/null and b/Assets/Project/Graphics/Blocks/Output/autocannon-Base.png differ diff --git a/Assets/Project/Graphics/Blocks/Output/autocannon-Base.png.meta b/Assets/Project/Graphics/Blocks/Output/autocannon-Base.png.meta new file mode 100644 index 00000000..6c55e551 --- /dev/null +++ b/Assets/Project/Graphics/Blocks/Output/autocannon-Base.png.meta @@ -0,0 +1,144 @@ +fileFormatVersion: 2 +guid: da6795cbd675a1c4eb1548479542312a +TextureImporter: + internalIDToNameTable: + - first: + 213: -5142850875061161355 + second: autocannon-Base_0 + - first: + 213: 4965577631123526789 + second: autocannon-Base_1 + 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: 1 + 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: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 32 + 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: 0 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: autocannon-Base_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 96 + height: 96 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 5723c2b806ce0a8b0800000000000000 + internalID: -5142850875061161355 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: autocannon-Base_1 + rect: + serializedVersion: 2 + x: 96 + y: 0 + width: 96 + height: 96 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 5845eb7fb8649e440800000000000000 + internalID: 4965577631123526789 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/Blocks/Output/autocannon-Left_barrel.png b/Assets/Project/Graphics/Blocks/Output/autocannon-Left_barrel.png new file mode 100644 index 00000000..9728fa61 Binary files /dev/null and b/Assets/Project/Graphics/Blocks/Output/autocannon-Left_barrel.png differ diff --git a/Assets/Project/Graphics/Blocks/Output/autocannon-Left_barrel.png.meta b/Assets/Project/Graphics/Blocks/Output/autocannon-Left_barrel.png.meta new file mode 100644 index 00000000..ba4938ab --- /dev/null +++ b/Assets/Project/Graphics/Blocks/Output/autocannon-Left_barrel.png.meta @@ -0,0 +1,144 @@ +fileFormatVersion: 2 +guid: 3df44e587e7d82f489e36a25a76849f7 +TextureImporter: + internalIDToNameTable: + - first: + 213: -595111733672396593 + second: autocannon-Left_barrel_0 + - first: + 213: -747132544122639833 + second: autocannon-Left_barrel_1 + 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: 1 + 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: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 32 + 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: 0 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: autocannon-Left_barrel_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 96 + height: 96 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: fc83ac0080dbdb7f0800000000000000 + internalID: -595111733672396593 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: autocannon-Left_barrel_1 + rect: + serializedVersion: 2 + x: 96 + y: 0 + width: 96 + height: 96 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 72aaf6bd8e6a1a5f0800000000000000 + internalID: -747132544122639833 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/Blocks/Output/autocannon-Left_drum.png b/Assets/Project/Graphics/Blocks/Output/autocannon-Left_drum.png new file mode 100644 index 00000000..63516197 Binary files /dev/null and b/Assets/Project/Graphics/Blocks/Output/autocannon-Left_drum.png differ diff --git a/Assets/Project/Graphics/Blocks/Output/autocannon-Left_drum.png.meta b/Assets/Project/Graphics/Blocks/Output/autocannon-Left_drum.png.meta new file mode 100644 index 00000000..37bc6259 --- /dev/null +++ b/Assets/Project/Graphics/Blocks/Output/autocannon-Left_drum.png.meta @@ -0,0 +1,144 @@ +fileFormatVersion: 2 +guid: c68320b6a0c50194c81a4947b13f85f2 +TextureImporter: + internalIDToNameTable: + - first: + 213: -3649623642469159563 + second: autocannon-Left_drum_0 + - first: + 213: 229953358690648810 + second: autocannon-Left_drum_1 + 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: 1 + 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: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 32 + 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: 0 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: autocannon-Left_drum_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 96 + height: 96 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 57d22ca32aee95dc0800000000000000 + internalID: -3649623642469159563 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: autocannon-Left_drum_1 + rect: + serializedVersion: 2 + x: 96 + y: 0 + width: 96 + height: 96 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: ae20aa38c55f03300800000000000000 + internalID: 229953358690648810 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/Blocks/Output/autocannon-Right_barrel.png b/Assets/Project/Graphics/Blocks/Output/autocannon-Right_barrel.png new file mode 100644 index 00000000..d7708526 Binary files /dev/null and b/Assets/Project/Graphics/Blocks/Output/autocannon-Right_barrel.png differ diff --git a/Assets/Project/Graphics/Blocks/Output/autocannon-Right_barrel.png.meta b/Assets/Project/Graphics/Blocks/Output/autocannon-Right_barrel.png.meta new file mode 100644 index 00000000..9525076a --- /dev/null +++ b/Assets/Project/Graphics/Blocks/Output/autocannon-Right_barrel.png.meta @@ -0,0 +1,144 @@ +fileFormatVersion: 2 +guid: 9adf7c51a11e4df45a946258afd31f16 +TextureImporter: + internalIDToNameTable: + - first: + 213: 6955334459577690599 + second: autocannon-Right_barrel_0 + - first: + 213: 191859015706188338 + second: autocannon-Right_barrel_1 + 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: 1 + 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: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 32 + 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: 0 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: autocannon-Right_barrel_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 96 + height: 96 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 7e9692d07df468060800000000000000 + internalID: 6955334459577690599 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: autocannon-Right_barrel_1 + rect: + serializedVersion: 2 + x: 96 + y: 0 + width: 96 + height: 96 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 23a9f1e12ce99a200800000000000000 + internalID: 191859015706188338 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/Blocks/Output/autocannon-Right_drum.png b/Assets/Project/Graphics/Blocks/Output/autocannon-Right_drum.png new file mode 100644 index 00000000..a5888664 Binary files /dev/null and b/Assets/Project/Graphics/Blocks/Output/autocannon-Right_drum.png differ diff --git a/Assets/Project/Graphics/Blocks/Output/autocannon-Right_drum.png.meta b/Assets/Project/Graphics/Blocks/Output/autocannon-Right_drum.png.meta new file mode 100644 index 00000000..236d58fa --- /dev/null +++ b/Assets/Project/Graphics/Blocks/Output/autocannon-Right_drum.png.meta @@ -0,0 +1,144 @@ +fileFormatVersion: 2 +guid: d6c592257e3640a44a6f92714359b0fe +TextureImporter: + internalIDToNameTable: + - first: + 213: -2419346599998659348 + second: autocannon-Right_drum_0 + - first: + 213: 5829108391240260079 + second: autocannon-Right_drum_1 + 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: 1 + 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: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 32 + 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: 0 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: autocannon-Right_drum_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 96 + height: 96 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: ce4e786e511cc6ed0800000000000000 + internalID: -2419346599998659348 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: autocannon-Right_drum_1 + rect: + serializedVersion: 2 + x: 96 + y: 0 + width: 96 + height: 96 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: fe9df19a23725e050800000000000000 + internalID: 5829108391240260079 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/Blocks/Output/autocannon-Turret_details.png b/Assets/Project/Graphics/Blocks/Output/autocannon-Turret_details.png new file mode 100644 index 00000000..5d6440f1 Binary files /dev/null and b/Assets/Project/Graphics/Blocks/Output/autocannon-Turret_details.png differ diff --git a/Assets/Project/Graphics/Blocks/Output/autocannon-Turret_details.png.meta b/Assets/Project/Graphics/Blocks/Output/autocannon-Turret_details.png.meta new file mode 100644 index 00000000..b25188c8 --- /dev/null +++ b/Assets/Project/Graphics/Blocks/Output/autocannon-Turret_details.png.meta @@ -0,0 +1,144 @@ +fileFormatVersion: 2 +guid: 3aea5106721bd0746b7763815573461d +TextureImporter: + internalIDToNameTable: + - first: + 213: -818045571158502684 + second: autocannon-Turret_details_0 + - first: + 213: 9069063783591890898 + second: autocannon-Turret_details_1 + 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: 1 + 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: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 32 + 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: 0 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: autocannon-Turret_details_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 96 + height: 96 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 4e2140123e7b5a4f0800000000000000 + internalID: -818045571158502684 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: autocannon-Turret_details_1 + rect: + serializedVersion: 2 + x: 96 + y: 0 + width: 96 + height: 96 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 2dfca521679cbdd70800000000000000 + internalID: 9069063783591890898 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/Blocks/Output/autocannon-Turret_shape.png b/Assets/Project/Graphics/Blocks/Output/autocannon-Turret_shape.png new file mode 100644 index 00000000..8fa43894 Binary files /dev/null and b/Assets/Project/Graphics/Blocks/Output/autocannon-Turret_shape.png differ diff --git a/Assets/Project/Graphics/Blocks/Output/autocannon-Turret_shape.png.meta b/Assets/Project/Graphics/Blocks/Output/autocannon-Turret_shape.png.meta new file mode 100644 index 00000000..03df0c3e --- /dev/null +++ b/Assets/Project/Graphics/Blocks/Output/autocannon-Turret_shape.png.meta @@ -0,0 +1,144 @@ +fileFormatVersion: 2 +guid: ef9dd0db5c269f24d8be26f14905ce08 +TextureImporter: + internalIDToNameTable: + - first: + 213: 6380167314213125033 + second: autocannon-Turret_shape_0 + - first: + 213: -5469396981556370667 + second: autocannon-Turret_shape_1 + 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: 1 + 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: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 32 + 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: 0 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: autocannon-Turret_shape_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 96 + height: 96 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 9ab3b336e58ea8850800000000000000 + internalID: 6380167314213125033 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: autocannon-Turret_shape_1 + rect: + serializedVersion: 2 + x: 96 + y: 0 + width: 96 + height: 96 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 5132db26c6cc814b0800000000000000 + internalID: -5469396981556370667 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/Blocks/RepairDrone.meta b/Assets/Project/Graphics/Blocks/RepairDrone.meta new file mode 100644 index 00000000..28aab4c1 --- /dev/null +++ b/Assets/Project/Graphics/Blocks/RepairDrone.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dbbc3b3f388fb534780e601a27ad793f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/Blocks/RepairDrone/RepairDronev1.ase b/Assets/Project/Graphics/Blocks/RepairDrone/RepairDronev1.ase new file mode 100644 index 00000000..0e801712 Binary files /dev/null and b/Assets/Project/Graphics/Blocks/RepairDrone/RepairDronev1.ase differ diff --git a/Assets/Project/Graphics/Blocks/RepairDrone/RepairDronev1.ase.meta b/Assets/Project/Graphics/Blocks/RepairDrone/RepairDronev1.ase.meta new file mode 100644 index 00000000..8323d736 --- /dev/null +++ b/Assets/Project/Graphics/Blocks/RepairDrone/RepairDronev1.ase.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 630bda7de322c8c4eabc9eb58cd28c73 +DefaultImporter: + externalObjects: {} + userData: '{"layers":{"thrusters":{"mergeUp":false,"exportOnlyFirstFrame":false,"name":"thrusters"},"arms":{"mergeUp":false,"exportOnlyFirstFrame":false,"name":"arms"},"body-plate":{"mergeUp":false,"exportOnlyFirstFrame":false,"name":"body-plate"},"body-frame":{"mergeUp":true,"exportOnlyFirstFrame":false,"name":"body-frame"}}}' + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/Blocks/RepairDrone/RepairDronev2.ase b/Assets/Project/Graphics/Blocks/RepairDrone/RepairDronev2.ase new file mode 100644 index 00000000..bb021685 Binary files /dev/null and b/Assets/Project/Graphics/Blocks/RepairDrone/RepairDronev2.ase differ diff --git a/Assets/Project/Graphics/Blocks/RepairDrone/RepairDronev2.ase.meta b/Assets/Project/Graphics/Blocks/RepairDrone/RepairDronev2.ase.meta new file mode 100644 index 00000000..cfa9899f --- /dev/null +++ b/Assets/Project/Graphics/Blocks/RepairDrone/RepairDronev2.ase.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9a1cb3cecdc515248b4c27bf98ea696e +DefaultImporter: + externalObjects: {} + userData: '{"layers":{"thrusters":{"mergeUp":false,"exportOnlyFirstFrame":false,"name":"thrusters"},"arms":{"mergeUp":false,"exportOnlyFirstFrame":false,"name":"arms"},"body-plate":{"mergeUp":false,"exportOnlyFirstFrame":false,"name":"body-plate"},"body-frame":{"mergeUp":false,"exportOnlyFirstFrame":false,"name":"body-frame"}}}' + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/Blocks/RepairDrone/RepairDronev3-output.meta b/Assets/Project/Graphics/Blocks/RepairDrone/RepairDronev3-output.meta new file mode 100644 index 00000000..a8a64136 --- /dev/null +++ b/Assets/Project/Graphics/Blocks/RepairDrone/RepairDronev3-output.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0183216662072f04f919059b865ced80 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/Blocks/RepairDrone/RepairDronev3-output/RepairDronev3-body-frame.png b/Assets/Project/Graphics/Blocks/RepairDrone/RepairDronev3-output/RepairDronev3-body-frame.png new file mode 100644 index 00000000..ac59786c Binary files /dev/null and b/Assets/Project/Graphics/Blocks/RepairDrone/RepairDronev3-output/RepairDronev3-body-frame.png differ diff --git a/Assets/Project/Graphics/Blocks/RepairDrone/RepairDronev3-output/RepairDronev3-body-frame.png.meta b/Assets/Project/Graphics/Blocks/RepairDrone/RepairDronev3-output/RepairDronev3-body-frame.png.meta new file mode 100644 index 00000000..09ec9eff --- /dev/null +++ b/Assets/Project/Graphics/Blocks/RepairDrone/RepairDronev3-output/RepairDronev3-body-frame.png.meta @@ -0,0 +1,123 @@ +fileFormatVersion: 2 +guid: ce0ab10e07192e24fa260bd0f61f404c +TextureImporter: + internalIDToNameTable: + - first: + 213: -852124201705394469 + second: body-frame_0 + - first: + 213: -1495744313708360963 + second: RepairDronev3-body-frame-0 + 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: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 32 + 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: 16384 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: RepairDronev3-body-frame-0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 64 + height: 64 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: dfa4a92b87c0e3be0800000000000000 + internalID: -1495744313708360963 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/Blocks/RepairDrone/RepairDronev3.ase b/Assets/Project/Graphics/Blocks/RepairDrone/RepairDronev3.ase new file mode 100644 index 00000000..2aaa7406 Binary files /dev/null and b/Assets/Project/Graphics/Blocks/RepairDrone/RepairDronev3.ase differ diff --git a/Assets/Project/Graphics/Blocks/RepairDrone/RepairDronev3.ase.meta b/Assets/Project/Graphics/Blocks/RepairDrone/RepairDronev3.ase.meta new file mode 100644 index 00000000..e2245bf3 --- /dev/null +++ b/Assets/Project/Graphics/Blocks/RepairDrone/RepairDronev3.ase.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: 178569f0c57d63e408373b0e6f712b1f +DefaultImporter: + externalObjects: {} + userData: "{\r\n \"layers\": {\r\n \"thrusters\": {\r\n \"mergeUp\": true,\r\n + \"exportOnlyFirstFrame\": false,\r\n \"name\": \"thrusters\",\r\n \"index\": + 4\r\n },\r\n \"arms\": {\r\n \"mergeUp\": true,\r\n \"exportOnlyFirstFrame\": + false,\r\n \"name\": \"arms\",\r\n \"index\": 3\r\n },\r\n \"body-plate\": + {\r\n \"mergeUp\": true,\r\n \"exportOnlyFirstFrame\": false,\r\n + \"name\": \"body-plate\",\r\n \"index\": 2\r\n },\r\n \"body-plate-overlay\": + {\r\n \"mergeUp\": true,\r\n \"exportOnlyFirstFrame\": false,\r\n + \"name\": \"body-plate-overlay\",\r\n \"index\": 1\r\n },\r\n \"body-frame\": + {\r\n \"mergeUp\": false,\r\n \"exportOnlyFirstFrame\": false,\r\n + \"name\": \"body-frame\",\r\n \"index\": 0\r\n }\r\n }\r\n}" + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/Blocks/Sheets/1x1blocks.ase.meta b/Assets/Project/Graphics/Blocks/Sheets/1x1blocks.ase.meta index 896b6259..36d33200 100644 --- a/Assets/Project/Graphics/Blocks/Sheets/1x1blocks.ase.meta +++ b/Assets/Project/Graphics/Blocks/Sheets/1x1blocks.ase.meta @@ -2,6 +2,6 @@ fileFormatVersion: 2 guid: fba5295e74df7544e83fa5fe77b71f54 DefaultImporter: externalObjects: {} - userData: + userData: '{"layers":{"Layer 1":{"mergeUp":false},"Layer 2":{"mergeUp":false}}}' assetBundleName: assetBundleVariant: diff --git a/Assets/Project/Graphics/Blocks/Sheets/3x1blocks.aseprite.meta b/Assets/Project/Graphics/Blocks/Sheets/3x1blocks.aseprite.meta index 2d01fa25..c3309022 100644 --- a/Assets/Project/Graphics/Blocks/Sheets/3x1blocks.aseprite.meta +++ b/Assets/Project/Graphics/Blocks/Sheets/3x1blocks.aseprite.meta @@ -2,6 +2,7 @@ fileFormatVersion: 2 guid: 70bb462d111c9cb4ba77d2f800ba866e DefaultImporter: externalObjects: {} - userData: + userData: '{"layers":{"Layer 1":{"mergeUp":false,"exportOnlyFirstFrame":false,"name":"Layer + 1"},"Layer 2":{"mergeUp":false,"exportOnlyFirstFrame":false,"name":"Layer 2"}}}' assetBundleName: assetBundleVariant: diff --git a/Assets/Project/Graphics/Blocks/Sheets/3x1blocks.png.meta b/Assets/Project/Graphics/Blocks/Sheets/3x1blocks.png.meta index 61b1acbd..32ab409b 100644 --- a/Assets/Project/Graphics/Blocks/Sheets/3x1blocks.png.meta +++ b/Assets/Project/Graphics/Blocks/Sheets/3x1blocks.png.meta @@ -44,6 +44,7 @@ TextureImporter: isReadable: 0 streamingMipmaps: 0 streamingMipmapsPriority: 0 + vTOnly: 0 grayScaleToAlpha: 0 generateCubemap: 6 cubemapConvolution: 0 @@ -75,9 +76,12 @@ TextureImporter: textureType: 8 textureShape: 1 singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + ignorePngGamma: 0 applyGammaDecoding: 0 platformSettings: - serializedVersion: 3 diff --git a/Assets/Project/Graphics/Blocks/Shield Generator.meta b/Assets/Project/Graphics/Blocks/Shield Generator.meta new file mode 100644 index 00000000..c2f046cf --- /dev/null +++ b/Assets/Project/Graphics/Blocks/Shield Generator.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3cd51d364b3108d47903725a2de9f2f0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/Blocks/Shield Generator/ShieldGeneratorMk1-output.meta b/Assets/Project/Graphics/Blocks/Shield Generator/ShieldGeneratorMk1-output.meta new file mode 100644 index 00000000..d08c83b7 --- /dev/null +++ b/Assets/Project/Graphics/Blocks/Shield Generator/ShieldGeneratorMk1-output.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5b0c127e487dede4295b9f9db87ad295 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/Blocks/Shield Generator/ShieldGeneratorMk1-output/ShieldGeneratorMk1-emitter-light.png b/Assets/Project/Graphics/Blocks/Shield Generator/ShieldGeneratorMk1-output/ShieldGeneratorMk1-emitter-light.png new file mode 100644 index 00000000..5f0c05e9 Binary files /dev/null and b/Assets/Project/Graphics/Blocks/Shield Generator/ShieldGeneratorMk1-output/ShieldGeneratorMk1-emitter-light.png differ diff --git a/Assets/Project/Graphics/Blocks/Shield Generator/ShieldGeneratorMk1-output/ShieldGeneratorMk1-emitter-light.png.meta b/Assets/Project/Graphics/Blocks/Shield Generator/ShieldGeneratorMk1-output/ShieldGeneratorMk1-emitter-light.png.meta new file mode 100644 index 00000000..33c6d775 --- /dev/null +++ b/Assets/Project/Graphics/Blocks/Shield Generator/ShieldGeneratorMk1-output/ShieldGeneratorMk1-emitter-light.png.meta @@ -0,0 +1,120 @@ +fileFormatVersion: 2 +guid: d8abe9105e698954e98d8c616a25f42f +TextureImporter: + internalIDToNameTable: + - first: + 213: -2984254884198047238 + second: ShieldGeneratorMk1-emitter-light_0 + 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: 1 + 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: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 32 + 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: 0 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: ShieldGeneratorMk1-emitter-light_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 32 + height: 32 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: af1a62c7efbc596d0800000000000000 + internalID: -2984254884198047238 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/Blocks/Shield Generator/ShieldGeneratorMk1-output/ShieldGeneratorMk1-frame.png b/Assets/Project/Graphics/Blocks/Shield Generator/ShieldGeneratorMk1-output/ShieldGeneratorMk1-frame.png new file mode 100644 index 00000000..1420dbd2 Binary files /dev/null and b/Assets/Project/Graphics/Blocks/Shield Generator/ShieldGeneratorMk1-output/ShieldGeneratorMk1-frame.png differ diff --git a/Assets/Project/Graphics/Blocks/Shield Generator/ShieldGeneratorMk1-output/ShieldGeneratorMk1-frame.png.meta b/Assets/Project/Graphics/Blocks/Shield Generator/ShieldGeneratorMk1-output/ShieldGeneratorMk1-frame.png.meta new file mode 100644 index 00000000..e819d90d --- /dev/null +++ b/Assets/Project/Graphics/Blocks/Shield Generator/ShieldGeneratorMk1-output/ShieldGeneratorMk1-frame.png.meta @@ -0,0 +1,120 @@ +fileFormatVersion: 2 +guid: 937e27828f2f2024ba2726a806ff5d8f +TextureImporter: + internalIDToNameTable: + - first: + 213: 3846102588298344479 + second: ShieldGeneratorMk1-frame_0 + 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: 1 + 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: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 32 + 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: 0 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: ShieldGeneratorMk1-frame_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 32 + height: 32 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: f18bb313de9106530800000000000000 + internalID: 3846102588298344479 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/Blocks/Shield Generator/ShieldGeneratorMk1.aseprite b/Assets/Project/Graphics/Blocks/Shield Generator/ShieldGeneratorMk1.aseprite new file mode 100644 index 00000000..ba095db5 Binary files /dev/null and b/Assets/Project/Graphics/Blocks/Shield Generator/ShieldGeneratorMk1.aseprite differ diff --git a/Assets/Project/Graphics/Blocks/Shield Generator/ShieldGeneratorMk1.aseprite.meta b/Assets/Project/Graphics/Blocks/Shield Generator/ShieldGeneratorMk1.aseprite.meta new file mode 100644 index 00000000..d1523db8 --- /dev/null +++ b/Assets/Project/Graphics/Blocks/Shield Generator/ShieldGeneratorMk1.aseprite.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 619826ae99954b94b8da6b5c9eaa83a2 +DefaultImporter: + externalObjects: {} + userData: '{"layers":{"frame":{"mergeUp":false,"exportOnlyFirstFrame":false,"name":"frame"},"base-upper":{"mergeUp":false,"exportOnlyFirstFrame":false,"name":"base-upper"},"emitter-contour":{"mergeUp":false,"exportOnlyFirstFrame":false,"name":"emitter-contour"},"emitter-light":{"mergeUp":false,"exportOnlyFirstFrame":false,"name":"emitter-light"}}}' + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/Blocks/autocannon.ase.meta b/Assets/Project/Graphics/Blocks/autocannon.ase.meta index 2e6146ac..d8a22a71 100644 --- a/Assets/Project/Graphics/Blocks/autocannon.ase.meta +++ b/Assets/Project/Graphics/Blocks/autocannon.ase.meta @@ -2,6 +2,12 @@ fileFormatVersion: 2 guid: 40a7a8cafa683c5418230d64f3e892f0 DefaultImporter: externalObjects: {} - userData: + userData: '{"layers":{"Base":{"mergeUp":false,"exportOnlyFirstFrame":false,"name":"Base"},"Turret + shape":{"mergeUp":false,"exportOnlyFirstFrame":false,"name":"Turret shape"},"Right + barrel":{"mergeUp":false,"exportOnlyFirstFrame":false,"name":"Right barrel"},"Left + barrel":{"mergeUp":false,"exportOnlyFirstFrame":false,"name":"Left barrel"},"Right + drum":{"mergeUp":false,"exportOnlyFirstFrame":false,"name":"Right drum"},"Left + drum":{"mergeUp":false,"exportOnlyFirstFrame":false,"name":"Left drum"},"Turret + details":{"mergeUp":false,"exportOnlyFirstFrame":false,"name":"Turret details"}}}' assetBundleName: assetBundleVariant: diff --git a/Assets/Project/Graphics/Blocks/blockframe.ase.meta b/Assets/Project/Graphics/Blocks/blockframe.ase.meta index 462bd58e..36ab024a 100644 --- a/Assets/Project/Graphics/Blocks/blockframe.ase.meta +++ b/Assets/Project/Graphics/Blocks/blockframe.ase.meta @@ -2,6 +2,6 @@ fileFormatVersion: 2 guid: bcf28149825ddd746a0f3647fc7e89f2 DefaultImporter: externalObjects: {} - userData: + userData: '{"layers":{"Layer 1":{"mergeUp":false}}}' assetBundleName: assetBundleVariant: diff --git a/Assets/Project/Graphics/Blocks/default-tile-palette.aseprite.meta b/Assets/Project/Graphics/Blocks/default-tile-palette.aseprite.meta index fcb3098c..0a3e6b0f 100644 --- a/Assets/Project/Graphics/Blocks/default-tile-palette.aseprite.meta +++ b/Assets/Project/Graphics/Blocks/default-tile-palette.aseprite.meta @@ -2,6 +2,6 @@ fileFormatVersion: 2 guid: 895a0d605806d5547a7b594a0a6e9094 DefaultImporter: externalObjects: {} - userData: + userData: '{"layers":{"Background":{"mergeUp":false}}}' assetBundleName: assetBundleVariant: diff --git a/Assets/Project/Graphics/UI/FFFFFF-1.png b/Assets/Project/Graphics/FFFFFF-1.png similarity index 100% rename from Assets/Project/Graphics/UI/FFFFFF-1.png rename to Assets/Project/Graphics/FFFFFF-1.png diff --git a/Assets/Project/Graphics/UI/FFFFFF-1.png.meta b/Assets/Project/Graphics/FFFFFF-1.png.meta similarity index 95% rename from Assets/Project/Graphics/UI/FFFFFF-1.png.meta rename to Assets/Project/Graphics/FFFFFF-1.png.meta index 40edd1f6..7f585fd3 100644 --- a/Assets/Project/Graphics/UI/FFFFFF-1.png.meta +++ b/Assets/Project/Graphics/FFFFFF-1.png.meta @@ -23,6 +23,7 @@ TextureImporter: isReadable: 0 streamingMipmaps: 0 streamingMipmapsPriority: 0 + vTOnly: 0 grayScaleToAlpha: 0 generateCubemap: 6 cubemapConvolution: 0 @@ -54,14 +55,17 @@ TextureImporter: 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 + maxTextureSize: 32 resizeAlgorithm: 0 textureFormat: -1 textureCompression: 0 @@ -73,7 +77,7 @@ TextureImporter: forceMaximumCompressionQuality_BC6H_BC7: 0 - serializedVersion: 3 buildTarget: Standalone - maxTextureSize: 2048 + maxTextureSize: 32 resizeAlgorithm: 0 textureFormat: -1 textureCompression: 0 diff --git a/Assets/Project/Graphics/Materials.meta b/Assets/Project/Graphics/Materials.meta new file mode 100644 index 00000000..3c34670e --- /dev/null +++ b/Assets/Project/Graphics/Materials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f800eaa990135f546aa44331bfd54944 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/Materials/ArcShader.mat b/Assets/Project/Graphics/Materials/ArcShader.mat new file mode 100644 index 00000000..f1d4d16c --- /dev/null +++ b/Assets/Project/Graphics/Materials/ArcShader.mat @@ -0,0 +1,61 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: ArcShader + m_Shader: {fileID: -6465566751694194690, guid: 843a87466c68f44499bea3452cf65c8d, + type: 3} + m_ShaderKeywords: ETC1_EXTERNAL_ALPHA + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _MainTex: + m_Texture: {fileID: 2800000, guid: 1c5d70ecef2ab5645baa9af136d913d3, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NoiseMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - Distortion_: 0.1 + - NoiseScale_: 25 + - Vector1_fea423eb6d4b4f47a4da937932092e98: 0.9 + - Width_: 0.05 + - _Distortion: 0.2 + - _MainTexRotation: 90 + - _NoiseMaskRotation: 90 + - _NoiseScale: 25 + - _Width: 0.03 + m_Colors: + - Color_: {r: 1, g: 1, b: 1, a: 1} + - Color_e2bbeee387974352b879ca31e9efac8e: {r: 0.25130886, g: 15.999998, b: 15.329842, + a: 1} + - NoiseSpeed_: {r: 1, g: 0, b: 0, a: 0} + - _Color: {r: 0.7490196, g: 0.7490196, b: 0.7490196, a: 1} + - _NoiseOffset: {r: 0, g: 0, b: 0, a: 0} + - _NoiseSpeed: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] diff --git a/Assets/Project/Graphics/Materials/ArcShader.mat.meta b/Assets/Project/Graphics/Materials/ArcShader.mat.meta new file mode 100644 index 00000000..8828448f --- /dev/null +++ b/Assets/Project/Graphics/Materials/ArcShader.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cac5f42f5e485ec4bbc116e8894abeb9 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/Materials/GaussCannonBeamShader.mat b/Assets/Project/Graphics/Materials/GaussCannonBeamShader.mat new file mode 100644 index 00000000..3ec154da --- /dev/null +++ b/Assets/Project/Graphics/Materials/GaussCannonBeamShader.mat @@ -0,0 +1,44 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: GaussCannonBeamShader + m_Shader: {fileID: -6465566751694194690, guid: f3c3a3e25636cab43ab139ff51a019e4, + type: 3} + m_ShaderKeywords: ETC1_EXTERNAL_ALPHA + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - Vector1_2622e9134b2e484386137102cf7d39fb: 4 + - Vector1_44e468b25f4b46f4b7fcb61cac6643c8: 0.5 + - Vector1_6680ec53d55b40298f4a064896f50e7e: 10 + - Vector1_99a671c1e3274bee8607a56e0a0ab6bd: 30 + m_Colors: + - Color_46b35a1776f84c6eb5a8a969cc80e2a0: {r: 2.9960785, g: 2.9960785, b: 2.9960785, + a: 1} + - Vector2_43c3ae09d6c345e9b74e1234b3ebbc67: {r: -2, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] diff --git a/Assets/Project/Graphics/Materials/GaussCannonBeamShader.mat.meta b/Assets/Project/Graphics/Materials/GaussCannonBeamShader.mat.meta new file mode 100644 index 00000000..7d4962cc --- /dev/null +++ b/Assets/Project/Graphics/Materials/GaussCannonBeamShader.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9774dede6f7630b4d99a5dd32b95a609 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/Materials/SpriteLitEmissive.mat b/Assets/Project/Graphics/Materials/SpriteLitEmissive.mat new file mode 100644 index 00000000..614209d5 --- /dev/null +++ b/Assets/Project/Graphics/Materials/SpriteLitEmissive.mat @@ -0,0 +1,44 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: SpriteLitEmissive + m_Shader: {fileID: -6465566751694194690, guid: 60365304e537bd7489e3c2395f7918b8, + type: 3} + m_ShaderKeywords: ETC1_EXTERNAL_ALPHA + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _Emission: 0 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Project/Graphics/Materials/SpriteLitEmissive.mat.meta b/Assets/Project/Graphics/Materials/SpriteLitEmissive.mat.meta new file mode 100644 index 00000000..afc2d30b --- /dev/null +++ b/Assets/Project/Graphics/Materials/SpriteLitEmissive.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 96d1545cc484067429bd9bd8da062edd +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/Shaders.meta b/Assets/Project/Graphics/Shaders.meta new file mode 100644 index 00000000..21ecb296 --- /dev/null +++ b/Assets/Project/Graphics/Shaders.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d6e4dfd30333a694c86b9e25d304737b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/Shaders/ArcShader.shadergraph b/Assets/Project/Graphics/Shaders/ArcShader.shadergraph new file mode 100644 index 00000000..8438b6cc --- /dev/null +++ b/Assets/Project/Graphics/Shaders/ArcShader.shadergraph @@ -0,0 +1,6142 @@ +{ + "m_SGVersion": 2, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "95e85d3cf62741148148bf50202a50a5", + "m_Properties": [ + { + "m_Id": "20b52907445b4fa3b023303e828a996e" + }, + { + "m_Id": "9648c3ec894642e78e513421d6efcdc2" + }, + { + "m_Id": "4c48529b7a064431ae89c8cdbece02e3" + }, + { + "m_Id": "0716808639fe45ffb3d272ddcc95d2d8" + }, + { + "m_Id": "8510ebda469046e6ae13abeff60b078a" + }, + { + "m_Id": "77a9df1f98754fbcb1e732623528a01a" + }, + { + "m_Id": "ede56678ebd44b1ba792f6e51e31428b" + }, + { + "m_Id": "5519b69f88c746a0a8a5e1887d027c71" + }, + { + "m_Id": "0d78ca3344754d109b9fff2088ca1b3b" + }, + { + "m_Id": "ce992bf0aa114c76ae2976dcf8927b3b" + }, + { + "m_Id": "48e540445aa04d80a0fdd82f23dc9194" + }, + { + "m_Id": "1106b03e6b7f4a5d982d4d0afc1a6370" + }, + { + "m_Id": "765b11174eea4c8b915a452781b74bb8" + } + ], + "m_Keywords": [], + "m_Nodes": [ + { + "m_Id": "b261adb9e9804cbaae9b104a1e3abb59" + }, + { + "m_Id": "5846b36b21bf4d3eb0f5612c37768338" + }, + { + "m_Id": "16e99301efe84953ad40bbb1b8e8471b" + }, + { + "m_Id": "a884da95ea674563b2e1a2bdac479653" + }, + { + "m_Id": "121709f049c845de8fb10c1ddda19144" + }, + { + "m_Id": "ece15640d1bb45bf9c9f2bb06af095b8" + }, + { + "m_Id": "3afb060064cd47ba8a7a19f68006254f" + }, + { + "m_Id": "1d33aee84b2b470abb0f44284f33a16f" + }, + { + "m_Id": "bf48d42144ea42c480dd00f3b8b3ca9c" + }, + { + "m_Id": "a9b9d9f6278d42f58235fdbaec3581cb" + }, + { + "m_Id": "d026f85e13944db1aadc19c5c358d558" + }, + { + "m_Id": "3e09e7c0af0e4d58bbb699f87d090594" + }, + { + "m_Id": "be96281ce622423eb3623f77ecfb5179" + }, + { + "m_Id": "0f8c8f2e1ec847289207e57d093837b6" + }, + { + "m_Id": "7c6548e00e6f48698c663187ff6bfe95" + }, + { + "m_Id": "f4e9c6fc8c494093999f704bb7da4620" + }, + { + "m_Id": "a26125e94aca4d0199b35917f29d79b1" + }, + { + "m_Id": "ab5b9c984a664640be08a1afe295d929" + }, + { + "m_Id": "13996bef9f924b3789cc1642ed47c57d" + }, + { + "m_Id": "f8513e4b7ecb4634957d2a91e245e473" + }, + { + "m_Id": "aadcb20f697f43a68320dfe86e2e33c3" + }, + { + "m_Id": "6e6961e2843b475b895bdecdbec99037" + }, + { + "m_Id": "d44c9f13a9be48ffa03d3682746d2e68" + }, + { + "m_Id": "8229deb8cf5849d19823520e20c25d09" + }, + { + "m_Id": "6112160000184ab1ab3d1534f568f3b8" + }, + { + "m_Id": "81d12672f5a14aec9c76eca6fbc36fa5" + }, + { + "m_Id": "17a5789233e44122990bb1ecc4b17e26" + }, + { + "m_Id": "492c9e20856f4103acbb759a41722c4c" + }, + { + "m_Id": "017a59dcd6934693986d0c808fa453d3" + }, + { + "m_Id": "9da952a8fee94205b23cfd33456fbc6f" + }, + { + "m_Id": "aff46ebc049040d7a365862fdfc44791" + }, + { + "m_Id": "425e6397944f44209636d9bbf7e7432a" + }, + { + "m_Id": "e71fef5191b543878710ab23c59e7782" + }, + { + "m_Id": "5b4698f532b041ab86cc420d1f6c27fa" + }, + { + "m_Id": "bd5719e6a60c4a729eaea68409640412" + }, + { + "m_Id": "118f18eaccfd45039065de336bc211c0" + }, + { + "m_Id": "6234674b2ce841979f13d83579e22468" + }, + { + "m_Id": "e8870a07023748258a4ed456b18c584a" + }, + { + "m_Id": "949e3b21b0c642919be46ba19daa2209" + }, + { + "m_Id": "3d19105989394f5e9eb9e7752fede5be" + }, + { + "m_Id": "7451756fd4664fdca023d8404fbb0cc5" + }, + { + "m_Id": "673796283e134738ad563f9a2d546d25" + }, + { + "m_Id": "96616df32f894308b149a184ebad791a" + }, + { + "m_Id": "de7a76ed2bd94ec7adb7714d7cfbee90" + }, + { + "m_Id": "95c58f56501841839daa978c3e131a48" + }, + { + "m_Id": "20ae2f5308ea4913a3c1d66966fe6b79" + }, + { + "m_Id": "f63e7a0cf6c34917bc60fcdb2bbe009b" + }, + { + "m_Id": "a08ec63d413b4110851ffde53cb551b4" + }, + { + "m_Id": "c607628d85e14dfdacd0ec40922a2c76" + } + ], + "m_GroupDatas": [ + { + "m_Id": "b0e4fb0c0b2748e7b4b6419f46835c62" + }, + { + "m_Id": "ec6862b12dd845a3b92f14162638b373" + }, + { + "m_Id": "c859bcd510cf4fbfa4ee704149abde12" + }, + { + "m_Id": "ecc67cbd8ad240aa89cdea8f9d5b4ded" + }, + { + "m_Id": "0fa957bac8f7477d8ae78ae0f0942093" + } + ], + "m_StickyNoteDatas": [], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "017a59dcd6934693986d0c808fa453d3" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "aff46ebc049040d7a365862fdfc44791" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0f8c8f2e1ec847289207e57d093837b6" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "3e09e7c0af0e4d58bbb699f87d090594" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "118f18eaccfd45039065de336bc211c0" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "6234674b2ce841979f13d83579e22468" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "13996bef9f924b3789cc1642ed47c57d" + }, + "m_SlotId": 7 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "7c6548e00e6f48698c663187ff6bfe95" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "17a5789233e44122990bb1ecc4b17e26" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "81d12672f5a14aec9c76eca6fbc36fa5" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "1d33aee84b2b470abb0f44284f33a16f" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "81d12672f5a14aec9c76eca6fbc36fa5" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "20ae2f5308ea4913a3c1d66966fe6b79" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "3d19105989394f5e9eb9e7752fede5be" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "3afb060064cd47ba8a7a19f68006254f" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "1d33aee84b2b470abb0f44284f33a16f" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "3afb060064cd47ba8a7a19f68006254f" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "3d19105989394f5e9eb9e7752fede5be" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "3d19105989394f5e9eb9e7752fede5be" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "f63e7a0cf6c34917bc60fcdb2bbe009b" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "3e09e7c0af0e4d58bbb699f87d090594" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "492c9e20856f4103acbb759a41722c4c" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "425e6397944f44209636d9bbf7e7432a" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a26125e94aca4d0199b35917f29d79b1" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "492c9e20856f4103acbb759a41722c4c" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "425e6397944f44209636d9bbf7e7432a" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "5b4698f532b041ab86cc420d1f6c27fa" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "e71fef5191b543878710ab23c59e7782" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "6112160000184ab1ab3d1534f568f3b8" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "d44c9f13a9be48ffa03d3682746d2e68" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "6234674b2ce841979f13d83579e22468" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "bd5719e6a60c4a729eaea68409640412" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "673796283e134738ad563f9a2d546d25" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "7c6548e00e6f48698c663187ff6bfe95" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "7451756fd4664fdca023d8404fbb0cc5" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "de7a76ed2bd94ec7adb7714d7cfbee90" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "7c6548e00e6f48698c663187ff6bfe95" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "aadcb20f697f43a68320dfe86e2e33c3" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "81d12672f5a14aec9c76eca6fbc36fa5" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a9b9d9f6278d42f58235fdbaec3581cb" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "8229deb8cf5849d19823520e20c25d09" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "6112160000184ab1ab3d1534f568f3b8" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "949e3b21b0c642919be46ba19daa2209" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "121709f049c845de8fb10c1ddda19144" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "949e3b21b0c642919be46ba19daa2209" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a884da95ea674563b2e1a2bdac479653" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "95c58f56501841839daa978c3e131a48" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "de7a76ed2bd94ec7adb7714d7cfbee90" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "96616df32f894308b149a184ebad791a" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "7451756fd4664fdca023d8404fbb0cc5" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "96616df32f894308b149a184ebad791a" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "95c58f56501841839daa978c3e131a48" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9da952a8fee94205b23cfd33456fbc6f" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "aff46ebc049040d7a365862fdfc44791" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "a08ec63d413b4110851ffde53cb551b4" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "de7a76ed2bd94ec7adb7714d7cfbee90" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "a26125e94aca4d0199b35917f29d79b1" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "673796283e134738ad563f9a2d546d25" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "a9b9d9f6278d42f58235fdbaec3581cb" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "ece15640d1bb45bf9c9f2bb06af095b8" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "aadcb20f697f43a68320dfe86e2e33c3" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "949e3b21b0c642919be46ba19daa2209" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "ab5b9c984a664640be08a1afe295d929" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a26125e94aca4d0199b35917f29d79b1" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "aff46ebc049040d7a365862fdfc44791" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "425e6397944f44209636d9bbf7e7432a" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "bd5719e6a60c4a729eaea68409640412" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "e71fef5191b543878710ab23c59e7782" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "be96281ce622423eb3623f77ecfb5179" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "3e09e7c0af0e4d58bbb699f87d090594" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "bf48d42144ea42c480dd00f3b8b3ca9c" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "1d33aee84b2b470abb0f44284f33a16f" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "c607628d85e14dfdacd0ec40922a2c76" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "f63e7a0cf6c34917bc60fcdb2bbe009b" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "d026f85e13944db1aadc19c5c358d558" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "ece15640d1bb45bf9c9f2bb06af095b8" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "d44c9f13a9be48ffa03d3682746d2e68" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "13996bef9f924b3789cc1642ed47c57d" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "de7a76ed2bd94ec7adb7714d7cfbee90" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "673796283e134738ad563f9a2d546d25" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "e71fef5191b543878710ab23c59e7782" + }, + "m_SlotId": 7 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "492c9e20856f4103acbb759a41722c4c" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "e71fef5191b543878710ab23c59e7782" + }, + "m_SlotId": 7 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9da952a8fee94205b23cfd33456fbc6f" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "e8870a07023748258a4ed456b18c584a" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "949e3b21b0c642919be46ba19daa2209" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "ece15640d1bb45bf9c9f2bb06af095b8" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "3e09e7c0af0e4d58bbb699f87d090594" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "f4e9c6fc8c494093999f704bb7da4620" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "aadcb20f697f43a68320dfe86e2e33c3" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "f63e7a0cf6c34917bc60fcdb2bbe009b" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "96616df32f894308b149a184ebad791a" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "f8513e4b7ecb4634957d2a91e245e473" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "13996bef9f924b3789cc1642ed47c57d" + }, + "m_SlotId": 1 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": -815.0, + "y": 240.00001525878907 + }, + "m_Blocks": [ + { + "m_Id": "b261adb9e9804cbaae9b104a1e3abb59" + }, + { + "m_Id": "5846b36b21bf4d3eb0f5612c37768338" + }, + { + "m_Id": "16e99301efe84953ad40bbb1b8e8471b" + } + ] + }, + "m_FragmentContext": { + "m_Position": { + "x": -815.0, + "y": 440.0 + }, + "m_Blocks": [ + { + "m_Id": "a884da95ea674563b2e1a2bdac479653" + }, + { + "m_Id": "121709f049c845de8fb10c1ddda19144" + }, + { + "m_Id": "6e6961e2843b475b895bdecdbec99037" + } + ] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + } + }, + "m_Path": "Shader Graphs", + "m_ConcretePrecision": 0, + "m_OutputNode": { + "m_Id": "" + }, + "m_ActiveTargets": [ + { + "m_Id": "44f7def41dcf4577936d31b31bcdba75" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVNode", + "m_ObjectId": "017a59dcd6934693986d0c808fa453d3", + "m_Group": { + "m_Id": "ecc67cbd8ad240aa89cdea8f9d5b4ded" + }, + "m_Name": "UV", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -3441.000244140625, + "y": 1957.0001220703125, + "width": 208.0, + "height": 314.0 + } + }, + "m_Slots": [ + { + "m_Id": "0a9efd40fd414afe92d2f100ae944582" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_OutputChannel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "030ff2d79d514101adbf9ffd598e3369", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "035ebb6ed9244cfa8ce0aabbaf462f5a", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "04260f47d1c9465b88b2e799c0279f9a", + "m_Id": 0, + "m_DisplayName": "NoiseOffset", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "04ae5f5b3e6a4a9eab034674042afda2", + "m_Id": 1, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.699999988079071, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "0716808639fe45ffb3d272ddcc95d2d8", + "m_Guid": { + "m_GuidSerialized": "24754a24-697e-434d-aeda-96eeb0caa84e" + }, + "m_Name": "Width", + "m_DefaultReferenceName": "", + "m_OverrideReferenceName": "_Width", + "m_GeneratePropertyBlock": true, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.029999999329447748, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "089b6d36bc154e939a0c7210bf713767", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "0976354ba49f446eaf4fd794875b33da", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "0a9efd40fd414afe92d2f100ae944582", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PositionMaterialSlot", + "m_ObjectId": "0bb03bec9530426b893a35a4b1c83ef1", + "m_Id": 0, + "m_DisplayName": "Position", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Position", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "0c36bf40975a4e26ab352f09f40f14d8", + "m_Id": 0, + "m_DisplayName": "NoiseSpeed", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "0d78ca3344754d109b9fff2088ca1b3b", + "m_Guid": { + "m_GuidSerialized": "e6199818-e66f-433e-b8f5-5ba0c9c82c9a" + }, + "m_Name": "NoiseMask", + "m_DefaultReferenceName": "Texture2D_0d78ca3344754d109b9fff2088ca1b3b", + "m_OverrideReferenceName": "_NoiseMask", + "m_GeneratePropertyBlock": true, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"fileID\":2800000,\"guid\":\"5741643cf678f044b9e6d88464eaacd6\",\"type\":3}}", + "m_Guid": "" + }, + "m_Modifiable": true, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "0de980ea8c4a4870969c8cdf4f6e9532", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "0dea0f79393c4382b5d85f5df7997ec6", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "0f8c8f2e1ec847289207e57d093837b6", + "m_Group": { + "m_Id": "b0e4fb0c0b2748e7b4b6419f46835c62" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -5128.0, + "y": 1659.9998779296875, + "width": 128.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "5adb8089d64047a69317269434713f7c" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "ede56678ebd44b1ba792f6e51e31428b" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "0fa957bac8f7477d8ae78ae0f0942093", + "m_Title": "Flickering", + "m_Position": { + "x": -4757.41845703125, + "y": 90.15056610107422 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "1023e037dc7a4e888b1d105bda79a9b3", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "1106b03e6b7f4a5d982d4d0afc1a6370", + "m_Guid": { + "m_GuidSerialized": "b117c965-87a0-47e7-8469-61b25df3bdc7" + }, + "m_Name": "FlickeringBias", + "m_DefaultReferenceName": "Vector1_1106b03e6b7f4a5d982d4d0afc1a6370", + "m_OverrideReferenceName": "_FlickeringBias", + "m_GeneratePropertyBlock": true, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.699999988079071, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "114001677be24978a50258e5523f8974", + "m_Id": 0, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "118f18eaccfd45039065de336bc211c0", + "m_Group": { + "m_Id": "ecc67cbd8ad240aa89cdea8f9d5b4ded" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -4558.0, + "y": 1777.9998779296875, + "width": 164.0, + "height": 34.000003814697269 + } + }, + "m_Slots": [ + { + "m_Id": "1b35532a55684fe595645e90f4233379" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "4c48529b7a064431ae89c8cdbece02e3" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "121709f049c845de8fb10c1ddda19144", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Alpha", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "a00d0e6a8ae546a8aa8ddc0429cd2ffc" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Alpha" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "126c644b7b81466c8648eb75b65f77e4", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "13996bef9f924b3789cc1642ed47c57d", + "m_Group": { + "m_Id": "ec6862b12dd845a3b92f14162638b373" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2130.0, + "y": -50.999977111816409, + "width": 208.0, + "height": 437.0000305175781 + } + }, + "m_Slots": [ + { + "m_Id": "ee4603549b82422884112056c130bf5c" + }, + { + "m_Id": "d4a1bdbd64984a77bd02ec38553e7666" + }, + { + "m_Id": "9530552694df42358e3ead4134713f38" + }, + { + "m_Id": "82002d06fbd24848b561cffcf91a4a06" + }, + { + "m_Id": "b1a58c9a33dd41768aa3b12d3b965f80" + }, + { + "m_Id": "3d736296074c4eb38b075181317e7a9d" + }, + { + "m_Id": "e01ee451a69e4daab733710357d47d62" + }, + { + "m_Id": "5d33136de2a349e1985b36c1c388b7d6" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "16acb6c2cbc344139b13e59123bbfefd", + "m_Id": 0, + "m_DisplayName": "Time", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Time", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "16e99301efe84953ad40bbb1b8e8471b", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Tangent", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "f5b70accae00426093e87ab68d202626" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Tangent" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "17a5789233e44122990bb1ecc4b17e26", + "m_Group": { + "m_Id": "b0e4fb0c0b2748e7b4b6419f46835c62" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -5910.0, + "y": 1588.0, + "width": 140.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "04260f47d1c9465b88b2e799c0279f9a" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "5519b69f88c746a0a8a5e1887d027c71" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "1b35532a55684fe595645e90f4233379", + "m_Id": 0, + "m_DisplayName": "MainTexRotation", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "1d33aee84b2b470abb0f44284f33a16f", + "m_Group": { + "m_Id": "b0e4fb0c0b2748e7b4b6419f46835c62" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -5882.99951171875, + "y": 1401.9998779296875, + "width": 129.99998474121095, + "height": 117.99999237060547 + } + }, + "m_Slots": [ + { + "m_Id": "441ff85eeeff414aa15f6f449cd742c8" + }, + { + "m_Id": "4d32f55603cc4d02909523caab53aeed" + }, + { + "m_Id": "030ff2d79d514101adbf9ffd598e3369" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "1df4da6a5bdd471cb2b5fbd4a2ba364a", + "m_Id": 0, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "1eac952366434c8d96d09e1764e50607", + "m_Id": 1, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "2024f476aa854fa5b4b4ba9cedb92bbf", + "m_Id": 0, + "m_DisplayName": "FlickeringOffset", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "20ae2f5308ea4913a3c1d66966fe6b79", + "m_Group": { + "m_Id": "0fa957bac8f7477d8ae78ae0f0942093" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -4582.0, + "y": 344.0000305175781, + "width": 159.0, + "height": 34.000003814697269 + } + }, + "m_Slots": [ + { + "m_Id": "85e3ee8ea32940a7a2c988deb90c4745" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "48e540445aa04d80a0fdd82f23dc9194" + } +} + +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.Internal.ColorShaderProperty", + "m_ObjectId": "20b52907445b4fa3b023303e828a996e", + "m_Guid": { + "m_GuidSerialized": "f99478a4-aa4f-45e3-a1b5-5314c4068201" + }, + "m_Name": "InputColor", + "m_DefaultReferenceName": "", + "m_OverrideReferenceName": "_Color", + "m_GeneratePropertyBlock": true, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "m_ColorMode": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "25baaef6681e45ecbc68d340d9b0e64a", + "m_Id": 1, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "25cb1de828404dc9b76b1dbacd892623", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 1.0, + "e01": 1.0, + "e02": 1.0, + "e03": 1.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "2649006701a74a33976668bc7c20bae7", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "26e88c9baa6243ff81954d11cf3ef8f2", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "2b4e4f9ad1b94f9091abe430e91a3773", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "30d3bd1fd1f64338abccfe06b3fc66b7", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "316c1b4d550949c6a5f3d5add16edbf9", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "31ddd5e5e8444a749fd358a3f54f02e8", + "m_Id": 2, + "m_DisplayName": "Offset", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Offset", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "3256f722e57f403594e17ce4b2bc8690", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "37b91a4295c342a283a2ee970d94914f", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "38c11ee8fc3042d9953729d48a971bca", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "3923db9378dd4ebb80a003ac72b41330", + "m_Id": 1, + "m_DisplayName": "Min Max", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "MinMax", + "m_StageCapability": 3, + "m_Value": { + "x": -0.10000000149011612, + "y": 0.10000000149011612 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "3a2ffd7f913e413a9fcbec101df5db1b", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "3aea88f852224374aa3ae2ace35d0264", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.TimeNode", + "m_ObjectId": "3afb060064cd47ba8a7a19f68006254f", + "m_Group": { + "m_Id": "b0e4fb0c0b2748e7b4b6419f46835c62" + }, + "m_Name": "Time", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -6165.00048828125, + "y": 1351.0, + "width": 126.0, + "height": 173.0 + } + }, + "m_Slots": [ + { + "m_Id": "16acb6c2cbc344139b13e59123bbfefd" + }, + { + "m_Id": "4127b1940a9a4b2d97c40174a0dea692" + }, + { + "m_Id": "b1bd53b49a264c30996b238ab03ee29e" + }, + { + "m_Id": "3f62b0fb936446c7ad8fb77deaacacba" + }, + { + "m_Id": "883bd6f1064245998890509f6dcffd65" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "3cda336b891f4eab829692295d1bdce2", + "m_Id": 0, + "m_DisplayName": "MainTexRotation", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "3d19105989394f5e9eb9e7752fede5be", + "m_Group": { + "m_Id": "0fa957bac8f7477d8ae78ae0f0942093" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -4329.0, + "y": 415.0, + "width": 126.00000762939453, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "0de980ea8c4a4870969c8cdf4f6e9532" + }, + { + "m_Id": "733618e64cd04e1daf4a0a94941dcc49" + }, + { + "m_Id": "d355137f6ec743cebcea7aa48e427ceb" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "3d6ffcdded95400aaf79966213964aef", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "3d736296074c4eb38b075181317e7a9d", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.LerpNode", + "m_ObjectId": "3e09e7c0af0e4d58bbb699f87d090594", + "m_Group": { + "m_Id": "b0e4fb0c0b2748e7b4b6419f46835c62" + }, + "m_Name": "Lerp", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -4911.00048828125, + "y": 1286.0001220703125, + "width": 208.0, + "height": 326.0000305175781 + } + }, + "m_Slots": [ + { + "m_Id": "1023e037dc7a4e888b1d105bda79a9b3" + }, + { + "m_Id": "c92c9147151a41fe9ed746ec6ef9f0a3" + }, + { + "m_Id": "89149dae99324fd9aa76b8ae87b08a01" + }, + { + "m_Id": "2b4e4f9ad1b94f9091abe430e91a3773" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "3f62b0fb936446c7ad8fb77deaacacba", + "m_Id": 3, + "m_DisplayName": "Delta Time", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Delta Time", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "4127b1940a9a4b2d97c40174a0dea692", + "m_Id": 1, + "m_DisplayName": "Sine Time", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Sine Time", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "41373935954f489caca0516f16906ce7", + "m_Id": 2, + "m_DisplayName": "Height", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Height", + "m_StageCapability": 3, + "m_Value": 1.0, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "415e9b8ead2c49b39eebdb9d4df55c1a", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.AddNode", + "m_ObjectId": "425e6397944f44209636d9bbf7e7432a", + "m_Group": { + "m_Id": "ecc67cbd8ad240aa89cdea8f9d5b4ded" + }, + "m_Name": "Add", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2776.00048828125, + "y": 1430.0001220703125, + "width": 208.0, + "height": 302.0 + } + }, + "m_Slots": [ + { + "m_Id": "783cee2f03b54e0fb2e6fdbc6071754f" + }, + { + "m_Id": "affd210644344deea2e17224143f8b67" + }, + { + "m_Id": "3a2ffd7f913e413a9fcbec101df5db1b" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "441ff85eeeff414aa15f6f449cd742c8", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalTarget", + "m_ObjectId": "44f7def41dcf4577936d31b31bcdba75", + "m_ActiveSubTarget": { + "m_Id": "704883611d354051bdb25c9f0b1a5928" + }, + "m_SurfaceType": 0, + "m_AlphaMode": 0, + "m_TwoSided": false, + "m_AlphaClip": false, + "m_CustomEditorGUI": "" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "46227026a26c4c739689e0ccd80ce36b", + "m_Id": 0, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [], + "m_Channel": 0 +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "48e540445aa04d80a0fdd82f23dc9194", + "m_Guid": { + "m_GuidSerialized": "5d6c7fe0-77de-4eea-b9a3-ce7dfe4533d7" + }, + "m_Name": "FlickeringSpeed", + "m_DefaultReferenceName": "Vector1_48e540445aa04d80a0fdd82f23dc9194", + "m_OverrideReferenceName": "_FlickeringSpeed", + "m_GeneratePropertyBlock": true, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 2.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "492c9e20856f4103acbb759a41722c4c", + "m_Group": { + "m_Id": "ecc67cbd8ad240aa89cdea8f9d5b4ded" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -3092.00048828125, + "y": 1269.0, + "width": 208.0, + "height": 302.0 + } + }, + "m_Slots": [ + { + "m_Id": "30d3bd1fd1f64338abccfe06b3fc66b7" + }, + { + "m_Id": "25cb1de828404dc9b76b1dbacd892623" + }, + { + "m_Id": "be9f9dbb2aa2443492af2b6580c8e0b0" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "4a2e9fe1120f47e5b9db06d1d0075e8b", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "4a66856dcbc2443e807acc2b1ed0e9e4", + "m_Id": 0, + "m_DisplayName": "NoiseScale", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "4c48529b7a064431ae89c8cdbece02e3", + "m_Guid": { + "m_GuidSerialized": "6ecc8681-a641-4e1a-bd5c-9927cbe71d2a" + }, + "m_Name": "MainTexRotation", + "m_DefaultReferenceName": "Vector1_4c48529b7a064431ae89c8cdbece02e3", + "m_OverrideReferenceName": "_MainTexRotation", + "m_GeneratePropertyBlock": true, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 90.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "4cd9ead363a74fe1ba2802735807adf1", + "m_Id": 0, + "m_DisplayName": "Width", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "4d32f55603cc4d02909523caab53aeed", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "50ceeb5382544350a527dd4ce3a591ee", + "m_Id": 2, + "m_DisplayName": "T", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "T", + "m_StageCapability": 3, + "m_Value": { + "x": 0.6800000071525574, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector2ShaderProperty", + "m_ObjectId": "5519b69f88c746a0a8a5e1887d027c71", + "m_Guid": { + "m_GuidSerialized": "11ebddb2-479f-4fa2-a228-b0ee068d226d" + }, + "m_Name": "NoiseOffset", + "m_DefaultReferenceName": "Vector2_5519b69f88c746a0a8a5e1887d027c71", + "m_OverrideReferenceName": "_NoiseOffset", + "m_GeneratePropertyBlock": true, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "5534a3f68a9a4852ae3405b0136bd5da", + "m_Id": 1, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "556f68bf5cfd4ee68d241df0b3ca8ab8", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "5846b36b21bf4d3eb0f5612c37768338", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Normal", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "99f85a785f1847acaa7cb4e3b1885ded" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Normal" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "5adb8089d64047a69317269434713f7c", + "m_Id": 0, + "m_DisplayName": "Distortion", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "5b4698f532b041ab86cc420d1f6c27fa", + "m_Group": { + "m_Id": "ecc67cbd8ad240aa89cdea8f9d5b4ded" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -4008.00048828125, + "y": 1549.0001220703125, + "width": 143.00001525878907, + "height": 34.000003814697269 + } + }, + "m_Slots": [ + { + "m_Id": "e9afcebb3b3747a9a5ea6e00e234d4dd" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "0d78ca3344754d109b9fff2088ca1b3b" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "5d33136de2a349e1985b36c1c388b7d6", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DegreesToRadiansNode", + "m_ObjectId": "6112160000184ab1ab3d1534f568f3b8", + "m_Group": { + "m_Id": "ec6862b12dd845a3b92f14162638b373" + }, + "m_Name": "Degrees To Radians", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2749.999755859375, + "y": 143.00001525878907, + "width": 160.00001525878907, + "height": 94.0 + } + }, + "m_Slots": [ + { + "m_Id": "316c1b4d550949c6a5f3d5add16edbf9" + }, + { + "m_Id": "25baaef6681e45ecbc68d340d9b0e64a" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DegreesToRadiansNode", + "m_ObjectId": "6234674b2ce841979f13d83579e22468", + "m_Group": { + "m_Id": "ecc67cbd8ad240aa89cdea8f9d5b4ded" + }, + "m_Name": "Degrees To Radians", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -4330.00048828125, + "y": 1735.9998779296875, + "width": 160.0, + "height": 94.0 + } + }, + "m_Slots": [ + { + "m_Id": "415e9b8ead2c49b39eebdb9d4df55c1a" + }, + { + "m_Id": "1eac952366434c8d96d09e1764e50607" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "65718a5cde6e49f8bfb21b6a9bc8d672", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "673796283e134738ad563f9a2d546d25", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1945.0, + "y": 997.0, + "width": 126.00000762939453, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "ec555669648e4080898959ea11125177" + }, + { + "m_Id": "089b6d36bc154e939a0c7210bf713767" + }, + { + "m_Id": "c2ff21388c404137865846ee285bd440" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "67fe2d0c174e408eb497776389b30301", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "6de70987ced640f8bbaa01bca7997aa3", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "6e6961e2843b475b895bdecdbec99037", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.SpriteMask", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "f8313bb91f224f5eba40612656b70ba9" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.SpriteMask" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalSpriteUnlitSubTarget", + "m_ObjectId": "704883611d354051bdb25c9f0b1a5928" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "712e4f64447d4026ad83fb5831888125", + "m_Id": 1, + "m_DisplayName": "Scale", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Scale", + "m_StageCapability": 3, + "m_Value": 500.0, + "m_DefaultValue": 500.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "72d976dcdbda4696a03c94856918394c", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "733618e64cd04e1daf4a0a94941dcc49", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.StepNode", + "m_ObjectId": "7451756fd4664fdca023d8404fbb0cc5", + "m_Group": { + "m_Id": "0fa957bac8f7477d8ae78ae0f0942093" + }, + "m_Name": "Step", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -3577.999755859375, + "y": 237.99998474121095, + "width": 208.0, + "height": 302.0 + } + }, + "m_Slots": [ + { + "m_Id": "e295f762fba74e5e812ecf024cf79e5c" + }, + { + "m_Id": "04ae5f5b3e6a4a9eab034674042afda2" + }, + { + "m_Id": "a5394064158e44439b576dd8bcc6af22" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "74c39499f1304ea8b5cf1cd7620fa5c1", + "m_Id": 0, + "m_DisplayName": "InputColor", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "765b11174eea4c8b915a452781b74bb8", + "m_Guid": { + "m_GuidSerialized": "b9b893af-3c6e-4ab2-b3d3-54b1bfa205a9" + }, + "m_Name": "FlickeringOffset", + "m_DefaultReferenceName": "Vector1_765b11174eea4c8b915a452781b74bb8", + "m_OverrideReferenceName": "_FlickeringOffset", + "m_GeneratePropertyBlock": true, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 50.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector2ShaderProperty", + "m_ObjectId": "77a9df1f98754fbcb1e732623528a01a", + "m_Guid": { + "m_GuidSerialized": "e2a119f6-908a-45d9-aa49-94ac4599c450" + }, + "m_Name": "NoiseSpeed", + "m_DefaultReferenceName": "", + "m_OverrideReferenceName": "_NoiseSpeed", + "m_GeneratePropertyBlock": true, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "x": -1.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "783cee2f03b54e0fb2e6fdbc6071754f", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "7c6548e00e6f48698c663187ff6bfe95", + "m_Group": { + "m_Id": "c859bcd510cf4fbfa4ee704149abde12" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1630.99951171875, + "y": 605.0000610351563, + "width": 126.0, + "height": 117.99999237060547 + } + }, + "m_Slots": [ + { + "m_Id": "91d10316b3e54722b166691a6db25ec8" + }, + { + "m_Id": "b19cc51c33524546b9d590cb35229a9d" + }, + { + "m_Id": "c4b40f53fb3a4a93980a088ea6df074a" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "7f8cdd5399624a438537025b5077b348", + "m_Id": 0, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.AddNode", + "m_ObjectId": "81d12672f5a14aec9c76eca6fbc36fa5", + "m_Group": { + "m_Id": "b0e4fb0c0b2748e7b4b6419f46835c62" + }, + "m_Name": "Add", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -5704.00048828125, + "y": 1398.0001220703125, + "width": 130.0, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "eda11101883c4319a43ac0bfde272d36" + }, + { + "m_Id": "e58dabfd83c14e06852e91c9e7a8f809" + }, + { + "m_Id": "a5585d2e1e3248a9a2ffec3817b9881c" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "82002d06fbd24848b561cffcf91a4a06", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "8229deb8cf5849d19823520e20c25d09", + "m_Group": { + "m_Id": "ec6862b12dd845a3b92f14162638b373" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2977.999755859375, + "y": 185.00001525878907, + "width": 164.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "3cda336b891f4eab829692295d1bdce2" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "4c48529b7a064431ae89c8cdbece02e3" + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "8510ebda469046e6ae13abeff60b078a", + "m_Guid": { + "m_GuidSerialized": "45b6b83b-54d4-4435-bd16-85b260ab5105" + }, + "m_Name": "NoiseScale", + "m_DefaultReferenceName": "", + "m_OverrideReferenceName": "_NoiseScale", + "m_GeneratePropertyBlock": true, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 25.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "85916afade9f4e8a867f140e799253de", + "m_Id": 2, + "m_DisplayName": "Rotation", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Rotation", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "85e3ee8ea32940a7a2c988deb90c4745", + "m_Id": 0, + "m_DisplayName": "FlickeringSpeed", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "883bd6f1064245998890509f6dcffd65", + "m_Id": 4, + "m_DisplayName": "Smooth Delta", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Smooth Delta", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "89149dae99324fd9aa76b8ae87b08a01", + "m_Id": 2, + "m_DisplayName": "T", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "T", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "91d10316b3e54722b166691a6db25ec8", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "93185c13f2a24f31a8f043d08e10007a", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "949e3b21b0c642919be46ba19daa2209", + "m_Group": { + "m_Id": "c859bcd510cf4fbfa4ee704149abde12" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1234.9996337890625, + "y": 457.00006103515627, + "width": 207.99998474121095, + "height": 302.0 + } + }, + "m_Slots": [ + { + "m_Id": "26e88c9baa6243ff81954d11cf3ef8f2" + }, + { + "m_Id": "556f68bf5cfd4ee68d241df0b3ca8ab8" + }, + { + "m_Id": "a6e818b1ab404033aa2cb72a2bd0c8ae" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "950e3885e8554faf9cabe940b28a192f", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "9530552694df42358e3ead4134713f38", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.StepNode", + "m_ObjectId": "95c58f56501841839daa978c3e131a48", + "m_Group": { + "m_Id": "0fa957bac8f7477d8ae78ae0f0942093" + }, + "m_Name": "Step", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -3577.999755859375, + "y": 555.0, + "width": 208.0, + "height": 302.0 + } + }, + "m_Slots": [ + { + "m_Id": "b68c70616af24935803f67fbaca3b447" + }, + { + "m_Id": "9fb36dddfc0640b9ab89c0ddb1e01e25" + }, + { + "m_Id": "3256f722e57f403594e17ce4b2bc8690" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "9648c3ec894642e78e513421d6efcdc2", + "m_Guid": { + "m_GuidSerialized": "56812e53-060b-4ca5-b263-0a1e5192a77b" + }, + "m_Name": "InputMainTex", + "m_DefaultReferenceName": "Texture2D_9648c3ec894642e78e513421d6efcdc2", + "m_OverrideReferenceName": "_MainTex", + "m_GeneratePropertyBlock": true, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"fileID\":2800000,\"guid\":\"1c5d70ecef2ab5645baa9af136d913d3\",\"type\":3}}", + "m_Guid": "" + }, + "m_Modifiable": true, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NoiseSineWaveNode", + "m_ObjectId": "96616df32f894308b149a184ebad791a", + "m_Group": { + "m_Id": "0fa957bac8f7477d8ae78ae0f0942093" + }, + "m_Name": "Noise Sine Wave", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -3887.0, + "y": 396.0, + "width": 208.0, + "height": 302.0 + } + }, + "m_Slots": [ + { + "m_Id": "9e640ac04f6848a99f216ee33c875fcf" + }, + { + "m_Id": "3923db9378dd4ebb80a003ac72b41330" + }, + { + "m_Id": "f191142864a04f3cb7b3cb0f6ffbb987" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "99f85a785f1847acaa7cb4e3b1885ded", + "m_Id": 0, + "m_DisplayName": "Normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Normal", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.OneMinusNode", + "m_ObjectId": "9da952a8fee94205b23cfd33456fbc6f", + "m_Group": { + "m_Id": "ecc67cbd8ad240aa89cdea8f9d5b4ded" + }, + "m_Name": "One Minus", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -3440.000244140625, + "y": 1648.0001220703125, + "width": 208.0, + "height": 278.0 + } + }, + "m_Slots": [ + { + "m_Id": "0dea0f79393c4382b5d85f5df7997ec6" + }, + { + "m_Id": "5534a3f68a9a4852ae3405b0136bd5da" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "9e640ac04f6848a99f216ee33c875fcf", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "9fb36dddfc0640b9ab89c0ddb1e01e25", + "m_Id": 1, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.8999999761581421, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "a00d0e6a8ae546a8aa8ddc0429cd2ffc", + "m_Id": 0, + "m_DisplayName": "Alpha", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Alpha", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "a08ec63d413b4110851ffde53cb551b4", + "m_Group": { + "m_Id": "0fa957bac8f7477d8ae78ae0f0942093" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -3446.000244140625, + "y": 894.0, + "width": 148.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "beeb84756aaf4f9c9444f74f86c85897" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "1106b03e6b7f4a5d982d4d0afc1a6370" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RectangleNode", + "m_ObjectId": "a26125e94aca4d0199b35917f29d79b1", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Rectangle", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2370.0, + "y": 1562.0, + "width": 208.0, + "height": 326.0 + } + }, + "m_Slots": [ + { + "m_Id": "114001677be24978a50258e5523f8974" + }, + { + "m_Id": "bad8de15eabd4081a6e846488c7c44bc" + }, + { + "m_Id": "41373935954f489caca0516f16906ce7" + }, + { + "m_Id": "4a2e9fe1120f47e5b9db06d1d0075e8b" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "a5394064158e44439b576dd8bcc6af22", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "a5585d2e1e3248a9a2ffec3817b9881c", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "a56bcee9364b45da905d3359f0379371", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "a5fd0a969cd44a6cb222bb53e78f5fc6", + "m_Id": 0, + "m_DisplayName": "Base Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BaseColor", + "m_StageCapability": 2, + "m_Value": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "a6e818b1ab404033aa2cb72a2bd0c8ae", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "a884da95ea674563b2e1a2bdac479653", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BaseColor", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "a5fd0a969cd44a6cb222bb53e78f5fc6" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BaseColor" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.TilingAndOffsetNode", + "m_ObjectId": "a9b9d9f6278d42f58235fdbaec3581cb", + "m_Group": { + "m_Id": "b0e4fb0c0b2748e7b4b6419f46835c62" + }, + "m_Name": "Tiling And Offset", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -5506.00048828125, + "y": 1296.0001220703125, + "width": 155.0, + "height": 142.0 + } + }, + "m_Slots": [ + { + "m_Id": "46227026a26c4c739689e0ccd80ce36b" + }, + { + "m_Id": "fa8f940b9bdf4d8cac6c37c0416ff0ff" + }, + { + "m_Id": "31ddd5e5e8444a749fd358a3f54f02e8" + }, + { + "m_Id": "f0d695f0de2143d3b6ecd2b805e7216f" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "aadcb20f697f43a68320dfe86e2e33c3", + "m_Group": { + "m_Id": "c859bcd510cf4fbfa4ee704149abde12" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1436.999755859375, + "y": 528.9999389648438, + "width": 129.99998474121095, + "height": 117.99999237060547 + } + }, + "m_Slots": [ + { + "m_Id": "3aea88f852224374aa3ae2ace35d0264" + }, + { + "m_Id": "b577721e601a43b5bf29f6e46d5679a0" + }, + { + "m_Id": "2649006701a74a33976668bc7c20bae7" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "ab5b9c984a664640be08a1afe295d929", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2536.0, + "y": 1788.0001220703125, + "width": 107.0, + "height": 34.000003814697269 + } + }, + "m_Slots": [ + { + "m_Id": "4cd9ead363a74fe1ba2802735807adf1" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "0716808639fe45ffb3d272ddcc95d2d8" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "aff46ebc049040d7a365862fdfc44791", + "m_Group": { + "m_Id": "ecc67cbd8ad240aa89cdea8f9d5b4ded" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -3067.000244140625, + "y": 1692.000244140625, + "width": 208.0, + "height": 302.0 + } + }, + "m_Slots": [ + { + "m_Id": "6de70987ced640f8bbaa01bca7997aa3" + }, + { + "m_Id": "bdbbd89b0be345a39869532a77ee4df1" + }, + { + "m_Id": "67fe2d0c174e408eb497776389b30301" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "affd210644344deea2e17224143f8b67", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "b0e4fb0c0b2748e7b4b6419f46835c62", + "m_Title": "UV Distortion", + "m_Position": { + "x": -6196.00048828125, + "y": 1096.00048828125 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "b19cc51c33524546b9d590cb35229a9d", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "b1a58c9a33dd41768aa3b12d3b965f80", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "b1bd53b49a264c30996b238ab03ee29e", + "m_Id": 2, + "m_DisplayName": "Cosine Time", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Cosine Time", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "b261adb9e9804cbaae9b104a1e3abb59", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Position", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "0bb03bec9530426b893a35a4b1c83ef1" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Position" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "b577721e601a43b5bf29f6e46d5679a0", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "b68c70616af24935803f67fbaca3b447", + "m_Id": 0, + "m_DisplayName": "Edge", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Edge", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "b8cb027e22eb46898ff4be158464fae9", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "ba5fe183ed894470bf1520cd5f901677", + "m_Id": 2, + "m_DisplayName": "Rotation", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Rotation", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "baadc00af197407aaf5cead4b2173be9", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "bad8de15eabd4081a6e846488c7c44bc", + "m_Id": 1, + "m_DisplayName": "Width", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Width", + "m_StageCapability": 3, + "m_Value": 0.5, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RotateNode", + "m_ObjectId": "bd5719e6a60c4a729eaea68409640412", + "m_Group": { + "m_Id": "ecc67cbd8ad240aa89cdea8f9d5b4ded" + }, + "m_Name": "Rotate", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -4093.000244140625, + "y": 1629.0, + "width": 208.0, + "height": 362.0 + } + }, + "m_Slots": [ + { + "m_Id": "dec9917bf0624ba487f401439fa88d04" + }, + { + "m_Id": "ccf485b7b9ff44219d9c0f07e4fdd8be" + }, + { + "m_Id": "85916afade9f4e8a867f140e799253de" + }, + { + "m_Id": "b8cb027e22eb46898ff4be158464fae9" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Unit": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "bdbbd89b0be345a39869532a77ee4df1", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVNode", + "m_ObjectId": "be96281ce622423eb3623f77ecfb5179", + "m_Group": { + "m_Id": "b0e4fb0c0b2748e7b4b6419f46835c62" + }, + "m_Name": "UV", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -5182.00048828125, + "y": 1155.0001220703125, + "width": 145.00001525878907, + "height": 130.0 + } + }, + "m_Slots": [ + { + "m_Id": "65718a5cde6e49f8bfb21b6a9bc8d672" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_OutputChannel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "be9f9dbb2aa2443492af2b6580c8e0b0", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "beeb84756aaf4f9c9444f74f86c85897", + "m_Id": 0, + "m_DisplayName": "FlickeringBias", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "bf28dab2e9fd4a16bf0c53c3c6013862", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "bf48d42144ea42c480dd00f3b8b3ca9c", + "m_Group": { + "m_Id": "b0e4fb0c0b2748e7b4b6419f46835c62" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -6126.00048828125, + "y": 1585.0001220703125, + "width": 141.0, + "height": 34.000003814697269 + } + }, + "m_Slots": [ + { + "m_Id": "0c36bf40975a4e26ab352f09f40f14d8" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "77a9df1f98754fbcb1e732623528a01a" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "c2ff21388c404137865846ee285bd440", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "c3434ddf0065415eb32a0c46cdc3fdc4", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "c4b40f53fb3a4a93980a088ea6df074a", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "c607628d85e14dfdacd0ec40922a2c76", + "m_Group": { + "m_Id": "0fa957bac8f7477d8ae78ae0f0942093" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -4344.0, + "y": 292.0000305175781, + "width": 158.0, + "height": 34.000003814697269 + } + }, + "m_Slots": [ + { + "m_Id": "2024f476aa854fa5b4b4ba9cedb92bbf" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "765b11174eea4c8b915a452781b74bb8" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "c859bcd510cf4fbfa4ee704149abde12", + "m_Title": "Output", + "m_Position": { + "x": -1664.0, + "y": 283.0001220703125 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "c92c9147151a41fe9ed746ec6ef9f0a3", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "ccf485b7b9ff44219d9c0f07e4fdd8be", + "m_Id": 1, + "m_DisplayName": "Center", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Center", + "m_StageCapability": 3, + "m_Value": { + "x": 0.5, + "y": 0.5 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "cd4ca5ac030042f48f0b3068296c1fa1", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [], + "m_Channel": 0 +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "ce992bf0aa114c76ae2976dcf8927b3b", + "m_Guid": { + "m_GuidSerialized": "658fe57e-febc-4e70-a167-e8324e188fef" + }, + "m_Name": "NoiseMaskRotation", + "m_DefaultReferenceName": "Vector1_ce992bf0aa114c76ae2976dcf8927b3b", + "m_OverrideReferenceName": "_NoiseMaskRotation", + "m_GeneratePropertyBlock": true, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 90.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "ceb7153adf9947509b93a8fc4897c4e1", + "m_Id": 0, + "m_DisplayName": "InputMainTex", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "d026f85e13944db1aadc19c5c358d558", + "m_Group": { + "m_Id": "b0e4fb0c0b2748e7b4b6419f46835c62" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -5415.0, + "y": 1587.0, + "width": 134.0, + "height": 34.000003814697269 + } + }, + "m_Slots": [ + { + "m_Id": "4a66856dcbc2443e807acc2b1ed0e9e4" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "8510ebda469046e6ae13abeff60b078a" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "d355137f6ec743cebcea7aa48e427ceb", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "d3e8b89ab634420b99be30d0e19e993a", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RotateNode", + "m_ObjectId": "d44c9f13a9be48ffa03d3682746d2e68", + "m_Group": { + "m_Id": "ec6862b12dd845a3b92f14162638b373" + }, + "m_Name": "Rotate", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2512.999755859375, + "y": 36.00001525878906, + "width": 208.0, + "height": 362.0 + } + }, + "m_Slots": [ + { + "m_Id": "1df4da6a5bdd471cb2b5fbd4a2ba364a" + }, + { + "m_Id": "e355133f0a16419f98247664d3cc0703" + }, + { + "m_Id": "ba5fe183ed894470bf1520cd5f901677" + }, + { + "m_Id": "38c11ee8fc3042d9953729d48a971bca" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Unit": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "d4a1bdbd64984a77bd02ec38553e7666", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "d67c8f3a97aa4f42b8806d117988c629", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.LerpNode", + "m_ObjectId": "de7a76ed2bd94ec7adb7714d7cfbee90", + "m_Group": { + "m_Id": "0fa957bac8f7477d8ae78ae0f0942093" + }, + "m_Name": "Lerp", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -3276.0, + "y": 387.0000305175781, + "width": 208.0, + "height": 326.0 + } + }, + "m_Slots": [ + { + "m_Id": "a56bcee9364b45da905d3359f0379371" + }, + { + "m_Id": "93185c13f2a24f31a8f043d08e10007a" + }, + { + "m_Id": "50ceeb5382544350a527dd4ce3a591ee" + }, + { + "m_Id": "035ebb6ed9244cfa8ce0aabbaf462f5a" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "dec9917bf0624ba487f401439fa88d04", + "m_Id": 0, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "e01ee451a69e4daab733710357d47d62", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "e295f762fba74e5e812ecf024cf79e5c", + "m_Id": 0, + "m_DisplayName": "Edge", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Edge", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "e355133f0a16419f98247664d3cc0703", + "m_Id": 1, + "m_DisplayName": "Center", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Center", + "m_StageCapability": 3, + "m_Value": { + "x": 0.5, + "y": 0.5 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "e58dabfd83c14e06852e91c9e7a8f809", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "e71fef5191b543878710ab23c59e7782", + "m_Group": { + "m_Id": "ecc67cbd8ad240aa89cdea8f9d5b4ded" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -3788.00048828125, + "y": 1516.0, + "width": 208.0, + "height": 437.0 + } + }, + "m_Slots": [ + { + "m_Id": "950e3885e8554faf9cabe940b28a192f" + }, + { + "m_Id": "baadc00af197407aaf5cead4b2173be9" + }, + { + "m_Id": "0976354ba49f446eaf4fd794875b33da" + }, + { + "m_Id": "37b91a4295c342a283a2ee970d94914f" + }, + { + "m_Id": "126c644b7b81466c8648eb75b65f77e4" + }, + { + "m_Id": "d3e8b89ab634420b99be30d0e19e993a" + }, + { + "m_Id": "cd4ca5ac030042f48f0b3068296c1fa1" + }, + { + "m_Id": "3d6ffcdded95400aaf79966213964aef" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0 +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.ColorNode", + "m_ObjectId": "e8870a07023748258a4ed456b18c584a", + "m_Group": { + "m_Id": "c859bcd510cf4fbfa4ee704149abde12" + }, + "m_Name": "Color", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1515.9998779296875, + "y": 341.9999694824219, + "width": 207.99998474121095, + "height": 127.0 + } + }, + "m_Slots": [ + { + "m_Id": "d67c8f3a97aa4f42b8806d117988c629" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Color": { + "color": { + "r": 16.0, + "g": 16.0, + "b": 16.0, + "a": 1.0 + }, + "mode": 1 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "e9afcebb3b3747a9a5ea6e00e234d4dd", + "m_Id": 0, + "m_DisplayName": "NoiseMask", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "ec555669648e4080898959ea11125177", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "ec6862b12dd845a3b92f14162638b373", + "m_Title": "Output Mask Sampling", + "m_Position": { + "x": -3002.999755859375, + "y": -153.99993896484376 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "ecc67cbd8ad240aa89cdea8f9d5b4ded", + "m_Title": "UV Distortion masking", + "m_Position": { + "x": -4583.00048828125, + "y": 1210.000244140625 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NoiseNode", + "m_ObjectId": "ece15640d1bb45bf9c9f2bb06af095b8", + "m_Group": { + "m_Id": "b0e4fb0c0b2748e7b4b6419f46835c62" + }, + "m_Name": "Simple Noise", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -5233.00048828125, + "y": 1309.0, + "width": 208.0, + "height": 302.0 + } + }, + "m_Slots": [ + { + "m_Id": "7f8cdd5399624a438537025b5077b348" + }, + { + "m_Id": "712e4f64447d4026ad83fb5831888125" + }, + { + "m_Id": "72d976dcdbda4696a03c94856918394c" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "eda11101883c4319a43ac0bfde272d36", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "ede56678ebd44b1ba792f6e51e31428b", + "m_Guid": { + "m_GuidSerialized": "b75fe1da-5041-4c52-9569-1e98069d4a6a" + }, + "m_Name": "Distortion", + "m_DefaultReferenceName": "", + "m_OverrideReferenceName": "_Distortion", + "m_GeneratePropertyBlock": true, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.30000001192092898, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "ee4603549b82422884112056c130bf5c", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "efd7c6726b4a4b0cb297901033bfd102", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "f0d695f0de2143d3b6ecd2b805e7216f", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "f191142864a04f3cb7b3cb0f6ffbb987", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "f4e9c6fc8c494093999f704bb7da4620", + "m_Group": { + "m_Id": "c859bcd510cf4fbfa4ee704149abde12" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1639.0, + "y": 497.0, + "width": 133.0, + "height": 33.999996185302737 + } + }, + "m_Slots": [ + { + "m_Id": "74c39499f1304ea8b5cf1cd7620fa5c1" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "20b52907445b4fa3b023303e828a996e" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.TangentMaterialSlot", + "m_ObjectId": "f5b70accae00426093e87ab68d202626", + "m_Id": 0, + "m_DisplayName": "Tangent", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tangent", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.AddNode", + "m_ObjectId": "f63e7a0cf6c34917bc60fcdb2bbe009b", + "m_Group": { + "m_Id": "0fa957bac8f7477d8ae78ae0f0942093" + }, + "m_Name": "Add", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -4106.0, + "y": 325.0000305175781, + "width": 126.00000762939453, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "bf28dab2e9fd4a16bf0c53c3c6013862" + }, + { + "m_Id": "c3434ddf0065415eb32a0c46cdc3fdc4" + }, + { + "m_Id": "efd7c6726b4a4b0cb297901033bfd102" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBAMaterialSlot", + "m_ObjectId": "f8313bb91f224f5eba40612656b70ba9", + "m_Id": 0, + "m_DisplayName": "Sprite Mask", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "SpriteMask", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "f8513e4b7ecb4634957d2a91e245e473", + "m_Group": { + "m_Id": "ec6862b12dd845a3b92f14162638b373" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2428.999755859375, + "y": -94.99998474121094, + "width": 155.00001525878907, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "ceb7153adf9947509b93a8fc4897c4e1" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "9648c3ec894642e78e513421d6efcdc2" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "fa8f940b9bdf4d8cac6c37c0416ff0ff", + "m_Id": 1, + "m_DisplayName": "Tiling", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tiling", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + diff --git a/Assets/Project/Graphics/Shaders/ArcShader.shadergraph.meta b/Assets/Project/Graphics/Shaders/ArcShader.shadergraph.meta new file mode 100644 index 00000000..d7ea2729 --- /dev/null +++ b/Assets/Project/Graphics/Shaders/ArcShader.shadergraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 843a87466c68f44499bea3452cf65c8d +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} diff --git a/Assets/Project/Graphics/Shaders/BeamBodySubShader.shadersubgraph b/Assets/Project/Graphics/Shaders/BeamBodySubShader.shadersubgraph new file mode 100644 index 00000000..cd9b1cb7 --- /dev/null +++ b/Assets/Project/Graphics/Shaders/BeamBodySubShader.shadersubgraph @@ -0,0 +1,1112 @@ +{ + "m_SGVersion": 2, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "5e0219ae077b4ac18630aa30d85748b4", + "m_Properties": [ + { + "m_Id": "f092999f78aa4411a888dfa213d9cc58" + }, + { + "m_Id": "56d8cbc66d774e94bd3a843143814372" + }, + { + "m_Id": "6d132dba5b7b4bd8afb213741667bf0b" + } + ], + "m_Keywords": [], + "m_Nodes": [ + { + "m_Id": "7a084a3df9954db396b0d5071adf7b9f" + }, + { + "m_Id": "0a47de13a5aa49e4952ebfb1a19d0563" + }, + { + "m_Id": "5ca1b9750880414cb96a68ca8168a002" + }, + { + "m_Id": "6f6718af3f0f49c883019c755475ac52" + }, + { + "m_Id": "88ac9f697c774ea8aecd59fc51bdf49d" + }, + { + "m_Id": "f2ca328a8b1649e9abb2124a28edb78c" + }, + { + "m_Id": "cbaf21b4abe5495fa72145a27cd4abef" + }, + { + "m_Id": "58dae1fb23c042ada24fad4844e3d121" + }, + { + "m_Id": "d15e20a3deba4ae18c48313f193074cb" + }, + { + "m_Id": "6d0737c7976949fa98446d9440b73880" + } + ], + "m_GroupDatas": [ + { + "m_Id": "679581eab200468dacc902342cebd1ce" + } + ], + "m_StickyNoteDatas": [], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0a47de13a5aa49e4952ebfb1a19d0563" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "6f6718af3f0f49c883019c755475ac52" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "58dae1fb23c042ada24fad4844e3d121" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "0a47de13a5aa49e4952ebfb1a19d0563" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "58dae1fb23c042ada24fad4844e3d121" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "5ca1b9750880414cb96a68ca8168a002" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "5ca1b9750880414cb96a68ca8168a002" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "6f6718af3f0f49c883019c755475ac52" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "6d0737c7976949fa98446d9440b73880" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "0a47de13a5aa49e4952ebfb1a19d0563" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "6d0737c7976949fa98446d9440b73880" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "88ac9f697c774ea8aecd59fc51bdf49d" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "6f6718af3f0f49c883019c755475ac52" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "f2ca328a8b1649e9abb2124a28edb78c" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "88ac9f697c774ea8aecd59fc51bdf49d" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "5ca1b9750880414cb96a68ca8168a002" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "cbaf21b4abe5495fa72145a27cd4abef" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "7a084a3df9954db396b0d5071adf7b9f" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "d15e20a3deba4ae18c48313f193074cb" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "cbaf21b4abe5495fa72145a27cd4abef" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "f2ca328a8b1649e9abb2124a28edb78c" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "cbaf21b4abe5495fa72145a27cd4abef" + }, + "m_SlotId": 0 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [] + }, + "m_FragmentContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + } + }, + "m_Path": "Sub Graphs", + "m_ConcretePrecision": 0, + "m_OutputNode": { + "m_Id": "7a084a3df9954db396b0d5071adf7b9f" + }, + "m_ActiveTargets": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "09bc03ba54ca43ad958782829a050cfb", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PowerNode", + "m_ObjectId": "0a47de13a5aa49e4952ebfb1a19d0563", + "m_Group": { + "m_Id": "679581eab200468dacc902342cebd1ce" + }, + "m_Name": "Power", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -458.0, + "y": 111.5, + "width": 208.0, + "height": 302.0 + } + }, + "m_Slots": [ + { + "m_Id": "c704142aa2f8410cbac2906a7912de3f" + }, + { + "m_Id": "8f94c1eced774ffea5bc99ddcc615860" + }, + { + "m_Id": "6c93c012002144c3a4c60f34b8a59ca0" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "25b4e232aad6476996de8dcffe1259b8", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "29f9e707892643cab270035bb83139f1", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "2f6d7d73db134aeb9272597b9b44437f", + "m_Id": 1, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "4b40e1d7fc2a491c870c94c999d05516", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "51d61005d89b427f97d18700c2bc09b4", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "56d8cbc66d774e94bd3a843143814372", + "m_Guid": { + "m_GuidSerialized": "669267ea-19fb-4fdd-b901-a063addf6e49" + }, + "m_Name": "BeamThickness", + "m_DefaultReferenceName": "Vector1_56d8cbc66d774e94bd3a843143814372", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "57ebea48f47343eaa7d5a02371b4c0e2", + "m_Id": 0, + "m_DisplayName": "Channel", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "58c415f993f2445d8a534ac5b0b03291", + "m_Id": 0, + "m_DisplayName": "BeamThickness", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "58dae1fb23c042ada24fad4844e3d121", + "m_Group": { + "m_Id": "679581eab200468dacc902342cebd1ce" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -663.0000610351563, + "y": -36.0, + "width": 198.00001525878907, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "c42e5fd6382844e28aca764e2e94440b" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "f092999f78aa4411a888dfa213d9cc58" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PowerNode", + "m_ObjectId": "5ca1b9750880414cb96a68ca8168a002", + "m_Group": { + "m_Id": "679581eab200468dacc902342cebd1ce" + }, + "m_Name": "Power", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -458.0, + "y": -271.5, + "width": 208.0, + "height": 302.0 + } + }, + "m_Slots": [ + { + "m_Id": "b196ee54db8c4024ab17506c74b14720" + }, + { + "m_Id": "acc237ff7bf142538113649aee1bebe0" + }, + { + "m_Id": "25b4e232aad6476996de8dcffe1259b8" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "679581eab200468dacc902342cebd1ce", + "m_Title": "Beam body", + "m_Position": { + "x": -750.0, + "y": -368.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "6c93c012002144c3a4c60f34b8a59ca0", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "6d0737c7976949fa98446d9440b73880", + "m_Group": { + "m_Id": "679581eab200468dacc902342cebd1ce" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -825.0, + "y": -46.000003814697269, + "width": 117.99999237060547, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "57ebea48f47343eaa7d5a02371b4c0e2" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "6d132dba5b7b4bd8afb213741667bf0b" + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "6d132dba5b7b4bd8afb213741667bf0b", + "m_Guid": { + "m_GuidSerialized": "cedf35cd-8bd1-4623-842b-ca0abebdf5b0" + }, + "m_Name": "Channel", + "m_DefaultReferenceName": "Vector1_6d132dba5b7b4bd8afb213741667bf0b", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 1.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "6e005485757f470da5a60797740207bc", + "m_Id": 1, + "m_DisplayName": "Out_Vector1", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "OutVector1", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.AddNode", + "m_ObjectId": "6f6718af3f0f49c883019c755475ac52", + "m_Group": { + "m_Id": "679581eab200468dacc902342cebd1ce" + }, + "m_Name": "Add", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -139.9998779296875, + "y": -71.5, + "width": 208.0, + "height": 302.0 + } + }, + "m_Slots": [ + { + "m_Id": "f59c4a793e1d4524874760fb8d7966fb" + }, + { + "m_Id": "09bc03ba54ca43ad958782829a050cfb" + }, + { + "m_Id": "4b40e1d7fc2a491c870c94c999d05516" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphOutputNode", + "m_ObjectId": "7a084a3df9954db396b0d5071adf7b9f", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Output", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 865.0000610351563, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "6e005485757f470da5a60797740207bc" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "IsFirstSlotValid": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.OneMinusNode", + "m_ObjectId": "88ac9f697c774ea8aecd59fc51bdf49d", + "m_Group": { + "m_Id": "679581eab200468dacc902342cebd1ce" + }, + "m_Name": "One Minus", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -633.0000610351563, + "y": -248.99998474121095, + "width": 128.0, + "height": 94.0 + } + }, + "m_Slots": [ + { + "m_Id": "cf03ac16bc6947c28e86e547beb85586" + }, + { + "m_Id": "99a42b81b9d4424dafbf80f3c3710aa4" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "8f94c1eced774ffea5bc99ddcc615860", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 2.0, + "y": 2.0, + "z": 2.0, + "w": 2.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "99a42b81b9d4424dafbf80f3c3710aa4", + "m_Id": 1, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "acc237ff7bf142538113649aee1bebe0", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 2.0, + "y": 2.0, + "z": 2.0, + "w": 2.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "b196ee54db8c4024ab17506c74b14720", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "c42e5fd6382844e28aca764e2e94440b", + "m_Id": 0, + "m_DisplayName": "BeamEdgeSmoothness", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "c704142aa2f8410cbac2906a7912de3f", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PowerNode", + "m_ObjectId": "cbaf21b4abe5495fa72145a27cd4abef", + "m_Group": { + "m_Id": "679581eab200468dacc902342cebd1ce" + }, + "m_Name": "Power", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 561.0001220703125, + "y": 38.5, + "width": 208.0, + "height": 302.0 + } + }, + "m_Slots": [ + { + "m_Id": "ce35390957954cec85053007a1c8ec6d" + }, + { + "m_Id": "fc665ca51daf4022b6869a890fdd5498" + }, + { + "m_Id": "29f9e707892643cab270035bb83139f1" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "ce35390957954cec85053007a1c8ec6d", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "cf03ac16bc6947c28e86e547beb85586", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "d15e20a3deba4ae18c48313f193074cb", + "m_Group": { + "m_Id": "679581eab200468dacc902342cebd1ce" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 283.99993896484377, + "y": 274.0000305175781, + "width": 157.99998474121095, + "height": 33.999996185302737 + } + }, + "m_Slots": [ + { + "m_Id": "58c415f993f2445d8a534ac5b0b03291" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "56d8cbc66d774e94bd3a843143814372" + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "f092999f78aa4411a888dfa213d9cc58", + "m_Guid": { + "m_GuidSerialized": "de2e00a2-642e-4cff-982c-c7e3001d8be4" + }, + "m_Name": "BeamEdgeSmoothness", + "m_DefaultReferenceName": "Vector1_f092999f78aa4411a888dfa213d9cc58", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.OneMinusNode", + "m_ObjectId": "f2ca328a8b1649e9abb2124a28edb78c", + "m_Group": { + "m_Id": "679581eab200468dacc902342cebd1ce" + }, + "m_Name": "One Minus", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 235.0001220703125, + "y": -52.50006103515625, + "width": 208.0, + "height": 278.0 + } + }, + "m_Slots": [ + { + "m_Id": "51d61005d89b427f97d18700c2bc09b4" + }, + { + "m_Id": "2f6d7d73db134aeb9272597b9b44437f" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "f59c4a793e1d4524874760fb8d7966fb", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "fc665ca51daf4022b6869a890fdd5498", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 2.0, + "y": 2.0, + "z": 2.0, + "w": 2.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + diff --git a/Assets/Project/Graphics/Shaders/BeamBodySubShader.shadersubgraph.meta b/Assets/Project/Graphics/Shaders/BeamBodySubShader.shadersubgraph.meta new file mode 100644 index 00000000..66e85465 --- /dev/null +++ b/Assets/Project/Graphics/Shaders/BeamBodySubShader.shadersubgraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: f40b397ede769e74a8415dc68bdccd62 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 60072b568d64c40a485e0fc55012dc9f, type: 3} diff --git a/Assets/Project/Graphics/Shaders/GaussCannonBeamShader.shadergraph b/Assets/Project/Graphics/Shaders/GaussCannonBeamShader.shadergraph new file mode 100644 index 00000000..fe230514 --- /dev/null +++ b/Assets/Project/Graphics/Shaders/GaussCannonBeamShader.shadergraph @@ -0,0 +1,3123 @@ +{ + "m_SGVersion": 2, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "4aa9810a05c247d4a69bb18242677d01", + "m_Properties": [ + { + "m_Id": "46b35a1776f84c6eb5a8a969cc80e2a0" + }, + { + "m_Id": "6680ec53d55b40298f4a064896f50e7e" + }, + { + "m_Id": "99a671c1e3274bee8607a56e0a0ab6bd" + }, + { + "m_Id": "43c3ae09d6c345e9b74e1234b3ebbc67" + }, + { + "m_Id": "2622e9134b2e484386137102cf7d39fb" + }, + { + "m_Id": "44e468b25f4b46f4b7fcb61cac6643c8" + } + ], + "m_Keywords": [], + "m_Nodes": [ + { + "m_Id": "d67e45d544414ba1af62b45296b5121f" + }, + { + "m_Id": "3f0f2e41d0a04d04b5aeecce766c4124" + }, + { + "m_Id": "e3788dbcb4594f859cc08c120237ade8" + }, + { + "m_Id": "9c1b9ba88d9c4451a4b91c0203e865db" + }, + { + "m_Id": "9ad5a571ff7247d79570779a90216c22" + }, + { + "m_Id": "f76ca8ad9f5b418296befff00248835e" + }, + { + "m_Id": "4f6cca4dc97941029590c6e8e51ce727" + }, + { + "m_Id": "5f5a222ad5974309ad74d7017206a18b" + }, + { + "m_Id": "620ebd8aaf9445408e657ae970fb2390" + }, + { + "m_Id": "546e94b0f02e4b1ea73cff252d04e974" + }, + { + "m_Id": "7265ac12afbe44e8a72386b133a9a96f" + }, + { + "m_Id": "2d227bcd2a70461694b34abb8ddadc73" + }, + { + "m_Id": "5b6ad73c2c9c42ed84b5c14bf2e568e8" + }, + { + "m_Id": "76546616a491486da1740351b303ed1f" + }, + { + "m_Id": "babf6e2f43294f9d8d5fede4f9a8b3ec" + }, + { + "m_Id": "f8658f168fad42a78eff8f944e62553a" + }, + { + "m_Id": "25b6687c3d484ca2b9b23fcc6a24c86e" + }, + { + "m_Id": "ebefb1c8b9294df5ad1d7d28b2bd9888" + }, + { + "m_Id": "5baaac0d76a347bf94ab983c6df01730" + }, + { + "m_Id": "2b6aced711c34136a9d4ba8be516daee" + }, + { + "m_Id": "16452af6dcd7413b8108a8a628a23d3a" + }, + { + "m_Id": "1fd3d7ef4fb84f66a6d4ffc4a62ef0ae" + }, + { + "m_Id": "33deb4e66ba94a7e855d6ab36ace6a2f" + }, + { + "m_Id": "6cf192712ffd406dbabdea259dc327f2" + }, + { + "m_Id": "418135569b16482f847a86473ca966fb" + }, + { + "m_Id": "3837a5ec1ba84e778634568c0ff1156a" + } + ], + "m_GroupDatas": [ + { + "m_Id": "f520a02c1ae5404db5dc13ae7be839da" + }, + { + "m_Id": "97bc26bdbd6148c7b5e5e0aa778479b9" + }, + { + "m_Id": "6f52089841624027b3c827605be49ef3" + } + ], + "m_StickyNoteDatas": [], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "16452af6dcd7413b8108a8a628a23d3a" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "5baaac0d76a347bf94ab983c6df01730" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "1fd3d7ef4fb84f66a6d4ffc4a62ef0ae" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "16452af6dcd7413b8108a8a628a23d3a" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "25b6687c3d484ca2b9b23fcc6a24c86e" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "3837a5ec1ba84e778634568c0ff1156a" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "2b6aced711c34136a9d4ba8be516daee" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "1fd3d7ef4fb84f66a6d4ffc4a62ef0ae" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "2d227bcd2a70461694b34abb8ddadc73" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "5baaac0d76a347bf94ab983c6df01730" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "33deb4e66ba94a7e855d6ab36ace6a2f" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "25b6687c3d484ca2b9b23fcc6a24c86e" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "3837a5ec1ba84e778634568c0ff1156a" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "7265ac12afbe44e8a72386b133a9a96f" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "418135569b16482f847a86473ca966fb" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "6cf192712ffd406dbabdea259dc327f2" + }, + "m_SlotId": -1894878370 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "418135569b16482f847a86473ca966fb" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "33deb4e66ba94a7e855d6ab36ace6a2f" + }, + "m_SlotId": -1894878370 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "4f6cca4dc97941029590c6e8e51ce727" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "418135569b16482f847a86473ca966fb" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "546e94b0f02e4b1ea73cff252d04e974" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "7265ac12afbe44e8a72386b133a9a96f" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "5b6ad73c2c9c42ed84b5c14bf2e568e8" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "2d227bcd2a70461694b34abb8ddadc73" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "5baaac0d76a347bf94ab983c6df01730" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "25b6687c3d484ca2b9b23fcc6a24c86e" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "5f5a222ad5974309ad74d7017206a18b" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "33deb4e66ba94a7e855d6ab36ace6a2f" + }, + "m_SlotId": 2097171641 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "620ebd8aaf9445408e657ae970fb2390" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "33deb4e66ba94a7e855d6ab36ace6a2f" + }, + "m_SlotId": -546756482 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "6cf192712ffd406dbabdea259dc327f2" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "3837a5ec1ba84e778634568c0ff1156a" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "7265ac12afbe44e8a72386b133a9a96f" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9c1b9ba88d9c4451a4b91c0203e865db" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "7265ac12afbe44e8a72386b133a9a96f" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "f76ca8ad9f5b418296befff00248835e" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "76546616a491486da1740351b303ed1f" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "babf6e2f43294f9d8d5fede4f9a8b3ec" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "babf6e2f43294f9d8d5fede4f9a8b3ec" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "5b6ad73c2c9c42ed84b5c14bf2e568e8" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "ebefb1c8b9294df5ad1d7d28b2bd9888" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "2d227bcd2a70461694b34abb8ddadc73" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "f8658f168fad42a78eff8f944e62553a" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "babf6e2f43294f9d8d5fede4f9a8b3ec" + }, + "m_SlotId": 0 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": 749.0001220703125, + "y": 566.9999389648438 + }, + "m_Blocks": [ + { + "m_Id": "d67e45d544414ba1af62b45296b5121f" + }, + { + "m_Id": "3f0f2e41d0a04d04b5aeecce766c4124" + }, + { + "m_Id": "e3788dbcb4594f859cc08c120237ade8" + } + ] + }, + "m_FragmentContext": { + "m_Position": { + "x": 749.0001220703125, + "y": 767.0 + }, + "m_Blocks": [ + { + "m_Id": "9c1b9ba88d9c4451a4b91c0203e865db" + }, + { + "m_Id": "9ad5a571ff7247d79570779a90216c22" + }, + { + "m_Id": "f76ca8ad9f5b418296befff00248835e" + } + ] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + } + }, + "m_Path": "Shader Graphs", + "m_ConcretePrecision": 0, + "m_OutputNode": { + "m_Id": "" + }, + "m_ActiveTargets": [ + { + "m_Id": "68c800f0123148ab9df3ccaa0ae4821c" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "03128754961244f685ffbc9ef0ee7e16", + "m_Id": 1, + "m_DisplayName": "Angle Offset", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "AngleOffset", + "m_StageCapability": 3, + "m_Value": 2.0, + "m_DefaultValue": 2.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2Node", + "m_ObjectId": "16452af6dcd7413b8108a8a628a23d3a", + "m_Group": { + "m_Id": "97bc26bdbd6148c7b5e5e0aa778479b9" + }, + "m_Name": "Vector 2", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1357.0001220703125, + "y": 212.9999237060547, + "width": 127.99999237060547, + "height": 101.0 + } + }, + "m_Slots": [ + { + "m_Id": "9e7e3a9cd8204d6e8d9682d72ce09ecb" + }, + { + "m_Id": "c76f78aee36e41e8aaca8d6aa49f3d24" + }, + { + "m_Id": "dc61e6a0303f4c2ba1eb950d64cd20ef" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Value": { + "x": 0.0, + "y": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "17d3c6c3144a48a1a3b57df560814eab", + "m_Id": 1, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "1a2ea9adbb3d4054b059de9296df2323", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.OneMinusNode", + "m_ObjectId": "1fd3d7ef4fb84f66a6d4ffc4a62ef0ae", + "m_Group": { + "m_Id": "97bc26bdbd6148c7b5e5e0aa778479b9" + }, + "m_Name": "One Minus", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1628.0, + "y": 251.0001220703125, + "width": 207.99998474121095, + "height": 278.0 + } + }, + "m_Slots": [ + { + "m_Id": "cdc6d45119294ab399b1d055b2409076" + }, + { + "m_Id": "c9a279e354db45d0bb937f8a33b00118" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalSpriteUnlitSubTarget", + "m_ObjectId": "25912a5c465c42999a24969f1a1bc4df" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "25b6687c3d484ca2b9b23fcc6a24c86e", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -785.9999389648438, + "y": 590.0, + "width": 208.00001525878907, + "height": 302.0000305175781 + } + }, + "m_Slots": [ + { + "m_Id": "b525a078ad2640189234156935689042" + }, + { + "m_Id": "b1d43d0d075d41a3aef4dfdbf2164945" + }, + { + "m_Id": "8d1eebfc84b34e0f80b48a735239502a" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "2622e9134b2e484386137102cf7d39fb", + "m_Guid": { + "m_GuidSerialized": "f6aa0799-017b-433e-82c1-1490bf39bd5a" + }, + "m_Name": "VoronoiScale", + "m_DefaultReferenceName": "Vector1_2622e9134b2e484386137102cf7d39fb", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 5.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "2b6aced711c34136a9d4ba8be516daee", + "m_Group": { + "m_Id": "97bc26bdbd6148c7b5e5e0aa778479b9" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1922.0, + "y": 360.99993896484377, + "width": 162.0, + "height": 33.999996185302737 + } + }, + "m_Slots": [ + { + "m_Id": "83be148879ec498885e43c2710640236" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "44e468b25f4b46f4b7fcb61cac6643c8" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "2bb5f0c5173741e1b7bfa07410639014", + "m_Id": 2, + "m_DisplayName": "Offset", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Offset", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.VoronoiNode", + "m_ObjectId": "2d227bcd2a70461694b34abb8ddadc73", + "m_Group": { + "m_Id": "97bc26bdbd6148c7b5e5e0aa778479b9" + }, + "m_Name": "Voronoi", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1451.0, + "y": -138.00001525878907, + "width": 207.99998474121095, + "height": 326.0 + } + }, + "m_Slots": [ + { + "m_Id": "a854aa42cbe3429abfdf4af97022489c" + }, + { + "m_Id": "03128754961244f685ffbc9ef0ee7e16" + }, + { + "m_Id": "2ea7cfff982845c1b4b63b48aa5143a8" + }, + { + "m_Id": "904e396007944964bd98714c19b754c9" + }, + { + "m_Id": "58a6ab4b69464473b6a2b9aad7cb46c0" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "2e33b89579094d07aa2b147de2e3147f", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "2ea7cfff982845c1b4b63b48aa5143a8", + "m_Id": 2, + "m_DisplayName": "Cell Density", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "CellDensity", + "m_StageCapability": 3, + "m_Value": 5.0, + "m_DefaultValue": 5.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "301918454dc44e9a933cd49f0864225c", + "m_Id": 0, + "m_DisplayName": "Base Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BaseColor", + "m_StageCapability": 2, + "m_Value": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "32ed544f1fa64a52b295da22be7900f7", + "m_Id": 2, + "m_DisplayName": "Cosine Time", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Cosine Time", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphNode", + "m_ObjectId": "33deb4e66ba94a7e855d6ab36ace6a2f", + "m_Group": { + "m_Id": "f520a02c1ae5404db5dc13ae7be839da" + }, + "m_Name": "BeamBodySubShader", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1552.9998779296875, + "y": 696.0, + "width": 285.0, + "height": 326.0 + } + }, + "m_Slots": [ + { + "m_Id": "43d184b1a48b426b98381019c0478ed1" + }, + { + "m_Id": "b3abdb96c46b48e39c5dc3267f00630d" + }, + { + "m_Id": "45deafc5c0a243e094f136bfbe316328" + }, + { + "m_Id": "9341490763064ffbb75307cdf8c1ba4d" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedSubGraph": "{\n \"subGraph\": {\n \"fileID\": -5475051401550479605,\n \"guid\": \"f40b397ede769e74a8415dc68bdccd62\",\n \"type\": 3\n }\n}", + "m_PropertyGuids": [ + "3259af69-d491-4bac-8373-8ea4a09ffcdd", + "de2e00a2-642e-4cff-982c-c7e3001d8be4", + "669267ea-19fb-4fdd-b901-a063addf6e49", + "cedf35cd-8bd1-4623-842b-ca0abebdf5b0" + ], + "m_PropertyIds": [ + 1757996056, + 2097171641, + -546756482, + -1894878370 + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "34fb965b9c6d4857ab311dad890489bd", + "m_Id": -546756482, + "m_DisplayName": "BeamThickness", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Vector1_56d8cbc66d774e94bd3a843143814372", + "m_StageCapability": 3, + "m_Value": 1.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "3707a6e6bb0d4f88a9b50a4f4e0bfca4", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "3837a5ec1ba84e778634568c0ff1156a", + "m_Group": { + "m_Id": "6f52089841624027b3c827605be49ef3" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -442.9999694824219, + "y": 1059.0, + "width": 208.0, + "height": 301.9999694824219 + } + }, + "m_Slots": [ + { + "m_Id": "ff84008743cb4375a6c2add414f6603e" + }, + { + "m_Id": "bf1a333c4e2448afad3a8e553c3d9495" + }, + { + "m_Id": "623d293097e2498387450c950366b8ea" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "3a6d5588dc994490959af62a510e0c70", + "m_Id": 0, + "m_DisplayName": "BeamThickness", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "3b63012eb6474c1daf4de43efddd98b7", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.TangentMaterialSlot", + "m_ObjectId": "3d4286b96d404be398e9b58f6c739628", + "m_Id": 0, + "m_DisplayName": "Tangent", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tangent", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "3f0f2e41d0a04d04b5aeecce766c4124", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Normal", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "76b8cfa791a042f6b12e49db4de37195" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Normal" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SplitNode", + "m_ObjectId": "418135569b16482f847a86473ca966fb", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Split", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1727.0001220703125, + "y": 1109.0, + "width": 120.0, + "height": 149.0 + } + }, + "m_Slots": [ + { + "m_Id": "cac76c60099d4d2f9ab8f2b730279e35" + }, + { + "m_Id": "17d3c6c3144a48a1a3b57df560814eab" + }, + { + "m_Id": "da68bb0dd5b943bd85b1b65c63f8b59f" + }, + { + "m_Id": "d1a60474a5c943f2b76bec495e7a626a" + }, + { + "m_Id": "e85c8d703cf54f46a5818cf712c01166" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector2ShaderProperty", + "m_ObjectId": "43c3ae09d6c345e9b74e1234b3ebbc67", + "m_Guid": { + "m_GuidSerialized": "d2c6b959-7f77-432c-9a40-a61dc500db9d" + }, + "m_Name": "BeamSpeed", + "m_DefaultReferenceName": "Vector2_43c3ae09d6c345e9b74e1234b3ebbc67", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "x": -0.20000000298023225, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "43d184b1a48b426b98381019c0478ed1", + "m_Id": 2097171641, + "m_DisplayName": "BeamEdgeSmoothness", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Vector1_f092999f78aa4411a888dfa213d9cc58", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "44e468b25f4b46f4b7fcb61cac6643c8", + "m_Guid": { + "m_GuidSerialized": "aeded4d8-2229-430d-a59c-8f410fb37dea" + }, + "m_Name": "VoronoiStrength", + "m_DefaultReferenceName": "Vector1_44e468b25f4b46f4b7fcb61cac6643c8", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.6000000238418579, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "45deafc5c0a243e094f136bfbe316328", + "m_Id": -1894878370, + "m_DisplayName": "Channel", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Vector1_6d132dba5b7b4bd8afb213741667bf0b", + "m_StageCapability": 3, + "m_Value": 1.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.Internal.ColorShaderProperty", + "m_ObjectId": "46b35a1776f84c6eb5a8a969cc80e2a0", + "m_Guid": { + "m_GuidSerialized": "572b5715-aea9-4553-955b-afb0fa295f35" + }, + "m_Name": "Color", + "m_DefaultReferenceName": "Color_46b35a1776f84c6eb5a8a969cc80e2a0", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "r": 11.98431396484375, + "g": 11.98431396484375, + "b": 11.98431396484375, + "a": 1.0 + }, + "m_ColorMode": 1 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "4bf04137f8ba4b688de1ca1aa1c305a4", + "m_Id": 0, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVNode", + "m_ObjectId": "4f6cca4dc97941029590c6e8e51ce727", + "m_Group": { + "m_Id": "" + }, + "m_Name": "UV", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2000.999755859375, + "y": 1109.9998779296875, + "width": 207.99998474121095, + "height": 313.9999694824219 + } + }, + "m_Slots": [ + { + "m_Id": "7acd1b6e15854a23a2b8632c72efb5df" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_OutputChannel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "5033adf3dd6f4244bc6b7d13ce2c55f8", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "546e94b0f02e4b1ea73cff252d04e974", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -407.0, + "y": 825.0, + "width": 107.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "a7193108f95445d09d470d57d4de1cc5" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "46b35a1776f84c6eb5a8a969cc80e2a0" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "58a6ab4b69464473b6a2b9aad7cb46c0", + "m_Id": 4, + "m_DisplayName": "Cells", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Cells", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.TilingAndOffsetNode", + "m_ObjectId": "5b6ad73c2c9c42ed84b5c14bf2e568e8", + "m_Group": { + "m_Id": "97bc26bdbd6148c7b5e5e0aa778479b9" + }, + "m_Name": "Tiling And Offset", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1727.0001220703125, + "y": -157.99998474121095, + "width": 207.99998474121095, + "height": 326.0 + } + }, + "m_Slots": [ + { + "m_Id": "4bf04137f8ba4b688de1ca1aa1c305a4" + }, + { + "m_Id": "650e4000f4bb440496ab03cf79024782" + }, + { + "m_Id": "2bb5f0c5173741e1b7bfa07410639014" + }, + { + "m_Id": "c0780b5054a340d3941b9e4b25d209f4" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RemapNode", + "m_ObjectId": "5baaac0d76a347bf94ab983c6df01730", + "m_Group": { + "m_Id": "97bc26bdbd6148c7b5e5e0aa778479b9" + }, + "m_Name": "Remap", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1133.999755859375, + "y": -71.99987030029297, + "width": 207.99998474121095, + "height": 326.0 + } + }, + "m_Slots": [ + { + "m_Id": "b2075a77fbe94cb4a4f52c9551cce5f2" + }, + { + "m_Id": "c4677977cae842d3889f798b1834ee59" + }, + { + "m_Id": "a6db5f8a8baa435a98d0d62bc0e146d6" + }, + { + "m_Id": "1a2ea9adbb3d4054b059de9296df2323" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "5bd5934900f241baa8f1c31e136d6ab4", + "m_Id": 0, + "m_DisplayName": "Alpha", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Alpha", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "5f5a222ad5974309ad74d7017206a18b", + "m_Group": { + "m_Id": "f520a02c1ae5404db5dc13ae7be839da" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1856.0001220703125, + "y": 946.0, + "width": 198.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "9de5c4c516a14c849c90d76aafb8b042" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "6680ec53d55b40298f4a064896f50e7e" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "620ebd8aaf9445408e657ae970fb2390", + "m_Group": { + "m_Id": "f520a02c1ae5404db5dc13ae7be839da" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1818.0001220703125, + "y": 1002.0, + "width": 158.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "3a6d5588dc994490959af62a510e0c70" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "99a671c1e3274bee8607a56e0a0ab6bd" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "623d293097e2498387450c950366b8ea", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "650e4000f4bb440496ab03cf79024782", + "m_Id": 1, + "m_DisplayName": "Tiling", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tiling", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "6680ec53d55b40298f4a064896f50e7e", + "m_Guid": { + "m_GuidSerialized": "32444000-ec51-48da-b0de-5c662665aff5" + }, + "m_Name": "BeamEdgeSmoothness", + "m_DefaultReferenceName": "Vector1_6680ec53d55b40298f4a064896f50e7e", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 10.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalTarget", + "m_ObjectId": "68c800f0123148ab9df3ccaa0ae4821c", + "m_ActiveSubTarget": { + "m_Id": "25912a5c465c42999a24969f1a1bc4df" + }, + "m_SurfaceType": 1, + "m_AlphaMode": 0, + "m_TwoSided": false, + "m_AlphaClip": false, + "m_CustomEditorGUI": "" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphNode", + "m_ObjectId": "6cf192712ffd406dbabdea259dc327f2", + "m_Group": { + "m_Id": "6f52089841624027b3c827605be49ef3" + }, + "m_Name": "BeamBodySubShader", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -914.0001220703125, + "y": 1081.0, + "width": 285.0, + "height": 326.0 + } + }, + "m_Slots": [ + { + "m_Id": "ca0f59a206204e319a43cc6b0f38682d" + }, + { + "m_Id": "34fb965b9c6d4857ab311dad890489bd" + }, + { + "m_Id": "eaddbe8349bc4a17b74d85e79fb464bc" + }, + { + "m_Id": "a3ac78c2b2e94e9089c45368911c4178" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedSubGraph": "{\n \"subGraph\": {\n \"fileID\": -5475051401550479605,\n \"guid\": \"f40b397ede769e74a8415dc68bdccd62\",\n \"type\": 3\n }\n}", + "m_PropertyGuids": [ + "3259af69-d491-4bac-8373-8ea4a09ffcdd", + "de2e00a2-642e-4cff-982c-c7e3001d8be4", + "669267ea-19fb-4fdd-b901-a063addf6e49", + "cedf35cd-8bd1-4623-842b-ca0abebdf5b0" + ], + "m_PropertyIds": [ + 1757996056, + 2097171641, + -546756482, + -1894878370 + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "6f52089841624027b3c827605be49ef3", + "m_Title": "Mask", + "m_Position": { + "x": -939.0003051757813, + "y": 1022.0001831054688 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "7265ac12afbe44e8a72386b133a9a96f", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -105.00000762939453, + "y": 782.9999389648438, + "width": 207.99998474121095, + "height": 301.9999694824219 + } + }, + "m_Slots": [ + { + "m_Id": "5033adf3dd6f4244bc6b7d13ce2c55f8" + }, + { + "m_Id": "f2c90706a1a64a6c8b3aa6115c44a5f6" + }, + { + "m_Id": "3707a6e6bb0d4f88a9b50a4f4e0bfca4" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.TimeNode", + "m_ObjectId": "76546616a491486da1740351b303ed1f", + "m_Group": { + "m_Id": "97bc26bdbd6148c7b5e5e0aa778479b9" + }, + "m_Name": "Time", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2269.0, + "y": 85.00012969970703, + "width": 126.0, + "height": 173.0 + } + }, + "m_Slots": [ + { + "m_Id": "8a1e070bb0a545b0825030e82659d059" + }, + { + "m_Id": "eee3b01667a6421ea4d595ba522662e1" + }, + { + "m_Id": "32ed544f1fa64a52b295da22be7900f7" + }, + { + "m_Id": "dc01a53a7d584e39950618a1fb338b50" + }, + { + "m_Id": "fd2ef70806c443f9a07974f0d4f56091" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "76b8cfa791a042f6b12e49db4de37195", + "m_Id": 0, + "m_DisplayName": "Normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Normal", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "78a0afcef6464c1883b400c4ee0d31c5", + "m_Id": 0, + "m_DisplayName": "VoronoiScale", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "7acd1b6e15854a23a2b8632c72efb5df", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBAMaterialSlot", + "m_ObjectId": "7f9efb8b98154e4b9f5957cef3d478bd", + "m_Id": 0, + "m_DisplayName": "Sprite Mask", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "SpriteMask", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "83be148879ec498885e43c2710640236", + "m_Id": 0, + "m_DisplayName": "VoronoiStrength", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "8a1e070bb0a545b0825030e82659d059", + "m_Id": 0, + "m_DisplayName": "Time", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Time", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "8d1eebfc84b34e0f80b48a735239502a", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "904e396007944964bd98714c19b754c9", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "9341490763064ffbb75307cdf8c1ba4d", + "m_Id": 1, + "m_DisplayName": "Out_Vector1", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "OutVector1", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "97bc26bdbd6148c7b5e5e0aa778479b9", + "m_Title": "Voronoi", + "m_Position": { + "x": -2310.0, + "y": -216.9998779296875 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "99a671c1e3274bee8607a56e0a0ab6bd", + "m_Guid": { + "m_GuidSerialized": "46ed6e53-4296-40c1-b7fe-755d86833121" + }, + "m_Name": "BeamThickness", + "m_DefaultReferenceName": "Vector1_99a671c1e3274bee8607a56e0a0ab6bd", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 30.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "9ad5a571ff7247d79570779a90216c22", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.SpriteMask", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "7f9efb8b98154e4b9f5957cef3d478bd" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.SpriteMask" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "9c1b9ba88d9c4451a4b91c0203e865db", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BaseColor", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "301918454dc44e9a933cd49f0864225c" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BaseColor" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "9de5c4c516a14c849c90d76aafb8b042", + "m_Id": 0, + "m_DisplayName": "BeamEdgeSmoothness", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "9e7e3a9cd8204d6e8d9682d72ce09ecb", + "m_Id": 1, + "m_DisplayName": "X", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "X", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "a3ac78c2b2e94e9089c45368911c4178", + "m_Id": 1, + "m_DisplayName": "Out_Vector1", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "OutVector1", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "a4fe65bc626547a2b23e48262934082b", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "a6db5f8a8baa435a98d0d62bc0e146d6", + "m_Id": 2, + "m_DisplayName": "Out Min Max", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "OutMinMax", + "m_StageCapability": 3, + "m_Value": { + "x": -0.029999999329447748, + "y": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "a7193108f95445d09d470d57d4de1cc5", + "m_Id": 0, + "m_DisplayName": "Color", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "a854aa42cbe3429abfdf4af97022489c", + "m_Id": 0, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "ae5ded21d59f4a598aec7a4c252d77f6", + "m_Id": 0, + "m_DisplayName": "BeamSpeed", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "b1d43d0d075d41a3aef4dfdbf2164945", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "b2075a77fbe94cb4a4f52c9551cce5f2", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": -1.0, + "y": -1.0, + "z": -1.0, + "w": -1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "b3abdb96c46b48e39c5dc3267f00630d", + "m_Id": -546756482, + "m_DisplayName": "BeamThickness", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Vector1_56d8cbc66d774e94bd3a843143814372", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PositionMaterialSlot", + "m_ObjectId": "b4d5d98536cd4818a0bcd23af6babbf4", + "m_Id": 0, + "m_DisplayName": "Position", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Position", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "b525a078ad2640189234156935689042", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "babf6e2f43294f9d8d5fede4f9a8b3ec", + "m_Group": { + "m_Id": "97bc26bdbd6148c7b5e5e0aa778479b9" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2053.0, + "y": -35.99992752075195, + "width": 207.99998474121095, + "height": 302.0 + } + }, + "m_Slots": [ + { + "m_Id": "a4fe65bc626547a2b23e48262934082b" + }, + { + "m_Id": "2e33b89579094d07aa2b147de2e3147f" + }, + { + "m_Id": "3b63012eb6474c1daf4de43efddd98b7" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "bf1a333c4e2448afad3a8e553c3d9495", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "c0780b5054a340d3941b9e4b25d209f4", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "c4677977cae842d3889f798b1834ee59", + "m_Id": 1, + "m_DisplayName": "In Min Max", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "InMinMax", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "c76f78aee36e41e8aaca8d6aa49f3d24", + "m_Id": 2, + "m_DisplayName": "Y", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Y", + "m_StageCapability": 3, + "m_Value": 1.0, + "m_DefaultValue": 0.0, + "m_Labels": [ + "Y" + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "c9a279e354db45d0bb937f8a33b00118", + "m_Id": 1, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "ca0f59a206204e319a43cc6b0f38682d", + "m_Id": 2097171641, + "m_DisplayName": "BeamEdgeSmoothness", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Vector1_f092999f78aa4411a888dfa213d9cc58", + "m_StageCapability": 3, + "m_Value": 30.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "cac76c60099d4d2f9ab8f2b730279e35", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "cdc6d45119294ab399b1d055b2409076", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "d1a60474a5c943f2b76bec495e7a626a", + "m_Id": 3, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "d67e45d544414ba1af62b45296b5121f", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Position", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "b4d5d98536cd4818a0bcd23af6babbf4" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Position" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "da68bb0dd5b943bd85b1b65c63f8b59f", + "m_Id": 2, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "dc01a53a7d584e39950618a1fb338b50", + "m_Id": 3, + "m_DisplayName": "Delta Time", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Delta Time", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "dc61e6a0303f4c2ba1eb950d64cd20ef", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "e3788dbcb4594f859cc08c120237ade8", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Tangent", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "3d4286b96d404be398e9b58f6c739628" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Tangent" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "e85c8d703cf54f46a5818cf712c01166", + "m_Id": 4, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "eaddbe8349bc4a17b74d85e79fb464bc", + "m_Id": -1894878370, + "m_DisplayName": "Channel", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Vector1_6d132dba5b7b4bd8afb213741667bf0b", + "m_StageCapability": 3, + "m_Value": 1.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "ebefb1c8b9294df5ad1d7d28b2bd9888", + "m_Group": { + "m_Id": "97bc26bdbd6148c7b5e5e0aa778479b9" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1650.0, + "y": 190.99996948242188, + "width": 144.99998474121095, + "height": 33.999996185302737 + } + }, + "m_Slots": [ + { + "m_Id": "78a0afcef6464c1883b400c4ee0d31c5" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "2622e9134b2e484386137102cf7d39fb" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "eee3b01667a6421ea4d595ba522662e1", + "m_Id": 1, + "m_DisplayName": "Sine Time", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Sine Time", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "f2c90706a1a64a6c8b3aa6115c44a5f6", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GroupData", + "m_ObjectId": "f520a02c1ae5404db5dc13ae7be839da", + "m_Title": "Beam body", + "m_Position": { + "x": -1728.0, + "y": 637.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "f76ca8ad9f5b418296befff00248835e", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Alpha", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "5bd5934900f241baa8f1c31e136d6ab4" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Alpha" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "f8658f168fad42a78eff8f944e62553a", + "m_Group": { + "m_Id": "97bc26bdbd6148c7b5e5e0aa778479b9" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -2274.0, + "y": -22.000001907348634, + "width": 140.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "ae5ded21d59f4a598aec7a4c252d77f6" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "43c3ae09d6c345e9b74e1234b3ebbc67" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "fd2ef70806c443f9a07974f0d4f56091", + "m_Id": 4, + "m_DisplayName": "Smooth Delta", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Smooth Delta", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "ff84008743cb4375a6c2add414f6603e", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + diff --git a/Assets/Project/Graphics/Shaders/GaussCannonBeamShader.shadergraph.meta b/Assets/Project/Graphics/Shaders/GaussCannonBeamShader.shadergraph.meta new file mode 100644 index 00000000..b537d370 --- /dev/null +++ b/Assets/Project/Graphics/Shaders/GaussCannonBeamShader.shadergraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: f3c3a3e25636cab43ab139ff51a019e4 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} diff --git a/Assets/Project/Graphics/Shaders/SpriteLitEmissive.shadergraph b/Assets/Project/Graphics/Shaders/SpriteLitEmissive.shadergraph new file mode 100644 index 00000000..75244fef --- /dev/null +++ b/Assets/Project/Graphics/Shaders/SpriteLitEmissive.shadergraph @@ -0,0 +1,1411 @@ +{ + "m_SGVersion": 2, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "42ae8cf368fc467088c2cd60824dc868", + "m_Properties": [ + { + "m_Id": "f112c90cfea048cc82e608c9b5147f43" + }, + { + "m_Id": "75650955e6cd46409c05f20b758a0924" + }, + { + "m_Id": "84e147c4299246dba99d4240b5d6f099" + } + ], + "m_Keywords": [], + "m_Nodes": [ + { + "m_Id": "cc9bc0eb71354e7fa92567ce93d50f32" + }, + { + "m_Id": "419623fe3d474ec5a64769608e0c1a99" + }, + { + "m_Id": "31934ca39cfd49b8b9785f5f3fc5b03c" + }, + { + "m_Id": "e3a01b8f55164835824b9c3786d39638" + }, + { + "m_Id": "ab519769daae40008e96c02309ecec02" + }, + { + "m_Id": "f6e86b829e00411483cea821a36c7c6f" + }, + { + "m_Id": "4b36fe984f614476b8c60ed23b7840f8" + }, + { + "m_Id": "5d787780983a47abb9cb204752814cee" + }, + { + "m_Id": "c83c130fa96a4dbd9d1deaf85572b0db" + }, + { + "m_Id": "378f0e618304476cb028674150088df4" + }, + { + "m_Id": "0f7f73b231ff49e798fc4793bb890eb3" + }, + { + "m_Id": "19a8c15e2b4f46b5ace05ecedcc783b0" + }, + { + "m_Id": "06d153ce0a264fd789f1c23ed167b4f6" + } + ], + "m_GroupDatas": [], + "m_StickyNoteDatas": [], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "06d153ce0a264fd789f1c23ed167b4f6" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "e3a01b8f55164835824b9c3786d39638" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "19a8c15e2b4f46b5ace05ecedcc783b0" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "06d153ce0a264fd789f1c23ed167b4f6" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "378f0e618304476cb028674150088df4" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "06d153ce0a264fd789f1c23ed167b4f6" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "4b36fe984f614476b8c60ed23b7840f8" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "378f0e618304476cb028674150088df4" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "4b36fe984f614476b8c60ed23b7840f8" + }, + "m_SlotId": 7 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "f6e86b829e00411483cea821a36c7c6f" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "5d787780983a47abb9cb204752814cee" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "4b36fe984f614476b8c60ed23b7840f8" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "c83c130fa96a4dbd9d1deaf85572b0db" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "378f0e618304476cb028674150088df4" + }, + "m_SlotId": 0 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [ + { + "m_Id": "cc9bc0eb71354e7fa92567ce93d50f32" + }, + { + "m_Id": "419623fe3d474ec5a64769608e0c1a99" + }, + { + "m_Id": "31934ca39cfd49b8b9785f5f3fc5b03c" + } + ] + }, + "m_FragmentContext": { + "m_Position": { + "x": 0.0, + "y": 200.0 + }, + "m_Blocks": [ + { + "m_Id": "e3a01b8f55164835824b9c3786d39638" + }, + { + "m_Id": "ab519769daae40008e96c02309ecec02" + }, + { + "m_Id": "f6e86b829e00411483cea821a36c7c6f" + }, + { + "m_Id": "0f7f73b231ff49e798fc4793bb890eb3" + } + ] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + } + }, + "m_Path": "Shader Graphs", + "m_ConcretePrecision": 0, + "m_OutputNode": { + "m_Id": "" + }, + "m_ActiveTargets": [ + { + "m_Id": "12ed3e09a800401e9859231bdb1ac8a4" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "02f43eb23ed84cc4935715b7f0544c4c", + "m_Id": 0, + "m_DisplayName": "EmissiveColor", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "06d153ce0a264fd789f1c23ed167b4f6", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -346.9998779296875, + "y": 190.00003051757813, + "width": 208.0, + "height": 302.0 + } + }, + "m_Slots": [ + { + "m_Id": "bcfa97170af3431989566de91a4de141" + }, + { + "m_Id": "632edd3b223a4bdf84d6ea7f3e405200" + }, + { + "m_Id": "f068fffc6ae74dce844335d27157bd0f" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "0f7f73b231ff49e798fc4793bb890eb3", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.NormalTS", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "498e18fc2e4f425ea3b25a153de072f4" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.NormalTS" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalTarget", + "m_ObjectId": "12ed3e09a800401e9859231bdb1ac8a4", + "m_ActiveSubTarget": { + "m_Id": "92091221f46e47488650d03aff6c5529" + }, + "m_SurfaceType": 0, + "m_AlphaMode": 0, + "m_TwoSided": false, + "m_AlphaClip": false, + "m_CustomEditorGUI": "" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "13a5db9053a34764ae65f3fbaaca095e", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "19a8c15e2b4f46b5ace05ecedcc783b0", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -617.5872192382813, + "y": 434.85546875, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "02f43eb23ed84cc4935715b7f0544c4c" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "84e147c4299246dba99d4240b5d6f099" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "2b69d19d760d415b93244eedef84b197", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "31934ca39cfd49b8b9785f5f3fc5b03c", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Tangent", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "75d278286d12476090a615c1c752f48d" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Tangent" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "354482ac2e69473aad82ef822da2d865", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [], + "m_Channel": 2 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "378f0e618304476cb028674150088df4", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -617.0, + "y": 41.0, + "width": 129.99998474121095, + "height": 117.99999237060547 + } + }, + "m_Slots": [ + { + "m_Id": "8a04e77f8a4d4eaeb726b03b538d8f69" + }, + { + "m_Id": "951ce78e991545118b92808ef24a430d" + }, + { + "m_Id": "13a5db9053a34764ae65f3fbaaca095e" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "419623fe3d474ec5a64769608e0c1a99", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Normal", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "8d630ed4b61f4e7384e3ec835a3e03f1" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Normal" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "42dd9037ce0b433591d2714b9e0974f0", + "m_Id": 0, + "m_DisplayName": "Alpha", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Alpha", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "498e18fc2e4f425ea3b25a153de072f4", + "m_Id": 0, + "m_DisplayName": "Normal (Tangent Space)", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "NormalTS", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "4b36fe984f614476b8c60ed23b7840f8", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -911.9999389648438, + "y": 161.0, + "width": 184.0, + "height": 252.99998474121095 + } + }, + "m_Slots": [ + { + "m_Id": "8b968b46fb414c70b999857b81b40795" + }, + { + "m_Id": "dce8b02b557d4aefa028d0a60d1a7974" + }, + { + "m_Id": "6e701e7fd2f5407f98fac4e89df33c5e" + }, + { + "m_Id": "2b69d19d760d415b93244eedef84b197" + }, + { + "m_Id": "cbce0972502e4d6381f5cd298402bad2" + }, + { + "m_Id": "882906a61cc545c1945aa4ea169a6dbb" + }, + { + "m_Id": "354482ac2e69473aad82ef822da2d865" + }, + { + "m_Id": "890345aced554c58beaf92ac6771832f" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "5b230ebfa5fa4ee4a27b597ae9317740", + "m_Id": 0, + "m_DisplayName": "Base Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BaseColor", + "m_StageCapability": 2, + "m_Value": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "5d787780983a47abb9cb204752814cee", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1171.0, + "y": 91.9999771118164, + "width": 129.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "a11e0d8eab5343a09cc2aeac10a4636b" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "f112c90cfea048cc82e608c9b5147f43" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "632edd3b223a4bdf84d6ea7f3e405200", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "6e701e7fd2f5407f98fac4e89df33c5e", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.Internal.ColorShaderProperty", + "m_ObjectId": "75650955e6cd46409c05f20b758a0924", + "m_Guid": { + "m_GuidSerialized": "2f230de3-bf3a-4537-9e9d-8fc75e41c35a" + }, + "m_Name": "Color", + "m_DefaultReferenceName": "Color_75650955e6cd46409c05f20b758a0924", + "m_OverrideReferenceName": "_Color", + "m_GeneratePropertyBlock": true, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "m_ColorMode": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.TangentMaterialSlot", + "m_ObjectId": "75d278286d12476090a615c1c752f48d", + "m_Id": 0, + "m_DisplayName": "Tangent", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tangent", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.Internal.ColorShaderProperty", + "m_ObjectId": "84e147c4299246dba99d4240b5d6f099", + "m_Guid": { + "m_GuidSerialized": "26997e87-db37-45c3-8e6d-12abe810c7d3" + }, + "m_Name": "EmissiveColor", + "m_DefaultReferenceName": "Color_84e147c4299246dba99d4240b5d6f099", + "m_OverrideReferenceName": "_EmissiveColor", + "m_GeneratePropertyBlock": true, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "r": 0.9999998807907105, + "g": 0.9999998807907105, + "b": 0.9999998807907105, + "a": 1.0 + }, + "m_ColorMode": 1 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "882906a61cc545c1945aa4ea169a6dbb", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_Texture": { + "m_SerializedTexture": "{\"texture\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "890345aced554c58beaf92ac6771832f", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "8a04e77f8a4d4eaeb726b03b538d8f69", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "8b968b46fb414c70b999857b81b40795", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "8cd5c7b3abcb483a93f84ef24cdacee8", + "m_Id": 0, + "m_DisplayName": "Color", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "8d630ed4b61f4e7384e3ec835a3e03f1", + "m_Id": 0, + "m_DisplayName": "Normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Normal", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalSpriteLitSubTarget", + "m_ObjectId": "92091221f46e47488650d03aff6c5529" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "951ce78e991545118b92808ef24a430d", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "a11e0d8eab5343a09cc2aeac10a4636b", + "m_Id": 0, + "m_DisplayName": "MainTex", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "ab519769daae40008e96c02309ecec02", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.SpriteMask", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "fb7d348c9f294537a61095bac6f2f379" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.SpriteMask" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "bcfa97170af3431989566de91a4de141", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "c83c130fa96a4dbd9d1deaf85572b0db", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -825.0, + "y": 15.000011444091797, + "width": 106.99999237060547, + "height": 33.999996185302737 + } + }, + "m_Slots": [ + { + "m_Id": "8cd5c7b3abcb483a93f84ef24cdacee8" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "75650955e6cd46409c05f20b758a0924" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "cbce0972502e4d6381f5cd298402bad2", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "cc9bc0eb71354e7fa92567ce93d50f32", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Position", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "e9c59fd0a5414537be16617eaacb7839" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Position" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "dce8b02b557d4aefa028d0a60d1a7974", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "e3a01b8f55164835824b9c3786d39638", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BaseColor", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "5b230ebfa5fa4ee4a27b597ae9317740" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BaseColor" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PositionMaterialSlot", + "m_ObjectId": "e9c59fd0a5414537be16617eaacb7839", + "m_Id": 0, + "m_DisplayName": "Position", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Position", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "f068fffc6ae74dce844335d27157bd0f", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "f112c90cfea048cc82e608c9b5147f43", + "m_Guid": { + "m_GuidSerialized": "7f6ffa0c-8833-4316-95de-1f19cb986a4b" + }, + "m_Name": "MainTex", + "m_DefaultReferenceName": "Texture2D_f112c90cfea048cc82e608c9b5147f43", + "m_OverrideReferenceName": "_MainTex", + "m_GeneratePropertyBlock": true, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "{\"texture\":{\"fileID\":2800000,\"guid\":\"ac70595a0ff8dde48bc5686d5106d297\",\"type\":3}}", + "m_Guid": "" + }, + "m_Modifiable": true, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "f6e86b829e00411483cea821a36c7c6f", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Alpha", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "42dd9037ce0b433591d2714b9e0974f0" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Alpha" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBAMaterialSlot", + "m_ObjectId": "fb7d348c9f294537a61095bac6f2f379", + "m_Id": 0, + "m_DisplayName": "Sprite Mask", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "SpriteMask", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + diff --git a/Assets/Project/Graphics/Shaders/SpriteLitEmissive.shadergraph.meta b/Assets/Project/Graphics/Shaders/SpriteLitEmissive.shadergraph.meta new file mode 100644 index 00000000..026db814 --- /dev/null +++ b/Assets/Project/Graphics/Shaders/SpriteLitEmissive.shadergraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 60365304e537bd7489e3c2395f7918b8 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} diff --git a/Assets/Project/Graphics/UI/Fonts/AdventPro-Regular SDF.asset b/Assets/Project/Graphics/UI/Fonts/AdventPro-Regular SDF.asset index fe8c276e..a6f6d79c 100644 --- a/Assets/Project/Graphics/UI/Fonts/AdventPro-Regular SDF.asset +++ b/Assets/Project/Graphics/UI/Fonts/AdventPro-Regular SDF.asset @@ -12,6 +12,7 @@ Texture2D: Hash: 00000000000000000000000000000000 m_ForcedFallbackFormat: 4 m_DownscaleFallback: 0 + m_IsAlphaChannelOptional: 0 serializedVersion: 2 m_Width: 1024 m_Height: 1024 @@ -38,8 +39,9 @@ Texture2D: m_WrapW: 0 m_LightmapFormat: 0 m_ColorSpace: 0 + m_PlatformBlob: image data: 1048576 - _typelessdata: 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070d12120d0706030000000000000406070e12120c0c090601000000000106090b0c12120e07060400000000000000000000000000000002060808131313131313131313131313131313131313131313131313131313130e0d0b080300000000000000000000000000000000000000000105090b0b131313130f0e0c0804000000000000000000000000000000000000000000000000020507080a0c0e10111112131313121211100f0e0d0c0b0a0807060401000000000000000000000000000000000000000000000000000003050608090a0b0a0a0908070502000000000000000000000000000000000000000000000000000000000000000000000000000000020507080b0d0f11121213131212100f0d0b080806020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105090b0c131313130f0e0c0804000000000000000000000000000000000000000000000000000000000000000000000104060707060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c1012131a1f1f1a1312100b060001070c1013141a1f1e191816120d070000070d121618191e1f1b1413100c07010000000000000000000003090e1214151f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1b1a18140f08010000000000000000000000000000000000060c11151718202020201c1b18140f0902000000000000000000000000000000000000000306090e11141417191b1d1e1e1f1f201f1f1e1e1d1c1b1a191716151413110d070100000000000000000000000000000000000000000306060b0f1213141617171716151414110e0907050200000000000000000000000000000000000000000000000000000000000000000205090e121415181a1c1e1e1f201f1f1e1d1c1a181514120e0905030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c11151818202020201b1b18140f090100000000000000000000000000000000000000000000000000000003050609070d1013141413120f0b060706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181c1f20272b2b26201f1c17110a0b12181d1f20272c2b2625221e18110a0911181e2225262b2c27201f1d18120b030000000000000000060e151a1e21222c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c282724201a130b020000000000000000000000000000000911181d2124252d2d2d2d282725201a130c0300000000000000000000000000000000040a0f1315191e20212326282a2a2b2c2c2c2c2c2b2a292928262524232220201d18130c040000000000000000000000000000000000030a0f1215171b1f202123232424232221201e1a1514120e09030000000000000000000000000000000000000000000000000000000002090e12141a1e21212527292b2b2c2c2c2c2b2a29272522211e1a13120f0b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000911181d2224252d2d2d2d282724201a130b03000000000000000000000000000000000000000000000000060b0f1213161a181d202021201f1b17171313100c070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151c23282c2d333838332d2b28231c14151d24292c2d34383833312e2a231c13131b23292e31323838342d2c29241d150d03000000000000060f181f262b2e2f393939393939393939393939393939393939393939393939393939393433302b251d140b010000000000000000000000000009121b22292e3132393939393534312c251e150c0200000000000000000000000000050b10151b1f21252a2d2e30323436373838393939383837363534333231302f2d2c29241d160d040000000000000000000000000000050b10151a1f2122272b2d2e30303131302f2e2d2a2521211e1a140f0a0400000000000000000000000000000000000000000000000003090e141a1e20252a2d2e31343637383939393938373534312f2e2b26201f1b17110a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b23292e3132393939393534312c251d150b01000000000000000000000000000000000000000002080d11171b1f20232624292c2d2d2d2b272224201f1c18120e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e272e34383a404545403a38342e261e1f272f35383a4145453f3e3a352d251c1b252d353a3e3f4545413a39352f271f150b0100000000030e18212a31373a3b4646464646464646464646464646464646464646464646464646464641403c362f261d130800000000000000000000000006111b242d343a3d3e4646464642403d372f271e13090000000000000000000000040a0f161c20262b2e30363a3b3d3f4143444445464646454544434241403f3e3d3b3a39352f281f160c01000000000000000000000003090e171c20262b2e2d3337393b3c3d3e3d3d3c3b3a36302e2d2a251f1b160c0700000000000000000000000000000000000000000001070c141a1f252a2d31363a3b3e4042444545464645454342403e3b3a37312d2b27221b140b0903000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b242d343a3d3f4646464642403d372f271d130900000000000000000000000000000000000000070c13191b22272b2d2f332f35393a3a3937332d312d2c28231d1a140d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c2730394044464d52524d46443f3830262731394045474d52514c4a463f372d24242d373f464a4c51524e4745403931271d12070000000009151f2a333c424748525252525252525252525252525252525252525252525252525252524e4c4841382f251a0f0300000000000000000000010c18222d363f454a4b535353534f4d4841392f251a0f04000000000000000000070f151b21282c32373b3c4246474a4c4e50515152525352525151504f4e4d4c4a49484745403a31281d130700000000000000000000060e151a22282d31373a3c3f444647494a4a4a49484746423f3b3a36312c272118120b03000000000000000000000000000000000000030b12181f262b30363a3b4246484b4d4f51515253525251504f4d4b4847423d3937332d261d1a140e06000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232d373f454a4b535353534e4d4841392f251a0f0400000000000000000000000000000000030b12181e24292d3337393c40434045474746443f413d3a38342e2a261f19130c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e39424a51535a5e5e5953504a42382e2f39434b51535a5f5e595751493f362d2d363f495156595e5f5a53514b43392f24180c000000020e1a26313c454d53555f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5b59534a41362b2014080000000000000000000005111d29343f48505658606060605b59534b41372c201408000000000000000009101920272b33383c4347494d525456595b5d5d5e5f5f5f5f5f5e5d5c5c5b595857565553514b433a2f24180d010000000000000000080f181f262b33393c4347484950535456565757565554524d4c4846423b383228231d150c0400000000000000000000000000000000060d151d232931373b4246484d5354585a5c5e5e5f5f5f5f5e5d5c5a5855534e4946443f382f2a261f180f08000000000000000000000000000000000000000000000000000000000000000000000000000005111d29343f49515658606060605b59534b41372c201408000000000000000000000000000000060c151c23283035383f4446494d4f4b5153545350494d4a4645403936312a251e160e08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404a545c60666b6b66605c544a3f3435404b555d60676b6b66635b51483f34343f48515b62656b6b67605d554b4035291c1106000006121e2b37424d575f626c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c67645d53483c3024180b000000000000000000000915212e3a45505a62656c6c6c6c68655d53483d3125180c0000000000000009121b222b32373e44484e5355565e61636567696a6b6b6c6c6c6b6b6a6968676665646362605d554b4035291d11040000000000000009121a212a31373e44494e5355535b6061636364646362615e575954534d48433d342e271e160d040000000000000000000000000000070f171f272f343c42464d5254575e616467696a6b6c6c6c6c6b6a686764625f5756535049413e36312a211a1108000000000000000000000000000000000000000000000000000000000000000000000000000915222e3a45515b62656c6c6c6c68655d53483d3124180c00000000000000000000000000000810181e272e343a414549505356595c555d6060605b535a5753514b46423b363028201a12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844515c666d737878736d665c5044383845515d676d747878726d635a50453a3a45505a626d727878746d675d5145382e23170b00000814212e3a47535f696e79797979797979797979797979797979797979797979797979797979746f64594c4033271a0d000000000000000000000b1724313d4a56626c7179797979756f65594d4034271b0e00000000000009121b242d343d43474f55585f6266696e70727476777778797979787877767574737271706e6d675d5145392c20130600000000000009121b242c333c42475055585f6266656c6e6f707170706f6e696966615e57544f45403930281f160c030000000000000000000000000710192129313940454d53575e6166696e71737577787879797878767573716e6a6763605b535046423b332b231a11080000000000000000000000000000000000000000000000000000000000000000000000000b1824313d4a56626d7279797979756f65594d4034271b0e0100000000000000000000000009121a222a303940444c52535b606266696b676d6d6c65696764605c54534d46413a322c2417110a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7880858580786d6053463a3f4a54606d798085847f726c62564a3d3d4a56626d727f848580796d60544a3f34281c1003000815222f3b4855626e7b868585858585858585858585858585858585858585858585858585858174675b4e4134281b0e000000000000000000000b1825323e4b5865717e868686868175685b4f4235281c0f000000000007101b242d363f464e545961636a6f73777b7d7f8183848485858685858484838281807f7d7c7b79756a5e473a2d201407000000000007111b242d363e454d535a61646a6f7376797b7c7d7d7d7c7b7b7875726e69636059514b423a31281e150b0000000000000000000000071019222b333b434b51575f61696e73777b7e8082848485868585848382807e7b7874706c65615a534d453d352c231a100700000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727f868686868175685b4e4235281b0f02000000000000000000000009121b242c343c424a51565d60656c6f737678797a7a79787674706d66615f57524c443e3627221b140b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d91918c7f7266594c3f44505c6674818d92918b7e7165584b3e3e4b5865717e8b91928d8174665c5044382b1f1206000815222f3b4855626e7b8892929292929292929292929292929292929292929292929292928e8175685b4e4235281b0f000000000000000000000b1825323e4b5865717e8b93938e8275685b4f4235281c0f00000000040e19222d363f48515860626b70767c808387898c8e909091929292929291908f8f8e8c8b8a898887796c5f5346392c201300000000030d19232d363f4850575f616c70767b7f83858789898a8a89888785827f7b756f6b605c544b433a30271d1207000000000000000000050e19222b343d454d555c60696e757b8084878b8d8f91919292929291908f8d8b8884817c78716c615f574f473e352c22190e04000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b93938e8175685b4e4235281b0f020000000000000000000008121b242d363e464e545c60686d73787c808285868687868583807d79746e69615e56504840332d261d140a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929e9d9184776a5e51444653606d7986929e9c908376695d504343505d6a7683909d9e9285796d6053463a2d201307000815222f3b4855626e7b88959f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9b8e8175685b4e4235281b0f000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000000000a15202a343f48515b626a6f767d83888c909596989a9c9a9999989898999a9b9c9b9a999897969286796c5f5346392c2013000000010b151f2b353f48505a61696e767d83888c8f929896969797969597928f8c87827c736d665d554b43392e23180c0400000000000000020b17202b343d464e575f676d737b81868d9195979a9c9d9e9e9e9f9f9e9d9b9a9796918e89837e766e6960594f473e342b20160c020000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f02000000000000000000060f1a242d363f4850585f666d727a7f84898c8f919299999292908d8a85817b746d68615a52443f382f261b1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929d9d9184776a5e51444653606d7985929e9c908376695d504343505d6a7683909d9e9285796c605346392d201306000815222f3b4855626e7b8893939393939393939393939393939393939393939393939393938e8175685b4e4235281b0f000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000000030f1b26323c46505a626d727c838a9095999d9b9a93918f8d8d8c8b8b8c8c8d8e8f919298989f9f9286796c5f5346392c201300000007121d27313d47505a626c717b838a9095999c9e9b99989797989a9c9e9c99938f8780786d675d554b40342820150a000000000000000a141d29323d464e5860696e7980868e92999d9f9c99969992929192929995989a9ea19e9a95908a827b706b61594f463d32281e13080000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f020000000000000000030e18212c363f48505a616a6f787f858c9196999c9e9f9f9f9f9e9c9a97928e87817a706c635c504941382d22170f0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808c91918c7f7266594c3f44505c6674808d91908b7e7165584b3e3e4b5865717e8b90918d8174665b5044382b1f1206000815222f3b4855626e7c868686868686868686868686868686868686868686868686868686868175685b4e4235281b0f000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f00000006131f2b37434e58626c727f8790959d9e97928e8a86848281807f7f7f7f808081838485888d989f9286796c5f5346392c20130000000c18242f39434f59626c717e8690949d9f9b97928f8c8b8a8a8b8d8f92989d9f9a938d83796d675c51453c31261b0f01000000000006111b262f3b444e58606a6f7b838d92989f9f9a93908c8987868584858687888b8d91969a9fa09d948f857d706c61584e443a3024190d0300000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f0200000000000000000915202a333e48505a626c717c838c92989e9f9c98959992929995979b9f9f99928e857e736e605b53493f332721170d02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d787f84847f786c605346393f4a54606d798084847f726c62564a3d3d4a56626c717e848480796d60544a3f33281c0f03000814212e3a47535f6a7679797979797979797979797979797979797979797979797979797979756f65594d4034271b0e000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f0000000815222e3b47545f6a717e8b92999f97928c85817d7a78767473737272727374757677797b88949f9286796c5f5346392c2013000004101d2935404b55606b717e8792989f99928e898582807e7e7e7e8083868a90959f9f958f82796d60584e43372b1d130700000000000b17222d38414c56606a6f7c8590959f9e98928d87837f7c7a79787878797a7c7e8184898e92999e9f9792877e706a60564c41352920150900000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f0200000000000000020f1a26313c46505a626c717e8690959f9f99928f8b8887868686888b8e92989f9f97928a80746c655b50443e33291f14090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505c666d727777726c665b5044383845515c676d737777726d625a50453a3a45505a626d717777736d675c5142382d22170b000006121e2b37424e575f6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c68655d53483d3124180c000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f00000714202c38444f59626f7c86929f9e9490857f7974706d6769676666656565666768696a6d7a87939f9286796c5f5346392c2013000006131f2c3845515d676f7d8792999c948f87817c7975737271717273767a7e838a92989f948d80746a5f53473a2f24180d01000000030f1b27333f49535e686f7c859297a09f938f86807b7673706e686b6b6c676d6f7174787c81868e939fa29992867c6f685d52453c31261a0e01000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f020000000000000006121f2b37434e58616c717e889298a099928d86827e7c7a79797a7b7e82868c92989f9e928c81776c605a50453b30251a0e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a545c60666a6a66605b544a3f3334404b555c60666b6a65625b51483f34343f48505a62656a6b66605c554b402f261c11060000020e1a26313c454e5355606060606060606060606060606060606060606060606060606060605b59534b41372c201408000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f00000916232f3c4855616b768390999e938f827a726d6764605d555a5a59585859595a5b5c606d7a87939f9286796c5f5346392c20130003101c28343f4a54606d798491999c928d827b74706c66666564646567676d71777e8692979f92877c6f62554b4035291d110400000005121f2b3744505b656e7a859297a299928b817b746e696663615e565e555d606265656c6f747b818a9298a29891847a6d60574e42372b1d1207000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f02000000000000000814212e3a47535f6a717e87939a9e959087807b76726f6d67676d6f71757a7f858f949d9c938d80736c61574d42362a20150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e38424a5053595e5e5953504a42382d2e39434b51535a5e5d585651493f362d2d363f485056585d5e5a53514b43392f1d140a000000000915202a333c424748535353535353535353535353535353535353535353535353535353534e4d4841392f251a0f04000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f0004101c2834404a5463707d89959f978f81796d68605d5553514b4e4d4c4c4c4c4d4d4e54606d7a87939f9286796c5f5346392c20130006121f2b3844505c66727f8c969d938d80776e6963605b5458575758555d60646c717b85929f998f8275675d5145392c201306000004101c2934404b55606c77828f97a19892877e756e69615f575654524d514b515455535b6063696e757e869298a1968d81746a5f5347392f24180c000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f02000000000000000815222f3b4855626e7c8692999e938f837c746e696562605d5d606264686d737b828d929c9c928b7e71695e52463d32271b0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2630383f44464c51514c46443f382f262730394045464d51514b4a463f372d24242d363f454a4b51514d4745403931271d0b0200000000030e18212a31373a3b4646464646464646464646464646464646464646464646464646464642403d372f271d130900000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f0006121f2c3844515c6675828e9b9e91847a6d675e56514b4745404140403f3f3f40414754606d7a87939f9286796c5f5346392c2013000713202d3a4653606d7884919e978e81746c655f5753504a4b4b4b4b4b51545a6169717e8a969f92867a6d6053473a2d201407000006131f2c3845515c67717e8b949f9992867d716c615e57534d494746414541454749495053575f616c707d86929f9f93877b6e62554b4035291d10040000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f02000000000000000d1a2734404d5a6773808a9197938f81796f6a615e57555451515355565d60696e77808d929c9f92857b6e61584e43372b1e1408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e262e34383a3f44443f3938332d261d1e272e34383a4044443f3d3a342d251b1b242d343a3d3e4444403a38342f271f150b000000000000060f1820262b2e2f393939393939393939393939393939393939393939393939393939393534312c251d150b0100000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000713202d3a4653606d7885929f988a7e71685d554c45403a39352f3333323232333a4754606d7a87939f9286796c5f5346392c2013000a1623303d495663707d89969e92857a6d605b534d46443f3f3e3e3f4145475057606c7884919e988a7d7064574a3d3124170a00000714202d3a4753606d7984919e9f93877d706b625a534d46423d3b39363035393a3c3f44464d535a616a717e8b949f998e8174675d5145382c1f13060000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f02000000000000000d1926323f4b58636e737e848e8f81786d675f58534d4947454547484c52575e656c73808d939e978f82756a6054473b3025190d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c141c23282b2d333737332d2b28221c14151d23282c2d33383732312e29231b13121b22292e31323738332d2c29231d150d0300000000000000060e151a1e21222d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d282724201a130b030000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000916232f3c4956626f7c89989f9285796d60564c433a352f2c292427262525262d3a4754606d7a87939f9286796c5f5346392c2013000d1a2633404d596673808c98988c8073675d5149413b38332d31312f35393e44505b6674818d9a998c7f7266594c3f3326190c0005111d2a36414c5664717e8b96a1968d80736c61595046423b37312e2d2a25292c2d2d33373b42465058616c76828f9c9f9285796d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f02000000000000000a17232f3b47525c636c717a8184796d665d554e46423c3a39393a3c41454d535b606c77818e979e93897c6f62564c41362a1e110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171c1f20262b2b26201f1c17110a0b12181c1f20272b2a2524221d1811090911181d2124252a2b27201f1c18120b0300000000000000000003090e121415202020202020202020202020202020202020202020202020202020201b1b18140f0901000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000b1825323e4b5865717e8b989b8e8175675c51443a302924201d181a191919212d3a4754606d7a87939f9286796c5f5346392c2013000f1c2835424f5b6875818b8b8b897c6f63554b41382f2b2822242424292c333f4a5466737f8c999a8d8074675a4d4134271a0e000713202d3946525e687683909c9e9184796d60594f473f36312b2621201e191d202122272b31363e46505a63707d8997a1988a7d7064574a3d312417060000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f020000000000000007131f2a36404a525a61686d74796d675d544b433c36312d2c2c2d2f353b4149505b656d7a85919e9c8f8275685e5246392d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b101213191e1e1913120f0b060000070c1013131a1e1e181815120c060000060c111517181e1e1a1413100c070100000000000000000000000002060808131313131313131313131313131313131313131313131313131313130f0e0c08040000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000d1a2733404d5a6673808d99998c7f7266554b4032281e1813110d070d0c14212d3a4754606d7a87939f9286796c5f5346392c2013000a1724313d4a5764707d7f7f7f7f796d6053463a2f261f1c1718171b2129323f4c5865727f8b989b8e8174685b4e4135281b0e000714212e3a4754616d7a87939f988b7e72675c51473e352a251f1a1414110e111314171b1f262a343e4653606c7885919e9a8d8073675a4d402d22170b0000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f0200000000000000020e19242e38404850565d60676d675d554b4239312a2521201f2024292f383f49535e68727e8b969f93877a6e6154473b2e21140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306070c11110c0606030000000000000406070d11110c0b090601000000000105090b0b11110d070604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000e1b2834414e5b6774818e9a978b7e7164584b3e2e25160c07040100000714212d3a4754606d7a87939f9286796c5f5346392c2013000a1623303c4955616c70727272726d675c5145382c1d14141a1b22272b333b444f596773808d9a9a8d8073675a4d4034271a0d000b1724313e4a5764717d8a9a9f92867a6d60554b40352c231a140e090705020406060b0f141a222b3744505b6575818e9b9c9083766953493f33271b0f0300000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f02000000000000000008121c262e363e444c52555c605c554b433a30271f1a14131314191d262d38414c56606d7984919e998b7f7265584c3f3025190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105070706060300000000000104060707060401000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000f1b2835424e5b6875818e9b968a7d7063574a3d3024170a00000000000714212d3a4754606d7a87939f9286796c5f5346392c2013000814202d3944505a616465656565605c554b4034281c1e20252a2d33373e454d56606b7683909d988c7f7265594c3f3226190c000d1a2633404d596673808c93938f8276675d5143392f231a110903000000000000000003090f1b27333f495366737f8c999e918578655b5044372b1f120500000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f020000000000000000000a141c242c323a41454b5153514b433a31281e150d090606080b141b262f3a45515c6673808d9a9c8f827569564c41362a1d1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030607090c0e101212131312110f0d0a070604010000000000000000000000000000000000000000000000000000000000000002080d11131413120f0b060001070d1013141413100d070100000000000000000000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000f1c2835424f5b6875818e9b96897d7063564a3d3023170a00000000000714212d3a4754606d7a87939f9286796c5f5346392c20130004101c28333e485055575858585853514b43392e23252a2d3136383f444650575e686f7c89959f97897c6f6356493c30231609000e1b2834414e5b67748186868686807366554b4031271d11080000000000000000000000000b17222d3e4b5864717e8b979f9386786c605346392d20130600000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f02000000000000000000020a121a20282f353940454745403931281f160c0300000000020a141d2834404b54636f7c89999e918578685e5246392d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b10121316191b1d1e1f201f1f1e1c1a171413100d070300000000000000000000000000000000000000000000000000000000050c13191d2021201f1c17110a0c12181d202020201d18120c04000000000000000000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000f1c2835424f5b6875828e9b96897d7063564a3d3023170a00000000000714212d3a4754606d7a87939f9286796c5f5346392c201300000b17222c363e44494a4c4c4c4c46454039302a2d30363a3b42464950535a61696e7a84919e9e9285796d6053463a2d201307000613202d394653606c7879797979786c6053463a2f20150b00000000000000000000000000061724313e4a5764717d8a97a49a867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f020000000000000000000000080d161e24292f34383a38342f271f160d04000000000000020b18232e3a4753606d7a86939f97877a6d6154473a2e21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f11171c1f202226282a2b2c2c2c2c2a29262420201d18120f0b0600000000000000000000000000000000000000000000000001080e171e252a2d2e2d2b28221c14161d24292c2d2d2c29241d160d060000000000000000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000f1c2835424f5b6875828e9b96897d7063564a3d3023170a00000000000714212d3a4754606d7a87939f9286796c5f5346392c2013000005101a242c33393c3d3f3f3f3f3a38342e3036393b4246474d53535b60636c717b849196a0968d8073665c5145382c1f13060006121f2b3844505b666c6d6d6d6d6c655b5044372b1f1203000000000000000000000000020b1425313e4b5864717e8b97a399877a6d6054473a2d21140700000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f02000000000000000000000000040c13191d23292c2d2c29231d150d0400000000000000000713202c3945515d677884919e95887b6e6255483b2f2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b10161b1c23282b2d2f3235363839393938373533302d2c29241f1b17110a02000000000000000000000000000000000000000000040c131920293036393a3938332d261d1f282f35393a3a39352f281f18100900000000000000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000f1c2835424f5b6875828e9b96897d7063564a3d3023170a00000000000714212d3a4754606d7a87939f9286796c5f5346392c201300000008121a22282d3031323232322d2e34383a4146474d5254575e61656c70767e859196a0989184796d60544b4034281c100400030f1c28333f4a545b6060606060605b53493f33271b0f030000000000000000000000030b141d28343f4a5465727f8c989f9286796c605346392d20130600000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f020000000000000000000000000001080d12181c1f201f1c18120b0300000000000000000004111d2935404b556a7784909d96897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d161b21272c2e34383a3c3f414345454646454442403d3a39352f2b27221b140b0902000000000000000000000000000000000000040d161e2429323a41464746443f382f2628313940454747454039312a221b1209000000000000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000f1c2835424f5b6875828e9b96897d7063564a3d3023170a00000000000714212d3a4754606d7a87939f9286796c5f5346392c2013000000000810171c2023242525272f35383f44464c5254565e6165696e72787d838a9197a09892867d6f675d5142392e23180c0000000b17222d38424a50535353535353504941382d22170b00000000000000000000030a0d151d262f3844505c6675818e9b9e928578655b5044372b1f120500000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f0200000000000000000000000000000001070c10131413100c07010000000000000000000004101c2834404b546a7783909d96897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c121821272c3238383f4446494c4e505152535252514f4d4a4745403937332d261d19140d0500000000000000000000000000000000030c1620282f353e444c525453504a42382d2f39434b515353514b433c342d241b12090000000000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000f1c2835424f5b6875828e9b96897d7063564a3d3023170a00000000000714212d3a4754606d7a87939f9286796c5f5346392c20130000000000050b1014151c2328313940454a5053565e6165696e72767b7f848a90949e9f9791867d706b60554b4030271d120700000006111c262f383f44464646464646443f382f261b11060000000000000000060b0f151b1f272f38414b55606d7984919e9c9083766953493f33271b0f0300000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f0200000000000000000000000000000000000004060706040000000000000000000000000006131f2c3845515c667784919e95887b6f6255483c2f22150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d161d242932383d43484a505355595b5d5e5f5f5f5f5d5c595753514b46443f382f2a251f170e070000000000000000000000000000000b151e28323a414550565e61605b544a3f3335404b555d60605d554e463e362d241b110600000000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000f1c2835424f5b6875828e9b96897d7063564a3d3023170a000205060b0f14212d3a4754606d7a87939f9286796c5f5346392c2013000000000000030c151e272e343e434b51545c6064686d72767b7f83878c91969c9f9a938e857d706b61594f433a2f1e150b00000000000a141d262d3338393a3a3a3a3937332d261d140a00000000000004080e11171c1f262b31394149535d67717e8a97a1998d8073665a4d402d22170b0000000000000000000000000404040404040404040404040404040404040c1825323f4b5865727e8b989b8e8175685b4e4235281b0f020000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7986929f97877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171f282f353d44484f54545c60626568696b6c6c6c6b6a686663605d55535049413e363029201911080000000000000000000000000007121d27303a444c525a61686d6c665b50443c3b45515d676d6d675f5850483f362d22180c01000000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000f1c2835424f5b6875818e9b968a7d7063574a3d30241708090e1214171c1f232d3a4754606d7a87939f9286796c5f5346392c20130000000000000b151e273039404450555d60666d70757a7f83878b90939a9e9e99928e87817a6f6b61594f463d31281d0c030000000000020b141c22282b2d2d2d2d2d2d2b27221b140b0200000003070c1014191c22282b31373d434b535b656d7984919ea095897c6f6356493c302316060000000000000002060a0c0d101010101010101010101010101010101010101825323f4b5865727e8b989b8e8175685b4e4235281b0f020000000000000000000000000000000000000000000000000000000000000000000001070f1b27333f4953626f7c88999f928578695e52463a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e172029313940454f54596063666d6f7274767878797978777573706d6763605b535046423b322b231a11080000000000000000000000000c18232e39424c565d606c717a786c60574d4245505a606d797a6f6a625a50483f34291d1105000000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000f1b2835424e5b6875818e9b978a7e7164574b3e2e23191a1a1a1e2022282b2e343a4754606d7a87939f9286796c5f5346392c2013000000000007121c273039424a515a61676d72787d82868b90939a9c9f9b96918c87817c756d6860594f473e342b1f160c00000000000000020a11171c1f2020202020201f1b17110a020000060b0f12181c1f252a2d33383c43474f555d656c77818e96a09d9083776b6054483b2f221509000000000000070d121619191d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d25323f4b5865727e8b989b8e8175685b4e4235281b0d07000000000000000000000000000000000000000000000003040404040404000004060b1318242b3744505b65737f8c999c8f827669564d42362a1e110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c172029323b434b515960636b6f74797c7f818384858685858482807d7a75706c65615a524d443d352c231a10070000000000000000000004101c2834404b545d686d757e857f72695f544a4d57616c7481847c716c625a50453a2e211509000000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000e1b2734414e5a6774818d9a988b7f7265544a3f3429242627252a2d2d3338393f444754606d7a87939f9286796c5f5346392c201300000000000c18232e39424a545c606c71797f848a8f92999c9f9b98928e8984807b756f6a615e564f473e352c22190d04000000000000000000060b0f12131313131313120f0b060003090e11171b1f23282c3036383f44464e535960676d77808d939e9e948a7e7164594f44382c20130700000000010a12191e2325262a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a323f4b5865727e8b989b8e8175685b4e4235281e19120a0100000000000000000000000000000000000104060710101010101010070c1013171d242935404b55606c7884919d998c7f7366594c403025190e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e29333b444c555d606b70767c8185888c8e909192929292908f8c8a86827d78706c615e564f473e352c22190c0300000000000000000006131f2c3845515c666d7a818a92867b6e665c50545e69717e8a91867e716d62564a3d3124170b000000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000c1926333f4c5966727f8c999b8e8175665c50443b3530333430363a3b3f44464a505357606d7a87939f9286796c5f5346392c20130000000004101c2834404a545c666d747e848c91969b9f9c98928e8a85817d78736e69625f58524c443d352c231a10070000000000000000000000000306060707070706050300060b10141a1b22272b2e34383b41464a5053585f626b6f79818d929da1968f82756c6155473d32271b0f03000000000a131c232a2f3233373737373737373737373737373737373737373737373f4b5865727e8b989b8e8175685b4e42352f2a231c130a00000000000000000000000000000001070d1113141c1d1d1d1d1d1d1d181c1f23282f353f45515d67717e8a969f94887b6e6155483b2e2215090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27303b454d565e676d747d83898d9297989b9c9e9e9d9d9e9d9b9998928f8a837d766e6960594f473e342a1e150b0000000000000000000713202d3a4653606d79848e93989083786d60585c666e7b859298928b7e7165584b3e3225180b000000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000a1724313d4a5764707d8a9a9e9184796d60564d4641414040414246484a5053545c6063696e7a87939f9286796c5f5346392c2013000000040e18222c3844515c666d78808a91979e9f9a938f8a86827d7975706c66615e57534e46413a322b231a110800000000000000000000000000000000000000000001080d11171c1f252a2d3337394045464d52545b60636a6f757d848e939da19791847b6e615a5045352b21160b0000000007121c252e353b3e4043434343434343434343434343434343434343434343434b5865727e8b989b8e8175685b4e423e3b352e251c0c0300000000000000000000000000040c13181d2021292a2a2a2a2a2a2a23282c2e343a4045515b606d7984919e9c908376695f53463a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e39434d575e686e79818990949a9e9d99999392919091929299989c9f9b95908a827b706b61594f463c30271d1207000000000000000006131f2c3845515c66727f8c949f958c7f726a5f606d788290979991847a6d6054473a2d211407000000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000814212e3b4754616e7a87939f978a7e71685e57524c4d4d4d4e4d5254545b6063666d70757b808d9a9f9286796c5f5246392c1f130000000a15202c38444f59606d78818d929e9e98928d87827e7975716d6763605b54524d47433c36302820191108000000000000000000000000000000000000000001070d13191c23282b3136383f44464b5153565e61666c70767c828991969e9f9791857c6f695e52483e3423190f04000000020d19232e3740464b4c5050505050505050505050505050505050505050505050505865727e8b989b8e8175685b504c4b4640372e1e150a000000000000000000000000040d161d24292c2d36373737373737372e34383a3f444b515b626d74808d969f94897d7063574d42362a1e120500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b555e696e7a838d929c9f9c95918c8986858483848586898b8f949a9f9d948f857d706b61584e43392e23180c010000000000000004101c2834404b54606c77828f979f92867c6f666a737f8c949f92877c6f675d5145392c201306000000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000714202d3946525e687783909d9e91847a6e69615d565a595a5b575e6164666c7074797d82878d929d9f9285786c5f5245392c1f120000030f1b26313c4855616b74808d939d9f938e86817b76716d6764605d5553504a46423b37322a251e160e070000000000000000000000000000000000000000040c12181e24292e34383b4246495053555c6064686e72787d82888f939ea09f9590857c6f6a5f564d42362c2211070000000006121e2a3540495157595d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d65727e8b989b8e8175685d5d595751494030261c110600000000000000000000010c161f282f35393a4343434343434343434045464a50555d606d727f8b929d989083766b6054453b31261a0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d17212c3845515c676e7b8490959d9f949089847f7d7a7877777778797c7f82888e939a9e9792867d706a5f554b4034281d120700000000000000000c18232e3944505b656e7a85929e999083786d6f7c87929f948c7f726a60554c4135291d1104000000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f0005111e2a36414c5665717e8b96a09690837b726d68686766676869696e7174797c81858a8f939a9ca49e9285786b5f5245382c1f12000006121f2b37434e5863707d8a929d98928a817b746e6964605d5553514b46443f3836302b262019130c050000000000000000000000000000000000000000060d161d24292f35383f44464d53535b6063676d71757b7f848a8f949b9e9f98928c837b6f6a5f584e443b30241a1000000000000a16232f3b46515b63666a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a727e8b989b8e81756a6a6a66635b5142382e23170c0000000000000000000007131d28313a4145474f50505050505050504b5153545c60676d747f87939f9f92867c6e62594f44332a1f140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2b37434e58606d79839096a098928c837d7873706d676b6a6a666d6f72767b81889196a09892867c6f675c5145392f24180c00000000000000040c131d27333f49535e68707d8a929d958c807379849199978f82786c60584e433a2f2419110a020000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f00010d1925303b4653606d79849199a09590857f7a77747473737476787b7e8185898d929798928d929c9e9184776b5e5144382b1e1100000815212e3a47535f6a7783909d9f92867e746e69615f5753514b4745403938332d2a251f1b150d080200000000000000000000000000000000000000030a11171f282f353a41454a5053575e61656c6f74797d82868c91969c9f9f99928e8680786e695f584e463c32291f120900000000000c1925323e4b57636d737676767676767676767676767676767676767676767676767676767e8b989b8e8176767676736d63544a3f34281c10030000000000000000010d18242f3a434b51545c5d5d5d5d5d5d5d5d555c6063666d7179818b93999d938c7f726a5f53473d3321180e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25313b47535f6a74808d959f9892867f78706c6563605d555d545c6062656a6e747d849095a0989183796d60554b4035291d10040000000000040d161d24292d38414c56616b74808d959f92877c818e969e92857a6e665b50463d312b27221b140b0200000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000008141f2c3845515c67707d87929aa097928c868481808080818385878a8e91979a9b938f86808d999d9083776a5d5044372a1d1100000915222f3c4855626f7c8895a0958b7e716c615e57534d4745403a38352f2b28221c1a140f0a040000000000000000000000000000000000000000040c151c2328313940454c51545c6064696e73787c81858a8f92999e9f9d97928d86817b736d665e574e463c342a20170d0000000000000d192633404c5966737f83838383838383838383838383838383838383838383838383838384919e9e9285838383837f73665c5044382c1f1207000000000000000004111d2935414b555d60696a6a6a6a6a6a6a6a6a676d6f73787e848e939f9d948e81746d62584e43352b210f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d57626f7c87939f9992867d726c66605b5353514b504a515356575f626b707a839096a0958c7f72675d5145382c1f130600000000010c161f282f35393b41464f59606d798390989992858e939d928a7d70685e544a443f3937332d261d140a00000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000004101c2834404b55606b717f8892989f9e9993908e8d8c8d8e8f9197979a9d99938f89827b7c88959c8f8275695c4f4236291c0f00000c1926323f4c5965727f8c989d9083776c625a524d46423c39352f2c29241f1c171514120e090200000000000000000000000000000000000000040d161e262e343e434b51555d60666d70767b8084898d92979c9f9e9a95908b85807b746e69605c544d453c342a22180e050000000000000815222e3b4855616e7b8690909090909090909090909090909090909090909090909090909196a0a197929090909085796d6053463a2e23180c00000000000000000613202c3945515d676d7676767676767676767678797c80848b91969d9f938e82786d605b51463c31231a0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a46535e6976828f999f92877d706b605b54504947454044404446494e535960686e7a84919e9e9285796d6053473a2d2014090000000007131d28313a4145474d5254585f676f7c86929f9792979e978d80746b605d5553504a46443f382f261b1106000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f0000000c18232e39434f59626c717e858e92989b9e9d9b9a999a9b9c9d9a9795908c87827c75707d89969a8d8074675a4d4134271a0e00020e1b2835414e5b6874818e9b998c7f72665a5046423b37312c29241f1d1c20222321201e1a140d050000000000000000000000000000000000030c161f2830383f4450555d60676d72787d82878c91969a9f9f9b97928d88837e79746e69615e57504a423b332a22181006000000000000000714212d3a46535f6973808d979d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9ea0a8a9a19e9d9d9d97897d7063554b4034281c1004000000000000000714212d3a4754606d7a828383838383838383838486898d91969e9e98928b81786d665c50493f332a201108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b87939f988d80746b6159504a443f3a39352f34383a3c42474f565e68707d8a949f978a7e7164574a3e31251a0e020000010d18242f3a434b5154565e61656a6e7377818e9aa19ea19e92857a75716d6763605c5453504941382d22170b000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f00000007121d27303d47505a626c707a81868b8f91939a9595949792908d8b87837f7b756f6b73808c99988b7f7265584c3f3225190c0003101d293643505c6976838f9c978a7d7164574a3f36302b261f1d181d1f272c2f302e2d2a251f170f05000000000000000000000000000000000b151e283139424a505a61676d737a7f848a8f939a9e9f9c98928e8985807c77716d67615e57534d443f38302921181006000000000000000005121e2b37424d57606d7a85929ea7aaa29f96959595959595959595959595959595959595999ca4a69e9c959595958e8174675c5145382c1f1306000000000000000613202c3945515d67727e8b9090909090909090919299999e9f9b948f867f746d665c544a3f372d21180e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c9a9f92857a6d61594f443f38332d2c2924282c2d31373d444d56616c7683909c9b8e827568574d42362a1e1205000004111d2935414b555d6064686e72777b80848e929da9abada1979286827e7975706d6663605b53493f33271b0f030000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000000000b151e2b353f48505a61686e747a7f82848687888887878583817e7b77726e69636b7683909d99897c6f6356493c302316090003101c2936434f5c6976828f9c978a7d7064574a3d322b2624232424292c32383b3d3b3a36302921170d02000000000000000000000000000007121c273039434b545c606c70797f858c91969c9f9d99928f8a85817d79736f6a65605d55534d46423b342e261e170f06000000000000000000020e1a26313c45525d68727f8b95a0a29892898888888888888888888888888888888888888c929c9e948f888888888885796d6053463a2d2013070000000000000004111d2935414b55626d76828f989d9d9d9d9d9d9e9f9d9b99928f89827b726d605c544a42382e251b0f060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d576976838f9c9a8d8074685e52473e332d2722201d181c1f20262b323b444f5964717e8a999e928578695e53463a2d21140700000613202c3945515d676d71767b7f83888d91969f9fa2aaaaa29f98928f8a85817d7974706c655b5044372b1f12050000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f00000000030c19232d363f4850565e61686d7275787a7b7b7b7b7a787774716e6966615e666f7c89959f92867a6d6053473a2d20140700020e1b2835414e5b6874818e9b988b7f7265584e443c37313130302f35383d4448494846423b33291f140900000000000000000000000000000c18232e39424b555d666d747d848c92979e9f9b95908c86827e7974706d66625f5853514b46423b363128231c150c05000000000000000000000009141f2935414c56606d7883919d9f92867d7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b808c999c8f827c7b7b7b7b7c796d6053463a2d20130700000000000000010d18242f3a43515b616e7b85929fa6aca49f969993918e8b86827c756e69625b504a423830261c130900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a46535e697885929f998a7d7063564c413528221c1713100d1012131a2029323e4754616d7a86939f97877b6e6154483b2e21150800000714212d3a4754606d7a7e82878c9095999e9a939298a2a29892989c9b98928e8a85817d776c605346392d2013060000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000000000007111b242d363e444c52565e616568676d6e6e6f6e6d686a6764615e575c606d7882909c9b8f8275675d5145392c20130600000c1925323f4c5865727f8b989c8f82766a5f564e47433e3d3d3d3e4045474f545654524d453b30251a0e0000000000000000000000000004101c2834404a545d676d78808a91979f9f99928e89847f7a75716d6763605c54534e4745403936312a251f17110a03000000000000000000000000030d19242f3a44505c66707d89949e988c80736f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f727e8b989b8e81756f6f6f6f6f6d675c5145382c1f1306000000000000000007131d28313f46525e69717e8b949ea49a938a878684817e7a756f6a615f5751443f3830261e150a0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b87979f92867a6d6053473a302017110b0604010406090e17202d3946525d687783909d96897c706356493d3023160a00000f1c2935424f5c6875828b8f93999d9b96918c8686929f9f92868a8f93999e9b97928d897e7164574a3e3124170b0000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f00000000000009121b242c323b41464c525458555d6061626261605d565a58555d60666d73808d949e93897d7063554b4035291d100400000815222e3b4855616e7b88949f93877c6f685f58534e4b4a494a4b4b5153596063615e574d42362a1d12070000000000000000000000040f19222c3844515c666d79828d929e9f99938e86817c77726d6864605d5553504a47433c39352f2a251f1a140c0600000000000000000000000000000008131e28343f4a54606b75828f999f92867b6e626262626262626262626262626265727e8b989b8e81756862626262605c554b4034281c10040000000000000000010c161f2a36424d57626c75828f979f93867d7a797775716d68626058534d453f342e261e150c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c89959e918478675d5145392c1f13060000000000000005111d2935414c566875828e9b978b7e7164584b3e3125180b00000b1724313e4a5764717d8a979d98928e8984807b828f9b94887b7e82878c91969a9e9285796d6053463a2d2013070000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f0000000000000009111a202930363a4146474b4b51535455565e616162636466676d7178808c929c958e81756b605443392f24180d0100000714212d3a46535f6976828f9a9991847a6f6a625f585857565757555d60646b706e695e5246392e23180c00000000000000000000000a16212c38444f59606d78828f949d9d949087817b756f6b65615e5653514b46443f3837312c29241d1a140e090300000000000000000000000000000000010b17232e38424f59626e7c87929f988e81746a5f55555555555555555555555865727e8b989b8e8175685b55555553514b43392e23180c00000000000000000000040d1a25303b45505a616e7b85929f9a9083786d666865615e56544e46423b3328231c150c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d89969d9083776a554b4035291d100400000000000000010d192430414e5a6774818d9a988b7e7265584b3f3225180c00000713202d3a4653606d798592908b86817d787375828f9b94877a71767b7f84898e928d8073665c5145382c1f13060000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f0000000000000000080e171e252a3036393a3f40454748525e686d6e6e6f717376797e838c929c9590837a6d60594f4431281d120700000005121e2a36424d57626f7c87939f9691847c746f6a67656463636466676d71767c7b6e61544b4034281c1004000000000000000000030f1b27323c4855606b74818d949f9c938e827c746e6863605954524c4745403a38342e2b26201d18120e09030000000000000000000000000000000000000006111c26303d47535f6a74808d979f92877b6e62594f48484848484848484b5865727e8b989b8e8175685b4e48484645403930271d1207000000000000000000000009141f29333f46525e69717e8b949e958c7f726a5f5454524c47433d3631292117110a0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724313d4a5764707d8a979c8f8276695c4f432f24180c000000000000000000081a2633404d596673808c99988c7f7265594c3f3226190c000006131f2c3845515c66748088837e7a75706c6675828f9b94877a6e696e72777c8185877b6e61544b4034281c10040000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000000000000000000050d14191e252a2d2e2f35383a4754616d7a7a7b7c7e8082868a90959e938e837a6e685d52473d321f160c01000000020e1a26313b4854606a74808d949e969187817c777471707070717375797d82898073665c5145382c1f130600000000000000000007131f2c38434f5963707d89929d9c918c81786f6a615e56544f4746413a39352f2c28231c1b15100d0701000000000000000000000000000000000000000000000a141e2b37434e58616d7a85929f998f82756b6054483e3c3c3c3c3c3f4b5865727e8b989b8e8175685b4e423c3a38342e271e150b000000000000000000000000030d17212a36424d57626c75828f979f92867c6e665c5046413a37322a261f170f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c070000000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c000004101c2834404b54616e7b7b76726d6863606875828f9b94877a6e6161666b6f74797d70695e5342392e23180c000000000000000000000000030b1825323e4b5865717e8b989b8e8275685b4f4235281c0f0000000000000000000002080e13191e202124293946535f6c79878788898a8c8f92989b96918a81796e685e564c41352b210d04000000000009141f2c38434e58606d79828f939f99938e8884817e7d7c7d7e8082858a8f9285796d6053463a2d2013070000000000000000000915222f3b4854606b7783909d9d938c7f746d665f58524d48433d3936302c29241f1c17110f0a0401000000000000000000000000000000000000000000000000020c1a26313c46525e68727f8c969e93897c6f635a5042382e2f2f323f4b5865727e8b989b8e8175685b4e42352d2c28231d150c0300000000000000000000000000050f1a25303b45505a616e7b85929f989083786d60584e42382e27201a140d0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c0000000c18232e3946535e696e6e6a65605d565c6875828f9b94877a6e6154596063676d706b60574d4230271d120700000000000000000000060b10121825323e4b5865717e8b989b8e8275685b4f4235281c0f00000000000000000000000002080d111314182b3845525e6b788591959697999797928e8a847e756d675e564c443a3023190f000000000000030f1b27323d45515c676d79818b92989f9b95908d8b8a898a8a8c8f92989c978a7e7164574b3e3124180b000000000000000000091623303c4956636f7c8995a0988e81746d605c544e46413b38322d2a251f1d1812100c0600000000000000000000000000000000000000000000000000000000000915202935414c56606d7984919e9d9083766c61544a3f342825323f4b5865727e8b989b8e8175685b4e4235281f1c18120b0300000000000000000000000000000009141f29333e46525e68717e8a939e958c7f726a5f544a3f34281e140a030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000007121d2a36424d575e61625f5854524c5c6875828f9b94877a6e61544f54555d606360594f453b311e150b000000000000000000020a11171c1f2025323e4b5865717e8b989b8e8275685b4f4235281c0f0000000000000000000000000000010507071e2b3744515e6a778490908f8e8c8a8885827d78716c605d554c443b32281e1107000000000000000a16212834404b555d676d777f858d92989a9d9a9897969697999c9b99928e898073675a4d4034271a0d0100000000000000010d1a2734404d5a6773808d9a9f92857a6d615b504a423c36302c27201e1913100c070300000000000000000000000000000000000000000000000000000000000000030d1925303a44515c66707d8a949f958a7d71665c50443a2f24323f4b5865727e8b989b8e8175685b4e4235281b100c070000000000000000000000000000000000020d17202a36414d56616c75828f979f92867c6e665c50443c30261c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c000000000e1a25313b454d535455534e47454f5c6875828f9b94877a6e615447484b515356544f473d33291f0c030000000000000000020c141c23282b2d2b323e4b5865717e8b989b8e8275685b4f4235281c0f00000000000000000000000000000000010e1b2834414e5b677481838382817f7e7b7975706d66615a514b433b322920160c0000000000000000040c18232e39434b555d656c727b80858a8e9092989495949992908e8b86827c736e64584c3f3326190d000000000000000003101d2a3643505d697683909c9a8e8174685d52443f38302a251f1b16110d0804000000000000000000000000000000000000000000000000000000000000000000000008131e2834404a54616c76828f999d9184786d60554b403529323f4b5865727e8b989b8e8175685b4e4235281b0f0000000000000000000000000000000000000000050e1925303b44505a616d7a85929e989083786d60584e42382e23170c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c0000000009141f29333b4246484847433c424f5c6875828f9b94877a6e6154473b4045474948443d352b21170d0000000000000000000a141e262e34383a38343e4b5865717e8b989b8e8275685b4f4235281c0f00000000000000000000000000000000010e1a2733404c59646f747676757473716f6c6664605c545045403a312920170e0400000000000000000007121d273039434b535b60696e747a7d81838587878887878684817e7a756f6b645c52473b3023170b000000000000000004101c2834404b556b7885929e978a7d7164564c41342e261e19140f0a050100000000000000000000000000000000000000000000000000000000000000000000000000020c18232e3942505a626f7c87939f968b7e72675d51453b30323f4b5865727e8b989b8e8175685b4e4235281b0f02000000000000000000000000000000000000000008141f29323e46525e68717e8a939e958c7f726a5f544a3f34281e150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000030d17212931363a3b3b3a3731424f5c6875828f9393877a6e6154473b35383a3d3b38322b23190f05000000000000000006111c2630383f4446443f3e4b5865717e8b989b8e8275685b4f4235281c0f00000000000000000000000000000000000b1824303c48535d64676a696867666462605b5453504a423e352f281f170e0500000000000000000000000b151e273139414950565e61676d717477797a7b7b7b7a797774716d68636059524a40362b1f1307000000000000000006131f2c3845515c677986929f95897c6f6256493c30231c150c0802000000000000000000010406070b0a080500000000000000000000000000000000000000000000000007121c27303e47535f6a74818e989e9185796d60564c4136323f4b5865727e8b989b8e8175685b4e4235281b0f020000000000000000000000000000000000000000020d17202a36414c56616c75818e979f92867c6e665c50443c30261c1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c0000000000050f171f252a2d2e2f2e2b35424f5c687581868686867a6e6154473b2e2c2d302f2c27211911070000000000000000000b17232e38424a5053504a474b5865717e8b989b8e8275685b4f4235281c0f00000000000000000000000000000000000814202b36414b53595b5d5d5c5b59575553504a46443f383029241d160d05000000000000000000000000030c151f272f383f444d52555d6064676a686d6e6e6e6d6d666864615e56544f4740382e24190e0300000000000000000713202d3a4653606d798698a395887c6f6255493c2f22160a0300000000000000000003070d111314181715110c0600000000000000000000000000000000000000000000000b151e2b37434e58616e7a85929f978c8073685e52463c313f4b5865727e8b989b8e8175685b4e4235281b0f02000000000000000000000000000000000000000000050e1925303a44505a616d7a85929e989083786d60584e42382e23170c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c000000000000050d141a1e212122212834414d59656f757979797976685e5246392d20202322201c160f0700000000000000000003101c28343f4a545c605c5454525865717e8b989b8e8275685b4f4235281c0f0000000000000000000000000000000000030f1a252f3841484c4e50504f4e4c4b4846443f3a38342e261e18130c040000000000000000000000000000030d151d262d333b42464b5154575b565d6061626161605c545854524c48433d342e261c120800000000000000000006131f2c3845515c677986929f96897c706356493d31261b140f0b060706060707060b0f13181d20212524211d17100900000000000000000000000000000000000000000000030c1b26313c46525e68727f8c969f92867a6e61574d42373f4b5865727e8b989b8e8175685b4e4235281b0f020000000000000000000000000000000000000000010008131e29323e46525e68707e8a939e958c7f726a5f544a3f34281e150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c0000000000000003090e121415151425313d49545d65686c6c6c6c6c5e564c41362a1e14161613100b050000000000000000000006121f2b3844505c666d6665615e5665717e8b989b8e8275685b4f4235281c0f00000000000000000000000000000000000008131d262f363c404143434241403e3c3938332d2b28231c140c070100000000000000000000000000000000030b141b222730363a4145474a4e4c52545455545453504a4b4746413a38322b221c140a0100000000000000000004101c2834404b556b7784919e988b7f7265574d42362d261f1c1715141312131415171c1f24292c2d31302d28221b1209000000000000000000000000000000000000000000000a15202a36414c56606d7984919e988d8174695f53473d3f4b5865727e8b989b8e8175685b4e4235281b0f020000000000000000000000000000000003080b0d0e13130d17202a36414c56616c75818e979f92867c6f665c50443c30261c110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c000000000000000000020507080815212c37424b54595c606060605f524c443b3025190e0a090704000000000000000000000004111d2935414c56606d7876726e686265717e8b989b8e8275685b4f4235281c0f000000000000000000000000000000000000010b141d252b3033343736353433312f2d2b28221f1c17110a0200000000000000000000000000000000000000020a11171f252a2f35393a3e414145474848484746443f3e3a3935302c272119100a0200000000000000000000000c18232e424f5b6875818e9b9c8f8275695f53463f382f2b28222121201f20212222282b2f35393a3e3d39342d241b0f06000000000000000000000000000000000000000000040d1925303b45515c67717e8a949f92877b6e62584e433f4b5865727e8b989b8e8175685b4e4235281b0f02000000000000000000000000000001080e14171a1b1f1f1f1f1925303a44505a616d7a85919e999083786d60584e42382e23170c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c0000000000000000000000000004101b26303942494d4f535353535346413b32291e14080000000000000000000000000000000713202c3945525d687783837f7b746e6a717e8b989b8e8275685b4f4235281c0f00000000000000000000000000000000000000020b131a202427282a2a2928262422201f1c1712100b060000000000000000000000000000000000000000000000060b14191d24292c2d313035393a3b3b3b3a3a38342e2e2d29251e1b160f0700000000000000000000000000071825323e4b5865717e8b989f92877b6e615b5049413c38332d2e2d2d2c2d2d2e2d33383a4145474b49453e362d21180e0300000000000000000000000000000000000000000008141e2834404b55616c7683909a998e82756a6054483f4b5865727e8b989b8e8175685b4e4235281b0f0200000000000000000000000000020b131a1f2426272c2c2c2c2c2c28323e46525d68707d8a939e958c7f726a5f544a3f34281e150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c000000000000000000000000000009141e2730373d4142464646463b3936302920170d020000000000000000000000000000000714212d3a4754606d7a87908c86817b73717e8b989b8e8275685b4f4235281c0f000000000000000000000000000000000000000001080f14181a1b1d1d1c1b19181513120f0b0603000000000000000000000000000000000000000000000000000002090e13181d20212424292c2d2e2f2e2e2d2b282321201d19130f0a0400000000000000000000000000000714212d3a4754606d7a86929f998f82756d605b534e46443f3d3b3a39383a3a3b3d3f44464b5154585650483e332a201509000000000000000000000000000000000000000000020c18232e3943505a626f7c87939f93897c6f62594f424b5865727e8b989b8e8175685b4e4235281b0f02000000000000000000000000010b141d242b303334393939393939393935414c56616c75818e969f92867c6f665c50443c30261c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c0000000000000000000000000000020c151e262c313435393939392e2d2a251e170e05000000000000000000000000000000000a1724313d4a5764707d8a9999928e86807a7e8b989b8e8275685b4f4235281c0f0000000000000000000000000000000000000000000003080b0e0e10100f0e0d0b090606030000000000000000000000000000000000000000000000000000000000000001070d11131417191d202121222121201f1c171413110d0802000000000000000000000000000000000613202c3945515d6774808d989e938c7f736c655f5853504a49484746444647484a4a5053555d6064615a50453c31261a0e0200000000000000000000000000000000000000000007121d27303e4754606a74818e989c9083766c61544a4b5865727e8b989b8e8175685b4e4235281b0f0200000000000000000000000008131d262f363c3f4146464646464646464646444f59606d7a84919e999083786d60584e42382e23170c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c000000000000000000000000000000030c141b212528292d2d2d2d21201e19140d0500000000000000000000000000000000000d1a2734404d5a6773808d96999e99928d83808c999b8e8175685b4f4235281c0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040607080d111314151515141312100b0607050100000000000000000000000000000000000004111d2935414c55616d7a85929f9b918c7f776f6a63605b54565454535053545557545b6062676d716c61574d42372b1e1206000000000000000000000000000000000000000000000b151e2b37434e58616e7b86929f948a7d70665c504b5865727e8b989b8e8175685b4e4235281b0f020000000000000000000000030e1a242f3841474c4e525252525252525252525252525d68707d8a939d958c7f736a5f544a3f34281f140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c0000000000000000000000000000000002091015191b1c202020201414110e08020000000000000000000000000000000000000d1a2734404d5a67738084888c91979f95908c929c9b8e8275685b4f4235281c0f00000000000000000000000000000000000000000000000000030506070707060603000002000000000000000000000000000000000000000000000000000000000000000000000000000001040707080808070706030000000000000000000000000000000000000000000000010d19242f3a46525e68717e8b929d9b918c827c74706c6665636160605c6060616365666c6f747a7e71695f53473a2e21140900000000000000000000000000000000000000000000030c1b27323c46525e69737f8c969d9184786d60554b5865727e8b989b8e8175685b4e4235281b0f02000000000000000000000008141f2b36414a52585a5f5f5f5f5f5f5f5f5f5f5f5f5f56616b74818e969f92867c6f665c50443b31251a0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000004090c0e0f131313130807050200000000000000000000000000000000000000000d1926333f4b58646e73787b7f858c92989d999ca49b8e8175685b4f4235281c0f000000000000000000000000000000000000010507070b060b0f121314141413120f0b060e0d0c0b0a08070704010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2a36414c56616c74808e939f9c948f87817d797472706e6d6c666d6d6e707275797c8085887b6e6255483b31251a0e02000000000000000000000000000000000000000000000a15202a36424d57606d7984919e958b7e71675d515865727e8b989b8e8175685b4e4235281b0f0200000000000000000000000b1724303c47525c64676c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6d7a84919e999083786d60574d42362a1e1205000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232f3b47525c6467696e73797f8590959fa6a89b8e8175685b4f4235281c0f0000000000000000000000000000000104080d111314181a171b1f20212120201f1c171c1b1a191816151413110d08020000000000000000000000060b0e1011131313131313131313131313131313131313131313131313131313131313100f0d0a050000000000000000000000010d1925303a44505a606c78818c92999f99938e8984817f7c7b7a7979797a7b7d7f8185898d928c7f7266574d42362a1e120500000000000000000000000000000000000000000000040e1a25303b45515d67717e8b959e9184796d60565865727e8b989b8e8175685b4e4235281b0f0200000000000000000000000d1a26333f4c58646e747979797979797979797979797979797979797d8996a0958c7f73695e53463a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2a36404a5258575f62676d727b838f949fa79b8e8275685b4f4235281c0f0000000000000000000000000001070d1113191d2021242722272b2d2d2e2d2d2b28222928272524232221201d19130c040000000000000000040b12171b1d1e2020202020202020202020202020202020202020202020202020202020201d1c1916100a030000000000000000000008131e29323e44505b666c777f8791959e9f9b96918e8b89878786858687888a8c8e92979a9d908377695e53463a2d211407000000000000000000000000000000000000000000000009141f2935404b55606c7883909d978c7f73685e5865727e8b989b8e8175685b4e4235281b0f0200000000000000000000010e1b2734414e5a67748085858585858585858585858585858585858586929fa79f92867b6e6154483b2e211508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e19242e3840474b4d53555d60696e79828f9593938e8275685b4f4235281c0f000000000000000000000002090e13181d2025292d2e31342d3337393a3a3a3938332d3635333231302f2d2c29241e160e07000000000000050e161d23272a2b2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d292926211c150d04000000000000000000020c172028333f4a545b656c737d838b91969b9f9e9a9896949a939298939496989b9e9f9b9792877b6e6154483b2e2115080000000000000000000000000000000000000000000000020c18242f3944505b656f7c89939392857a6d615865727e8b93938e8175685b4e4235281b0f0200000000000000000000010e1b2834414e5b6774818e92929292929292929292929292929292929298a2aea399897c6f6256493c2f231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c262e363b3c42474b51575e676d7983868686868175685b4f4235281c0f00000000000000000000050d14191d24292c3035393a3e40423f444647474746443f444341403f3e3d3b3a393530282019100700000000040e1720282e3336373939393939393939393939393939393939393939393939393939393939393635322d261f160d03000000000000000000050e17222d38424a535b606b6f787e848a8e9297989a9b9d9d9e9e9e9d9d9c9a9898928f8b85807a6d6154473a2e21140700000000000000000000000000000000000000000000000007121d27333f4953606b7581868686868074675a65727f868686868175685b4e4235281b0f0200000000000000000000010e1b2834414e5b6774818e9a9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa2aa9f9f95897c6f6256493c2f231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141c242a2f31373940454d555d676d7679797979756f65594d4034271b0e000000000000000000070e171f252a2f35393a4146474b4d4f49505354545353504a504f4e4d4c4b49484745413a322b23190f040000000b16202932393f434446464646464646464646464646464646464646464646464646464646464643423e3831281f150a0000000000000000000006111c262f384149505960666d72787d8285888b8d8f909091919191908f8d8c8985827e79736d685e5246392d201307000000000000000000000000000000000000000000000000010b17222d38414f59656f7579797979746e6458626d7279797979756f65594d4034271b0e0100000000000000000000010e1b2834414e5b6774818e9393939393939393939393939393939393939393939393897c6f6256493c2f231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a12191f20262b2f353b434b555d606a6c6c6c6c68655d53483d3125180c00000000000000030b1218202930363a4145474c5254575a5c5e5b60606160605b5e5d5c5b5a5857565554524c443d352b21160a000006121d28323b444b4f51535353535353535353535353535353535353535353535353535353535353504e49423a31261c1005000000000000000000000a141d262f383f444f545c60666c7075797c7e80828384848584848382817f7c7975716d67615e564c41362a1e11050000000000000000000000000000000000000000000000000006111b262f3d46535d65686c6c6c6c67645c525b62656c6c6c6c68655d53483d3124180c0000000000000000000000010e1b2834414e5b677481868686868686868686868686868686868686868686868686867c6f6256493c2f231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080e13151a1d24293139434b51535d606060605b59534b41372c201408000000000000030c151d2328323b42464b5154565e616467696b656c6d6d6d6c666b6a69686665646362605d564f473d32271b0f03000b17232e39444d565b5e6060606060606060606060606060606060606060606060606060606060605c5a544c42382d21160a00000000000000000000020b141d262d333d424a50545b6063666c6f72737576777878787776757472706d6664605d55524c443a3025190d0100000000000000000000000000000000000000000000000000000a141d2b34414b53595b606060605a58524a515658606060605b59534b41372c2014080000000000000000000000010d1a2733404c59646f74797979797979797979797979797979797979797979797979796f6a6054473b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000203090e12181f27313940454750535353534f4d4841392f251a0f040000000000020c151e272e343f444d52555d6065686d7173757779797a7a7a797978777674737271706e6d6860594f43382c1f1307000e1b27333f4b565f676a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c69665e54493e3226190d0000000000000000000000020b141b222730383f444a5053545b60626567686a6a6b6b6b6a6a69676563605c5453514b46413a32291e1308000000000000000000000000000000000000000000000000000000020b1922303941484d4f535353534d4c4740454a4b535353534e4d4841392f251a0f040000000000000000000000000b1824303c48535d64676c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6260584e43382b1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d151f272f35383a434646464642403d372f271e13090000000000000a141e273039404551565e61676d72767a7e8082848586878786868584838281807f7e7c7b7a6f6b6054483b2f22150900101d2a36434f5b6771777979797979797979797979797979797979797979797979797979797979797670665a4e4235291c0f000000000000000000000000020a11171e262e34383f44464a505355585a5c5d5d5e5e5e5e5d5c5a595653514b4745403936302920170d020000000000000000000000000000000000000000000000000000000007101e2730373d414246464646413f3c363a3d3f4646464642403d372f271d1309000000000000000000000000000814202b36414a53595b6060606060606060606060606060606060606060606060606056544e463d32271b0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d151d24292c2d37393939393534312c251e150c02000000000006111c263039424b515b62696e747a7f83868a8d8f9192939a9493989291908f8e8d8b8a8988877c6f6356493c3023160900111e2b3744515e6a77848686868686868686868686868686868686868686868686868686868686868276695c504336291d100000000000000000000000000000060c141c23282d3338393f4446494b4d4f505151525151504f4e4c494645403a39352f2a251e170e050000000000000000000000000000000000000000000000000000000000000c151e252c313435393939393433302b2e3132393939393534312c251d150b0100000000000000000000000000030f1a252f3841484c4e535353535353535353535353535353535353535353535353534947433d342b20160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181d1f202a2d2d2d2d282725201a130c030000000000000b17232e38424b545c606d727b80858b9093999a9c9c9b9a9a999a9a9b9c9d9c9b9998979695897c6f6356493c3023160900111e2b3744515e6a778491939393939393939393939393939393939393939393939393939393938f8276695c504336291d10000000000000000000000000000000020a11171c22282b2d3338393c3f40424344454545444342413f3d3a38342e2c29241d19130d0500000000000000000000000000000000000000000000000000000000000000030c141b202527282d2d2d2d2726241f2224252d2d2d2d282724201a130b0300000000000000000000000000000008131d262f363c4041464646464646464646464646464646464646464646464646463c3b38322b22190f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c1013141d202020201c1b18140f090200000000000003101c28343f4a545c666d757f868d92989d9c979792908e8e8d8d8d8d8e8f919298959ea0a896897c6f6356493c3023160900111e2b3744515e6a7784919d9fa69f9c9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b8f8376695c504336291d100000000000000000000000000000000000060b11171c1f22282b2d2f32343537373838383737363432302d2c28231f1d18120d080200000000000000000000000000000000000000000000000000000000000000000002090f15181b1c202020201a1a1713151818202020201b1b18140f090100000000000000000000000000000000010b141d252b303334393939393939393939393939393939393939393939393939392f2e2b27201910070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c060000000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004060710131313130f0e0c080400000000000000020c16202b3844505c666d78818c92989f99928f8b8785838281808080818182848587899196a096897c6f6356493c3023160900111e2b3744515e6a7784919daa9f948f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8376695c504336291d1000000000000000000000000000000000000000060b0f12171c1f20222527292a2a2b2b2b2b2a29272623201f1c1813100c07010000000000000000000000000000000000000000000000000000000000000000000000000004090c0e0f131313130e0d0b07090b0c131313130f0e0c080400000000000000000000000000000000000000020b131a202427282d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d23221f1b160f07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a969c8f8275695c4f422d22170b0000000000000000000d192633404c5966737f8c99988b7f7265584c3f3225190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2b37424e57606d78818e939f9a938e86827e7b7876757474737374757677787a7c84919e96897c6f6356493c3023160900111e2a3744515d6a7783909da69c8f82828282828282828282828282828282828282828282828282807366594d4033261a0d00000000000000000000000000000000000000000003060b0f121316181a1c1d1e1e1f1e1e1d1c1b19161313100c07040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080f14181a1b202020202020202020202020202020202020202020202020201615130f0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1623303d495663707d89969d9083766a53493f33271b0f0300000000000000000e1a2734414d5a6774808d9a988b7e7165584b3e3225180b000000000000050a0d0f10131313130d0d0b070200000000000000000000000000000000000000000000000000000104070713131313130b0a08050000000000000000000000000000000000000000000000000000010d1925303a47535f6a727f8c939e989288817b75716e696968676766676768696a686d7784909d96897c6f6356493c30231609000b1824313e4b5764717e8a949e9a8d80757575757575757575757575757575757575757575757575736e63574b3f3226190c000000000000000000000000000000000000000000000000030606090c0d0f101112121211100f0e0c0a07060400000000000000000000000000000000000000000000000000000000000000000000000000000000000001040607070605030000000000000000000000000000000000000000000000000000000000000000000000000000000003080b0d0e1313131313131313131313131313131313131313131313131309080603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7b88959e918477655b5044372b1f12050000000000000004101c2834404b556875818e9b968a7d7063574a3d3024170a00000000030a10161a1c1d202020201a1917130e08010000000000000000000000000000000000000000000001080d1113142020202020181715110c0600000000000000000000000000000000000000000000000005111d2a36414c56626e7b87929f9892867d746e6964615e575b5b5a5a5a5a5b5c565e6a7784909d96897c6f6356493c30231609000a1724303d4955616c75828f979f93877c6f6768686868686868686868686868686868686868686866635c52473b2f23170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003050609070d1013141413120f0b06070604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a87979f9285796c605346392d20160c040000000000040b131f2c3845515c6776838f9c99887c6f6255483c2f221509000000040d151c2226292a2d2d2d2d2726231f19120a020000000000000000000000000000000000000000040c13191d20212c2d2d2d2d2524211d17100900000000000000000000000000000000000000000000000713202d3946525e6875818e999f92867c706b615e5654524d4f4e4d4d4d4e4e4f4c5d6a7784909d96897c6f6356493c30231609000815212d3945505a616e7b85929f999184796d60585c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5957524a40352a1f13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f1213161a181d202021201f1b17171313100c0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202c3945525d687885919e98887c6f6255493e31281e16100c070b070c10151c262f3a4653606d7985929f9286796d6053463a2d2013070000030d161f262d3235363939393934332f2b241c140a01000000000000000000000000000000000000040d161e24292c2d393939393931302d28221b1209000000000000000000000000000000000000000000000714212e3a4754616d7a86929f968c7f726a6059524d4746424241414040414244515d6a7784909d96897c6f6356493c302316090005111d28343e46525e69717e8b949f968d80736a60554b4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4d4b4740382e24190e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d11171b1f20232624292c2d2d2d2b272224201f1c18120e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c566975828f9c998c7f72665a50433a30281f1d18181818181c1f272e38414d5763707c89989d908377665c5145382c1f130600000a151f2831383e424346464646403f3b362e261c12080000000000000000000000000000000000010c1620282f35393a46464646463e3d39342d241b10060000000000000000000000000000000000000000000b1825323e4b5865717e8b999e9184796d60584f46423b3a363034343334343744515d6a7784909d96897c6f6356493c3023160900000c17222a36424d56626c76828f989f93877c6f675c514542424242424242424242424242424242403f3b352e261c12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c13191b22272b2d2f332f35393a3a3937332d312d2c28231d1a140d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1924303f4c5965727f8c989d9083776c61554b423a312c292425242523282c30394049535f6974818e9a998c807366544b4034281c10040005101c26313a434a4e50535353534d4c4740382e24190e020000000000000000000000000000000008131e28323a41454753535353534b49453e362d22170c0000000000000000000000000000000000000000000e1b2835414e5b6874818e9b998d8073665c50463d36302d2a25282727272a3744515d6a7784909d96897c6f6356493c302316090000060e1925303b44505a616e7b86929f999184796d60584e43392f3535353535353535353535353533322f2a241c130a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181e24292d3337393c40434045474746443f413d3a38342e2a261f19130c050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4855616e7b88949f958a7d70675d544c433d39352f3231322e34383c424a515b656e7b87929f95887c6f6255493c2e23180c00000a16222d38434c545a5d606060605a58524a40362b1f1304000000000000000000000000000000010d19242f3a444c52545f60606060585650483e34281d11050000000000000000000000000000000000000000111d2a3744505d6a7783909d96897c6f63544a3f342a25201e1a1b1a1a1e2a3744515d6a7784909d96897c6f6356493c3023160900000009141f29323f46525e69727e8b949f968d80736a60554b4034292929292929292929292929292626231f19120a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c151c23283035383f4446494d4f4b5153545350494d4a4645403936312a251e160e0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a46535f697683909c9d9183796d665d564f4745403f3f3e3e3f4045464e545c606c77828f999d9083766a5f54473b2e1d120700000d1a26323e4a545e66696c6c6c6c67645c52473b2f20150a00000000000000000000000000000004111d2935414c565d606c6c6c6c6c64615a5045392d2115080000000000000000000000000000000000000000121f2b3845525e6b7885919e9a877a6e6154473b2e211914110e090e111e2a3744515d6a7784909d96897c6f6356493c30231609000000020d17202a36424d57606c77828f989f93877c6f675c51453d30271d1c1c1c1c1c1c1c1c1c1c1a1917130e07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810181e272e343a414549505356595c555d6060605b535a5753514b46423b363028201a12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2b37424d5764707d8a949f958f82786d68605953514b4c4b4b4b4c4b5153585f666d73808d949e948a7d7064584e43372b1f0b0000000f1c2935424e5a66707679797979736e64584c3c32261b0f0300000000000000000000000000000713202c3945525d686d7979797979716c6156493d3024170a0000000000000000000000000000000000000000131f2c3946525f6c7985929f9386796d6053463a2d20130905020004111e2a3744515d6a7784909d96897c6f6356493c3023160900000000050e1a25303b44505b656e7b86929f999184796d60584e43392e23180c0f0f0f0f0f0f0f0f0d0c0a07020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121a222a303940444c52535b606266696b676d6d6c65696764605c54534d46413a322c2417110a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a26313c4955616c768290989e948f817a706b64605d555958575859545c60636a6f78808d929d989083766c6155463c32261b0f000000101d2a3643505d69768286868686807367584e43372b1f120600000000000000000000000000000714212d3a4754606d7a86868686867e7164584b3e3125180b000000000000000000000000000000000000000013202c3946535f6c7986929f928679665c5144382c1f120600000004111e2a3744515d6a7784909d96897c6f6356493c30231609000000000009141f27333f49535e69727f8b949f958d80736a60554b4034281e150b00020202020202000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b242c343c424a51565d60656c6f737678797a7a79787674706d66615f57524c443e3627221b140b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2d3944505a626e7b86929a9e938f847d76716d6767666564656667666d70757c838d929d9a92867b6e615a5044342a20150a0000000c1926323f4c5965727f8c93939184776a5f53473b2e2115090000000000000000000000000004111d2935404b5564717e8b999392867a6d6054473a2d211407000000000000000000000000000000000000000013202c3946535f6c7986929f9286796c5f4a4034281c100400000004111e2a3744515d6a7784909d96897c6f6356493c302316090000000000030b17222d38414d57606c778290989f92877c6f675c51453d30271d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121b242d363e464e545c60686d73787c808285868687868583807d79746e69615e56504840332d261d140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28333e47535f69717e8893999e969189837e7a767472727171727376797d828790959d9a93887e71695f53483e3322190e040000000815212e3b4854616e7b8795a096887c6f6255483c31261a0e020000000000000000000000000613202c3945515d6775828f9b9c8f8276685d5245392c201307000000000000000000000000000000000000000013202c3946535f6c7986929f9286796c5f53462e23180c0000000004111e2a3744515d6a7784909d96897c6f6356493c3023160900000000000006111b262f3b44505b656e7b86929f999183796d60584e43392e23180c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f1a242d363f4850585f666d727a7f84898c8f919299999292908d8a85817b746d68615a52443f382f261b110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222b37424d57616c727f8792989e9e95908a8683807f7e7e7e7f808386898f939a9f9892887f726c61574d42362c221007000000000714212d3a46535e697783909d998c807366574d42362a1e12050000000000000000000000000714202d3a4753606d7a86929f998b7e7165564c4135291d1104000000000000000000000000000000000000000013202c3946535f6c7986929f9286796c5f5346392c20130000000004111e2a3744515d6a7784909d96897c6f6356493c30231609000000000000000a141d27333f49535f69727f8c959f958d80736a60554b4034281e150b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e18212c363f48505a616a6f787f858c9196999c9e9f9f9f9f9e9c9a97928e87817a706c635c504941382d22170f0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e1a26313c45505a626d727d858f949c9f9d9992908d8c8b8a8b8c8d9092989c9f9d9590867e726d625a50453c31241a10000000000005121e2a36424d5766737f8c999d908377695f53463a2d211409000000000000000000000004101d2935404b5564717e8a989f92867a6d6154473a2f24190d01000000000000000000000000000000000000000013202c3946535f6c7986929f9286796c5f5346392c20130600000004111e2a3744515d6a7784909d96897c6f6356493c3023160900000000000000020b17222d38414d57606c788390989f92877c6f675c51453c30271d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202a333e48505a626c717c838c92989e9f9c98959992929995979b9f9f99928e857e736e605b53493f332721170d02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202a333e48515b626c707b82898f939a9c9f9d9a99989798999a9c9f9d9995908a837c716c625b51483e332a1f12080000000000020e1a25313b4855626e7b8895a095887b6e6155483b3025190e020000000000000000000006131f2c3845515d6775828e9b9c8f8276685e5246392d1e130800000000000000000000000000000000000000000013202c3946535f6c7986929f9286796c5f5346392c20130600000004111e2a3744515d6a7784909d96897c6f6356493c30231609000000000000000006111b262f3c44505b666e7b86929f999183796d60584e42392e23180c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1a26313c46505a626c717e8690959f9f99928f8b8887868686888b8e92989f9f97928a80746c655b50443e33291f140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e18212c363f49515961696e757d82878c8f9297969798989897969992908d89837e786e6a615a51493f362c21180e000000000000000914212e3a47535f6a7784919d988c7f7265564d42362a1e1105000000000000000000000714202d3a4753606d7985929f998b7e7265564c41362a1d0c0100000000000000000000000000000000000000000013202c3946535f6c7986929f9286796c5f5346392c20130600000004111e2a3744515d6a7784909d96897c6f6356493c302316090000000000000000000a141d28333f4a545f6a727f8c959f958d80736a60544b4034281e150b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b37434e58616c717e889298a099928d86827e7c7a79797a7b7e82868c92989f9e928c81776c605a50453b30251a0e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f1a242d373f474f575e616b70767b7f828587898a8b8b8b8b8a888683807c77716c655f5850483f372d241a0f060000000000000006121f2b37434e586673808d999d908376695e52463a2d20140800000000000000000004101c2834404b5564707d8a989f93867a6e6154473b3025190d0000000000000000000000000000000000000000000013202c3946535f6c7986929f9286796c5f5346392c20130600000004111e2a3744515d6a7784909d96897c6f6356493c30231609000000000000000000020b17222d38424e57606d788390999f92877c6f665c51453c30271d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3a47535f6a717e87939a9e959087807b76726f6d67676d6f71757a7f858f949d9c938d80736c61574d42362a20150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121b242d353e454d53596063696e7276787b7c7d7e7f7e7e7d7b7977736f6a64605b534e463e362d251b12080000000000000000020f1a26313c4955626f7c88969f93877b6e6154473b3024190d01000000000000000006131f2c3845515c6775818e9b9c908376685e5246392d1e13080000000000000000000000000000000000000000000013202c3946535f6c7986929f9286796c5f5346392c20130600000004111e2a3744515d6a7784909d96897c6f6356493c302316090000000000000000000006111c262f3c44505c666f7c86929f999083796d60584e42392e23180c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7c8692999e938f837c746e696562605d5d606264686d737b828d929c9c928b7e71695e52463d32271b0f02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b232c333b42464f54575f616569696e6f7171727271706f6d6766626058535049413c342c241b1309000000000000000000000a15222e3b4754606a7884919e9a8b7e7265564c4135291d110400000000000000000713202d3a4653606d7985929f9a8b7f7265564c41362a1e11050000000000000000000000000000000000000000000013202c3946535f6c7986929f9286796c5f5346392c20130600000004111e2a3744515d6a7784909d96897c6f6356493c3023160900000000000000000000000a141d28343f4a545f6a737f8c95a0958d80736a60544b4034281e150b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2734404d5a6773808a9197938f81796f6a615e57555451515355565d60696e77808d929c9f92857b6e61584e43372b1e140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009111a212931363d44484d535559575e616364656565646362605c5556544e46443f382f2a221b1209010000000000000000000006131f2b37434e586774808d9a9c8f8276685d5245392c2013070000000000000004101c2834404a5463707d8a989f93877b6e6154483b3025190e020000000000000000000000000000000000000000000013202c3946535f6c7986929f9286796c5f5346392c20130600000004111e2a3744515d6a7784909d96897c6f6356493c302316090000000000000000000000020b17232e38424e58606d788390999f92877c6f665c51453c30271d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1926323f4b58636e737e848e8f81786d675f58534d4947454547484c52575e656c73808d939e978f82756a6054473b3025190d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080f171f252a32383b4246484c4d5354565758585858575553514b4947433d37332d261d180f09000000000000000000000000030f1b27323d495663707c89979f92867a6d6054473a2f24180c0000000000000006121f2c3844515c6674818e9b9d908376695e52463a2d1e1408000000000000000000000000000000000000000000000013202c3946535f6c7986929f9286796c5f5346392c20130600000004111e2a3744515d6a7784909d96897c6f6356493c3023160900000000000000000000000006111c26303c44505c666f7c87929f999083796d60584e42392e23180c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a17232f3b47525c636c717a8184796d665d554e46423c3a39393a3c41454d535b606c77818e979e93897c6f62564c41362a1e110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141a21272c31363a3b3f424648494a4b4c4b4b4a484645403c3b37322b27221b140b0600000000000000000000000000000a13202d394653606c7985929e998b7e7164554b4035291d10040606060606060713202d3a4653606d7985929f988c7f7265574d42362a1e0d02000000000000000000000000000000000000000000000013202c3946535f6c7986929f9286796c5f5346392c20130600000004111e2a3744515d6a7784909d96897c6f6356493c30231609000000000000000000000000000a141e28343f4a545f6a73808c95a0958c80736a5f544b4034281e150b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2a36404a525a61686d74796d675d544b433c36312d2c2c2d2f353b4149505b656d7a85919e9c8f8275685e5246392d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e161b1f262a2d2e31363a3b3c3e3e3f3f3e3d3c3a38342e2e2b271f1b17110a0200000000000000000000000000000006121f2b3844505b6674818e9a9b8f8275675d5145392c1f1313131313131313101c28343f4a5463707d8997a095887b6e6155483b30251a0e00000000000000000000000000000000000000000000000013202c3946535f6c7986929f9286796c5f5346392c20130000000004111e2a3744515d6a7784909d96897c6f6356493c3023160900000000000000000000000000020c17232e38424e58606d798390999f92877c6f665c51453c30271c12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e19242e38404850565d60676d675d554b4239312a2521201f2024292f383f49535e68727e8b969f93877a6e6154473b2e21140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b10141a1e2122252a2d2e303132323231302f2d2c2823221f1b160f0b060000000000000000000000000000000000030f1c28333f4a5463707d8a979f9286796d6053473a2e23181f1f1f1f1f1f1f1f1f2b3844505c6674818e9a9d908377695f53463a2d1f140900000000000000000000000000000000000000000000000013202c3946535f6c7986929f9286796c5f53462e23180c0000000004111e2a3744515d6a7784909d96897c6f6356493c30231609000000000000000000000000000006111c26303c45515c666f7c87929f999083796d60584e42392e23180c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c262e363e444c52555c605c554b433a30271f1a14131314191d262d38414c56606d7984919e998b7f7265584c3f3025190d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e1214151a1e21212324252525252422201f1c1815130f0a0300000000000000000000000000000000000000000b17222d3a4653606d7985929f988a7d7064544a4034282c2c2c2c2c2c2c2c2c2c2d3a4653606d7985929e998c7f7366574d42362a1e120500000000000000000000000000000000000000000000000013202c3946535f6c7986929f9286796c5f4a4034281c100400000004111e2a3744515d6a7784909d96897c6f6356493c302316090000000000000000000000000000000a151e2834404b54606a73808d95a0958c80736a5f544a4034281e150b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141c242c323a41454b5153514b433a31281e150d090606080b141b262f3a45515c6673808d9a9c8f827569564c41362a1d110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507090e12141516171819181817151313100c0706030000000000000000000000000000000000000000000006131f2c3845515c6675818e9b9b8e8175665c5144383939393939393939393939333f495363707c8997a095887b6e6255483b31261a0e0200000000000000000000000000000000000000000000000013202c3946535f6c7986929f928679665c5144382c1f120600000004111e2a3744515d6a7784909d96897c6f6356493c30231609000000000000000000000000000000030c18232e39424e58606d798491999f92877c6f665c51443c30271c12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a121a20282f353940454745403931281f160c0300000000020a141d2834404b54636f7c89999e918578685e5246392d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050708090b0b0c0c0b0a09070604000000000000000000000000000000000000000000000000000004101c2834404b5464717d8a989f9285796d6053464646464646464646464646464644505b6574818d9a9d9084776a5f53473a291f140900000000000000000000000000000000000000000000000000131f2c3946525f6c7985929f9886796d6053463a2d20130703000205111e2a3744515d6a7784909d96897c6f6356493c302316090000000000000000000000000000000007121d27303c45515c676f7c87939f999083786d60584e42392e23180b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080d161e24292f34383a38342f271f160d04000000000000020b18232e3a4753606d7a86939f97877a6d6154473a2e21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3a4753606d7986929f97897d7063544a525252525252525252525252525253606c7884919e998c807366574e42372b180d0300000000000000000000000000000000000000000000000000121f2c3845525f6b7885929e94877a6e6154473b2e2116120f0b0e12141e2a3744515d6a7784909d96897c6f6356493c3023160900000000000000000000000000000000000b151e2834404b55606a73808d96a0958c80736a5f544a4034281d140a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13191d23292c2d2c29231d150d0400000000000000000713202c3945515d677884919e95887b6e6255483b2f22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090e111213131313131313131313131313131313131313131312100f0d0a0706040100000000000000000000000000000000000000000000000007131f2c3945515d6775828f9b9a8d8174665b5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f636f7c8997a096887c6f6255483c31261a090000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919d95887c6f6255493d3128201f1b171a1e2021263744515d6a7784909d96897c6f6356493c302316090000000000000000000000000000000000030c18232e39434e58606d7984919a9f92877c6f665c51443c2f261b11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080d12181c1f201f1c18120b0300000000000000000004111d2935404b556a7784909d96897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080f151a1d1f20202020202020202020202020202020202020201f1e1d1c19171413110d07030000000000000000000000000000000000000000000004101d2935404b5564717e8b999e9185796c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c74808d9a9e9184776a5f53473a2a20150900000000000000000000000000000000000000000000000000000f1c2935424f5c6875828f9b998c7f7266594f433a322d2b2722252a2d2e313744515d6a7784909d96897c6f6356493c3023160900000000000000000000000000000000000007121d27303d45515d676f7d88939f999083786d60584e41382d22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c10131413100c07010000000000000000000004101c2834404b546a7783909d96897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121920262a2c2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2c2b2a28262420201d1813100c060000000000000000000000000000000000000000000c18242f3a4754606d7a86929f97897d797979797979797979797979797979797979797984919e998d807366584e43372b1f120600000000000000000000000000000000000000000000000000000d192633404c5966737f8c999c9083766b60564c443e3937332d30363a3b3d43474b5d6a7784909d96897c6f6356493c30231609000000000000000000000000000000000000000b151e2935404b55606b74808d96a0958c7f736a5f53493f33271d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004060706040000000000000000000000000006131f2c3845515c667884919e95887b6f6255483c2f22150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121b242b31363839393939393939393939393939393939393939393938373533302d2c29241f1c17110a03000000000000000000000000000000000000000713202c3945525d6876828f9c9f928685858585858585858585858585858585858585868996a196887c6f6255493c31261b0f0300000000000000000000000000000000000000000000000000000916222f3c4955626f7c88959f94897d70685d56504846443f42434246484a4e53555d6a7784909d96897c6f6356493c3023160900000000000000000000000000000000000000030c18242f39434f59606d7984919a9f92877c6f655b5044392e23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7986929f97877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19242d353d4245464646464646464646464646464646464646464646454342403d3a39352f2c28231c150c0802000000000000000000000000000000000004111d2935414c5665727e8b99a39892929292929292929292929292929292929292929298a19e9184786a6054473b2a20150a0000000000000000000000000000000000000000000000000000000815212e3b47535f6a7784919d9d90837a6d68615a555350494f504d525457585f62676d7783909d96897c6f6356493c30231609000000000000000000000000000000000000000007121d27313d45515d67707d88939f999083786c60554b4034281c1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070f1b27333f4953626f7c88999f928578695e52463a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202b353f474e5253535353535353535353535353535353535353535251504f4c4a4745403a38342e261e19130c0500000000000000000000000000000000010d19242f3b4754616e7a86939fa39f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa2a99a8d807367584e43372b180e0400000000000000000000000000000000000000000000000000000006131f2b37434e5864717e8b959f9590837a716c6562605b535c5d575e6164666a6f73797f85929f96897c6f6356493c302316090000000000000000000000000000000000000000010b151f2935404b55606b74818d969f958a7e71675c5145382c1f160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010204040404040404040404000004060b1218242b3744505b65737f8c999c8f827669564d42362a1e110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a26313d4751595e5f6060606060606060606060606060606060605f5f5e5d5b595753514b46443f38302a251e160e06000000000000000000000000000000000814202d3946525e687683909caaa29f93939393939393939393939393939393939a9da4a196897c6f6256493c32271b0900000000000000000000000000000000000000000000000000000000030f1b26323c4653606d788390979f9590847d77726e6c656969696a696e7073777b80858b9298a296897c6f6356493c30231609000000000000000000000000000000000000000000030d18242f39434f59606d7984919e9e9184796d6053463d32271b0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004080c0e0f10101010101010101010070c1013171d242935404b55606c7884919d998c7f7366594c403025190e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d2a36424e59636a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b6a686663605d5553504a423e36302820180f0600000000000000000000000000000005111e2a36414c5665727f8c98a2989286868686868686868686868686868686868d929d9e9184786c605346392d20130a00000000000000000000000000000000000000000000000000000000000a151f2b3844505c666e7b8592979f96918a847f7b797776757677787b7d8084888c92979fa2aa96897c6f6356493c302316090000000000000000000000000000000000000000000007121d28313d45515d67717e8b95a0968b7e7265594f43382c1f13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090f14181b1b1d1d1d1d1d1d1d1d1d1d1d181c1f22272f353f45515d67717e8a969f94887b6e6155483b2e221509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121f2c3845525e6a7579797979797979797979797979797979797979797978767573706d6764605c545046413a322a21180e050000000000000000000000000000010d1925303b4854616e7b87959f92867979797979797979797979797979797979808d9a9a8d8074655b5044372b1f1205000000000000000000000000000000000000000000000000000000000003101c28343f4a545f696f7c8590959f9e95918b8885848382838485878a8d91959998929298a296897c6f6356493c3023160900000000000000000000000000000000000000000000010c161f2935414b55606c7883909d9d9083776b6054483b2f221509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b131a202527282a2a2a2a2a2a2a2a2a2a2a23282c2d33394045505a606d7984919d9c908376695f53463a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798786868686868686868686868686868686868686858483827f7d7a76716d66615a524c443b332a20170b0200000000000000000000000000000814212d3a46535e697783909d988a7d706c6c6c6c6c6c6c6c6c6c6c6c6c6c7884919e97897c706353493f33271b0f030000000000000000000000000000000000000000000000000000000000000b17232e38424d57606a6f7b838c92979d9d989892908f8f9091929797999d99938e8586929f96897c6f6356493c302316090000000000000000000000020507080d08070502000000040d18242f3a44505b66717e8a97a095897c6f6356493c3025190e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b151d252c31343537373737373737373737372e34383a3f444b515a626c74808d969f94897d7063574d42362a1e120500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929393939393939393939393939393939399929291908e8c8a86827e78716c615e564d453b32291d140a000000000000000000000000000005121e2a36424d5766737f8c999b8e8174665b60606060606060606060626f7c89969e9285796c605346392d22170b0000000000000000000000000000000000000000000000000000000000000006111c26303b454e5860696e797f858b90939a999b9c9c9c9c9b9b999695908c87817a83909d96897c6f6356493c3023160900000000000000000004090e1214151a1514120e0903000007131d28333f4a54606d7985919e9a8e817467564d42362a1e11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131d272f373d40424343434343434343434343434045464950555d606c717e8b929d989083766b6054453b31261a0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929fa49c999999999999999999999999999a9a9b9d9d9b9999928f8a847e766d685f574d443b2f261b110600000000000000000000000000020e1a25313b4855626e7b88969e9285796c6053535353535353534e586773808d9a9a8e8174665b5044382b1b110600000000000000000000000000000000000000000000000000000000000000000a141e2a333c464e575f676d727a7e83878a8c8e8f90908f8f8e8c8987837f7b747784909d96897c6f6356493c3023160900000000000001070c10141a1e21222621201e1a140d0500010b17222d3844515c6673808d999e918477695e52463a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a252f3941484d4e5050505050505050505050504b5153535b60676d747e87929f9f92867c6e62594f44332a1f14090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f9c928d8c8c8c8c8c8c8c8c8c8c8c8c8d8e8f919299999d9f9c96918b827a6e695f564c41382d22170b00000000000000000000000000000914212e3a47535f6a7784919d97897c6f635649464646464647535f6a7784919e97897d7063544a3f33281c0a000000000000000000000000000000000000000000000000000000000000000000020c18212b343c454d555c60686d72767a7d7f818283838382817f7d7a77726e697784909d96897c6f6356493c302316090000000000030b12181d1f262a2d2e332e2d2a251f170f050006111c2834404a5463707d8999a096877b6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202c37414b53595b5d5d5d5d5d5d5d5d5d5d5d5d545c6062656c7179808b92999d938c7f726a5f53473d3321180e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f998d808080808080808080808080808081828486888c90959b9f9e948f847b6e685e53493f33271d12070000000000000000000000000006121f2b37434e586673808d999a8d807367584e433739393c4855626f7c88969e9285796d6053463a2d22170b00000000000000000000000000000000000000000000000000000000000000000000060f19222b333c434b51565d6065686d70737476767776757472706d6865616a7784909d96897c6f6356493c3023160900000000030d151d24292c31363a3b403b3a36302921170d03000c18232e3a4753606d7986929f978a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825313d48535d65686a6a6a6a6a6a6a6a6a6a6a6a6a666d6f73787e848d929f9d948e81746d62584e43352b210f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a73737373737373737373737374747577797c7f83888e93999f9691847a6e655b5044392e23180c00000000000000000000000000020f1a26313c4956626f7c89969e9184776a5f53473a2e36424d576673808c999b8e8174665c5044382c1c11060000000000000000000000000000000000000000000000000000000000000000000000071019212a303940454c5254565e6164666869696a6968686663615e565d6a7784909d96897c6f6356493c30231609000000010b151f272f35383b4246484d4846423b33291f14090007131f2c3845515c677784919e988b7e7265584b3f3225180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734404d59656f757676767676767676767676767778797c7f848a91969d9f938e82786d605b51463c31231a0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6666666666666666666666676768666d6f73777c82879196a0968f82776c60544b4034281c1004000000000000000000000000000a15222e3b4754606a7884919e96887b6e6255483b303a46535f697783909d988a7d7063544a3f34281c1003000000000000000000000000000000000000000000000000000000000000000000000000070f181e272e343a4145474c525457595b5c5d5d5c5c5b595654524c5d6a7784909d96897c6f6356493c3023160900000007121d2731394045474d53555954524d453b30251a0e0204101c2934404b556a7683909d998c7f7366594c403326190d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1b2835424e5b687581838383838383838383838383838486888c91969d9e98928b81786d665c50493f332a20110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d60595959595959595959595a5b545c6062666a6f757c8490959f948b7e71665c5145382c1f13070000000000000000000000000006131f2b37434e586774808d9a998c7f7266564d42363b4855616e7b88959f9285796d6053463a2e23170c0000000000000000000000000000000000000000000000000000000000000000000000000000060c151d23282f35393a4146474a4c4e4f5050504f4e4c4a4746515d6a7784909d96897c6f6356493c302316090000000c18242f39434b5153575f6166615e574d42362a1f140806111d2935414c556a7683909d9a8d8073675a4d4034271a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101d293643505c6976838f909090909090909090909090919299999d9f9b948f867f746d665c544a3f372d21180e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d60544d4d4d4d4d4d4d4d4d4d4e4a515355585f626a6f7a8390989e9184796d6053463a2f24180d01000000000000000000000000030f1b27323d495663707c89979d908376695e52463a424d5665727f8c989b8e8175665c5145382c1c1106000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181e24292c3036393a3d40414343444342413f3d3a44515d6a7784909d96897c6f6356493c30231609000004101d2935404b555d6064696e736e695e52463b302519131217212c3945515d677884919e998c7f7366594c403326190d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9b9d9d9d9d9d9d9d9d9d9d9d9e9f9d9b99928f89827b726d605c544a42382e251b0f060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d60544740404040404040404141404446494e545860686e7b86929f968a7e7164554b4035291d1104000000000000000000000000000a13202d394653606c7985929e93877b6e6154473b46525e697683909d988a7d7064544b4034281c0a000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c13191d20252a2d2e31333536363736353533303744515d6a7784909d96897c6f6356493c30231609000006131f2c3845515d676d71767b807b6e61564d41362a251f1f2328333c4754606d7a86929f988b7e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a69f9c95959595959595949993918e8b86827c756e69625b504a423830261c1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a33333333333333342e34383a3c43474e565f6973808d999c8f8276675d5145392c2013060000000000000000000000000006121f2b3844505b6674818e9a9a8b7e7265554c414754616e7b87939f9285796d6053473a2e23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080d1113191d2021242628292a2a292928262a3744515d6a7784909d96897c6f6356493c3023160900000714202d3a4753606d797e82878c8073685e52463f36302c2b2e343c454f5964717d8a99a298897c6f6256493c2f2316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b989f948f8888888888888888878684817e7a756f6a615f5751443f3830261e150a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2626262626262723282c2d32373c444d57616e7b87939f9286796d6053473a2d20140700000000000000000000000000030f1c28333f4a5463707d8a979c8f8276675d51454c5665727f8b9a9b8e8275675d5145382c1d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104080d11131417191b1c1d1d1d1c1b1e2a3744515d6a7784909d96897c6f6356493c3023160900000d192633404c5966737f8a8f9392857b6e615b5146413a38383a3f444e57616b76828f9c9f9285796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724313d4a5764707d8a979c8f827c7b7b7b7b7b7b7b7a797775716d68626058534d453f342e261e150c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d211a1a1a1a1a1a181c1f20262b323c46525e697683909d99897c706356493d3023160a00000000000000000000000000000b17222d3a4653606d7985929f92867a6d605447525d6876828f9c988a7e7164554b4035291d0b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507070a0d0e101011100f111e2a3744515d6a7784909d96897c6f6356493c3023160900000814212e3b4754616e7a86929f988e81756d635b524c464544464a50585f69707d89949f9b8e8175675c5145382c1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c89959c9083766f6f6f6f6f6f6e6d6d666865615e56544e46423b3328231c150c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140d0d0d0d070c1012131b202a36424d576773808d9a988c7f7265594c3f3226190c000000000000000000000000000006131f2c3845515c6675818e9b998a7d7164544a54616d7a86929f92867a6d6053473a2f24180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020303040304111e2a3744515d6a7784909d96897c6f6356493c3023160900000714202d3946525e6874818e979e938c7f726d615e5653515053545c606a6f7b85929e9e94897c6f62554b4034281c10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a87999e9184776b62626262626161605c545854524c47433d3631292117110a03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d211407000000000004060a0e1a25303e4b5865717e8b989a8d8174675a4e4134271b0e000000000000000000000000000004101c2834404b5464717d8a989b8e8175665c515564717e8b999b8f8275675d5145392c1d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111e2a3744515d6a7784909d96897c6f6356493c30231609000005111e2a36414c56616d7a85929f9c918c7f756d6863605c5c6062666d727c849197a1988f82766a605443392e23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7986929f928579685d55555555555453514a4b4746413a37322a261f170f060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000091724303d4a5763707d8a969c8f8275695c4f4236291c0f0000000000000000000000000000000c18232e3a4753606d7a86929f9285796d60535d6775828f9c998b7e7164554b4035291d110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111e2a3744515d6a7784909d96897c6f6356493c302316090000010d1925303b46525e68717e8b929d9c918c817a74706d67666d6f72797f869196a09a92867b6e61584e4330271d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505c667885919e98877a6d615448484848474644403e3a3935302b27201a140d06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000091623303c4956636f7c89969c908376695d5043362a1d100000000000000000000000000000000713202c3945515d6775828f9b97897d706356606d7a86929f92867a6d6054473a2f24180d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111e2a3744515d6a7784909d96897c6f6356493c3023160900000008141e2a36414c56626c74808d939d9c938e86807c797878797b7f848b9298a09f93887e71695f53463d321e150b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a546a7683909d95887b6f6255483c3c3b3a3a38342e2e2d29251e1b150e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9083766a5d5043372a1d1000000000000000000000000000000004101d2935404b5564717e8b999a8d8074675864717d8a989c8f8275685d5245392c1d13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111e2a3744515d6a7784909d96897c6f6356493c30231609000000020d1925303a44505a606d78818e939f9e98928d8986858586888c91969f9f98928a7f726c61574d42342b210c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e424f5c6875828f9b96897d7063564a3d302e2e2d2c282321201d19130f0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9083776a5d5144372a1e11000000000000000000000000000000010d18242f3a4754606d7a86929e9184786a5f6675818e9b998b7e7165564c4135291d0c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111e2a3744515d6a7784909d96897c6f6356493c302316090000000008131e28323e44515c666d78818b92979e9f9a9a9392929399999e9f9c948f867e726d625a50453b3122190f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061b2734414e5a6774818d9a978b7e7164584b3e312521201f1c181413110d08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e11000000000000000000000000000000000713202c3945525d6876828f9c96887c6f626d7985929f92867a6d6154473a2f24190d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111e2a3744515d6a7784909393897c6f6356493c3023160900000000020c16202834404a545c666d747e858d9297999c9d9e9e9d9c9a99928f89827b716c625b51483e33291f1007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99998c7f7366594c403326191312100c0707050100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e110000000000000000000000000000000004111d2935414c5665727e8b99998c807366707d8a989c8f8276685e5246392d1e1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111e2a3744515d6a7783868686867d6f6356493c302316090000000000050e18232e39424a545c606c717a8085898c8f909191908f8d8a86827d766e69615a51493f362c21170d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b979a8d8174675a4e4134271b060604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e1100000000000000000000000000000000010d19242f3b4754616e7a86939d9083776974818e9a998b7e7265564c4135291d0c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101d2936424f5b677177797979796f6b6054483b2f22150900000000000007121c273039424a505a61686e73797d80828384848483807e7a75706b615f5750483f372d241a0f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1623303d495663707c89969b8f8275685c4f422e23170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e1100000000000000000000000000000000000814202d3946525e687683909c95887b6e7985929e93867a6e6154473b3025190d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1a27333f4a555f676a6c6c6c6c6360594f43382c1f1307000000000000000b151e2730383f4450565e61676d707375767778777674716d68636059534d453e362d251b12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b88959d9083776a544a3f34281c100306060606060606060606000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e11000000000000000000000000000000000005111e2a36414c5665727f8c98988b7f727c89979c908376685e5246392d1e1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16222e39434d555b5d6060606056544f473d32271b0f0300000000000000030c151e262e343e444c52555c606366696a6b6b6a696764615d56544f47423c332c241b1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a87989e918578665c5044382b1f121313131313131313131313090806030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e110000000000000000000000000000000000010d1925303b4854616e7b87959c8f8376808d9a9a8b7f7265564c41362a1e11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c27313b434a4f51535353534948433d352b21160a000000000000000000030c141c2328323b41464b515356595c5d5e5e5d5c5a5754524c48443d37312a211a120901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d677885929f9286796d6053463a2d201f1f1f1f1f1f1f1f1f1f1f1f1615130f0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e110000000000000000000000000000000000000814212d3a46535e697783909d92877a84919e93877b6e6154483b3025190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151f2931393f4244464646463c3b38322b23190f0400000000000000000000020a111720293036394045464a4d4f50515151504d4b4746413a38332b261f180f0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414b556a7784919d99877a6e6154473b2e2c2c2c2c2c2c2c2c2c2c2c2c2c23221f1b150f070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e1100000000000000000000000000000000000005121e2a36424d5766737f8c99998d808d969d908376695e52463a2d1e1408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d171f272e33363739393939302f2c272119100700000000000000000000000000060e171e252a2e34383a3d40424344454443413e3a3935302c27211a150e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f43505c6976838f9c95897c6f6256493c39393939393939393939393939392f2e2b272019100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e11000000000000000000000000000000000000020e1a25313c4855626f7b88969f9386939f988c7f7265574d42362a1e0d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d151c2227292a2d2d2d2d23221f1b160f07000000000000000000000000000000050d14191d23282c2d303336373838373634312e2d29241e1c160e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071b2835414e5b6874818e9b978a7d7064574a4646464646464646464646464646463c3b37322b22190f04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e11000000000000000000000000000000000000000915212e3a47535f6a7784919d999399a095887b6e6155483b30251a0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b11161a1d1e202020201615130f0a04000000000000000000000000000000000002080e12181c1f202326292a2b2b2a29272421201d1913100b0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99988b7e726558525252525252525252525252525252524947433d342b20150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e110000000000000000000000000000000000000006121f2b37434e586673808d99a49fa49d908377695f53463a2d1f14090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060a0e1011131313130909070300000000000000000000000000000000000000000000070c101313171a1c1d1e1e1e1d1a181413110d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98998c8073665f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f56544e463d32271b0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e1100000000000000000000000000000000000000030f1a26313c4956626f7c8996a1aca7998c7f7266574d42362a1e0d020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070a0d0f10111211100e0b070705010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724313d4a5764707d8a979b8e81746c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6260584e43372b1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e1100000000000000000000000000000000000000000a15222e3b4754606a7884919eaba095887b6e6255483b31261a0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c89959c8f82797979797979797979797979797979797979796f6a6054473b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e11000000000000000000000000000000000000000006131f2b37434e586774808d9aa99d908477695f53473a2e1f14090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a87999f9387858585858585858585858585858585858585867c6f6256493c2f2316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e110000000000000000000000000000000000000000030f1b27323d495663707c899793938c807366574d42372b1e12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202d394653606c7986929f9993929292929292929292929292929292929292897c6f6256493c2f2316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e110000000000000000000000000000000000000000000a13202d394653606c7885868686867c6f6255483c31261a0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505b667885919ea49f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f95897c6f6256493c2f2316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e1100000000000000000000000000000000000000000006121f2b3844505b666c7879797979766a5f53473a2a20150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a546a768390939393939393939393939393939393939393939393897c6f6256493c2f2316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e11000000000000000000000000000000000000000000030f1c28333f4a545b606b6c6c6c6c625f584e43372b180e0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d424f5c68758186868686868686868686868686868686868686868686867c6f6256493c2f2316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e11000000000000000000000000000000000000000000000b17222d38424a50535f6060606055534e463c31261b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061b2834414d59656f7579797979797979797979797979797979797979797979796f6a6054473b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e110000000000000000000000000000000000000000000006111c262f383f444652535353534847433c342a20150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925313d49535d65686c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6260584e43382b1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e1100000000000000000000000000000000000000000000000a141d262d33383945464646463c3a37312a22180e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c37424b53595c606060606060606060606060606060606060606060606056544e463d32271b0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e110000000000000000000000000000000000000000000000020b141c22282b2d38393939392f2e2b26201810060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b25303942494d4f53535353535353535353535353535353535353535353534947433d342b20160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9083776a5d5144372a1e11000000000000000000000000000000000000000000000000020a11171c1f202c2d2d2d2d22211f1b150e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141e2730373d414246464646464646464646464646464646464646464646463c3b38322b22190f04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9083776a5d5044372a1d110000000000000000000000000000000000000000000000000000060b0f12131f202020201515120f0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151e252c31343539393939393939393939393939393939393939393939392f2e2b272019100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9083766a5d5043372a1d100000000000000000000000000000000000000000000000000000000003060612131313130908060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c141b212528292d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d23221f1b160f070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000a1723303d4a5663707d89969c8f8276695c504336291d1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002091015191b1c20202020202020202020202020202020202020202020201615130f0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000b1724313e4a5764717d8a979b8e8275685b4f4235281c0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090c0e0f1313131313131313131313131313131313131313131313090806030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000020b1426323f4c5965727f8c989a8d8073675a4d4034271a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d211407000000000000010a141d2b37434e586874818e9b988b7e7165584b3e3225180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000003060b121c262f384754606a7784919e97887b6f6255483c2f221509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140d0d0d0d0a0f12151d232d38424d57626f7c88969e9285786c605346392d201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d211a1a1a1a1a1a1a1f21272f343f4a545f6974818d9a9b8e8174665b5044382b1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d26262626262627262b2e31394045505b666e7b86929f95897d7063544a3f33281c0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a333333333333333331373a3e434b515b606c78828f999d9184776b605442382d22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054474040404040404040404143474850555c606d73808c949f948a7e7164594f442f261c110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d60544d4d4d4d4d4d4d4d4d4d4e4e53555a61676d747f8c929c989083766c6155473d331d140a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d60595959595959595959595a5a585f62666c7179818c919c9a92867b6e615a5045352b210b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d66666666666666666666666667696a6f72777e848e929c9f93887e71695f53483e3323190f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a737373737373737373737373737476787b7f848a91969d99928b7f726c61574d42362c221108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f998d8080808080808080808080808080818285888c91969e9f9691877e726d625a50453b31241a1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f9c928d8c8c8c8c8c8c8c8c8c8c8c8c8d8d8f9197999e9d98928c847c716c625b51483e332a1f120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929fa49c99999999999999999999999999999a9c9c9a9795908c857f796f6a625a51493f362c21180e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c79869294949494949494949494949494949494999291908d8b87837f7a736d67605850483f372d241a0f060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7987878787878787878787878787878787878786868483817e7b77726d68605d554e463f362d251b12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121f2c3845525e6a757a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a79787674716e6965605d56514b433d342d241b13090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3946525e686e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d6d6c65696764615e5754524c454039312b221b12090100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414c565e61616161616161616161616161616161616160605b535a5854534d4745413a352f271f1910090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1925303b444c52545454545454545454545454545454545454535350494e4b4846423b39352f29241d150d070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141e29323b41464747474747474747474747474747474747474746443f413e3b3a36312c29241e18120b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d1720293036393b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3a3a3937332d312e2d2a25201d19130c070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171e252a2d2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2d2d2b27222521211e1a14110d080100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191e2021212121212121212121212121212121212120201f1b17181514120e0904010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d11141414141414141414141414141414141414141413120f0b0608070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507080808080808080808080808080808080807070605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + _typelessdata: 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070d12120d0706030000000000000406070e12120c0c090601000000000106090b0c12120e07060400000000000000000000000000000002060808131313131313131313131313131313131313131313131313131313130e0d0b080300000000000000000000000000000000000000000105090b0b131313130f0e0c0804000000000000000000000000000000000000000000000000020507080a0c0e10111112131313121211100f0e0d0c0b0a0807060401000000000000000000000000000000000000000000000000000003050608090a0b0a0a0908070502000000000000000000000000000000000000000000000000000000000000000000000000000000020507080b0d0f11121213131212100f0d0b080806020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105090b0c131313130f0e0c0804000000000000000000000000000000000000000000000000000000000000000000000104060707060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000106090b0c0e09080603000000000000000000000000000000000000000000000000000000000000010000030506070707070603000000000000000000000000000000000000000000000000000000000000000000000000000000000000020608080c0e101112131312100e0b07070401000000060606060403010000000000000000000000000000000000000000000000000104060706040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c1012131a1f1f1a1312100b060001070c1013141a1f1e191816120d070000070d121618191e1f1b1413100c07010000000000000000000003090e1214151f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1b1a18140f08010000000000000000000000000000000000060c11151718202020201c1b18140f0902000000000000000000000000000000000000000306090e11141417191b1d1e1e1f1f201f1f1e1e1d1c1b1a191716151413110d070100000000000000000000000000000000000000000306060b0f1213141617171716151414110e0907050200000000000000000000000000000000000000000000000000000000000000000205090e121415181a1c1e1e1f201f1f1e1d1c1a181514120e0905030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c11151818202020201b1b18140f090100000000000000000000000000000000000000000000000000000003050609070d1013141413120f0b0607060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d121618191a1615130f0a04000000000000000000000000000000000000000104060708090a0c0d0e060b0f12131414141312100b060c08070502000000000000000000000000000000000000000000000000000000000000000001040a0f121415181b1d1e1f1f1f1f1d1b181413110d0807081313131311100e0a06000000000000000000000000000000000000000105070d11131413110d0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181c1f20272b2b26201f1c17110a0b12181d1f20272c2b2625221e18110a0911181e2225262b2c27201f1d18120b030000000000000000060e151a1e21222c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c282724201a130b020000000000000000000000000000000911181d2124252d2d2d2d282725201a130c0300000000000000000000000000000000040a0f1315191e20212326282a2a2b2c2c2c2c2c2b2a292928262524232220201d18130c040000000000000000000000000000000000030a0f1215171b1f202123232424232221201e1a1514120e09030000000000000000000000000000000000000000000000000000000002090e12141a1e21212527292b2b2c2c2c2c2b2a29272522211e1a13120f0b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000911181d2224252d2d2d2d282724201a130b03000000000000000000000000000000000000000000000000060b0f1213161a181d202021201f1b17171313100c07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a11181e2225262722221f1b150f0a0400000000000000000000000000000001070d101314151617181a1b1c171b1f20202121201f1c171b181514120e09050200000000000000000000000000000000000000000000000000000002080d11151a1f212225282a2b2c2c2c2c2a282421201d19131414202020201e1d1a16110b0400000000000000000000000000000002080d1113181d2020201d18130c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151c23282c2d333838332d2b28231c14151d24292c2d34383833312e2a231c13131b23292e31323838342d2c29241d150d03000000000000060f181f262b2e2f393939393939393939393939393939393939393939393939393939393433302b251d140b010000000000000000000000000009121b22292e3132393939393534312c251e150c0200000000000000000000000000050b10151b1f21252a2d2e30323436373838393939383837363534333231302f2d2c29241d160d040000000000000000000000000000050b10151a1f2122272b2d2e30303131302f2e2d2a2521211e1a140f0a0400000000000000000000000000000000000000000000000003090e141a1e20252a2d2e31343637383939393938373534312f2e2b26201f1b17110a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b23292e3132393939393534312c251d150b01000000000000000000000000000000000000000002080d11171b1f20232624292c2d2d2d2b272224201f1c18120e09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000a131b23292e3132342f2e2b27201b160c0700000000000000000000000000040c12181d20202223242526282922272b2d2d2d2d2d2b2823272522211e1a14120e0903000000000000000000000000000000000000000000000000060b13191d20262b2e2f32343638393939383734312d2c29241e20212d2d2d2d2a2927221c150d0500000000000000000000000000070c13191d2024292c2d2c29241d160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e272e34383a404545403a38342e261e1f272f35383a4145453f3e3a352d251c1b252d353a3e3f4545413a39352f271f150b0100000000030e18212a31373a3b4646464646464646464646464646464646464646464646464646464641403c362f261d130800000000000000000000000006111b242d343a3d3e4646464642403d372f271e13090000000000000000000000040a0f161c20262b2e30363a3b3d3f4143444445464646454544434241403f3e3d3b3a39352f281f160c01000000000000000000000003090e171c20262b2e2d3337393b3c3d3e3d3d3c3b3a36302e2d2a251f1b160c0700000000000000000000000000000000000000000001070c141a1f252a2d31363a3b3e4042444545464645454342403e3b3a37312d2b27221b140b0903000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b242d343a3d3f4646464642403d372f271d130900000000000000000000000000000000000000070c13191b22272b2d2f332f35393a3a3937332d312d2c28231d1a140d080200000000000000000000000000000000000000000000000000000000000000000000000000000007111b252d353a3e3f413c3b37322b272018120b0300000000000000000000040d161d24292c2d2e3031323334362d3337393a3a3a3a38342e34322e2d2a26211e1a140f0a040000000000000000000000000000000000000000020a11171e24292c31373a3b3f4143444546464543413e3a39352f2b2d2e393939393736332e271f170d0400000000000000000000030b12181e24292d2f35393a39352f281f160c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c2730394044464d52524d46443f3830262731394045474d52514c4a463f372d24242d373f464a4c51524e4745403931271d12070000000009151f2a333c424748525252525252525252525252525252525252525252525252525252524e4c4841382f251a0f0300000000000000000000010c18222d363f454a4b535353534f4d4841392f251a0f04000000000000000000070f151b21282c32373b3c4246474a4c4e50515152525352525151504f4e4d4c4a49484745403a31281d130700000000000000000000060e151a22282d31373a3c3f444647494a4a4a49484746423f3b3a36312c272118120b03000000000000000000000000000000000000030b12181f262b30363a3b4246484b4d4f51515253525251504f4d4b4847423d3937332d261d1a140e06000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232d373f454a4b535353534e4d4841392f251a0f0400000000000000000000000000000000030b12181e24292d3337393c40434045474746443f413d3a38342e2a261f19130c0500000000000000000000000000000000000000000000000000000000000000000000000000010d18232d373f464a4c4d4947433c373228231d150c040000000000000000010c161f282f35393a3b3c3d3f404142433f444647474746443f43413f3b3a36312d2a251f1b150d07010000000000000000000000000000000000040b141c22283035393c4347484b4e505152525252504e4b4745413a373a3b4646464644423f3931291f150b000000000000000000050c151d23283035393a40454745403a31281d1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e39424a51535a5e5e5953504a42382e2f39434b51535a5f5e595751493f362d2d363f495156595e5f5a53514b43392f24180c000000020e1a26313c454d53555f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5b59534a41362b2014080000000000000000000005111d29343f48505658606060605b59534b41372c201408000000000000000009101920272b33383c4347494d525456595b5d5d5e5f5f5f5f5f5e5d5c5c5b595857565553514b433a2f24180d010000000000000000080f181f262b33393c4347484950535456565757565554524d4c4846423b383228231d150c0400000000000000000000000000000000060d151d232931373b4246484d5354585a5c5e5e5f5f5f5f5e5d5c5a5855534e4946443f382f2a261f180f08000000000000000000000000000000000000000000000000000000000000000000000000000005111d29343f49515658606060605b59534b41372c201408000000000000000000000000000000060c151c23283035383f4446494d4f4b5153545350494d4a4645403936312a251e160e0800000000000000000000000000000000000000000000000000000000000000000000000006121e29353f495157595a55544e47433d342e271e160d040000000000000007121d28313940454748494a4b4d4e4f5049505353545453504a504e4b4846423b3a36312b272018120c04000000000000000000000000000000040d161d262d333a4145474e5355585b5d5e5f5f5f5f5d5b5754524c4743465353535353514f4a433b31271c110600000000000000050f171e272e343a4146474b5153514b433a2f24180d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404a545c60666b6b66605c544a3f3435404b555d60676b6b66635b51483f34343f48515b62656b6b67605d554b4035291c1106000006121e2b37424d575f626c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c67645d53483c3024180b000000000000000000000915212e3a45505a62656c6c6c6c68655d53483d3125180c0000000000000009121b222b32373e44484e5355565e61636567696a6b6b6c6c6c6b6b6a6968676665646362605d554b4035291d11040000000000000009121a212a31373e44494e5355535b6061636364646362615e575954534d48433d342e271e160d040000000000000000000000000000070f171f272f343c42464d5254575e616467696a6b6c6c6c6c6b6a686764625f5756535049413e36312a211a1108000000000000000000000000000000000000000000000000000000000000000000000000000915222e3a45515b62656c6c6c6c68655d53483d3124180c00000000000000000000000000000810181e272e343a414549505356595c555d6060605b535a5753514b46423b363028201a120600000000000000000000000000000000000000000000000000000000000000000000000916222e3a46515b626567626058544e45403930281f160c030000000000010d18242f39434b515355565758595b5c5d5e5b60606060605c545c5a5855534d4846423b373229241d160d0500000000000000000000000000040d1620282f383f444c5254585f626567696b6c6c6c6b6a6764605d56534e525f606060605d5b554d43392e22160a000000000000050e172129303940454c5254555d605d554b4035291f1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844515c666d737878736d665c5044383845515d676d747878726d635a50453a3a45505a626d727878746d675d5145382e23170b00000814212e3a47535f696e79797979797979797979797979797979797979797979797979797979746f64594c4033271a0d000000000000000000000b1724313d4a56626c7179797979756f65594d4034271b0e00000000000009121b242d343d43474f55585f6266696e70727476777778797979787877767574737271706e6d675d5145392c20130600000000000009121b242c333c42475055585f6266656c6e6f707170706f6e696966615e57544f45403930281f160c030000000000000000000000000710192129313940454d53575e6166696e71737577787879797878767573716e6a6763605b535046423b332b231a11080000000000000000000000000000000000000000000000000000000000000000000000000b1824313d4a56626d7279797979756f65594d4034271b0e0100000000000000000000000009121a222a303940444c52535b606266696b676d6d6c65696764605c54534d46413a322c2417110a020000000000000000000000000000000000000000000000000000000000000000000b1825313e4a57626d72746f6a626058514b423a31281e150a000000000004101d2935404b555d60616364656667696a6b656c6d6d6d6d666b696765615f5754534d47433c352f281f170f050000000000000000000000020b161f28323a424a50565d60666a6e72747677787979787674716d68625f585e6c6c6c6c6c6a675f554a3f33271a0e0000000000030c172029333b424b51565d6166676d675d51453b31251a0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7880858580786d6053463a3f4a54606d798085847f726c62564a3d3d4a56626d727f848580796d60544a3f34281c1003000815222f3b4855626e7b868585858585858585858585858585858585858585858585858585858174675b4e4134281b0e000000000000000000000b1825323e4b5865717e868686868175685b4f4235281c0f000000000007101b242d363f464e545961636a6f73777b7d7f8183848485858685858484838281807f7d7c7b79756a5e473a2d201407000000000007111b242d363e454d535a61646a6f7376797b7c7d7d7d7c7b7b7875726e69636059514b423a31281e150b0000000000000000000000071019222b333b434b51575f61696e73777b7e8082848485868585848382807e7b7874706c65615a534d453d352c231a100700000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727f868686868175685b4e4235281b0f02000000000000000000000009121b242c343c424a51565d60656c6f737678797a7a79787674706d66615f57524c443e3627221b140b020000000000000000000000000000000000000000000000000000000000000006131f2b37434e5865727f807c766f6a605c544b433a30261c1106000000000613202c3945515d676d6e6f7072737475767778797a7a7a7979787674726e6966615e57544e454039312921170e05000000000000000000000a141d28313a444c545b60686d73777b7e8183848585858583817e7a756f6a616976797979797771675b4f4236291d1000000000000a151e29333b454d545c60686d7277796d60574d42362a1e1205000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d91918c7f7266594c3f44505c6674818d92918b7e7165584b3e3e4b5865717e8b91928d8174665c5044382b1f1206000815222f3b4855626e7b8892929292929292929292929292929292929292929292929292928e8175685b4e4235281b0f000000000000000000000b1825323e4b5865717e8b93938e8275685b4f4235281c0f00000000040e19222d363f48515860626b70767c808387898c8e909091929292929291908f8f8e8c8b8a898887796c5f5346392c201300000000030d19232d363f4850575f616c70767b7f83858789898a8a89888785827f7b756f6b605c544b433a30271d1207000000000000000000050e19222b343d454d555c60696e757b8084878b8d8f91919292929291908f8d8b8884817c78716c615f574f473e352c22190e04000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b93938e8175685b4e4235281b0f020000000000000000000008121b242d363e464e545c60686d73787c808285868687868583807d79746e69615e56504840332d261d140a000000000000000000000000000000000000000000000000000000000000000815222e3b4754606a77848d88827c746d665d554b42382e23170c010000000714202d3a475e6a75797b7c7d7e8081828384858686878786858583817e7b77736e69626058514b433b332920170c02000000000000000006111b262f3a434c565d666c727a7f84888b8e909192929292908e8a86817c746d6e7b8686868683776a5d5144372a1e110000000006111c26303b454d575e666d737a7f848276695e53463a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929e9d9184776a5e51444653606d7986929e9c908376695d504343505d6a7683909d9e9285796d6053463a2d201307000815222f3b4855626e7b88959f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9b8e8175685b4e4235281b0f000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000000000a15202a343f48515b626a6f767d83888c909596989a9c9a9999989898999a9b9c9b9a999897969286796c5f5346392c2013000000010b151f2b353f48505a61696e767d83888c8f929896969797969597928f8c87827c736d665d554b43392e23180c0400000000000000020b17202b343d464e575f676d737b81868d9195979a9c9d9e9e9e9f9f9e9d9b9a9796918e89837e766e6960594f473e342b20160c020000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f02000000000000000000060f1a242d363f4850585f666d727a7f84898c8f919299999292908d8a85817b746d68615a52443f382f261b11060000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8996948f8980786d675d544a3f34281d130700000013202c3946535f6c798788898a8b8c8e8f909192939993939892918f8d8b8884807b756f6a605d554d453b32291e130800000000000000000b17222d38414c565d686d787f858c9196989a9c9c9b9a9a9a9b9a98928e87817a6f798698939084776a5d5144372a1e11000000000c17232e38424d575e696e797f858c90877b6e6154483b2e21150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929d9d9184776a5e51444653606d7985929e9c908376695d504343505d6a7683909d9e9285796c605346392d201306000815222f3b4855626e7b8893939393939393939393939393939393939393939393939393938e8175685b4e4235281b0f000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000000030f1b26323c46505a626d727c838a9095999d9b9a93918f8d8d8c8b8b8c8c8d8e8f919298989f9f9286796c5f5346392c201300000007121d27313d47505a626c717b838a9095999c9e9b99989797989a9c9e9c99938f8780786d675d554b40342820150a000000000000000a141d29323d464e5860696e7980868e92999d9f9c99969992929192929995989a9ea19e9a95908a827b706b61594f463d32281e13080000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f020000000000000000030e18212c363f48505a616a6f787f858c9196999c9e9f9f9f9f9e9c9a97928e87817a706c635c504941382d22170f0500000000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d92999c928d82796d665c50443a2f24180d01000013202c3946535f6c798692969798999a9c9d9c9b9a9a999a9a9b9c9c9a9896918d87827c746d675e574d443a3025190c03000000000000030f1b27333f49535d686d7a828c92979e9e9997928f8e8d8d8e8e9196989a938e857c7885929d9084776a5d5144372a1e1100000003101c28343f4a545e696e7b838c92979a8c7f7366594c403326190d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808c91918c7f7266594c3f44505c6674808d91908b7e7165584b3e3e4b5865717e8b90918d8174665b5044382b1f1206000815222f3b4855626e7c868686868686868686868686868686868686868686868686868686868175685b4e4235281b0f000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f00000006131f2b37434e58626c727f8790959d9e97928e8a86848281807f7f7f7f808081838485888d989f9286796c5f5346392c20130000000c18242f39434f59626c717e8690949d9f9b97928f8c8b8a8a8b8d8f92989d9f9a938d83796d675c51453c31261b0f01000000000006111b262f3b444e58606a6f7b838d92989f9f9a93908c8987868584858687888b8d91969a9fa09d948f857d706c61584e443a3024190d0300000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f0200000000000000000915202a333e48505a626c717c838c92989e9f9c98959992929995979b9f9f99928e857e736e605b53493f332721170d02000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a808691969d958f82786d60554b4135291d1104000013202c3946535f6c7986929fa19a96989291908e8d8d8d8d8d8e8f9196969b9e99928f8781796e695e564c41362a1e150b00000000000005121f2b3744505b656d7a838f949f9f97928d888582818080818284878b91969791867c84919d9084776a5d5144372a1e1100000006121f2c3844505c666e7b8490959f96918a8276695c504336291d10030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d787f84847f786c605346393f4a54606d798084847f726c62564a3d3d4a56626c717e848480796d60544a3f33281c0f03000814212e3a47535f6a7679797979797979797979797979797979797979797979797979797979756f65594d4034271b0e000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f0000000815222e3b47545f6a717e8b92999f97928c85817d7a78767473737272727374757677797b88949f9286796c5f5346392c2013000004101d2935404b55606b717e8792989f99928e898582807e7e7e7e8083868a90959f9f958f82796d60584e43372b1d130700000000000b17222d38414c56606a6f7c8590959f9e98928d87837f7c7a79787878797a7c7e8184898e92999e9f9792877e706a60564c41352920150900000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f0200000000000000020f1a26313c46505a626c717e8690959f9f99928f8b8887868686888b8e92989f9f97928a80746c655b50443e33291f1409000000000000000000000000000000000000000000000000000000000714202d3946525e686e737c8491969f948b7f72675d5145392c201306000013202c3946535f6c7986929f9a8f8a87868483828180808081818285878a8e92979f9a938e837b6e685e52463f30271c12070000000004101d2935404b55606c77828f959f9a938d85807b78767473737475777a7f848b9298928585929d9084776a5d5144372a1e11000003101c28343f4a54606d788390969f948f847d786c605346392d2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505c666d727777726c665b5044383845515c676d737777726d625a50453a3a45505a626d717777736d675c5142382d22170b000006121e2b37424e575f6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c68655d53483d3124180c000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f00000714202c38444f59626f7c86929f9e9490857f7974706d6769676666656565666768696a6d7a87939f9286796c5f5346392c2013000006131f2c3845515d676f7d8792999c948f87817c7975737271717273767a7e838a92989f948d80746a5f53473a2f24180d01000000030f1b27333f49535e686f7c859297a09f938f86807b7673706e686b6b6c676d6f7174787c81868e939fa29992867c6f685d52453c31261a0e01000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f020000000000000006121f2b37434e58616c717e889298a099928d86827e7c7a79797a7b7e82868c92989f9e928c81776c605a50453b30251a0e0400000000000000000000000000000000000000000000000000000005111e2a36414c565e616a6f7b84919e9f92857a6d6054473a2d211408000013202c3946535f6c7986929f968a7d7b7977767574737373747576787a7d81858c92989f9590847a6d615a5042392e23180c000000000613202c3945515d67727e8b949e9992888079736e6a696867676768686e72787f8692989292979d9084776a5d5144372a1e11000006121f2b3844505c66727f8b95a0958f827a706c665b5044382b1f12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a545c60666a6a66605b544a3f3334404b555c60666b6a65625b51483f34343f48505a62656a6b66605c554b402f261c11060000020e1a26313c454e5355606060606060606060606060606060606060606060606060606060605b59534b41372c201408000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f00000916232f3c4855616b768390999e938f827a726d6764605d555a5a59585859595a5b5c606d7a87939f9286796c5f5346392c20130003101c28343f4a54606d798491999c928d827b74706c66666564646567676d71777e8692979f92877c6f62554b4035291d110400000005121f2b3744505b656e7a859297a299928b817b746e696663615e565e555d606265656c6f747b818a9298a29891847a6d60574e42372b1d1207000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f02000000000000000814212e3a47535f6a717e87939a9e959087807b76726f6d67676d6f71757a7f858f949d9c938d80736c61574d42362a20150a000000000000000000000000000000000000000000000000000000020e1925303b444c52585f69707d89949f978b7e7164584b3e3025190d010013202c3946535f6c7986929f93877a6e6c65696867676667676869686d7074797f869196a0968f82766c62544a4034281c10040000000714202d3a4753606d7985929e9f92877e746d67625f575b5a5a5b565e61656c727c8692999ea19d9084776a5d5144372a1e1100000713202d3a4653606d7885919e9d9083796d67605b544a3f33281c0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e38424a5053595e5e5953504a42382d2e39434b51535a5e5d585651493f362d2d363f485056585d5e5a53514b43392f1d140a000000000915202a333c424748535353535353535353535353535353535353535353535353535353534e4d4841392f251a0f04000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f0004101c2834404a5463707d89959f978f81796d68605d5553514b4e4d4c4c4c4c4d4d4e54606d7a87939f9286796c5f5346392c20130006121f2b3844505c66727f8c969d938d80776e6963605b5458575758555d60646c717b85929f998f8275675d5145392c201306000004101c2934404b55606c77828f97a19892877e756e69615f575654524d514b515455535b6063696e757e869298a1968d81746a5f5347392f24180c000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f02000000000000000815222f3b4855626e7c8692999e938f837c746e696562605d5d606264686d737b828d929c9c928b7e71695e52463d32271b0f0200000000000000000000000000000000000000000000000000040608141e29323b41464e56606b76828f9c9c8f827569564c41362a1d11050013202c3946535f6c7986929f93877a6d605b535b5a5a5a5a5a5b565d6063676d737b8491959f948b7e71665c5144382c1f1206000005111d2935414c5665727e8b979f948b7f726c605d55534e4e4d4d4e4c52535b606a707d87939faa9d9084776a5d5144372a1e1100000a1723303d4a5663707d89979f94897c6f675d55504a42382d22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2630383f44464c51514c46443f382f262730394045464d51514b4a463f372d24242d363f454a4b51514d4745403931271d0b0200000000030e18212a31373a3b4646464646464646464646464646464646464646464646464646464642403d372f271d130900000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f0006121f2c3844515c6675828e9b9e91847a6d675e56514b4745404140403f3f3f40414754606d7a87939f9286796c5f5346392c2013000713202d3a4653606d7884919e978e81746c655f5753504a4b4b4b4b4b51545a6169717e8a969f92867a6d6053473a2d201407000006131f2c3845515c67717e8b949f9992867d716c615e57534d494746414541454749495053575f616c707d86929f9f93877b6e62554b4035291d10040000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f02000000000000000d1a2734404d5a6773808a9197938f81796f6a615e57555451515355565d60696e77808d929c9f92857b6e61584e43372b1e14080000000000000000000000000000000000000002050708070c1013131417202930363c444f5964717e8a979e918578685e5246392d2013070013202c3946535f6c7986929f93877a6d6054494f4e4d4d4d4e4e4c5254555d60696e7a8391999e9184796d6053463a2d20130700000713202d3946525e687683909c9c9082766d625a514b4742414040414146495058606b75818e9ba79d9084776a5d5144372a1e1100010e1a2734414d5a6774808d9a9c8f82766a60554c443f382f261c1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e262e34383a3f44443f3938332d261d1e272e34383a4044443f3d3a342d251b1b242d343a3d3e4444403a38342f271f150b000000000000060f1820262b2e2f393939393939393939393939393939393939393939393939393939393534312c251d150b0100000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000713202d3a4653606d7885929f988a7e71685d554c45403a39352f3333323232333a4754606d7a87939f9286796c5f5346392c2013000a1623303d495663707d89969e92857a6d605b534d46443f3f3e3e3f4145475057606c7884919e988a7d7064574a3d3124170a00000714202d3a4753606d7984919e9f93877d706b625a534d46423d3b39363035393a3c3f44464d535a616a717e8b949f998e8174675d5145382c1f13060000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f02000000000000000d1926323f4b58636e737e848e8f81786d675f58534d4947454547484c52575e656c73808d939e978f82756a6054473b3025190d010000000000000000000000000000000003090e12141519181c1f202121201f252a323d4754616d7a8797a197877a6d6154473a2e2114070013202c3946535f6c7986929f93877a6d605447424140404041424145474b51575e686f7c87939f968a7d7064574a3d2f24180d01000714212e3a4754616d7a86939f97897c70635b51454039373134343036383f444f59626e7b8895a09d9084776a5d5144372a1e110003101d293643505c6976838f9c988b7e7265584e433a332d261d140a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c141c23282b2d333737332d2b28221c14151d23282c2d33383732312e29231b13121b22292e31323738332d2c29231d150d0300000000000000060e151a1e21222d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d282724201a130b030000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000916232f3c4956626f7c89989f9285796d60564c433a352f2c292427262525262d3a4754606d7a87939f9286796c5f5346392c2013000d1a2633404d596673808c98988c8073675d5149413b38332d31312f35393e44505b6674818d9a998c7f7266594c3f3326190c0005111d2a36414c5664717e8b96a1968d80736c61595046423b37312e2d2a25292c2d2d33373b42465058616c76828f9c9f9285796d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f02000000000000000a17232f3b47525c636c717a8184796d665d554e46423c3a39393a3c41454d535b606c77818e979e93897c6f62564c41362a1e11050000000000000000000000000000060b0f141a1e21222523282c2d2d2d2d2b28222d3946525e687885919e95887b6f6255483c2f2215090013202c3946535f6c7986929f93877a6d6054473a34343334343035393a40454d56606a74818e9b9b8e817468554b4035291d1004000a1724303d4a5763707d8a999e9184786b6054493f352f2b262727252a2d333d47535f6a7784919d9d9084776a5d5144372a1e110004101c2834404b546b7885919e95897c6f6256493d3128221c140b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171c1f20262b2b26201f1c17110a0b12181c1f20272b2a2524221d1811090911181d2124252a2b27201f1c18120b0300000000000000000003090e121415202020202020202020202020202020202020202020202020202020201b1b18140f0901000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000b1825323e4b5865717e8b989b8e8175675c51443a302924201d181a191919212d3a4754606d7a87939f9286796c5f5346392c2013000f1c2835424f5b6875818b8b8b897c6f63554b41382f2b2822242424292c333f4a5466737f8c999a8d8074675a4d4134271a0e000713202d3946525e687683909c9e9184796d60594f473f36312b2621201e191d202122272b31363e46505a63707d8997a1988a7d7064574a3d312417060000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f020000000000000007131f2a36404a525a61686d74796d675d544b433c36312d2c2c2d2f353b4149505b656d7a85919e9c8f8275685e5246392d201407000000000000000000000000020a11171c1f262b2d2e322e34383a3a3a3938332d2f35414c566a7784909d95897c6f6256493c2f2316090013202c3946535f6c7986929f93877a6d6054473a2d2727272724292c2f353b444e5863707d8a989e918477675d5145392c201306000c1926333f4c5966727f8c999b8e817568594f443729241d1a1a1a191b222b37424e576774818d9a9d9083776a5d5144372a1e110006131f2c3845515c667986929f94877a6d6154473a2e2117110a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b101213191e1e1913120f0b060000070c1013131a1e1e181815120c060000060c111517181e1e1a1413100c070100000000000000000000000002060808131313131313131313131313131313131313131313131313131313130f0e0c08040000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000d1a2733404d5a6673808d99998c7f7266554b4032281e1813110d070d0c14212d3a4754606d7a87939f9286796c5f5346392c2013000a1724313d4a5764707d7f7f7f7f796d6053463a2f261f1c1718171b2129323f4c5865727f8b989b8e8174685b4e4135281b0e000714212e3a4754616d7a87939f988b7e72675c51473e352a251f1a1414110e111314171b1f262a343e4653606c7885919e9a8d8073675a4d402d22170b0000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f0200000000000000020e19242e38404850565d60676d675d554b4239312a2521201f2024292f383f49535e68727e8b969f93877a6e6154473b2e2114080000000000000000000000070b141c22282b31373a3b3f42404546474746443f403c3b43505d6a7683909d96897c706356493d3023160a0013202c3946535f6c7986929f93877a6d6054473a2d211a1a1b191d202429323d4653606d7985929f93867a6d6053473a2d201407000e1b2834414e5b6774818e9a988c7f7265594c3f322618120e09080d111a26313f4b5865727e8b989d9083776a5d5144372a1e11000713202d3a4653606d798699a39386796d6053463a2d201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306070c11110c0606030000000000000406070d11110c0b090601000000000105090b0b11110d070604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000e1b2834414e5b6774818e9a978b7e7164584b3e2e25160c07040100000714212d3a4754606d7a87939f9286796c5f5346392c2013000a1623303c4955616c70727272726d675c5145382c1d14141a1b22272b333b444f596773808d9a9a8d8073675a4d4034271a0d000b1724313e4a5764717d8a9a9f92867a6d60554b40352c231a140e090705020406060b0f141a222b3744505b6575818e9b9c9083766953493f33271b0f0300000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f02000000000000000008121c262e363e444c52555c605c554b433a30271f1a14131314191d262d38414c56606d7984919e998b7f7265584c3f3025190d010000000000000000010910191d262d33383c4246484c4e4b5153545453504a4d494743505d6a7683909d96897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d6054473a2d21140d080d111318202c3845515c667784919e9a887b6e6155483b2e221508000f1c2936424f5c6975828f9c978b7e7164584b3e3125180701000000091724313e4a5764717d8a979d9083776a5d5144372a1e11000714202d3a4753606d7a86939f938679665c5044382c1f120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105070706060300000000000104060707060401000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000f1b2835424e5b6875818e9b968a7d7063574a3d3024170a00000000000714212d3a4754606d7a87939f9286796c5f5346392c2013000814202d3944505a616465656565605c554b4034281c1e20252a2d33373e454d56606b7683909d988c7f7265594c3f3226190c000d1a2633404d596673808c93938f8276675d5143392f231a110903000000000000000003090f1b27333f495366737f8c999e918578655b5044372b1f120500000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f020000000000000000000a141c242c323a41454b5153514b433a31281e150d090606080b141b262f3a45515c6673808d9a9c8f827569564c41362a1d110500000000000000010a131b222b2f383f44464d5355585b545c606060605b545956544e505d6a7683909d96897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d6054473a2d21140700010407101c2834404b54697683909c95887c6f6255493c2f22160900101d293643505c6976838f9c978a7d7064574a3d3124170a000000000a1623303d495663707c89969d9083776a5d5144372a1e11000714202d3a4753606d7a86939f9386796c604a3f34281c1003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030607090c0e101212131312110f0d0a070604010000000000000000000000000000000000000000000000000000000000000002080d11131413120f0b060001070d1013141413100d070100000000000000000000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000f1c2835424f5b6875818e9b96897d7063564a3d3023170a00000000000714212d3a4754606d7a87939f9286796c5f5346392c20130004101c28333e485055575858585853514b43392e23252a2d3136383f444650575e686f7c89959f97897c6f6356493c30231609000e1b2834414e5b67748186868686807366554b4031271d11080000000000000000000000000b17222d3e4b5864717e8b979f9386786c605346392d20130600000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f02000000000000000000020a121a20282f353940454745403931281f160c0300000000020a141d2834404b54636f7c89999e918578685e5246392d201307000000000000000a131c252d343d424a5053575f6165686a666d6d6d6c666966626058555d6a7683909d96897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d6054473a2d211407000000000c18232e434f5c6976828f9c96897d6f6356493c3023160900101d2a3643505d697683909c96897d7063564a3d3023170a00000000091623303c4956636f7c89969d9084776a5d5144372a1e11000714202d3a4753606d7a86939f9386796c6053462e23170c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b10121316191b1d1e1f201f1f1e1c1a171413100d070300000000000000000000000000000000000000000000000000000000050c13191d2021201f1c17110a0c12181d202020201d18120c04000000000000000000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000f1c2835424f5b6875828e9b96897d7063564a3d3023170a00000000000714212d3a4754606d7a87939f9286796c5f5346392c201300000b17222c363e44494a4c4c4c4c46454039302a2d30363a3b42464950535a61696e7a84919e9e9285796d6053463a2d201307000613202d394653606c7879797979786c6053463a2f20150b00000000000000000000000000061724313e4a5764717d8a97a49a867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f020000000000000000000000080d161e24292f34383a38342f271f160d04000000000000020b18232e3a4753606d7a86939f97877a6d6154473a2e21140700000000000009121c252e373f464e545b6064696e72757778797a7a797876736f6a6361596a7683909d96897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d6054473a2d21140700000000071c2936434f5c6976828f9c96897c6f6356493c3023160900101d2a3643505d697683909c96897d7063564a3d3023170a00000000091623303c4956636f7c89969d9084776a5d5144372a1e11000714202d3a4753606d7a86939f9386796c605346392d20130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f11171c1f202226282a2b2c2c2c2c2a29262420201d18120f0b0600000000000000000000000000000000000000000000000001080e171e252a2d2e2d2b28221c14161d24292c2d2d2c29241d160d060000000000000000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000f1c2835424f5b6875828e9b96897d7063564a3d3023170a00000000000714212d3a4754606d7a87939f9286796c5f5346392c2013000005101a242c33393c3d3f3f3f3f3a38342e3036393b4246474d53535b60636c717b849196a0968d8073665c5145382c1f13060006121f2b3844505b666c6d6d6d6d6c655b5044372b1f1203000000000000000000000000020b1425313e4b5864717e8b97a399877a6d6054473a2d21140700000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f02000000000000000000000000040c13191d23292c2d2c29231d150d0400000000000000000713202c3945515d677884919e95887b6e6255483b2f2215080000000000060f1b242e374049515860666c71767b7f818485868787868583807c77706b606a7683909d96897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d6054473a2d21140700000003101c2936434f5c6976828f9c96897c6f6356493c3023160900101d2a3643505d697683909c96897d7063564a3d3023170a00000000091623303c4956636f7c89969d9084776a5d5144372a1e11000714202d3a4753606d7a86939f9386796c605346392d2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b10161b1c23282b2d2f3235363839393938373533302d2c29241f1b17110a02000000000000000000000000000000000000000000040c131920293036393a3938332d261d1f282f35393a3a39352f281f18100900000000000000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000f1c2835424f5b6875828e9b96897d7063564a3d3023170a00000000000714212d3a4754606d7a87939f9286796c5f5346392c201300000008121a22282d3031323232322d2e34383a4146474d5254575e61656c70767e859196a0989184796d60544b4034281c100400030f1c28333f4a545b6060606060605b53493f33271b0f030000000000000000000000030b141d28343f4a5465727f8c989f9286796c605346392d20130600000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f020000000000000000000000000001080d12181c1f201f1c18120b0300000000000000000004111d2935404b556a7784909d96897c6f6356493c3023160900000000030d17212d364049525b626a6f787e83888b8e909298939397918f8c89837d756d677683909d96897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d6054473a2d21140700000003101c2936434f5c6976828f9c96897c6f6356493c3023160900101d2a3643505d697683909c96897d7063564a3d3023170a00000000091623303c4956636f7c89969d9084776a5d5144372a1e11000714202d3a4753606d7a86939f9386796c605346392d20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d161b21272c2e34383a3c3f414345454646454442403d3a39352f2b27221b140b0902000000000000000000000000000000000000040d161e2429323a41464746443f382f2628313940454747454039312a221b1209000000000000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000f1c2835424f5b6875828e9b96897d7063564a3d3023170a00000000000714212d3a4754606d7a87939f9286796c5f5346392c2013000000000810171c2023242525272f35383f44464c5254565e6165696e72787d838a9197a09892867d6f675d5142392e23180c0000000b17222d38424a50535353535353504941382d22170b00000000000000000000030a0d151d262f3844505c6675818e9b9e928578655b5044372b1f120500000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f0200000000000000000000000000000001070c10131413100c07010000000000000000000004101c2834404b546a7783909d96897c6f6356493c302316090000000009141f29333e48525b636d727c838a9095989b9d9d9c9b9b9c9d9c9995908a81796d7683909d96897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d6054473a2d21140700000003101c2936434f5c6976828f9c96897c6f6356493c3023160900101d2a3643505d697683909c96897d7063564a3d3023170a00000000091623303c4956636f7c89969d9084776a5d5144372a1e11000714202d3a4753606d7a86939f9386796c605346392d2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c121821272c3238383f4446494c4e505152535252514f4d4a4745403937332d261d19140d0500000000000000000000000000000000030c1620282f353e444c525453504a42382d2f39434b515353514b433c342d241b12090000000000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000f1c2835424f5b6875828e9b96897d7063564a3d3023170a00000000000714212d3a4754606d7a87939f9286796c5f5346392c20130000000000050b1014151c2328313940454a5053565e6165696e72767b7f848a90949e9f9791867d706b60554b4030271d120700000006111c262f383f44464646464646443f382f261b11060000000000000000060b0f151b1f272f38414b55606d7984919e9c9083766953493f33271b0f0300000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989b8e8175685b4e4235281b0f0200000000000000000000000000000000000004060706040000000000000000000000000006131f2c3845515c667784919e95887b6f6255483c2f221509000000020e1a26313b45505a636d737f8790959d9f9b9992908f8e8e8f9092999c9d938e837a7683909d96897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d6054473a2d21140700000003101c2936434f5c6976828f9c96897c6f6356493c3023160900101d2a3643505d697683909c96897d7063564a3d3023170a00000000091623303c4956636f7c89969d9084776a5d5144372a1e11000714202d3a4753606d7a86939f9386796c605346392d20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d161d242932383d43484a505355595b5d5e5f5f5f5f5d5c595753514b46443f382f2a251f170e070000000000000000000000000000000b151e28323a414550565e61605b544a3f3335404b555d60605d554e463e362d241b110600000000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000f1c2835424f5b6875828e9b96897d7063564a3d3023170a000205060b0f14212d3a4754606d7a87939f9286796c5f5346392c2013000000000000030c151e272e343e434b51545c6064686d72767b7f83878c91969c9f9a938e857d706b61594f433a2f1e150b00000000000a141d262d3338393a3a3a3a3937332d261d140a00000000000004080e11171c1f262b31394149535d67717e8a97a1998d8073665a4d402d22170b0000000000000000000000000404040404040404040404040404040404040c1825323f4b5865727e8b989b8e8175685b4e4235281b0f020000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7986929f97877a6e6154473b2e21140800000005121e2a36424d57626c73808b92999f99928e8986838281818283868a8f949d9590837983909d96897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d6054473a2d21140700000003101c2936434f5c6976828f9c96897c6f6356493c3023160900101d2a3643505d697683909c96897d7063564a3d3023170a00000000091623303c4956636f7c89969d9084776a5d5144372a1e11000714202d3a4753606d7a86939f9386796c605346392d201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171f282f353d44484f54545c60626568696b6c6c6c6b6a686663605d55535049413e363029201911080000000000000000000000000007121d27303a444c525a61686d6c665b50443c3b45515d676d6d675f5850483f362d22180c01000000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000f1c2835424f5b6875818e9b968a7d7063574a3d30241708090e1214171c1f232d3a4754606d7a87939f9286796c5f5346392c20130000000000000b151e273039404450555d60666d70757a7f83878b90939a9e9e99928e87817a6f6b61594f463d31281d0c030000000000020b141c22282b2d2d2d2d2d2d2b27221b140b0200000003070c1014191c22282b31373d434b535b656d7984919ea095897c6f6356493c302316060000000000000002060a0c0d101010101010101010101010101010101010101825323f4b5865727e8b989b8e8175685b4e4235281b0f020000000000000000000000000000000000000000000000000000000000000000000001070f1b27333f4953626f7c88999f928578695e52463a2d2014070000000714212d3a46535f69717e8b929f9d949087827d7a7775747475777a7d82899095958d8083909d96897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d6054473a2d21140700000003101c2936434f5c6976828f9c96897c6f6356493c3023160900101d2a3643505d697683909c96897d7063564a3d3023170a00000000091623303c4956636f7c89969d9084776a5d5144372a1e11000714202d3a4753606d7a86939f9386796c605346392d2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e172029313940454f54596063666d6f7274767878797978777573706d6763605b535046423b322b231a11080000000000000000000000000c18232e39424c565d606c717a786c60574d4245505a606d797a6f6a625a50483f34291d1105000000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000f1b2835424e5b6875818e9b978a7e7164574b3e2e23191a1a1a1e2022282b2e343a4754606d7a87939f9286796c5f5346392c2013000000000007121c273039424a515a61676d72787d82868b90939a9c9f9b96918c87817c756d6860594f473e342b1f160c00000000000000020a11171c1f2020202020201f1b17110a020000060b0f12181c1f252a2d33383c43474f555d656c77818e96a09d9083776b6054483b2f221509000000000000070d121619191d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d25323f4b5865727e8b989b8e8175685b4e4235281b0d07000000000000000000000000000000000000000000000003040404040404000004060b1318242b3744505b65737f8c999c8f827669564d42362a1e1105000006121e2b37424d57616e7b86929f9d928d837b75706d6769686869686d70767c838e93938785929f96897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d6054473a2d21140700000003101c2936434f5c6976828f9c96897c6f6356493c3023160900101d2a3643505d697683909c96897d7063564a3d3023170a00000000091623303c4956636f7c89969d9084776a5d5144372a1e11000714202d3a4753606d7a86939f9386796c605346392d20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c172029323b434b515960636b6f74797c7f818384858685858482807d7a75706c65615a524d443d352c231a10070000000000000000000004101c2834404b545d686d757e857f72695f544a4d57616c7481847c716c625a50453a2e211509000000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000e1b2734414e5a6774818d9a988b7f7265544a3f3429242627252a2d2d3338393f444754606d7a87939f9286796c5f5346392c201300000000000c18232e39424a545c606c71797f848a8f92999c9f9b98928e8984807b756f6a615e564f473e352c22190d04000000000000000000060b0f12131313131313120f0b060003090e11171b1f23282c3036383f44464e535960676d77808d939e9e948a7e7164594f44382c20130700000000010a12191e2325262a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a323f4b5865727e8b989b8e8175685b4e4235281e19120a0100000000000000000000000000000000000104060710101010101010070c1013171d242935404b55606c7884919d998c7f7366594c403025190e0200000814212d3a47535f6975818e989e938d80786e6963605d555b5b565d60646a6f79818e93939297a296897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d6054473a2d21140700000003101c2936434f5c6976828f9c96897c6f6356493c3023160900101d2a3643505d697683909c96897d7063564a3d3023170a00000000091623303c4956636f7c89969d9084776a5d5144372a1e11000714202d3a4753606d7a86939f9386796c605346392d201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e29333b444c555d606b70767c8185888c8e909192929292908f8c8a86827d78706c615e564f473e352c22190c0300000000000000000006131f2c3845515c666d7a818a92867b6e665c50545e69717e8a91867e716d62564a3d3124170b000000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000c1926333f4c5966727f8c999b8e8175665c50443b3530333430363a3b3f44464a505357606d7a87939f9286796c5f5346392c20130000000004101c2834404a545c666d747e848c91969b9f9c98928e8a85817d78736e69625f58524c443d352c231a10070000000000000000000000000306060707070706050300060b10141a1b22272b2e34383b41464a5053585f626b6f79818d929da1968f82756c6155473d32271b0f03000000000a131c232a2f3233373737373737373737373737373737373737373737373f4b5865727e8b989b8e8175685b4e42352f2a231c130a00000000000000000000000000000001070d1113141c1d1d1d1d1d1d1d181c1f23282f353f45515d67717e8a969f94887b6e6155483b2e2215090000000815222e3b4855616e7b87939f978e81776d665f5753514b4e4e4c52545860676d74818e949fa2a996897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d6054473a2d21140700000003101c2936434f5c6976828f9c96897c6f6356493c3023160900101d2a3643505d697683909c96897d7063564a3d3023170a00000000091623303c4956636f7c89969d9084776a5d5144372a1e11000714202d3a4753606d7a86939f9386796c605346392d20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27303b454d565e676d747d83898d9297989b9c9e9e9d9d9e9d9b9998928f8a837d766e6960594f473e342a1e150b0000000000000000000713202d3a4653606d79848e93989083786d60585c666e7b859298928b7e7165584b3e3225180b000000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000a1724313d4a5764707d8a9a9e9184796d60564d4641414040414246484a5053545c6063696e7a87939f9286796c5f5346392c2013000000040e18222c3844515c666d78808a91979e9f9a938f8a86827d7975706c66615e57534e46413a322b231a110800000000000000000000000000000000000000000001080d11171c1f252a2d3337394045464d52545b60636a6f757d848e939da19791847b6e615a5045352b21160b0000000007121c252e353b3e4043434343434343434343434343434343434343434343434b5865727e8b989b8e8175685b4e423e3b352e251c0c0300000000000000000000000000040c13181d2021292a2a2a2a2a2a2a23282c2e343a4045515b606d7984919e9c908376695f53463a2d211407000005121e2a36424d576773808d9a9e9285796d655c544d47454041414145474e555c606d7882909aa4a396897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d6054473a2d21140700000003101c2936434f5c6976828f9c96897c6f6356493c3023160900101d2a3643505d697683909c96897d7063564a3d3023170a00000000091623303c4956636f7c89969d9084776a5d5144372a1e11000714202d3a4753606d7a86939f9386796c605346392d2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e39434d575e686e79818990949a9e9d99999392919091929299989c9f9b95908a827b706b61594f463c30271d1207000000000000000006131f2c3845515c66727f8c949f958c7f726a5f606d788290979991847a6d6054473a2d211407000000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000814212e3b4754616e7a87939f978a7e71685e57524c4d4d4d4e4d5254545b6063666d70757b808d9a9f9286796c5f5246392c1f130000000a15202c38444f59606d78818d929e9e98928d87827e7975716d6763605b54524d47433c36302820191108000000000000000000000000000000000000000001070d13191c23282b3136383f44464b5153565e61666c70767c828991969e9f9791857c6f695e52483e3423190f04000000020d19232e3740464b4c5050505050505050505050505050505050505050505050505865727e8b989b8e8175685b504c4b4640372e1e150a000000000000000000000000040d161d24292c2d36373737373737372e34383a3f444b515b626d74808d969f94897d7063574d42362a1e120500000714202d3a46525e697784919e998c7f72675d534a423c39352f2f35393d434b515c666f7c87939fa396897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d6054473a2d21140700000003101c2936434f5c6976828f9c96897c6f6356493c3023160900101d2a3643505d697683909c96897d7063564a3d3023170a00000000091623303c4956636f7c89969d9084776a5d5144372a1e11000714202d3a4753606d7a86939f9386796c605346392d201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b555e696e7a838d929c9f9c95918c8986858483848586898b8f949a9f9d948f857d706b61584e43392e23180c010000000000000004101c2834404b54606c77828f979f92867c6f666a737f8c949f92877c6f675d5145392c201306000000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000714202d3946525e687783909d9e91847a6e69615d565a595a5b575e6164666c7074797d82878d929d9f9285786c5f5245392c1f120000030f1b26313c4855616b74808d939d9f938e86817b76716d6764605d5553504a46423b37322a251e160e070000000000000000000000000000000000000000040c12181e24292e34383b4246495053555c6064686e72787d82888f939ea09f9590857c6f6a5f564d42362c2211070000000006121e2a3540495157595d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d65727e8b989b8e8175685d5d595751494030261c110600000000000000000000010c161f282f35393a4343434343434343434045464a50555d606d727f8b929d989083766b6054453b31261a0e0200000815212e3b4854616e7b87969f93867a6d60554b4138302c292424292c3139404a54606a75828f9ba396897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d6054473a2d21140700000003101c2936434f5c6976828f9c96897c6f6356493c3023160900101d2a3643505d697683909c96897d7063564a3d3023170a00000000091623303c4956636f7c89969d9084776a5d5144372a1e11000714202d3a4753606d7a86939f9386796c605346392d20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d17212c3845515c676e7b8490959d9f949089847f7d7a7877777778797c7f82888e939a9e9792867d706a5f554b4034281d120700000000000000000c18232e3944505b656e7a85929e999083786d6f7c87929f948c7f726a60554c4135291d1104000000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f0005111e2a36414c5665717e8b96a09690837b726d68686766676869696e7174797c81858a8f939a9ca49e9285786b5f5245382c1f12000006121f2b37434e5863707d8a929d98928a817b746e6964605d5553514b46443f3836302b262019130c050000000000000000000000000000000000000000060d161d24292f35383f44464d53535b6063676d71757b7f848a8f949b9e9f98928c837b6f6a5f584e443b30241a1000000000000a16232f3b46515b63666a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a727e8b989b8e81756a6a6a66635b5142382e23170c0000000000000000000007131d28313a4145474f50505050505050504b5153545c60676d747f87939f9f92867c6e62594f44332a1f14090000000a1724313d4a5764707d8a979d908377685d5243392f261f1d18191d20272f38424e5865717e8b98aa96897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d6054473a2d21140700000003101c2936434f5c6976828f9c96897c6f6356493c3023160900101d2a3643505d697683909c96897d7063564a3d3023170a00000000091623303c4956636f7c89969d9084776a5d5144372a1e11000714202d3a4753606d7a86939f9386796c605346392d2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2b37434e58606d79839096a098928c837d7873706d676b6a6a666d6f72767b81889196a09892867c6f675c5145392f24180c00000000000000040c131d27333f49535e68707d8a929d958c807379849199978f82786c60584e433a2f2419110a020000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f00010d1925303b4653606d79849199a09590857f7a77747473737476787b7e8185898d929798928d929c9e9184776b5e5144382b1e1100000815212e3a47535f6a7783909d9f92867e746e69615f5753514b4745403938332d2a251f1b150d080200000000000000000000000000000000000000030a11171f282f353a41454a5053575e61656c6f74797d82868c91969c9f9f99928e8680786e695f584e463c32291f120900000000000c1925323e4b57636d737676767676767676767676767676767676767676767676767676767e8b989b8e8176767676736d63544a3f34281c10030000000000000000010d18242f3a434b51545c5d5d5d5d5d5d5d5d555c6063666d7179818b93999d938c7f726a5f53473d3321180e030000000c1926333f4c5966727f8c999a8d807467564c4131281d14100c0d11151d26303c4754616e7b8798a296897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d6054473a2d21140700000003101c2936434f5c6976828f9c96897c6f6356493c3023160900101d2a3643505d697683909c96897d7063564a3d3023170a00000000091623303c4956636f7c89969d9084776a5d5144372a1e11000714202d3a4753606d7a86939f9386796c605346392d201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25313b47535f6a74808d959f9892867f78706c6563605d555d545c6062656a6e747d849095a0989183796d60554b4035291d10040000000000040d161d24292d38414c56616b74808d959f92877c818e969e92857a6e665b50463d312b27221b140b0200000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000008141f2c3845515c67707d87929aa097928c868481808080818385878a8e91979a9b938f86808d999d9083776a5d5044372a1d1100000915222f3c4855626f7c8895a0958b7e716c615e57534d4745403a38352f2b28221c1a140f0a040000000000000000000000000000000000000000040c151c2328313940454c51545c6064696e73787c81858a8f92999e9f9d97928d86817b736d665e574e463c342a20170d0000000000000d192633404c5966737f83838383838383838383838383838383838383838383838383838384919e9e9285838383837f73665c5044382c1f1207000000000000000004111d2935414b555d60696a6a6a6a6a6a6a6a6a676d6f73787e848e939f9d948e81746d62584e43352b210f06000000000e1a2734414d5a6774808d9a998c7f7366594c403026160b040001040b14202d3a46525e697985929f96897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d6054473a2d21140700000000101c2936434f5c6976828f9c96897d6f6356493c3023160900101d2a3643505d697683909c96897d7063564a3d3023170a00000000091623303c4956636f7c89969d9084776a5d5144372a1e11000714202d3a4753606d7a86939f9386796c605346392d20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d57626f7c87939f9992867d726c66605b5353514b504a515356575f626b707a839096a0958c7f72675d5145382c1f130600000000010c161f282f35393b41464f59606d798390989992858e939d928a7d70685e544a443f3937332d261d140a00000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000004101c2834404b55606b717f8892989f9e9993908e8d8c8d8e8f9197979a9d99938f89827b7c88959c8f8275695c4f4236291c0f00000c1926323f4c5965727f8c989d9083776c625a524d46423c39352f2c29241f1c171514120e090200000000000000000000000000000000000000040d161e262e343e434b51555d60666d70767b8084898d92979c9f9e9a95908b85807b746e69605c544d453c342a22180e050000000000000815222e3b4855616e7b8690909090909090909090909090909090909090909090909090909196a0a197929090909085796d6053463a2e23180c00000000000000000613202c3945515d676d7676767676767676767678797c80848b91969d9f938e82786d605b51463c31231a0f00000000000e1b2835414e5b6874818e9b988b7e7265584b3f3225180c0000000005111e2a36424d576b7784919e96897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d6054473a2d21140703000205101c28343f4a54697683909c95897c6f6256493c2f23160900101d2a3643505d697683909c96897d7063564a3d3023170a00000000091623303c4956636f7c89969d9084776a5d5144372a1e11000714202d3a4753606d7a86939f9386796c605346392d20130d0b07020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a46535e6976828f999f92877d706b605b54504947454044404446494e535960686e7a84919e9e9285796d6053473a2d2014090000000007131d28313a4145474d5254585f676f7c86929f9792979e978d80746b605d5553504a46443f382f261b1106000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f0000000c18232e39434f59626c717e858e92989b9e9d9b9a999a9b9c9d9a9795908c87827c75707d89969a8d8074675a4d4134271a0e00020e1b2835414e5b6874818e9b998c7f72665a5046423b37312c29241f1d1c20222321201e1a140d050000000000000000000000000000000000030c161f2830383f4450555d60676d72787d82878c91969a9f9f9b97928d88837e79746e69615e57504a423b332a22181006000000000000000714212d3a46535f6973808d979d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9ea0a8a9a19e9d9d9d97897d7063554b4034281c1004000000000000000714212d3a4754606d7a828383838383838383838486898d91969e9e98928b81786d665c50493f332a20110800000000000f1c2835424f5b6875828e9b978b7e7164584b3e3125180b00000000020e1a253044505d6a7783909d96897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d6054473a2d2114120f0b0e12141f2b3844505c667784919d95887b6e6255483b2f22150800101d2a3643505d697683909c96897d7063564a3d3023170a00000000091623303c4956636f7c89969d9084776a5d5144372a1e11000714202d3a4753606d7a86939f9386796c605346392d201a1917130e0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b87939f988d80746b6159504a443f3a39352f34383a3c42474f565e68707d8a949f978a7e7164574a3e31251a0e020000010d18242f3a434b5154565e61656a6e7377818e9aa19ea19e92857a75716d6763605c5453504941382d22170b000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f00000007121d27303d47505a626c707a81868b8f91939a9595949792908d8b87837f7b756f6b73808c99988b7f7265584c3f3225190c0003101d293643505c6976838f9c978a7d7164574a3f36302b261f1d181d1f272c2f302e2d2a251f170f05000000000000000000000000000000000b151e283139424a505a61676d737a7f848a8f939a9e9f9c98928e8985807c77716d67615e57534d443f38302921181006000000000000000005121e2b37424d57606d7a85929ea7aaa29f96959595959595959595959595959595959595999ca4a69e9c959595958e8174675c5145382c1f1306000000000000000613202c3945515d67727e8b9090909090909090919299999e9f9b948f867f746d665c544a3f372d21180e0000000000000f1c2835424f5b6875828e9b978b7e7164584b3e3125180b0000000000091d2a3743505d6a7683909d96897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d6054473a2d23201f1c171a1e20262f3a4653606d7985929f97877a6d6154473a2e21140700101d2a3643505d697683909c96897d7063564a3d3023170a00000000091623303c4956636f7c89969d9084776a5d5144372a1e11000714202d3a4753606d7a86939f9386796c605346392d292726231f19120a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c9a9f92857a6d61594f443f38332d2c2924282c2d31373d444d56616c7683909c9b8e827568574d42362a1e1205000004111d2935414b555d6064686e72777b80848e929da9abada1979286827e7975706d6663605b53493f33271b0f030000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000000000b151e2b353f48505a61686e747a7f82848687888887878583817e7b77726e69636b7683909d99897c6f6356493c302316090003101c2936434f5c6976828f9c978a7d7064574a3d322b2624232424292c32383b3d3b3a36302921170d02000000000000000000000000000007121c273039434b545c606c70797f858c91969c9f9d99928f8a85817d79736f6a65605d55534d46423b342e261e170f06000000000000000000020e1a26313c45525d68727f8b95a0a29892898888888888888888888888888888888888888c929c9e948f888888888885796d6053463a2d2013070000000000000004111d2935414b55626d76828f989d9d9d9d9d9d9e9f9d9b99928f89827b726d605c544a42382e251b0f060000000000000f1c2835424f5b6875828e9b978b7e7164584b3e3125180b0000000004101d2a3743505d6a7683909d96897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d6054473a342e2d2b2822252a2d3038414c56626f7c89989e928578685e5246392d20130700101d2a3643505d697683909c96897d7063564a3d3023170a00000000091623303c4956636f7c89969d9084776a5d5144372a1e11000714202d3a4753606d7a86939f9386796c60534639353534332f2a241c140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d576976838f9c9a8d8074685e52473e332d2722201d181c1f20262b323b444f5964717e8a999e928578695e53463a2d21140700000613202c3945515d676d71767b7f83888d91969f9fa2aaaaa29f98928f8a85817d7974706c655b5044372b1f12050000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f00000000030c19232d363f4850565e61686d7275787a7b7b7b7b7a787774716e6966615e666f7c89959f92867a6d6053473a2d20140700020e1b2835414e5b6874818e9b988b7f7265584e443c37313130302f35383d4448494846423b33291f140900000000000000000000000000000c18232e39424b555d666d747d848c92979e9f9b95908c86827e7974706d66625f5853514b46423b363128231c150c05000000000000000000000009141f2935414c56606d7883919d9f92867d7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b808c999c8f827c7b7b7b7b7c796d6053463a2d20130700000000000000010d18242f3a43515b616e7b85929fa6aca49f969993918e8b86827c756e69625b504a423830261c1309000000000000000f1c2835424f5b6875828e9b978b7e7164584b3e3125180b0000000004101d2a3743505d6a7683909d96897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d605447443f3b3938332d30363a3c424a535e6873808c999c8f827669564c41362a1e110500101d2a3643505d697683909c96897d7063564a3d3023170a00000000091623303c4956636f7c89969d9084776a5d5144372a1e11000714202d3a4753606d7a86939f9386796c605346424242403f3b362e261c1006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a46535e697885929f998a7d7063564c413528221c1713100d1012131a2029323e4754616d7a86939f97877b6e6154483b2e21150800000714212d3a4754606d7a7e82878c9095999e9a939298a2a29892989c9b98928e8a85817d776c605346392d2013060000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000000000007111b242d363e444c52565e616568676d6e6e6f6e6d686a6764615e575c606d7882909c9b8f8275675d5145392c20130600000c1925323f4c5865727f8b989c8f82766a5f564e47433e3d3d3d3e4045474f545654524d453b30251a0e0000000000000000000000000004101c2834404a545d676d78808a91979f9f99928e89847f7a75716d6763605c54534e4745403936312a251f17110a03000000000000000000000000030d19242f3a44505c66707d89949e988c80736f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f727e8b989b8e81756f6f6f6f6f6d675c5145382c1f1306000000000000000007131d28313f46525e69717e8b949ea49a938a878684817e7a756f6a615f5751443f3830261e150a01000000000000000f1c2835424f5b6875828e9b978b7e7164584b3e3125180b0000000004101d2a3743505d6a7683909d96897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d605653504a4846443f42434246484e545c656d7a85929f998b7f7265584c3f3025190d0100101d2a3643505d697683909c96897d7063564a3d3023170a00000000091623303c4956636f7c89969d9084776a5d5144372a1e11000714202d3a4753606d7a86939f9386796c60534f4f4f4f4d4b4740382e22180e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b87979f92867a6d6053473a302017110b0604010406090e17202d3946525d687783909d96897c706356493d3023160a00000f1c2935424f5c6875828b8f93999d9b96918c8686929f9f92868a8f93999e9b97928d897e7164574a3e3124170b0000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f00000000000009121b242c323b41464c525458555d6061626261605d565a58555d60666d73808d949e93897d7063554b4035291d100400000815222e3b4855616e7b88949f93877c6f685f58534e4b4a494a4b4b5153596063615e574d42362a1d12070000000000000000000000040f19222c3844515c666d79828d929e9f99938e86817c77726d6864605d5553504a47433c39352f2a251f1a140c0600000000000000000000000000000008131e28343f4a54606b75828f999f92867b6e626262626262626262626262626265727e8b989b8e81756862626262605c554b4034281c10040000000000000000010c161f2a36424d57626c75828f979f93867d7a797775716d68626058534d453f342e261e150c0300000000000000000f1c2835424f5b6875828e9b978b7e7164584b3e3125180b0000000004101d2a3743505d6a7683909d96897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6e6963605c545553504a4f4f4d5254585f666d77818e979f92867b6e6154483b2e2115080000101d2a3643505d697683909c96897d7063564a3d3023170a00000000091623303c4956636f7c89969d9084776a5d5144372a1e11000714202d3a4753606d7a86939f9386796c605c5c5c5c5c5a58524a40342a20150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c89959e918478675d5145392c1f13060000000000000005111d2935414c566875828e9b978b7e7164584b3e3125180b00000b1724313e4a5764717d8a979d98928e8984807b828f9b94887b7e82878c91969a9e9285796d6053463a2d2013070000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f0000000000000009111a202930363a4146474b4b51535455565e616162636466676d7178808c929c958e81756b605443392f24180d0100000714212d3a46535f6976828f9a9991847a6f6a625f585857565757555d60646b706e695e5246392e23180c00000000000000000000000a16212c38444f59606d78828f949d9d949087817b756f6b65615e5653514b46443f3837312c29241d1a140e090300000000000000000000000000000000010b17232e38424f59626e7c87929f988e81746a5f55555555555555555555555865727e8b989b8e8175685b55555553514b43392e23180c00000000000000000000040d1a25303b45505a616e7b85929f9a9083786d666865615e56544e46423b3328231c150c030000000000000000000f1c2835424f5b6875828e9b978b7e7164584b3e3125180b0000000004101d2a3743505d6a7683909d96897d7063564a3d3023170a0013202c3946535f6c7986929f9a8d807b74706d666462605b545c5c575e61646a6f78808e939e978e8174695e52463a2d2014070000101d2a3643505d697683909c96897d7063564a3d3023170a00000000091623303c4956636f7c89969d9084776a5d5144372a1e11000714202d3a4753606d7a86939f9386796c68686868686867645c52463c31261b0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d89969d9083776a554b4035291d100400000000000000010d192430414e5a6774818d9a988b7e7265584b3f3225180c00000713202d3a4653606d798592908b86817d787375828f9b94877a71767b7f84898e928d8073665c5145382c1f13060000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f0000000000000000080e171e252a3036393a3f40454748525e686d6e6e6f717376797e838c929c9590837a6d60594f4431281d120700000005121e2a36424d57626f7c87939f9691847c746f6a67656463636466676d71767c7b6e61544b4034281c1004000000000000000000030f1b27323c4855606b74818d949f9c938e827c746e6863605954524c4745403a38342e2b26201d18120e09030000000000000000000000000000000000000006111c26303d47535f6a74808d979f92877b6e62594f48484848484848484b5865727e8b989b8e8175685b4e48484645403930271d1207000000000000000000000009141f29333f46525e69717e8b949e958c7f726a5f5454524c47433d3631292117110a03000000000000000000000f1c2835424f5b6875828e9b978b7e7164584b3e3125180b0000000004101d2a3743505d6a7683909d96897d7063564a3d3023170a0013202c3946535f6c7986929f9d928d86817c7974716e6c666a69696a696e71767c838e929d9a92857b6e61574d42362a1e12050000101d2a3643505d697683909c96897d7063564a3d3023170a00000000091623303c4956636f7c89969d9084776a5d5144372a1e11000714202d3a4753606d7a86939f93867975757575757575736e64584e43372b1f140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724313d4a5764707d8a979c8f8276695c4f432f24180c000000000000000000081a2633404d596673808c99988c7f7265594c3f3226190c000006131f2c3845515c66748088837e7a75706c6675828f9b94877a6e696e72777c8185877b6e61544b4034281c10040000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4f4235281c0f000000000000000000050d14191e252a2d2e2f35383a4754616d7a7a7b7c7e8082868a90959e938e837a6e685d52473d321f160c01000000020e1a26313b4854606a74808d949e969187817c777471707070717375797d82898073665c5145382c1f130600000000000000000007131f2c38434f5963707d89929d9c918c81786f6a615e56544f4746413a39352f2c28231c1b15100d0701000000000000000000000000000000000000000000000a141e2b37434e58616d7a85929f998f82756b6054483e3c3c3c3c3c3f4b5865727e8b989b8e8175685b4e423c3a38342e271e150b000000000000000000000000030d17212a36424d57626c75828f979f92867c6e665c5046413a37322a261f170f060000000000000000000000000f1c2835424f5b6875828e9b978b7e7164584b3e3125180b0000000004101d2a3743505d6a7683909d96897d7063564a3d3023170a0013202c3946535f6c7986929fa49d99928e8985817e7b797776757677787b7e828790959d9a93887e70695e52453b30251a0e020000101d2a3643505d697683909c96897d7063564a3d3023170a00000000091623303c4956636f7c89969d9084776a5d5144372a1e11000714202d3a4753606d7a8693a09b8f828282828282828280736a5f53473b3025190e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c070000000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c000004101c2834404b54616e7b7b76726d6863606875828f9b94877a6e6161666b6f74797d70695e5342392e23180c000000000000000000000000030b1825323e4b5865717e8b989b8e8275685b4f4235281c0f0000000000000000000002080e13191e202124293946535f6c79878788898a8c8f92989b96918a81796e685e564c41352b210d04000000000009141f2c38434e58606d79828f939f99938e8884817e7d7c7d7e8082858a8f9285796d6053463a2d2013070000000000000000000915222f3b4854606b7783909d9d938c7f746d665f58524d48433d3936302c29241f1c17110f0a0401000000000000000000000000000000000000000000000000020c1a26313c46525e68727f8c969e93897c6f635a5042382e2f2f323f4b5865727e8b989b8e8175685b4e42352d2c28231d150c0300000000000000000000000000050f1a25303b45505a616e7b85929f989083786d60584e42382e27201a140d06000000000000000000000000000f1c2835424f5b6875828e9b978b7e7164584b3e3125180b0000000004101d2a3743505d6a7683909d96897d7063564a3d3023170a0013202c3946535f6c7986929fa19691969a97928e8b8885848382828385878a8f939a9f9792887e716c61574d4233291f1409000000101d2a3643505d697683909c96897d7063564a3d3023170a00000000091623303c4956636f7c89969d9084776a5d5144372a1e11000714202d3a4753606d7a8693a09e938f8f8f8f8f8f8f8f887c6f62564d42362a1e1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c0000000c18232e3946535e696e6e6a65605d565c6875828f9b94877a6e6154596063676d706b60574d4230271d120700000000000000000000060b10121825323e4b5865717e8b989b8e8275685b4f4235281c0f00000000000000000000000002080d111314182b3845525e6b788591959697999797928e8a847e756d675e564c443a3023190f000000000000030f1b27323d45515c676d79818b92989f9b95908d8b8a898a8a8c8f92989c978a7e7164574b3e3124180b000000000000000000091623303c4956636f7c8995a0988e81746d605c544e46413b38322d2a251f1d1812100c0600000000000000000000000000000000000000000000000000000000000915202935414c56606d7984919e9d9083766c61544a3f342825323f4b5865727e8b989b8e8175685b4e4235281f1c18120b0300000000000000000000000000000009141f29333e46525e68717e8a939e958c7f726a5f544a3f34281e140a0300000000000000000000000000000f1c2835424f5b6875828e9b978b7e7164584b3e3125180b0000000004101d2a3743505d6a7683909d96897d7063564a3d3023170a0013202c3946535f6c7986929f9e91848c92989c9a97989291908f8f909197979c9e99928d857d716c625a50453b3021170d02000000101d2a3643505d697683909494897d7063564a3d3023170a00000000091623303c4956636f7c8994949084776a5d5144372a1e11000714202d3a4753606d7a8693a0a59e9b9b9b9b9b9b9b9b8e8174695e52463a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000007121d2a36424d575e61625f5854524c5c6875828f9b94877a6e61544f54555d606360594f453b311e150b000000000000000000020a11171c1f2025323e4b5865717e8b989b8e8275685b4f4235281c0f0000000000000000000000000000010507071e2b3744515e6a778490908f8e8c8a8885827d78716c605d554c443b32281e1107000000000000000a16212834404b555d676d777f858d92989a9d9a9897969697999c9b99928e898073675a4d4034271a0d0100000000000000010d1a2734404d5a6773808d9a9f92857a6d615b504a423c36302c27201e1913100c070300000000000000000000000000000000000000000000000000000000000000030d1925303a44515c66707d8a949f958a7d71665c50443a2f24323f4b5865727e8b989b8e8175685b4e4235281b100c070000000000000000000000000000000000020d17202a36414d56616c75828f979f92867c6e665c50443c30261c110600000000000000000000000000000f1c2835424f5b6875828e9b978b7e7164584b3e3125180b0000000004101d2a3743505d6a7683909d96897d7063564a3d3023170a0013202c3946535f6c7986929f94877a7f858b8f9299989a9b9c9c9c9c9b999796918c86817a706b625a50483e33291f0f0500000000101d2a3643505d697682878787877d7063564a3d3023170a00000000091623303c4956636f7c8787878784776a5d5144372a1e11000714202d3a4753606d7a8693a09e97949494949494949492867b6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c000000000e1a25313b454d535455534e47454f5c6875828f9b94877a6e615447484b515356544f473d33291f0c030000000000000000020c141c23282b2d2b323e4b5865717e8b989b8e8275685b4f4235281c0f00000000000000000000000000000000010e1b2834414e5b677481838382817f7e7b7975706d66615a514b433b322920160c0000000000000000040c18232e39434b555d656c727b80858a8e9092989495949992908e8b86827c736e64584c3f3326190d000000000000000003101d2a3643505d697683909c9a8e8174685d52443f38302a251f1b16110d0804000000000000000000000000000000000000000000000000000000000000000000000008131e2834404a54616c76828f999d9184786d60554b403529323f4b5865727e8b989b8e8175685b4e4235281b0f0000000000000000000000000000000000000000050e1925303b44505a616d7a85929e989083786d60584e42382e23170c03000000000000000000000000000f1c2835424f5b6875828e9b978b7e7164584b3e3125180b0000000004101d2a3743505d6a7683909d96897d7063564a3d3023170a0013202c3946535f6c7986929f93877a727a7e8286898b8d8e8f90908f8e8d8b8884807b746e68615950483f362c20170d00000000000714212e3a4754616d7a7a7a7a7a786d6053463a2d201307000000000713202d3a4653606d787a7a7a7a7a6d6154473a2e211407000714202d3a4753606d7a8693a0978c878787878787878787878073665a4d4033271a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c0000000009141f29333b4246484847433c424f5c6875828f9b94877a6e6154473b4045474948443d352b21170d0000000000000000000a141e262e34383a38343e4b5865717e8b989b8e8275685b4f4235281c0f00000000000000000000000000000000010e1a2733404c59646f747676757473716f6c6664605c545045403a312920170e0400000000000000000007121d273039434b535b60696e747a7d81838587878887878684817e7a756f6b645c52473b3023170b000000000000000004101c2834404b556b7885929e978a7d7164564c41342e261e19140f0a050100000000000000000000000000000000000000000000000000000000000000000000000000020c18232e3942505a626f7c87939f968b7e72675d51453b30323f4b5865727e8b989b8e8175685b4e4235281b0f02000000000000000000000000000000000000000008141f29323e46525e68717e8a939e958c7f726a5f544a3f34281e150a000000000000000000000000000f1c2835424f5b6875828e9b978b7e7164584b3e3125180b0000000004101d2a3743505d6a7683909d96897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d6d71757a7c7e81828283838382807e7b78736e69615e564f473f362d241a0e0500000000000713202d3946525d686d6e6e6e6e6d665c5145382c1f13060000000006121f2c3844515c666d6e6e6e6e6d685e5246392d201307000714202d3a4753606d7a8693a094877a7a7a7a7a7a7a7a7a7a7a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000030d17212931363a3b3b3a3731424f5c6875828f9393877a6e6154473b35383a3d3b38322b23190f05000000000000000006111c2630383f4446443f3e4b5865717e8b989b8e8275685b4f4235281c0f00000000000000000000000000000000000b1824303c48535d64676a696867666462605b5453504a423e352f281f170e0500000000000000000000000b151e273139414950565e61676d717477797a7b7b7b7a797774716d68636059524a40362b1f1307000000000000000006131f2c3845515c677986929f95897c6f6256493c30231c150c0802000000000000000000010406070b0a080500000000000000000000000000000000000000000000000007121c27303e47535f6a74818e989e9185796d60564c4136323f4b5865727e8b989b8e8175685b4e4235281b0f020000000000000000000000000000000000000000020d17202a36414c56616c75818e979f92867c6e665c50443c30261c11060000000000000000000000000f1c2835424f5b6875828e9b988b7f7265584c3f322519070000000004101d2a3743505d6a7683909d96897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d6064676d6f727475767676767573716e6966615e57524c443e352d241b120800000000000005111d2935414c565d6161616161605c544b4034281c10040000000004101c2834404a545c6061616161615e564c4135291d1105000714202d3a4753606d7a86939f9386796e6e6e6e6e6e6e6e6e6d685d5246392d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c0000000000050f171f252a2d2e2f2e2b35424f5c687581868686867a6e6154473b2e2c2d302f2c27211911070000000000000000000b17232e38424a5053504a474b5865717e8b989b8e8275685b4f4235281c0f00000000000000000000000000000000000814202b36414b53595b5d5d5c5b59575553504a46443f383029241d160d05000000000000000000000000030c151f272f383f444d52555d6064676a686d6e6e6e6d6d666864615e56544f4740382e24190e0300000000000000000713202d3a4653606d798698a395887c6f6255493c2f22160a0300000000000000000003070d111314181715110c0600000000000000000000000000000000000000000000000b151e2b37434e58616e7a85929f978c8073685e52463c313f4b5865727e8b989b8e8175685b4e4235281b0f02000000000000000000000000000000000000000000050e1925303a44505a616d7a85929e989083786d60584e42382e23170c0300000000000000000000000e1b2835414e5b6874818e9b998c7f7366594c402e23180c00000000030f1b27333f49536a7783909d96897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d60555d6062656768696a6a69686664615f5754534d46413b322c231b120900000000000000010d1924303a444c52545454545453514b42392e23180c0000000000000c18232e39424a51535454545454524c443a3025190d01000714202d3a4753606d7a86939f9386796c6161616161616161615d564c4135291d1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c000000000000050d141a1e212122212834414d59656f757979797976685e5246392d20202322201c160f0700000000000000000003101c28343f4a545c605c5454525865717e8b989b8e8275685b4f4235281c0f0000000000000000000000000000000000030f1a252f3841484c4e50504f4e4c4b4846443f3a38342e261e18130c040000000000000000000000000000030d151d262d333b42464b5154575b565d6061626161605c545854524c48433d342e261c120800000000000000000006131f2c3845515c677986929f96897c706356493d31261b140f0b060706060707060b0f13181d20212524211d17100900000000000000000000000000000000000000000000030c1b26313c46525e68727f8c969f92867a6e61574d42373f4b5865727e8b989b8e8175685b4e4235281b0f020000000000000000000000000000000000000000010008131e29323e46525e68707e8a939e958c7f726a5f544a3f34281e150a00000000000000000000000e1a2734414d5a6774808d9a9a8d807467544b4034281c100703020509121f2b3744505b657885919e96897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d6054515356585a5b5c5d5d5c5b5a5855534d4846423b363029201a110900000000000000000008131e28323a414647474747474645403930271d120700000000000007121c273039404446474747474746413a32281e130800000714202d3a4753606d7a86939f9386796c605454545454545454524c443a3024190d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c0000000000000003090e121415151425313d49545d65686c6c6c6c6c5e564c41362a1e14161613100b050000000000000000000006121f2b3844505c666d6665615e5665717e8b989b8e8275685b4f4235281c0f00000000000000000000000000000000000008131d262f363c404143434241403e3c3938332d2b28231c140c070100000000000000000000000000000000030b141b222730363a4145474a4e4c52545455545453504a4b4746413a38322b221c140a0100000000000000000004101c2834404b556b7784919e988b7f7265574d42362d261f1c1715141312131415171c1f24292c2d31302d28221b1209000000000000000000000000000000000000000000000a15202a36414c56606d7984919e988d8174695f53473d3f4b5865727e8b989b8e8175685b4e4235281b0f020000000000000000000000000000000003080b0d0e13130d17202a36414c56616c75818e979f92867c6f665c50443c30261c1106000000000000000000000c1926323f4c5965727f8c989c8f8376665c5145382c2118120f0e11151a202d394653606c7986929f96897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d60544747494b4e4f4f5050504f4d4b4846423b3a36312a251e170e0800000000000000000000020c1620283035393a3b3b3b3b3a38342e271e150b00000000000000000b151e272e34383a3b3b3b3b3a3935302820160c0200000714202d3a4753606d7a86939f9386796c60534747474747474746413a32281e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c000000000000000000020507080815212c37424b54595c606060605f524c443b3025190e0a090704000000000000000000000004111d2935414c56606d7876726e686265717e8b989b8e8275685b4f4235281c0f000000000000000000000000000000000000010b141d252b3033343736353433312f2d2b28221f1c17110a0200000000000000000000000000000000000000020a11171f252a2f35393a3e414145474848484746443f3e3a3935302c272119100a0200000000000000000000000c18232e424f5b6875818e9b9c8f8275695f53463f382f2b28222121201f20212222282b2f35393a3e3d39342d241b0f06000000000000000000000000000000000000000000040d1925303b45515c67717e8a949f92877b6e62584e433f4b5865727e8b989b8e8175685b4e4235281b0f02000000000000000000000000000001080e14171a1b1f1f1f1f1925303a44505a616d7a85919e999083786d60584e42382e23170c030000000000000000000a1723303d4a5663707d89999f9286796d6053463d3329231f1c191e20262b35404b55626f7c8899a396897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d6054473a3c3f41424343434342403e3b3a36312d2a251f19140d05000000000000000000000000040e161e24292d2e2e2e2e2e2d2c28231d150c030000000000000000030c151c23282c2d2e2e2e2e2e2d29251e160e040000000714202d3a4753606d7a86939f9386796c6053463b3b3b3b3b3a3935302820160c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c0000000000000000000000000004101b26303942494d4f535353535346413b32291e14080000000000000000000000000000000713202c3945525d687783837f7b746e6a717e8b989b8e8275685b4f4235281c0f00000000000000000000000000000000000000020b131a202427282a2a2928262422201f1c1712100b060000000000000000000000000000000000000000000000060b14191d24292c2d313035393a3b3b3b3a3a38342e2e2d29251e1b160f0700000000000000000000000000071825323e4b5865717e8b989f92877b6e615b5049413c38332d2e2d2d2c2d2d2e2d33383a4145474b49453e362d21180e0300000000000000000000000000000000000000000008141e2834404b55616c7683909a998e82756a6054483f4b5865727e8b989b8e8175685b4e4235281b0f0200000000000000000000000000020b131a1f2426272c2c2c2c2c2c28323e46525d68707d8a939e958c7f726a5f544a3f34281e150a0000000000000000000714212d3a4754606d7a86939f98897d7063594f453c342f2b28252a2d31373f45515d6773808c99ab96897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d6054473a2f323435363737363533312e2d2a26211e1a140e08020000000000000000000000000000040c13191d202121212121201f1c18120b0300000000000000000000030b12181c1f202121212121201d19130c04000000000714202d3a4753606d7a86939f9386796c605346392e2e2e2e2e2d29241e160e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c000000000000000000000000000009141e2730373d4142464646463b3936302920170d020000000000000000000000000000000714212d3a4754606d7a87908c86817b73717e8b989b8e8275685b4f4235281c0f000000000000000000000000000000000000000001080f14181a1b1d1d1c1b19181513120f0b0603000000000000000000000000000000000000000000000000000002090e13181d20212424292c2d2e2f2e2e2d2b282321201d19130f0a0400000000000000000000000000000714212d3a4754606d7a86929f998f82756d605b534e46443f3d3b3a39383a3a3b3d3f44464b5154585650483e332a201509000000000000000000000000000000000000000000020c18232e3943505a626f7c87939f93897c6f62594f424b5865727e8b989b8e8175685b4e4235281b0f02000000000000000000000000010b141d242b303334393939393939393935414c56616c75818e969f92867c6f665c50443c30261c110600000000000000000713202c3945525d687683909c9c8f82766b60574e454039383330363a3c4247505a606d7984919ea396897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d6054473a2d252728292a2a2928272522211e1a14120e0903000000000000000000000000000000000002080d111314141414141313100c070000000000000000000000000000070c101213141414141413110d080200000000000714202d3a4753606d7a86939f9386796c605346392d21212121201d19130c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c0000000000000000000000000000020c151e262c313435393939392e2d2a251e170e05000000000000000000000000000000000a1724313d4a5764707d8a9999928e86807a7e8b989b8e8275685b4f4235281c0f0000000000000000000000000000000000000000000003080b0e0e10100f0e0d0b090606030000000000000000000000000000000000000000000000000000000000000001070d11131417191d202121222121201f1c171413110d0802000000000000000000000000000000000613202c3945515d6774808d989e938c7f736c655f5853504a49484746444647484a4a5053555d6064615a50453c31261a0e0200000000000000000000000000000000000000000007121d27303e4754606a74818e989c9083766c61544a4b5865727e8b989b8e8175685b4e4235281b0f0200000000000000000000000008131d262f363c3f4146464646464646464646444f59606d7a84919e999083786d60584e42382e23170c030000000000000004111d2935414c5665727e8b979f94897d70695f58514b46443f434246474d535a626c73808c96a1a396897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d6054473a2d211b1c1c1d1d1d1c1a181514120e09050200000000000000000000000000000000000000000001050707080808080706040000000000000000000000000000000000000406070808080807070501000000000000000714202d3a4753606d7a86939f9386796c605346392d2014141413110d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c000000000000000000000000000000030c141b212528292d2d2d2d21201e19140d0500000000000000000000000000000000000d1a2734404d5a6773808d96999e99928d83808c999b8e8175685b4f4235281c0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040607080d111314151515141312100b0607050100000000000000000000000000000000000004111d2935414c55616d7a85929f9b918c7f776f6a63605b54565454535053545557545b6062676d716c61574d42372b1e1206000000000000000000000000000000000000000000000b151e2b37434e58616e7b86929f948a7d70665c504b5865727e8b989b8e8175685b4e4235281b0f020000000000000000000000030e1a242f3841474c4e525252525252525252525252525d68707d8a939d958c7f736a5f544a3f34281f140900000000000000010d1924303a4753606d7985929f9e92857b6f6a605c5553504a4f4d5254575f626c717e87929fa4ac96897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d6054473a2d21140f101010100f0d0b0807050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a86939f9386796c605346392d20130807070501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c0000000000000000000000000000000002091015191b1c202020201414110e08020000000000000000000000000000000000000d1a2734404d5a67738084888c91979f95908c929c9b8e8275685b4f4235281c0f00000000000000000000000000000000000000000000000000030506070707060603000002000000000000000000000000000000000000000000000000000000000000000000000000000001040707080808070706030000000000000000000000000000000000000000000000010d19242f3a46525e68717e8b929d9b918c827c74706c6665636160605c6060616365666c6f747a7e71695f53473a2e21140900000000000000000000000000000000000000000000030c1b27323c46525e69737f8c969d9184786d60554b5865727e8b989b8e8175685b4e4235281b0f02000000000000000000000008141f2b36414a52585a5f5f5f5f5f5f5f5f5f5f5f5f5f56616b74818e969f92867c6f665c50443b31251a0e02000000000000000813202c3945515d67727f8b959f9791847c726d6762605b545c565e6164696e767e879299939aa496897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d6054473a2d21140703040403020000000000000000000000000000000000000000000000000000000000050a0d0f101010101010101010101010101010101010101010101010101010100f0e0c080400000000000000000000000714202d3a4753606d7a86939f9386796c605346392d20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000004090c0e0f131313130807050200000000000000000000000000000000000000000d1926333f4b58646e73787b7f858c92989d999ca49b8e8175685b4f4235281c0f000000000000000000000000000000000000010507070b060b0f121314141413120f0b060e0d0c0b0a08070704010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2a36414c56616c74808e939f9c948f87817d797472706e6d6c666d6d6e707275797c8085887b6e6255483b31251a0e02000000000000000000000000000000000000000000000a15202a36424d57606d7984919e958b7e71675d515865727e8b989b8e8175685b4e4235281b0f0200000000000000000000000b1724303c47525c64676c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6d7a84919e999083786d60574d42362a1e12050000000000000004101d2935404b55606d78839096a09691867f79736f6c6669696a696e71767b828b92989286939f96897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000030a1015191c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1b18140f09020000000000000000000714202d3a4753606d7a86939f9386796c605346392d20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232f3b47525c6467696e73797f8590959fa6a89b8e8175685b4f4235281c0f0000000000000000000000000000000104080d111314181a171b1f20212120201f1c171c1b1a191816151413110d08020000000000000000000000060b0e1011131313131313131313131313131313131313131313131313131313131313100f0d0a050000000000000000000000010d1925303a44505a606c78818c92999f99938e8984817f7c7b7a7979797a7b7d7f8185898d928c7f7266574d42362a1e120500000000000000000000000000000000000000000000040e1a25303b45515d67717e8b959e9184796d60565865727e8b989b8e8175685b4e4235281b0f0200000000000000000000000d1a26333f4c58646e747979797979797979797979797979797979797d8996a0958c7f73695e53463a2d21140700000000000000010d18242f3944505c666e7b8491969f98928c857f7c7977767677787b7e82878f949a9286818e9b96897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000000000000000000000000000000000000000000000000040d141b212628292a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a282725201a130c0300000000000000000714202d3a4753606d7a86939f9386796c605346392d20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2a36404a5258575f62676d727b838f949fa79b8e8275685b4f4235281c0f0000000000000000000000000001070d1113191d2021242722272b2d2d2e2d2d2b28222928272524232221201d19130c040000000000000000040b12171b1d1e2020202020202020202020202020202020202020202020202020202020201d1c1916100a030000000000000000000008131e29323e44505b666c777f8791959e9f9b96918e8b89878786858687888a8c8e92979a9d908377695e53463a2d211407000000000000000000000000000000000000000000000009141f2935404b55606c7883909d978c7f73685e5865727e8b989b8e8175685b4e4235281b0f0200000000000000000000010e1b2734414e5a67748085858585858585858585858585858585858586929fa79f92867b6e6154483b2e211508000000000000000007121d28343f4a545e696e7c8490949e9f97918c88858483828384878a8f939a9992887e808d9996897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000030d161f262d3235363737373737373737373737373737373737373737373737373737373534312c251e150c02000000000000000714202d3a4753606d7a86939f9386796c605346392d20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e19242e3840474b4d53555d60696e79828f9593938e8275685b4f4235281c0f000000000000000000000002090e13181d2025292d2e31342d3337393a3a3a3938332d3635333231302f2d2c29241e160e07000000000000050e161d23272a2b2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d292926211c150d04000000000000000000020c172028333f4a545b656c737d838b91969b9f9e9a9896949a939298939496989b9e9f9b9792877b6e6154483b2e2115080000000000000000000000000000000000000000000000020c18242f3944505b656f7c89939392857a6d615865727e8b93938e8175685b4e4235281b0f0200000000000000000000010e1b2834414e5b6774818e92929292929292929292929292929292929298a2aea399897c6f6256493c2f2316090000000000000000010c17232e38424d575f6a6e7b838c92979d9e999792908f8f909196979c9e9691877e74818e9a96897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000a141f2830383e424343434343434343434343434343434343434343434343434343434342403d372f271e1309000000000000000714202d3a4753606d7a86939f9386796c605346392d20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c262e363b3c42474b51575e676d7983868686868175685b4f4235281c0f00000000000000000000050d14191d24292c3035393a3e40423f444647474746443f444341403f3e3d3b3a393530282019100700000000040e1720282e3336373939393939393939393939393939393939393939393939393939393939393635322d261f160d03000000000000000000050e17222d38424a535b606b6f787e848a8e9297989a9b9d9d9e9e9e9d9d9c9a9898928f8b85807a6d6154473a2e21140700000000000000000000000000000000000000000000000007121d27333f4953606b7581868686868074675a65727f868686868175685b4e4235281b0f0200000000000000000000010e1b2834414e5b6774818e9a9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa2aa9f9f95897c6f6256493c2f23160900000000000000000006111c26303b454e575f696e787f858c9195989a9c9d9c9c9d9d9b9996918c847d7175828e9494897d7063564a3d3023170a0013202c3946535f6c7986929f93877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000005101b26303a42494e505050505050505050505050505050505050505050505050505050504f4d4841392f251a0f040000000000000714202d3a4753606d7a86939f9386796c605346392d20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141c242a2f31373940454d555d676d7679797979756f65594d4034271b0e000000000000000000070e171f252a2f35393a4146474b4d4f49505354545353504a504f4e4d4c4b49484745413a322b23190f040000000b16202932393f434446464646464646464646464646464646464646464646464646464646464643423e3831281f150a0000000000000000000006111c262f384149505960666d72787d8285888b8d8f909091919191908f8d8c8985827e79736d685e5246392d201307000000000000000000000000000000000000000000000000010b17222d38414f59656f7579797979746e6458626d7279797979756f65594d4034271b0e0100000000000000000000010e1b2834414e5b6774818e9393939393939393939393939393939393939393939393897c6f6256493c2f231609000000000000000000000a151e29333c454e565e666c727a7f84888b8d8f90919191908e8c89847f796f6b7682878787877d7063564a3d3023170a0013202c3946535f6c7986929393877a6d6054473a2d21140700000000000000000000000000000000000000000000000000000000000a15212d38424c545a5c5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5b59534b41372c2014080000000000000714202d3a4753606d7a8693939386796c605346392d20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a12191f20262b2f353b434b555d606a6c6c6c6c68655d53483d3125180c00000000000000030b1218202930363a4145474c5254575a5c5e5b60606160605b5e5d5c5b5a5857565554524c443d352b21160a000006121d28323b444b4f51535353535353535353535353535353535353535353535353535353535353504e49423a31261c1005000000000000000000000a141d262f383f444f545c60666c7075797c7e80828384848584848382817f7c7975716d67615e564c41362a1e11050000000000000000000000000000000000000000000000000006111b262f3d46535d65686c6c6c6c67645c525b62656c6c6c6c68655d53483d3124180c0000000000000000000000010e1b2834414e5b677481868686868686868686868686868686868686868686868686867c6f6256493c2f23160900000000000000000000030c17212a333c444d545b60686d72777b7e81828484858483817f7c78726d67616d7a7a7a7a7a786d6053463a2d2013070013202c3946535f6c7987868686867a6d6054473a2d21140700000000000000000000000000000000000000000000000000000000000d1926323e49545e66696a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a68655d53483d3125180c0000000000000714202d3a4753606d798686868686796c605346392d20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080e13151a1d24293139434b51535d606060605b59534b41372c201408000000000000030c151d2328323b42464b5154565e616467696b656c6d6d6d6c666b6a69686665646362605d564f473d32271b0f03000b17232e39444d565b5e6060606060606060606060606060606060606060606060606060606060605c5a544c42382d21160a00000000000000000000020b141d262d333d424a50545b6063666c6f72737576777878787776757472706d6664605d55524c443a3025190d0100000000000000000000000000000000000000000000000000000a141d2b34414b53595b606060605a58524a515658606060605b59534b41372c2014080000000000000000000000010d1a2733404c59646f74797979797979797979797979797979797979797979797979796f6a6054473b2e2215080000000000000000000000050f18212a323b424a50565d6065696e717476777778777675726f6c65605c5d686d6e6e6e6e6d665c5145382c1f130600121f2c3845525e6a75797979797976685d5245392c20130700000000000000000000000000000000000000000000000000000000000f1c2835424e5a667076767676767676767676767676767676767676767676767676767676756f65594d4034271b0e0000000000000613202c3945515d67767979797979766c5f5346392d20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000203090e12181f27313940454750535353534f4d4841392f251a0f040000000000020c151e272e343f444d52555d6065686d7173757779797a7a7a797978777674737271706e6d6860594f43382c1f1307000e1b27333f4b565f676a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c69665e54493e3226190d0000000000000000000000020b141b222730383f444a5053545b60626567686a6a6b6b6b6a6a69676563605c5453514b46413a32291e1308000000000000000000000000000000000000000000000000000000020b1922303941484d4f535353534d4c4740454a4b535353534e4d4841392f251a0f040000000000000000000000000b1824303c48535d64676c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6260584e43382b1f1306000000000000000000000000060f1820292f383f444c5254575f616567696a6b6b6b6a686662605b5351565d6161616161605c544b4034281c100400111d2a36424e59636a6c6c6c6c6c6c5d564c4135291d11040000000000000000000000000000000000000000000000000000000000101d293643505c6976838383838383838383838383838383838383838383838383838383838175685b4f4235281c0f00000000000004111d2935404b555d6c6c6c6c6c6c6c645a4f43372b1e120500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d151f272f35383a434646464642403d372f271e13090000000000000a141e273039404551565e61676d72767a7e8082848586878786868584838281807f7e7c7b7a6f6b6054483b2f22150900101d2a36434f5b6771777979797979797979797979797979797979797979797979797979797979797670665a4e4235291c0f000000000000000000000000020a11171e262e34383f44464a505355585a5c5d5d5e5e5e5e5d5c5a595653514b4745403936302920170d020000000000000000000000000000000000000000000000000000000007101e2730373d414246464646413f3c363a3d3f4646464642403d372f271d1309000000000000000000000000000814202b36414a53595b6060606060606060606060606060606060606060606060606056544e463d32271b0f0300000000000000000000000000060e171d262d333a4145474d5355585a5c5d5e5e5e5d5b5956535049454c52545454545453514b42392e23180c00000e1a26313d4751595e5f606060605f524c443a2f24190d010000000000000000000000000000000000000000000000000000000000131f2c3946525f6c798690909090909090909090909090909090909090909090909090909084776a5e5144372b1e11000000000000010d18242f3a434b515f60606060605f5a52493e33271b0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d151d24292c2d37393939393534312c251e150c02000000000006111c263039424b515b62696e747a7f83868a8d8f9192939a9493989291908f8e8d8b8a8988877c6f6356493c3023160900111e2b3744515e6a77848686868686868686868686868686868686868686868686868686868686868276695c504336291d100000000000000000000000000000060c141c23282d3338393f4446494b4d4f505151525151504f4e4c494645403a39352f2a251e170e050000000000000000000000000000000000000000000000000000000000000c151e252c313435393939393433302b2e3132393939393534312c251d150b0100000000000000000000000000030f1a252f3841484c4e535353535353535353535353535353535353535353535353534947433d342b20160a000000000000000000000000000000050b141c22282f35393b4246484b4e4f51515251504e4c4946443f3a414647474747474645403930271d120700000915202b353f474e5253535353535345413a32281e1308000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9184776a5e5144372b1e110000000000000007131d28313a4045535353535353534f4940372c21160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181d1f202a2d2d2d2d282725201a130c030000000000000b17232e38424b545c606d727b80858b9093999a9c9c9b9a9a999a9a9b9c9d9c9b9998979695897c6f6356493c3023160900111e2b3744515e6a778491939393939393939393939393939393939393939393939393939393938f8276695c504336291d10000000000000000000000000000000020a11171c22282b2d3338393c3f40424344454545444342413f3d3a38342e2c29241d19130d0500000000000000000000000000000000000000000000000000000000000000030c141b202527282d2d2d2d2726241f2224252d2d2d2d282724201a130b0300000000000000000000000000000008131d262f363c4041464646464646464646464646464646464646464646464646463c3b38322b22190f0400000000000000000000000000000000020a11171e24292c31363a3b3e41434444454443423f3c3937333035393a3b3b3b3b3a38342e271e150b000000040f19242d353d424546464646464639352f2820160c01000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c798692959595959595959595959595959595959595959595959595959184776a5e5144372b1e1100000000000000010c161f282f353946464646464646433e372e251b10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c1013141d202020201c1b18140f090200000000000003101c28343f4a545c666d757f868d92989d9c979792908e8e8d8d8d8d8e8f919298959ea0a896897c6f6356493c3023160900111e2b3744515e6a7784919d9fa69f9c9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b8f8376695c504336291d100000000000000000000000000000000000060b11171c1f22282b2d2f32343537373838383737363432302d2c28231f1d18120d080200000000000000000000000000000000000000000000000000000000000000000002090f15181b1c202020201a1a1713151818202020201b1b18140f090100000000000000000000000000000000010b141d252b303334393939393939393939393939393939393939393939393939392f2e2b272019100700000000000000000000000000000000000000060b13191d20262a2d2e323436373838383735332f2d2b2724292d2e2e2e2e2e2d2c28231d150c030000000008121b242b3136383939393939392c29241e160d0400000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c798688888888888888888888888888888888888888888888888888888884776a5e5144372b1e110000000000000000040d161d24292c3939393939393937332c251c1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979c8f8275695c4f4236291c060000000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004060710131313130f0e0c080400000000000000020c16202b3844505c666d78818c92989f99928f8b8785838281808080818182848587899196a096897c6f6356493c3023160900111e2b3744515e6a7784919daa9f948f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8376695c504336291d1000000000000000000000000000000000000000060b0f12171c1f20222527292a2a2b2b2b2b2a29272623201f1c1813100c07010000000000000000000000000000000000000000000000000000000000000000000000000004090c0e0f131313130e0d0b07090b0c131313130f0e0c080400000000000000000000000000000000000000020b131a202427282d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d23221f1b160f0700000000000000000000000000000000000000000001080d11141a1e21222527292a2b2b2b2a282623201f1b191d202121212121201f1c18120b0300000000000009121920262a2c2c2d2d2d2d2d201d19130c0400000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b6e6155483b2e221508000000000000000000040c13181d202d2d2d2d2d2d2d2b27211b130a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a969c8f8275695c4f422d22170b0000000000000000000d192633404c5966737f8c99988b7f7265584c3f3225190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2b37424e57606d78818e939f9a938e86827e7b7876757474737374757677787a7c84919e96897c6f6356493c3023160900111e2a3744515d6a7783909da69c8f82828282828282828282828282828282828282828282828282807366594d4033261a0d00000000000000000000000000000000000000000003060b0f121316181a1c1d1e1e1f1e1e1d1c1b19161313100c07040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080f14181a1b202020202020202020202020202020202020202020202020201615130f0a040000000000000000000000000000000000000000000000000104090e121415181b1c1e1e1f1e1d1b191613120f0d111314141414141313100c07000000000000000000080f151a1d1f20202020201413110d08010000000000000000000000000000000000000000000000000000000000000000000814212e3a47535f6a6e6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6e695f53473a2d2114080000000000000000000001070d1113202020202020201e1b1610090100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1623303d495663707d89969d9083766a53493f33271b0f0300000000000000000e1a2734414d5a6774808d9a988b7e7165584b3e3225180b000000000000050a0d0f10131313130d0d0b070200000000000000000000000000000000000000000000000000000104070713131313130b0a08050000000000000000000000000000000000000000000000000000010d1925303a47535f6a727f8c939e989288817b75716e696968676766676768696a686d7784909d96897c6f6356493c30231609000b1824313e4b5764717e8a949e9a8d80757575757575757575757575757575757575757575757575736e63574b3f3226190c000000000000000000000000000000000000000000000000030606090c0d0f101112121211100f0e0c0a07060400000000000000000000000000000000000000000000000000000000000000000000000000000000000001040607070605030000000000000000000000000000000000000000000000000000000000000000000000000000000003080b0d0e13131313131313131313131313131313131313131313131313090806030000000000000000000000000000000000000000000000000000000000020507080b0e1011111211100f0c09060503010507070808080807060400000000000000000000000004090e1112131313131307070401000000000000000000000000000000000000000000000000000000000000000000000006121f2b37434e585f62626262626262626262626262626262626262626262626262626262615f574d42372b1e120600000000000000000000000001040613131313131313120f0a05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7b88959e918477655b5044372b1f12050000000000000004101c2834404b556875818e9b968a7d7063574a3d3024170a00000000030a10161a1c1d202020201a1917130e08010000000000000000000000000000000000000000000001080d1113142020202020181715110c0600000000000000000000000000000000000000000000000005111d2a36414c56626e7b87929f9892867d746e6964615e575b5b5a5a5a5a5b5c565e6a7784909d96897c6f6356493c30231609000a1724303d4955616c75828f979f93877c6f6768686868686868686868686868686868686868686866635c52473b2f23170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003050609070d1013141413120f0b060706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1a26313c464e535555555555555555555555555555555555555555555555555555555555534d453c31261a0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a87979f9285796c605346392d20160c040000000000040b131f2c3845515c6776838f9c99887c6f6255483c2f221509000000040d151c2226292a2d2d2d2d2726231f19120a020000000000000000000000000000000000000000040c13191d20212c2d2d2d2d2524211d17100900000000000000000000000000000000000000000000000713202d3946525e6875818e999f92867c706b615e5654524d4f4e4d4d4d4e4e4f4c5d6a7784909d96897c6f6356493c30231609000815212d3945505a616e7b85929f999184796d60585c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5957524a40352a1f13070000000000000000000000000000000000000000000000000000040607070605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f1213161a181d202021201f1b17171313100c07000000000000000000000000000000000000000000000004090e11121313131313070704010000000000000000060b0e10111313131313070604010000000000000000050a0d1010131313130a09070400000000000000000000000000000000000000000406131313131313130603000000000000000000000000000000000000000000000000000000030607090c0e101212131312110f0d0a0706040100000000000000000000000000000000000000000000000000000000000915202a333c4347484848484848484848484848484848484848484848484848484848484847423c332a1f1509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202c3945525d687885919e98887c6f6255493e31281e16100c070b070c10151c262f3a4653606d7985929f9286796d6053463a2d2013070000030d161f262d3235363939393934332f2b241c140a01000000000000000000000000000000000000040d161e24292c2d393939393931302d28221b1209000000000000000000000000000000000000000000000714212e3a4754616d7a86929f968c7f726a6059524d4746424241414040414244515d6a7784909d96897c6f6356493c302316090005111d28343e46525e69717e8b949f968d80736a60554b4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4d4b4740382e24190e02000000000000000000000000000000000000000003060809070c1013141413120f0b0607060401000000000000000000000000000000000000000000000000000000000000000000000000000002080d11171b1f20232624292c2d2d2d2b272224201f1c18120e090300000000000000000000000000000000000000080f151a1d1f20202020201413110d080100000000040b11161a1d1e202020201f1413110d070100000000030a11161a1c1d20202020171613100b0500000000000000000000000000000001070c10132020202020202012100c060000000000000000000000000000000000000000000000060b10121316191b1d1e1f201f1f1e1c1a171413100d0703000000000000000000000000000000000000000000000000000000030e18212a31373a3b3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3b3a37312a21180e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c566975828f9c998c7f72665a50433a30281f1d18181818181c1f272e38414d5763707c89989d908377665c5145382c1f130600000a151f2831383e424346464646403f3b362e261c12080000000000000000000000000000000000010c1620282f35393a46464646463e3d39342d241b10060000000000000000000000000000000000000000000b1825323e4b5865717e8b999e9184796d60584f46423b3a363034343334343744515d6a7784909d96897c6f6356493c3023160900000c17222a36424d56626c76828f989f93877c6f675c514542424242424242424242424242424242403f3b352e261c120700000000000000000000000000000000000000040a0f13151619181d1f2021201f1b17181413110d07010000000000000000000000000000000000000000000000000000000000000000000000070c13191b22272b2d2f332f35393a3a3937332d312d2c28231d1a140d08020000000000000000000000000000000009121920262a2c2c2d2d2d2d2d201d19130c040000050e161c2227292a2d2d2d2d2c20201d18130c040000040d151c2226292a2d2d2d2d2322201c160f0800000000000000000000000000030b12181c1f2d2d2d2d2d2d2d1f1c17110a03000000000000000000000000000000000000040a0f11171c1f202226282a2b2c2c2c2c2a29262420201d18120f0b060000000000000000000000000000000000000000000000000000060f1820262b2e2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2e2d2b261f180f060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1924303f4c5965727f8c989d9083776c61554b423a312c292425242523282c30394049535f6974818e9a998c807366544b4034281c10040005101c26313a434a4e50535353534d4c4740382e24190e020000000000000000000000000000000008131e28323a41454753535353534b49453e362d22170c0000000000000000000000000000000000000000000e1b2835414e5b6874818e9b998d8073665c50463d36302d2a25282727272a3744515d6a7784909d96897c6f6356493c302316090000060e1925303b44505a616e7b86929f999184796d60584e43392f3535353535353535353535353533322f2a241c130a000000000000000000000000000000000001070c10151b1f21222624292c2d2d2d2b27222420201d18130f0a0400000000000000000000000000000000000000000000000000000000000000030b12181e24292d3337393c40434045474746443f413d3a38342e2a261f19130c05000000000000000000000000000008121b242b3136383939393939392c29241e160d04000e1720272e33363739393939392d2c29241d160d04030d161f272d32363739393939302f2c27211911080000000000000000000000030d151d23292c393939393939392c28231c150c03000000000000000000000000000000040b10161b1c23282b2d2f3235363839393938373533302d2c29241f1b17110a0200000000000000000000000000000000000000000000000000060e151a1f212222222222222222222222222222222222222222222222222222222222211e1a150e06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4855616e7b88949f958a7d70675d544c433d39352f3231322e34383c424a515b656e7b87929f95887c6f6255493c2e23180c00000a16222d38434c545a5d606060605a58524a40362b1f1304000000000000000000000000000000010d19242f3a444c52545f60606060585650483e34281d11050000000000000000000000000000000000000000111d2a3744505d6a7783909d96897c6f63544a3f342a25201e1a1b1a1a1e2a3744515d6a7784909d96897c6f6356493c3023160900000009141f29323f46525e69727e8b949f968d80736a60554b4034292929292929292929292929292626231f19120a0100000000000000000000000000000000060b12181d1f262b2e2f332f35383a3a3937332d312d2c29241d1b150e090300000000000000000000000000000000000000000000000000000000060c151c23283035383f4446494d4f4b5153545350494d4a4645403936312a251e160e08000000000000000000000000040f19242d353d424546464646464639352f2820160c060f202932393f434446464646463a39352f281f160c0a151f2831383e4243464646463d3c38332b23190f05000000000000000000010b151f272f34384646464646464638342e261e150a0000000000000000000000000001070d161b21272c2e34383a3c3f414345454646454442403d3a39352f2b27221b140b090200000000000000000000000000000000000000000000000003090f1214151515151515151515151515151515151515151515151515151515151514120e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a46535f697683909c9d9183796d665d564f4745403f3f3e3e3f4045464e545c606c77828f999d9083766a5f54473b2e1d120700000d1a26323e4a545e66696c6c6c6c67645c52473b2f20150a00000000000000000000000000000004111d2935414c565d606c6c6c6c6c64615a5045392d2115080000000000000000000000000000000000000000121f2b3845525e6b7885919e9a877a6e6154473b2e211914110e090e111e2a3744515d6a7784909d96897c6f6356493c30231609000000020d17202a36424d57606c77828f989f93877c6f675c51453d30271d1c1c1c1c1c1c1c1c1c1c1a1917130e0700000000000000000000000000000000020a11171d24292c32373b3c40424045474746443f413e3a39352f2b26201a140d0600000000000000000000000000000000000000000000000000000810181e272e343a414549505356595c555d6060605b535a5753514b46423b363028201a120600000000000000000000000915202b353f474e5253535353535345413a32281e130e1822323b434a4f5153535353524745403a31281d13111c27313a434a4e50535353534a48443d352b21160b00000000000000000007121d273139404553535353535353443f3830261c11060000000000000000000000040c121821272c3238383f4446494c4e505152535252514f4d4a4745403937332d261d19140d050000000000000000000000000000000000000000000000000002060808090909090909090909090909090909090909090909090909090909080806020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2b37424d5764707d8a949f958f82786d68605953514b4c4b4b4b4c4b5153585f666d73808d949e948a7d7064584e43372b1f0b0000000f1c2935424e5a66707679797979736e64584c3c32261b0f0300000000000000000000000000000713202c3945525d686d7979797979716c6156493d3024170a0000000000000000000000000000000000000000131f2c3946525f6c7985929f9386796d6053463a2d20130905020004111e2a3744515d6a7784909d96897c6f6356493c3023160900000000050e1a25303b44505b656e7b86929f999184796d60584e43392e23180c0f0f0f0f0f0f0f0f0d0c0a070200000000000000000000000000000000050b141b22272f35383c4347494c4f4b5153545350494e4b4745403a37322a261f180f0700000000000000000000000000000000000000000000000009121a222a303940444c52535b606266696b676d6d6c65696764605c54534d46413a322c2417110a020000000000000000000e1a26313d4751595e5f606060605f524c443a2f241915202a34434d555b5d606060605f53514b433a2f241816222d38434d555b5d6060606056544f473d33271c100400000000000000000c18232f39434b515f60606060605f504a42382e23170c00000000000000000000050d161d242932383d43484a505355595b5d5e5f5f5f5f5d5c595753514b46443f382f2a251f170e07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a26313c4955616c768290989e948f817a706b64605d555958575859545c60636a6f78808d929d989083766c6155463c32261b0f000000101d2a3643505d69768286868686807367584e43372b1f120600000000000000000000000000000714212d3a4754606d7a86868686867e7164584b3e3125180b000000000000000000000000000000000000000013202c3946535f6c7986929f928679665c5144382c1f120600000004111e2a3744515d6a7784909d96897c6f6356493c30231609000000000009141f27333f49535e69727f8b949f958d80736a60554b4034281e150b000202020202020000000000000000000000000000000000000000070f171d262d33394045474e5355595c555d6060605b535a5753514b47433c3631292118120b0300000000000000000000000000000000000000000009121b242c343c424a51565d60656c6f737678797a7a79787674706d66615f57524c443e3627221b140b020000000000000000111d2a36424e59636a6c6c6c6c6c6c5d564c4135291d1a26313c46555f676a6c6c6c6c6c605d554b4035291d1a26323e4a555f666a6c6c6c6c6360594f44382c2013070000000000000004101c2934404b555c6c6c6c6c6c6c6c5c544a3f34281c10030000000000000000050e171f282f353d44484f54545c60626568696b6c6c6c6b6a686663605d55535049413e3630292019110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2d3944505a626e7b86929a9e938f847d76716d6767666564656667666d70757c838d929d9a92867b6e615a5044342a20150a0000000c1926323f4c5965727f8c93939184776a5f53473b2e2115090000000000000000000000000004111d2935404b5564717e8b999392867a6d6054473a2d211407000000000000000000000000000000000000000013202c3946535f6c7986929f9286796c5f4a4034281c100400000004111e2a3744515d6a7784909d96897c6f6356493c302316090000000000030b17222d38414d57606c778290989f92877c6f675c51453d30271d12070000000000000000000000000000000000000000000000000007101921292f383f444b5153585f6266686b676d6d6c656a6764605d55534e46423b3328231d150c030000000000000000000000000000000000000008121b242d363e464e545c60686d73787c808285868687868583807d79746e69615e56504840332d261d140a0000000000000000121f2c3845525e6a75797979797976685d5245392c201f2b37434e5867717779797979796d675d5145392c201c2936424e5b66717679797979706b6054483c2f2216090000000000000006131f2c3845515c6776797979797976665c5044382c1f120600000000000000050e172029313940454f54596063666d6f7274767878797978777573706d6763605b535046423b322b231a1108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28333e47535f69717e8893999e969189837e7a767472727171727376797d828790959d9a93887e71695f53483e3322190e040000000815212e3b4854616e7b8795a096887c6f6255483c31261a0e020000000000000000000000000613202c3945515d6775828f9b9c8f8276685d5245392c201307000000000000000000000000000000000000000013202c3946535f6c7986929f9286796c5f53462e23180c0000000004111e2a3744515d6a7784909d96897c6f6356493c3023160900000000000006111b262f3b44505b656e7b86929f999183796d60584e43392e23180c030000000000000000000000000000000000000000000000071119222b333b414950555d60656a6f737578797a7a79787674716d67625f58534d453f342e271e150d030000000000000000000000000000000000060f1a242d363f4850585f666d727a7f84898c8f919299999292908d8a85817b746d68615a52443f382f261b11060000000000000013202c3946535f6c7987868686867a6d6054473a2d21212e3a47535f6a77838686868686796d6053473a2f24192a3743505d6a7683868686867d7063564a3d3023170a000000000000000714202d3a4753606d798686868686786d6053463a2d201307000000000000030c172029323b434b515960636b6f74797c7f818384858685858482807d7a75706c65615a524d443d352c231a100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222b37424d57616c727f8792989e9e95908a8683807f7e7e7e7f808386898f939a9f9892887f726c61574d42362c221007000000000714212d3a46535e697783909d998c807366574d42362a1e12050000000000000000000000000714202d3a4753606d7a86929f998b7e7165564c4135291d1104000000000000000000000000000000000000000013202c3946535f6c7986929f9286796c5f5346392c20130000000004111e2a3744515d6a7784909d96897c6f6356493c30231609000000000000000a141d27333f49535f69727f8c959f958d80736a60554b4034281e150b00000000000000000000000000000000000000000000061019232b343c454d535b60676d72777c7f8284868687868583817e7a756f6a615f575145403930271f150b02000000000000000000000000000000030e18212c363f48505a616a6f787f858c9196999c9e9f9f9f9f9e9c9a97928e87817a706c635c504941382d22170f0500000000000013202c3946535f6c7986929393877a6d6054473a2d21222f3b4855626e7b88959393988a7e7164564c4135291d2a3743505d6a7683909393897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693939386796d6053463a2d2013070000000000000b151e29333b444c555d606b70767c8185888c8e909192929292908f8c8a86827d78706c615e564f473e352c22190c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e1a26313c45505a626d727d858f949c9f9d9992908d8c8b8a8b8c8d9092989c9f9d9590867e726d625a50453c31241a10000000000005121e2a36424d5766737f8c999d908377695f53463a2d211409000000000000000000000004101d2935404b5564717e8a989f92867a6d6154473a2f24190d01000000000000000000000000000000000000000013202c3946535f6c7986929f9286796c5f5346392c20130600000004111e2a3744515d6a7784909d96897c6f6356493c3023160900000000000000020b17222d38414d57606c788390989f92877c6f675c51453c30271d12070000000000000000000000000000000000000000040e18222b353d464e575e656c71797f84888c8f919298999392908d8a86817c756e69625b514b423931271d140a0000000000000000000000000000000915202a333e48505a626c717c838c92989e9f9c98959992929995979b9f9f99928e857e736e605b53493f332721170d02000000000013202c3946535f6c7986929f93877a6d6054473a2d212b37434e586673808c99a79f9b8f8275685d5245392c202a3743505d6a7683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a86939f9386796d6053463a2d201307000000000007121d27303b454d565e676d747d83898d9297989b9c9e9e9d9d9e9d9b9998928f8a837d766e6960594f473e342a1e150b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202a333e48515b626c707b82898f939a9c9f9d9a99989798999a9c9f9d9995908a837c716c625b51483e332a1f12080000000000020e1a25313b4855626e7b8895a095887b6e6155483b3025190e020000000000000000000006131f2c3845515d6775828e9b9c8f8276685e5246392d1e130800000000000000000000000000000000000000000013202c3946535f6c7986929f9286796c5f5346392c20130600000004111e2a3744515d6a7784909d96897c6f6356493c30231609000000000000000006111b262f3c44505b666e7b86929f999183796d60584e42392e23180c03000000000000000000000000000000000000020c16202a343d474f5860696e777e858c9196999b9e9f9e9e9f9f9d9a98928e88827b726d605c544b43392f261c110600000000000000000000000000020f1a26313c46505a626c717e8690959f9f99928f8b8887868686888b8e92989f9f97928a80746c655b50443e33291f1409000000000013202c3946535f6c7986929f93877a6d6054473a2d212e3a47535f6a7784919daaac9f92867a6d6054473a30242a3743505d6a7683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d20130700000000000c18232e39434d575e686e79818990949a9e9d99999392919091929299989c9f9b95908a827b706b61594f463c30271d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e18212c363f49515961696e757d82878c8f9297969798989897969992908d89837e786e6a615a51493f362c21180e000000000000000914212e3a47535f6a7784919d988c7f7265564d42362a1e1105000000000000000000000714202d3a4753606d7985929f998b7e7265564c41362a1d0c0100000000000000000000000000000000000000000013202c3946535f6c7986929f9286796c5f5346392c20130600000004111e2a3744515d6a7784909d96897c6f6356493c302316090000000000000000000a141d28333f4a545f6a727f8c959f958d80736a60544b4034281e150b00000000000000000000000000000000000008131e28323c464f59606a6f7b828b91979d9f9b9799929291929896999e9f9b938f867f756d665c554b42382d22170c0200000000000000000000000006121f2b37434e58616c717e889298a099928d86827e7c7a79797a7b7e82868c92989f9e928c81776c605a50453b30251a0e040000000013202c3946535f6c7986929f93877a6d6054473a2d222f3c4855626f7c8895a0acaca3998b7e7164564c4135292a3743505d6a7683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d2013070000000004101c2834404b555e696e7a838d929c9f9c95918c8986858483848586898b8f949a9f9d948f857d706b61584e43392e23180c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f1a242d373f474f575e616b70767b7f828587898a8b8b8b8b8a888683807c77716c655f5850483f372d241a0f060000000000000006121f2b37434e586673808d999d908376695e52463a2d20140800000000000000000004101c2834404b5564707d8a989f93867a6e6154473b3025190d0000000000000000000000000000000000000000000013202c3946535f6c7986929f9286796c5f5346392c20130600000004111e2a3744515d6a7784909d96897c6f6356493c30231609000000000000000000020b17222d38424e57606d788390999f92877c6f665c51453c30271d120700000000000000000000000000000000010d1924303a444e58606b707c858f949e9f99928f8b888685858587898d91969d9e98928b81786d675c544a3f33281e140a0000000000000000000000000814212e3a47535f6a717e87939a9e959087807b76726f6d67676d6f71757a7f858f949d9c938d80736c61574d42362a20150a0000000013202c3946535f6c7986929f93877a6d6054473a2d2b37434e586673808c99a8a39fa39c8f8275685d5246392d2a3743505d6a7683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000000030d17212c3845515c676e7b8490959d9f949089847f7d7a7877777778797c7f82888e939a9e9792867d706a5f554b4034281d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121b242d353e454d53596063696e7276787b7c7d7e7f7e7e7d7b7977736f6a64605b534e463e362d251b12080000000000000000020f1a26313c4955626f7c88969f93877b6e6154473b3024190d01000000000000000006131f2c3845515c6775818e9b9c908376685e5246392d1e13080000000000000000000000000000000000000000000013202c3946535f6c7986929f9286796c5f5346392c20130600000004111e2a3744515d6a7784909d96897c6f6356493c302316090000000000000000000006111c262f3c44505c666f7c86929f999083796d60584e42392e23180c0300000000000000000000000000000005111d2935414c565f6a707d8692979f99928d86827e7b797878797a7c80848a90959f9f938e82796d665b50443d30261c110600000000000000000000000815222f3b4855626e7c8692999e938f837c746e696562605d5d606264686d737b828d929c9c928b7e71695e52463d32271b0f0200000013202c3946535f6c7986929f93877a6d6054473a2d2e3b47545f6a7784919e9f9992999f92867a6d6154473a30253743505d6a7683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d20130700000009141f2b37434e58606d79839096a098928c837d7873706d676b6a6a666d6f72767b81889196a09892867c6f675c5145392f24180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b232c333b42464f54575f616569696e6f7171727271706f6d6766626058535049413c342c241b1309000000000000000000000a15222e3b4754606a7884919e9a8b7e7265564c4135291d110400000000000000000713202d3a4653606d7985929f9a8b7f7265564c41362a1e11050000000000000000000000000000000000000000000013202c3946535f6c7986929f9286796c5f5346392c20130600000004111e2a3744515d6a7784909d96897c6f6356493c3023160900000000000000000000000a141d28343f4a545f6a737f8c95a0958d80736a60544b4034281e150b000000000000000000000000000005101a232d3946525d686f7c8692989f959187807b75716e6c666b686d7073787d838c92999e948f81786c60584e42382e23170b00000000000000000000000d1a2734404d5a6773808a9197938f81796f6a615e57555451515355565d60696e77808d929c9f92857b6e61584e43372b1e140800000013202c3946535f6c7986929f93877a6d6054473a2d2f3c4955626f7c88969f959086929f998b7e7165564c41362a3743505d6a7683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d2013070000020e1a25313b47535f6a74808d959f9892867f78706c6563605d555d545c6062656a6e747d849095a0989183796d60554b4035291d100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009111a212931363d44484d535559575e616364656565646362605c5556544e46443f382f2a221b1209010000000000000000000006131f2b37434e586774808d9a9c8f8276685d5245392c2013070000000000000004101c2834404a5463707d8a989f93877b6e6154483b3025190e020000000000000000000000000000000000000000000013202c3946535f6c7986929f9286796c5f5346392c20130600000004111e2a3744515d6a7784909d96897c6f6356493c302316090000000000000000000000020b17232e38424e58606d788390999f92877c6f665c51453c30271d1207000000000000000000000000000b16212c38444f59616d7a8491989f948f837c746e696462605b565d6063656c71787f8792989e938d80736a60544a3f34281b1106000000000000000000000d1926323f4b58636e737e848e8f81786d675f58534d4947454547484c52575e656c73808d939e978f82756a6054473b3025190d01000013202c3946535f6c7986929f93877a6d6054473a2d37434e586673808d999d9083828f9b9c8f8276685e5246392d3743505d6a7683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000005121e2a36424d57626f7c87939f9992867d726c66605b5353514b504a515356575f626b707a839096a0958c7f72675d5145382c1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080f171f252a32383b4246484c4d5354565758585858575553514b4947433d37332d261d180f09000000000000000000000000030f1b27323d495663707c89979f92867a6d6054473a2f24180c0000000000000006121f2c3844515c6674818e9b9d908376695e52463a2d1e1408000000000000000000000000000000000000000000000013202c3946535f6c7986929f9286796c5f5346392c20130600000004111e2a3744515d6a7784909d96897c6f6356493c3023160900000000000000000000000006111c26303c44505c666f7c87929f999083796d60584e42392e23180c03000000000000000000000004101c28333c4855616b75818e969f948f82796f6a615e575553504c5254535b60666d737d8692999f92877c6f665c5044382d22170b000000000000000000000a17232f3b47525c636c717a8184796d665d554e46423c3a39393a3c41454d535b606c77818e979e93897c6f62564c41362a1e1105000013202c3946535f6c7986929f93877a6d6054473a2d3b4754606a7784919e998b7f7e8a989f92867a6d6154473b303743505d6a7683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d20130700000714212d3a46535e6976828f999f92877d706b605b54504947454044404446494e535960686e7a84919e9e9285796d6053473a2d2014090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141a21272c31363a3b3f424648494a4b4c4b4b4a484645403c3b37322b27221b140b0600000000000000000000000000000a13202d394653606c7985929e998b7e7164554b4035291d10040606060606060713202d3a4653606d7985929f988c7f7265574d42362a1e0d02000000000000000000000000000000000000000000000013202c3946535f6c7986929f9286796c5f5346392c20130600000004111e2a3744515d6a7784909d96897c6f6356493c30231609000000000000000000000000000a141e28343f4a545f6a73808c95a0958c80736a5f544b4034281e150b00000000000000000000000714202c38444f5963707d8a939e969082796d676058524d4846444145474950545c606b707d87929f999183786d6053493f33271b0f0300000000000000000007131f2a36404a525a61686d74796d675d544b433c36312d2c2c2d2f353b4149505b656d7a85919e9c8f8275685e5246392d201407000013202c3946535f6c7986929f93877a6d6054473a333f4953626f7c89969f93877b7985929f998b7e7265564d42363743505d6a7683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d20130700000815212e3b4854616e7b87939f988d80746b6159504a443f3a39352f34383a3c42474f565e68707d8a949f978a7e7164574a3e31251a0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e161b1f262a2d2e31363a3b3c3e3e3f3f3e3d3c3a38342e2e2b271f1b17110a0200000000000000000000000000000006121f2b3844505b6674818e9a9b8f8275675d5145392c1f1313131313131313101c28343f4a5463707d8997a095887b6e6155483b30251a0e00000000000000000000000000000000000000000000000013202c3946535f6c7986929f9286796c5f5346392c20130000000004111e2a3744515d6a7784909d96897c6f6356493c3023160900000000000000000000000000020c17232e38424e58606d798390999f92877c6f665c51453c30271c1207000000000000000000000916232f3c4855616b7783909d9e91847a6d675d554e46423b393835393a3f444a5159616b727e8b949f958a7e71655b5044372b1f1205000000000000000000020e19242e38404850565d60676d675d554b4239312a2521201f2024292f383f49535e68727e8b969f93877a6e6154473b2e211408000013202c3946535f6c7986929f93877a6d6054473a3744505b6573808d9a9c8f837675818e9b9c8f8376695e52463a3743505d6a7683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d20130700000c1926333f4c5966727f8c9a9f92857a6d61594f443f38332d2c2924282c2d31373d444d56616c7683909c9b8e827568574d42362a1e120500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b10141a1e2122252a2d2e303132323231302f2d2c2823221f1b160f0b060000000000000000000000000000000000030f1c28333f4a5463707d8a979f9286796d6053473a2e23181f1f1f1f1f1f1f1f1f2b3844505c6674818e9a9d908377695f53463a2d1f140900000000000000000000000000000000000000000000000013202c3946535f6c7986929f9286796c5f53462e23180c0000000004111e2a3744515d6a7784909d96897c6f6356493c30231609000000000000000000000000000006111c26303c45515c666f7c87929f999083796d60584e42392e23180c03000000000000000004111d2935404b5563707d8a959f948a7d70685e554c433c36302d2b292c2d333940444f59626d76828f9a9d9184786c605346392d2013070000000000000000000008121c262e363e444c52555c605c554b433a30271f1a14131314191d262d38414c56606d7984919e998b7f7265584c3f3025190d010013202c3946535f6c7986929f93877a6d6054473a394653606c7884919e998b7e72707d8a979f93877b6e6154473b3143505d6a7683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d2013070005121e2a36424d576976838f9c9a8d8074685e52473e332d2722201d181c1f20262b323b444f5964717e8a999e928578695e53463a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e1214151a1e21212324252525252422201f1c1815130f0a0300000000000000000000000000000000000000000b17222d3a4653606d7985929f988a7d7064544a4034282c2c2c2c2c2c2c2c2c2c2d3a4653606d7985929e998c7f7366574d42362a1e120500000000000000000000000000000000000000000000000013202c3946535f6c7986929f9286796c5f4a4034281c100400000004111e2a3744515d6a7784909d96897c6f6356493c302316090000000000000000000000000000000a151e2834404b54606a73808d95a0958c80736a5f544a4034281e150b00000000000000000613202c3945515d6775828e9b9c8f82766b61564c433a312a25201f1d2022272e343e47515b626f7c87939f96897c6f6356493c2f24180d01000000000000000000000a141c242c323a41454b5153514b433a31281e150d090606080b141b262f3a45515c6673808d9a9c8f827569564c41362a1d11050013202c3946535f6c7986929f93877a6d6054473a3f4953626f7c89969f92867a6d6d7985929f998b7f7265574d423643505d6a7683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000714212d3a46535e697885929f998a7d7063564c413528221c1713100d1012131a2029323e4754616d7a86939f97877b6e6154483b2e2115080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507090e12141516171819181817151313100c0706030000000000000000000000000000000000000000000006131f2c3845515c6675818e9b9b8e8175665c5144383939393939393939393939333f495363707c8997a095887b6e6255483b31261a0e0200000000000000000000000000000000000000000000000013202c3946535f6c7986929f928679665c5144382c1f120600000004111e2a3744515d6a7784909d96897c6f6356493c30231609000000000000000000000000000000030c18232e39424e58606d798491999f92877c6f665c51443c30271c1207000000000000000714202d3a4753606d7a86929f96897c6f63594f443a30281f1a13121113171c2328353f47535f6a75828f9b9a8d807467554b4135291d110400000000000000000000020a121a20282f353940454745403931281f160c0300000000020a141d2834404b54636f7c89999e918578685e5246392d2013070013202c3946535f6c7986929f93877a6d6054473a44505b6574808d9a9c8f8276686674818e9a9c908376695e53463a43505d6a7683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000815212e3b4854616e7b87979f92867a6d6053473a302017110b0604010406090e17202d3946525d687783909d96897c706356493d3023160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050708090b0b0c0c0b0a09070604000000000000000000000000000000000000000000000000000004101c2834404b5464717d8a989f9285796d6053464646464646464646464646464644505b6574818d9a9d9084776a5f53473a291f140900000000000000000000000000000000000000000000000000131f2c3946525f6c7985929f9886796d6053463a2d20130703000205111e2a3744515d6a7784909d96897c6f6356493c302316090000000000000000000000000000000007121d27303c45515c676f7c87939f999083786d60584e42392e23180b020000000000000a1724303d4a5763707d8a989e9184776b6054473e32281e160d090604060b1218232b37434e5864707d8a999d918477675d5145392c201306000000000000000000000000080d161e24292f34383a38342f271f160d04000000000000020b18232e3a4753606d7a86939f97877a6d6154473a2e2114070013202c3946535f6c7986929f93877a6d6054473a4653606c7884919e998b7e716463707d89979f93877b6e6154483b43505d6a7683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000916232f3c4956626f7c89959e918478675d5145392c1f13060000000000000005111d2935414c566875828e9b978b7e7164584b3e3125180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3a4753606d7986929f97897d7063544a525252525252525252525252525253606c7884919e998c807366574e42372b180d0300000000000000000000000000000000000000000000000000121f2c3845525f6b7885929e94877a6e6154473b2e2116120f0b0e12141e2a3744515d6a7784909d96897c6f6356493c3023160900000000000000000000000000000000000b151e2834404b55606a73808d96a0958c80736a5f544a4034281d140a0000000000000d192633404c5966737f8c999a8d807467594f44352c20160c04000000000007111a26313c4653606d7986929f93867a6d6054473a2d21140700000000000000000000000000040c13191d23292c2d2c29231d150d0400000000000000000713202c3945515d677884919e95887b6e6255483b2f2215080013202c3946535f6c7986929f93877a6d6054473f4a54636f7c89969f92867a6d60606c7885919e9a8c7f7265574d4243505d6a7683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000a1723303d4a5663707d89969d9083776a554b4035291d100400000000000000010d192430414e5a6774818d9a988b7e7265584b3f3225180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090e111213131313131313131313131313131313131313131312100f0d0a0706040100000000000000000000000000000000000000000000000007131f2c3945515d6775828f9b9a8d8174665b5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f636f7c8997a096887c6f6255483c31261a090000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919d95887c6f6255493d3128201f1b171a1e2021263744515d6a7784909d96897c6f6356493c302316090000000000000000000000000000000000030c18232e39434e58606d7984919a9f92877c6f665c51443c2f261b110600000000000f1c2835424f5b6875828e9b978a7e7164574b3e32241a0e04000000000000000a151f2c3845515c677783909d9a897c6f6256493c2f231609000000000000000000000000000001080d12181c1f201f1c18120b0300000000000000000004111d2935404b556a7784909d96897c6f6356493c302316090013202c3946535f6c7986929f93877a6d60544744505b6674808d9a9b8f8275685d5b6674808d9a9d908376695f534643505d6a7683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000a1724313d4a5764707d8a979c8f8276695c4f432f24180c000000000000000000081a2633404d596673808c99988c7f7265594c3f3226190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080f151a1d1f20202020202020202020202020202020202020201f1e1d1c19171413110d07030000000000000000000000000000000000000000000004101d2935404b5564717e8b999e9185796c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c74808d9a9e9184776a5f53473a2a20150900000000000000000000000000000000000000000000000000000f1c2935424f5c6875828f9b998c7f7266594f433a322d2b2722252a2d2e313744515d6a7784909d96897c6f6356493c3023160900000000000000000000000000000000000007121d27303d45515d676f7d88939f999083786d60584e41382d22170b0000000000101d293643505c6976838f9c95897c6f6256493c2f231609000000000000000004101c2834404b556875818e9b978a7d7064574a3d3124170a0000000000000000000000000000000001070c10131413100c07010000000000000000000004101c2834404b546a7783909d96897c6f6356493c302316090013202c3946535f6c7986929f93877a6d6054474653606c7884919e988a7e71645654626f7c89969f95887b6e61554843505d6a7683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000b1724313e4a5764717d8a979c8f8275695c4f4236291c070000000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121920262a2c2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2c2b2a28262420201d1813100c060000000000000000000000000000000000000000000c18242f3a4754606d7a86929f97897d797979797979797979797979797979797979797984919e998d807366584e43372b1f120600000000000000000000000000000000000000000000000000000d192633404c5966737f8c999c9083766b60564c443e3937332d30363a3b3d43474b5d6a7784909d96897c6f6356493c30231609000000000000000000000000000000000000000b151e2935404b55606b74808d96a0958c7f736a5f53493f33271d120700000000111d2a3744505d6a7783909d94887b6e6155483b2e2215080000000000000000000c18232e414e5a6774818d9a978b7e7164584b3e3125180b0000000000000000000000000000000000000004060706040000000000000000000000000006131f2c3845515c667884919e95887b6f6255483c2f2215090013202c3946535f6c7986929f93877a6d6054474a5463707c89979f92867a6d605354606a7784919e998c7f7266574d42505d6a7683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121b242b31363839393939393939393939393939393939393939393938373533302d2c29241f1c17110a03000000000000000000000000000000000000000713202c3945525d6876828f9c9f928685858585858585858585858585858585858585868996a196887c6f6255493c31261b0f0300000000000000000000000000000000000000000000000000000916222f3c4955626f7c88959f94897d70685d56504846443f42434246484a4e53555d6a7784909d96897c6f6356493c3023160900000000000000000000000000000000000000030c18242f39434f59606d7984919a9f92877c6f655b5044392e23180c00000000111e2b3744515e6a7784919d94877b6e6154483b2e211508000000000000000000071a2734414d5a6774808d9a978b7e7164584b3e3125180b000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7986929f97877a6e6154473b2e2114080013202c3946535f6c7986929f93877a6d605447505c6674818d9a9b8e8175675d514e586673808d999d908377695f5347505d6a7683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19242d353d4245464646464646464646464646464646464646464646454342403d3a39352f2c28231c150c0802000000000000000000000000000000000004111d2935414c5665727e8b99a39892929292929292929292929292929292929292929298a19e9184786a6054473b2a20150a0000000000000000000000000000000000000000000000000000000815212e3b47535f6a7784919d9d90837a6d68615a555350494f504d525457585f62676d7783909d96897c6f6356493c30231609000000000000000000000000000000000000000007121d27313d45515d67707d88939f999083786c60554b4034281c1004000000111e2b3744515e6a7784919d95887b6f6255483c2f221509000000000000000003101c28343f4a546875818e9b978a7d7064574a3d3124170a000000000000000000000000000000000000000000000000000000000000000000000001070f1b27333f4953626f7c88999f928578695e52463a2d2014070013202c3946535f6c7986929f93877a6d60544753606d7985929e988a7d7064554b4855626f7c8895a095887b6e625548505d6a7683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202b353f474e5253535353535353535353535353535353535353535251504f4c4a4745403a38342e261e19130c0500000000000000000000000000000000010d19242f3b4754616e7a86939fa39f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa2a99a8d807367584e43372b180e0400000000000000000000000000000000000000000000000000000006131f2b37434e5864717e8b959f9590837a716c6562605b535c5d575e6164666a6f73797f85929f96897c6f6356493c302316090000000000000000000000000000000000000000010b151f2935404b55606b74818d969f958a7e71675c5145382c1f160a000000111e2b3744515e6a7784919d968a7d7063574a3d31261a0c030000000000000006121f2b3844505c667683909c96897d706356493d3023160a00000000000000000000000000000000000000010204040404040404040404000004060b1218242b3744505b65737f8c999c8f827669564d42362a1e11050013202c3946535f6c7986929f93877a6d60544a5463707d89979f9285796d60534647535f6a7784919d998c7f7366584e505d6a7683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a26313d4751595e5f6060606060606060606060606060606060605f5f5e5d5b595753514b46443f38302a251e160e06000000000000000000000000000000000814202d3946525e687683909caaa29f93939393939393939393939393939393939a9da4a196897c6f6256493c32271b0900000000000000000000000000000000000000000000000000000000030f1b26323c4653606d788390979f9590847d77726e6c656969696a696e7073777b80858b9298a296897c6f6356493c30231609000000000000000000000000000000000000000000030d18242f39434f59606d7984919e9e9184796d6053463d32271b0f030000111e2b3744515e6a7784919d998c7f7366574d42362a1e150b030000000000061018202d3a4653606d7985929f96877a6d6154473a2e2114070000000000000000000000000000000004080c0e0f10101010101010101010070c1013171d242935404b55606c7884919d998c7f7366594c403025190e020013202c3946535f6c7986929f93877a6d6054505c6674818e9a9b8e8174675c5145434e5866737f8c999d9184776a5f53505d6a7683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d2a36424e59636a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b6a686663605d5553504a423e36302820180f0600000000000000000000000000000005111e2a36414c5665727f8c98a2989286868686868686868686868686868686868d929d9e9184786c605346392d20130a00000000000000000000000000000000000000000000000000000000000a151f2b3844505c666e7b8592979f96918a847f7b797776757677787b7d8084888c92979fa2aa96897c6f6356493c302316090000000000000000000000000000000000000000000007121d28313d45515d67717e8b95a0968b7e7265594f43382c1f13070000111e2b3744515e6a7784919d9c908376695f53463c30271d150c070403060a1117222a36424d5763707d89989e918478685e5246392d201307000000000000000000000000000002090f14181b1b1d1d1d1d1d1d1d1d1d1d1d181c1f22272f353f45515d67717e8a969f94887b6e6155483b2e221509000013202c3946535f6c7986929f93877a6d605453606d7985929e978a7d7063554b403c4855616e7b88959f95887b6f6255505d6a7683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121f2c3845525e6a7579797979797979797979797979797979797979797978767573706d6764605c545046413a322a21180e050000000000000000000000000000010d1925303b4854616e7b87959f92867979797979797979797979797979797979808d9a9a8d8074655b5044372b1f1205000000000000000000000000000000000000000000000000000000000003101c28343f4a545f696f7c8590959f9e95918b8885848382838485878a8d91959998929298a296897c6f6356493c3023160900000000000000000000000000000000000000000000010c161f2935414b55606c7883909d9d9083776b6054483b2f2215090000111e2b3744515e6a7784919d9f93877b6e61574e42392f261e1813111012141b2227343c46535e6974818e9b9b8e817468564c41362a1d110500000000000000000000000000030b131a202527282a2a2a2a2a2a2a2a2a2a2a23282c2d33394045505a606d7984919d9c908376695f53463a2d211407000013202c3946535f6c7986929f93877a6d60545463707d89979e9285796d6053463a3a46535f697683909d998c807366584e5d6a7683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798786868686868686868686868686868686868686858483827f7d7a76716d66615a524c443b332a20170b0200000000000000000000000000000814212d3a46535e697783909d988a7d706c6c6c6c6c6c6c6c6c6c6c6c6c6c7884919e97897c706353493f33271b0f030000000000000000000000000000000000000000000000000000000000000b17232e38424d57606a6f7b838c92979d9d989892908f8f9091929797999d99938e8586929f96897c6f6356493c302316090000000000000000000000020507080d08070502000000040d18242f3a44505b66717e8a97a095897c6f6356493c3025190e0200111e2b3744515e6a7784919da49a8d80746a5f544a4138302924201d1c1f20262d333d46505a616e7b86929f96897d7063564a3d3025190d01000000000000000000000000020b151d252c31343537373737373737373737372e34383a3f444b515a626c74808d969f94897d7063574d42362a1e1205000013202c3946535f6c7986929f93877a6d60545c6674818e9b9a8e8174665c50443836424d5765727f8c999e9184776a5f535d6a7683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929393939393939393939393939393939399929291908e8c8a86827e78716c615e564d453b32291d140a000000000000000000000000000005121e2a36424d5766737f8c999b8e8174665b60606060606060606060626f7c89969e9285796c605346392d22170b0000000000000000000000000000000000000000000000000000000000000006111c26303b454e5860696e797f858b90939a999b9c9c9c9c9b9b999695908c87817a83909d96897c6f6356493c3023160900000000000000000004090e1214151a1514120e0903000007131d28333f4a54606d7985919e9a8e817467564d42362a1e110500111e2b3744515e6a7784919dac9f92877b6e665c534a423b352f2c29282b2d2f383f444e58616c75818e999e9184796d6053463a2d2013080000000000000000000000000009131d272f373d40424343434343434343434343434045464950555d606c717e8b929d989083766b6054453b31261a0e02000013202c3946535f6c7986929f93877a6d6054606d7985929f97897c7063544a3f34313b4754616e7b87939f96887c6f62555d6a7683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929fa49c999999999999999999999999999a9a9b9d9d9b9999928f8a847e766d685f574d443b2f261b110600000000000000000000000000020e1a25313b4855626e7b88969e9285796c6053535353535353534e586773808d9a9a8e8174665b5044382b1b110600000000000000000000000000000000000000000000000000000000000000000a141e2a333c464e575f676d727a7e83878a8c8e8f90908f8f8e8c8987837f7b747784909d96897c6f6356493c3023160900000000000001070c10141a1e21222621201e1a140d0500010b17222d3844515c6673808d999e918477695e52463a2d20140700111e2b3744515e6a7784919daaa3999083786d655c544d45403a393534383a3d41495058606a707e8a939e968b7f72665c5044382c1f1206000000000000000000000000040f1a252f3941484d4e5050505050505050505050504b5153535b60676d747e87929f9f92867c6e62594f44332a1f140900000013202c3946535f6c7986929f93877a6d605563707d8a979e9184786c605346392e2d3a46525e6976838f9c998d807366585d6a7683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f9c928d8c8c8c8c8c8c8c8c8c8c8c8c8d8e8f919299999d9f9c96918b827a6e695f564c41382d22170b00000000000000000000000000000914212e3a47535f6a7784919d97897c6f635649464646464647535f6a7784919e97897d7063544a3f33281c0a000000000000000000000000000000000000000000000000000000000000000000020c18212b343c454d555c60686d72767a7d7f818283838382817f7d7a77726e697784909d96897c6f6356493c302316090000000000030b12181d1f262a2d2e332e2d2a251f170f050006111c2834404a5463707d8999a096877b6e6154473b2e21140800111e2b3744515e6a7784919daca49f958e81776d665e57514b4745413f4446484f535b606a6f7c86929f9e9184796d60544a3f34281c10030000000000000000000000000814202c37414b53595b5d5d5d5d5d5d5d5d5d5d5d5d545c6062656c7179808b92999d938c7f726a5f53473d3321180e0300000013202c3946535f6c7986929f93877a6d605c6774818e9b9a8d8074665b5044382b2a36424d5765727e8b999e9184786a605d6a7683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f998d808080808080808080808080808081828486888c90959b9f9e948f847b6e685e53493f33271d12070000000000000000000000000006121f2b37434e586673808d999a8d807367584e433739393c4855626f7c88969e9285796d6053463a2d22170b00000000000000000000000000000000000000000000000000000000000000000000060f19222b333c434b51565d6065686d70737476767776757472706d6865616a7784909d96897c6f6356493c3023160900000000030d151d24292c31363a3b403b3a36302921170d03000c18232e3a4753606d7986929f978a7d7064574a3d3124170a00111e2b3744515e6a7784919da49a939a938e81786e69605d5554524c4a5053555960656c727c8592989d938a7d70675c5142382e23170c000000000000000000000000000c1825313d48535d65686a6a6a6a6a6a6a6a6a6a6a6a6a666d6f73787e848d929f9d948e81746d62584e43352b210f060000000013202c3946535f6c7986929f93877a6d60606d7985929f96897c6f62544a3f332825303b4754616d7a86929f96897c6f62536a7683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a73737373737373737373737374747577797c7f83888e93999f9691847a6e655b5044392e23180c00000000000000000000000000020f1a26313c4956626f7c89969e9184776a5f53473a2e36424d576673808c999b8e8174665c5044382c1c11060000000000000000000000000000000000000000000000000000000000000000000000071019212a303940454c5254565e6164666869696a6968686663615e565d6a7784909d96897c6f6356493c30231609000000010b151f272f35383b4246484d4846423b33291f14090007131f2c3845515c677784919e988b7e7265584b3f3225180c00111e2b3744515e6a7784919d9f9386939f938e827b726d6763605d56545c6062656b6f787f8692979f948e81746b61554b4030261c1106000000000000000000000000010e1b2734404d59656f757676767676767676767676767778797c7f848a91969d9f938e82786d605b51463c31231a0f000000000013202c3946535f6c7986929f93877a6d6064707d8a979e9184786c605346392d22202d3946525e6875828f9c9a8d8073655b6a7683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6666666666666666666666676768666d6f73777c82879196a0968f82776c60544b4034281c1004000000000000000000000000000a15222e3b4754606a7884919e96887b6e6255483b303a46535f697783909d988a7d7063544a3f34281c1003000000000000000000000000000000000000000000000000000000000000000000000000070f181e272e343a4145474c525457595b5c5d5d5c5c5b595654524c5d6a7784909d96897c6f6356493c3023160900000007121d2731394045474d53555954524d453b30251a0e0204101c2934404b556a7683909d998c7f7366594c403326190d00111e2b3744515e6a7784919d9a8d818d949d948f867f7a74706d686a6a666d6e72767c828b92989f958f82796d60594f43392f1e150a00000000000000000000000000020f1b2835424e5b687581838383838383838383838383838486888c91969d9e98928b81786d665c50493f332a201108000000000013202c3946535f6c7986929f93877a6d606775818e9b998d8073655b5044372b1c1d2935414c5664717e8b989e9184786c606a7683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d60595959595959595959595a5b545c6062666a6f757c8490959f948b7e71665c5145382c1f13070000000000000000000000000006131f2b37434e586774808d9a998c7f7266564d42363b4855616e7b88959f9285796d6053463a2e23170c0000000000000000000000000000000000000000000000000000000000000000000000000000060c151d23282f35393a4146474a4c4e4f5050504f4e4c4a4746515d6a7784909d96897c6f6356493c302316090000000c18242f39434b5153575f6166615e574d42362a1f140806111d2935414c556a7683909d9a8d8073675a4d4034271a0d00111e2b3744515e6a7784919d94877b8290959f98928c85817d7a78777777797b7f83898f949f9f948f837a6d675c51473e31271d0c030000000000000000000000000003101d293643505c6976838f909090909090909090909090919299999d9f9b948f867f746d665c544a3f372d21180e00000000000013202c3946535f6c7986929f93877a6d606d7985929f96887c6f6253493f33271b1925303a4754606d7a86929f96897c6f636a7683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d60544d4d4d4d4d4d4d4d4d4d4e4a515355585f626a6f7a8390989e9184796d6053463a2f24180d01000000000000000000000000030f1b27323d495663707c89979d908376695e52463a424d5665727f8c989b8e8175665c5145382c1c1106000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181e24292c3036393a3d40414343444342413f3d3a44515d6a7784909d96897c6f6356493c30231609000004101d2935404b555d6064696e736e695e52463b302519131217212c3945515d677884919e998c7f7366594c403326190d00111e2b3744515e6a7784919d94877b7a838f949f9f97928d89878584838485888b90959c9f99928c82796d685d554b40352c1f150b0000000000000000000000000000020e1b2835414e5b6874818e9b9d9d9d9d9d9d9d9d9d9d9d9e9f9d9b99928f89827b726d605c544a42382e251b0f0600000000000013202c3946535f6c7986929f93877a6d64707d8a989d9184776a5f5441382d221713202c3945515d6775828e9b9a8d8074666a7683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d60544740404040404040404141404446494e545860686e7b86929f968a7e7164554b4035291d1104000000000000000000000000000a13202d394653606c7985929e93877b6e6154473b46525e697683909d988a7d7064544b4034281c0a000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c13191d20252a2d2e31333536363736353533303744515d6a7784909d96897c6f6356493c30231609000006131f2c3845515d676d71767b807b6e61564d41362a251f1f2328333c4754606d7a86929f988b7e7165584b3e3225180b00111e2b3744515e6a7784919d94877b6e7a828c92989e9e9a9696919090919298989d9f9c95908780786d675d564c43392e231a0d030000000000000000000000000000000d1a2733404d5a6673808d99a69f9c95959595959595949993918e8b86827c756e69625b504a423830261c13090000000000000013202c3946535f6c7986929f93877a6d6775818e9b998c807366584e432f261b11111d2935414b5564707d8a989e9185786c6a7683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a33333333333333342e34383a3c43474e565f6973808d999c8f8276675d5145392c2013060000000000000000000000000006121f2b3844505b6674818e9a9a8b7e7265554c414754616e7b87939f9285796d6053473a2e23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080d1113191d2021242628292a2a292928262a3744515d6a7784909d96897c6f6356493c3023160900000714202d3a4753606d797e82878c8073685e52463f36302c2b2e343c454f5964717d8a99a298897c6f6256493c2f23160900111e2b3744515e6a7784919d94877b6e6d787f858d92979a9d9f9e9d9d9e9f9e9b9a938f89837c736d665d554c443a30271d1108000000000000000000000000000000000c1925323f4c5865727f8b989f948f8888888888888888878684817e7a756f6a615f5751443f3830261e150a010000000000000013202c3946535f6c7986929f93877a6d6d7985929f95887b6e6255483c3222140a0d18242f3a4753606d7985929f97897c706a7683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2626262626262723282c2d32373c444d57616e7b87939f9286796d6053473a2d20140700000000000000000000000000030f1c28333f4a5463707d8a979c8f8276675d51454c5665727f8b9a9b8e8275675d5145382c1d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104080d11131417191b1c1d1d1d1c1b1e2a3744515d6a7784909d96897c6f6356493c3023160900000d192633404c5966737f8a8f9392857b6e615b5146413a38383a3f444e57616b76828f9c9f9285796d6053463a2d20130700111e2b3744515e6a7784919d94877b6e666d727a80858a8d90929894959496918f8b87837d766f6a605c544b433a32281e150b00000000000000000000000000000000000a1724313d4a5764707d8a979c8f827c7b7b7b7b7b7b7b7a797775716d68626058534d453f342e261e150c03000000000000000013202c3946535f6c7986929f93877a6d717e8a989d9083776a5f53473a2e21140207131f2c3845515c6774818e9b9a8d8174667683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d211a1a1a1a1a1a181c1f20262b323c46525e697683909d99897c706356493d3023160a00000000000000000000000000000b17222d3a4653606d7985929f92867a6d605447525d6876828f9c988a7e7164554b4035291d0b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507070a0d0e101011100f111e2a3744515d6a7784909d96897c6f6356493c3023160900000814212e3b4754616e7a86929f988e81756d635b524c464544464a50585f69707d89949f9b8e8175675c5145382c1f130600111e2b3744515e6a7784919d94877b6e6160686e73797d818385878888878684827f7b76706b626058504a423a312820160c0300000000000000000000000000000000000916232f3c4956626f7c89959c9083766f6f6f6f6f6f6e6d6d666865615e56544e46423b3328231c150c0300000000000000000013202c3946535f6c7986929f93877a6d75828f9b998c7f7266584e43372b1f120604101c2934404b5563707d89979e9285796d7683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140d0d0d0d070c1012131b202a36424d576773808d9a988c7f7265594c3f3226190c000000000000000000000000000006131f2c3845515c6675818e9b998a7d7164544a54616d7a86929f92867a6d6053473a2f24180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020303040304111e2a3744515d6a7784909d96897c6f6356493c3023160900000714202d3946525e6874818e979e938c7f726d615e5653515053545c606a6f7b85929e9e94897c6f62554b4034281c100400111e2b3744515e6a7784919d94877b6e61565e61676d707477797a7b7b7a797875726e69636159544e443f3830281f160d040000000000000000000000000000000000000814212e3b4754616e7a87999e9184776b62626262626161605c545854524c47433d3631292117110a030000000000000000000013202c3946535f6c7986929f93877a6d7a86929f95887b6e6155483c31261a0f02000c18232f3a4653606d7985929e97897d707683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d211407000000000004060a0e1a25303e4b5865717e8b989a8d8174675a4e4134271b0e000000000000000000000000000004101c2834404b5464717d8a989b8e8175665c515564717e8b999b8f8275675d5145392c1d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111e2a3744515d6a7784909d96897c6f6356493c30231609000005111e2a36414c56616d7a85929f9c918c7f756d6863605c5c6062666d727c849197a1988f82766a605443392e23180c0000111e2b3744515e6a7784919d94877b6e615452555c606367666c6d6e6e6e6d676865615e57554f47433c342e261e160d04000000000000000000000000000000000000000713202d3a4653606d7986929f928579685d55555555555453514a4b4746413a37322a261f170f0600000000000000000000000013202c3946535f6c7986929f93877a717e8a989d908376695f53463a2a20150a000007121f2c3844505c6674818d9a9a8e81747683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000091724303d4a5763707d8a969c8f8275695c4f4236291c0f0000000000000000000000000000000c18232e3a4753606d7a86929f9285796d60535d6775828f9c998b7e7164554b4035291d110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111e2a3744515d6a7784909d96897c6f6356493c302316090000010d1925303b46525e68717e8b929d9c918c817a74706d67666d6f72797f869196a09a92867b6e61584e4330271d12070000111e2b3744515e6a7784919d94877b6e6154484b515357545b6061616261605c555854524d48443d373228231c150c04000000000000000000000000000000000000000006121f2b3844505c667885919e98877a6d615448484848474644403e3a3935302b27201a140d060000000000000000000000000013202c3946535f6c7986929f93877a75828f9b9a8c7f7265574d42362a180e03000003101c28343f4a54636f7c89969f9285797683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000091623303c4956636f7c89969c908376695d5043362a1d100000000000000000000000000000000713202c3945515d6775828f9b97897d706356606d7a86929f92867a6d6054473a2f24180d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111e2a3744515d6a7784909d96897c6f6356493c3023160900000008141e2a36414c56626c74808d939d9c938e86807c797878797b7f848b9298a09f93887e71695f53463d321e150b000000111e2b3744515e6a7784919d94877b6e6154484045474a4a50535455555453514b4c4846423b38332b272017110a0300000000000000000000000000000000000000000003101c28343f4a546a7683909d95887b6f6255483c3c3b3a3a38342e2e2d29251e1b150e0903000000000000000000000000000013202c3946535f6c7986929f93877a7a86929f93877b6e6154483b31261a08000000000c17232e394653606c7884919e978a7d7683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9083766a5d5043372a1d1000000000000000000000000000000004101d2935404b5564717e8b999a8d8074675864717d8a989c8f8275685d5245392c1d13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111e2a3744515d6a7784909d96897c6f6356493c30231609000000020d1925303a44505a606d78818e939f9e98928d8986858586888c91969f9f98928a7f726c61574d42342b210c03000000111e2b3744515e6a7784919d94887b6e6155483b383a3d3f4446474848474645403f3b3a36302c27211b150c060000000000000000000000000000000000000000000000000b17232e424f5c6875828f9b96897d7063564a3d302e2e2d2c282321201d19130f0a040000000000000000000000000000000013202c3946535f6c7986929f93877a7e8b989c908376695e52463a291f14090000000006121f2b3744505b6573808d9a9b8e817683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9083776a5d5144372a1e11000000000000000000000000000000010d18242f3a4754606d7a86929e9184786a5f6675818e9b998b7e7165564c4135291d0c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111e2a3744515d6a7784909d96897c6f6356493c302316090000000008131e28323e44515c666d78818b92979e9f9a9a9392929399999e9f9c948f867e726d625a50453b3122190f00000000111d2a3744505d6a7783909d95887c6f6255493c2f2d2d3338393a3b3b3b3a38342e2e2d2a251f1c160f0a0400000000000000000000000000000000000000000000000000061b2734414e5a6774818d9a978b7e7164584b3e312521201f1c181413110d080200000000000000000000000000000000000013202c3946535f6c7986929f93877a828f9c998b7e7265574d42362a1e120500000000030f1b27333f4953626f7c88969f92857983909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e11000000000000000000000000000000000713202c3945525d6876828f9c96887c6f626d7985929f92867a6d6154473a2f24190d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111e2a3744515d6a7784909393897c6f6356493c3023160900000000020c16202834404a545c666d747e858d9297999c9d9e9e9d9c9a99928f89827b716c625b51483e33291f100700000000101d293643505c6976838f9c96897c706356493d302322282b2d2e2e2f2e2d2c282321201e1a14100b050000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99998c7f7366594c403326191312100c07070501000000000000000000000000000000000000000013202c3946535f6c7986929f94877b86929f92867a6d6154473b30251a0e0200000000000b17222d384754606a7784919d988a7e83909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000b1724313e4a5764717d8a979c8f8275695c4f4236291c0f0300000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e110000000000000000000000000000000004111d2935414c5665727e8b99998c807366707d8a989c8f8276685e5246392d1e1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111e2a3744515d6a7783868686867d6f6356493c302316090000000000050e18232e39424a545c606c717a8085898c8f909191908f8d8a86827d766e69615a51493f362c21170d00000000000e1b2835414e5b6874818e9b988b7e7265584b3f31261a1c1f2021222221201f1c181514120e090200000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b979a8d8174675a4e4134271b0606040000000000000000000000000000000000000000000000000013202c3946535f6c7986929f988c7f8c999c8f8276685e524639291f140900000000000006111b2b37434e586673808c999b8e8183909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000b1724313e4a5764717d8a979c8f8275695c4f4236291c060000000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e1100000000000000000000000000000000010d19242f3b4754616e7a86939d9083776974818e9a998b7e7265564c4135291d0c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101d2936424f5b677177797979796f6b6054483b2f22150900000000000007121c273039424a505a61686e73797d80828384848483807e7a75706b615f5750483f372d241a0f0600000000000c1926333f4c5966727f8c999a8d817467574d42372b1e131213141515141313100c07070502000000000000000000000000000000000000000000000000000000000000000a1623303d495663707c89969b8f8275685c4f422e23170b00000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f9d9083909d998b7e7165564c41362a170d02000000000000000f1b27323c4855626e7b88959f928683909d96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000a1724303d4a5763707d8a969c8f8275695c4f422d22170b0000000000000000000d192633404c5966737f8c99988b7f7265584c3f3225190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e1100000000000000000000000000000000000814202d3946525e687683909c95887b6e7985929e93867a6e6154473b3025190d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1a27333f4a555f676a6c6c6c6c6360594f43382c1f1307000000000000000b151e2730383f4450565e61676d707375767778777674716d68636059534d453e362d251b12080000000000000a1724303d4a5763707d8a999d908377695f53463a2f24190e06070808080706040000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b88959d9083776a544a3f34281c1003060606060606060606060000000000000000000000000000000013202c3946535f6c7986929f9f9386939f92867a6d6054473a3025190700000000000000000a15212e3a47535f6a7783909d989286939f96897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000a1623303d495663707d89969d9083766a53493f33271b0f0300000000000000000e1a2734414d5a6774808d9a988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e11000000000000000000000000000000000005111e2a36414c5665727f8c98988b7f727c89979c908376685e5246392d1e1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16222e39434d555b5d6060606056544f473d32271b0f0300000000000000030c151e262e343e444c52555c606366696a6b6b6a696764615d56544f47423c332c241b1309000000000000000714202d3a4753606d7a86929f95887b6e61554c41352920170e070100000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a87989e918578665c5044382b1f1213131313131313131313130908060300000000000000000000000013202c3946535f6c7986929fa49a939a9c8f8275685d524539291e1308000000000000000006121e2b37424e5766727f8c9aa29a939aa496897d7063564a3d3023170a000000000000000714202d3a4753606d7a8693a09386796d6053463a2d201307000915222f3c4855626f7b88959e918477655b5044372b1f12050000000000000004101c2834404b556875818e9b968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e110000000000000000000000000000000000010d1925303b4854616e7b87959c8f8376808d9a9a8b7f7265564c41362a1e11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c27313b434a4f51535353534948433d352b21160a000000000000000000030c141c2328323b41464b515356595c5d5e5e5d5c5a5754524c48443d37312a211a120901000000000000000613202c3945515d677683909c998c7f73675d51453d32292018120d08070604000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d677885929f9286796d6053463a2d201f1f1f1f1f1f1f1f1f1f1f1f1615130f0a040000000000000000000013202c3946535f6c7986929faca49fa2988a7e7164564c4135291d11040000000000000000020e1a26313c4854616e7b87939fa49fa4ac96897d7063564a3d3023170a000000000000070c14202d3a4753606d7a8693a09386796d6053463a2d201307000714212d3a4754606d7a87979f9285796c605346392d20160c040000000000040b131f2c3845515c6776838f9c99887c6f6255483c2f22150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e110000000000000000000000000000000000000814212d3a46535e697783909d92877a84919e93877b6e6154483b3025190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151f2931393f4244464646463c3b38322b23190f0400000000000000000000020a111720293036394045464a4d4f50515151504d4b4746413a38332b261f180f0800000000000000000004111d2935404b5565727f8b999e92857a6d60584e443b3229241d19141313100c070a0907040000000000000000000000000000000000000000000000000000000000000004111d2935414b556a7784919d99877a6e6154473b2e2c2c2c2c2c2c2c2c2c2c2c2c2c23221f1b150f0700000000000000000013202c3946535f6c7986929facafac9f92867a6d6053473a3024190d010000000000000000000915212d3a46535e697683909cabacafa396897d7063564a3d3023170a00000000030b12181c202d3a4753606d7a8693a09386796d6053463a2d201307000713202c3945525d687885919e98887c6f6255493e31281e16100c070b070c10151c262f3a4653606d7985929f9286796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e1100000000000000000000000000000000000005121e2a36424d5766737f8c99998d808d969d908376695e52463a2d1e1408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d171f272e33363739393939302f2c272119100700000000000000000000000000060e171e252a2e34383a3d40424344454443413e3a3935302c27211a150e0600000000000000000000010d18242f3a4754616d7a86929f978c80736a60564d443c352f2a2521201f1c181f161613100b040000000000000000000000000000000000000000000000000000000000010d18242f43505c6976838f9c95897c6f6256493c39393939393939393939393939392f2e2b2720191007000000000000000013202c3946535f6c7986929facb4aa9b8e8275675d514539281e13080000000000000000000005121e2a36424d5765727f8b99a3afb0a396897d7063564a3d3023170a000000030c151d23282c2d3a4753606d7a8693a09386796d6053463a2d2013070004111d2935414c566975828f9c998c7f72665a50433a30281f1d18181818181c1f272e38414d5763707c89989d908377665c5145382c1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e11000000000000000000000000000000000000020e1a25313c4855626f7b88969f9386939f988c7f7265574d42362a1e0d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d151c2227292a2d2d2d2d23221f1b160f07000000000000000000000000000000050d14191d23282c2d303336373838373634312e2d29241e1c160e09030000000000000000000000000713202d3946525e6875818e999f92877c6f685e564e45403936302e2d2c28232c2322201b160f070000000000000000000000000000000000000000000000000000000000071b2835414e5b6874818e9b978a7d7064574a4646464646464646464646464646463c3b37322b22190f040000000000000013202c3946535f6c7986929facaea2988a7d7164554b403529160c0200000000000000000000020e1a25313b4754616e7a86929facb0a396897d7063564a3d3023170a0000000b151e272e34383a3f4753606d7a8693a09386796d6053463a2d20130700010d1924303f4c5965727f8c989d9083776c61554b423a312c292425242523282c30394049535f6974818e9a998c807366544b4034281c100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e11000000000000000000000000000000000000000915212e3a47535f6a7784919d999399a095887b6e6155483b30251a0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b11161a1d1e202020201615130f0a04000000000000000000000000000000000002080e12181c1f202326292a2b2b2a29272421201d1913100b05000000000000000000000000000005111d2935414c56616e7b87929f9991847a6e685f58514b46413d3b3a38342e39302f2c2721191107000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99988b7e726558525252525252525252525252525252524947433d342b20150a0000000000000013202c3946535f6c7986929facab9f9285796d6053473a2f2418070000000000000000000000000914202d3946525e6876828f9cabb4a396897d7063564a3d3023170a000007121d2730394045464c4c53606d7a8693a09386796d6053463a2d20130700000815222e3b4855616e7b88949f958a7d70675d544c433d39352f3231322e34383c424a515b656e7b87929f95887c6f6255493c2e23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e110000000000000000000000000000000000000006121f2b37434e586673808d99a49fa49d908377695f53463a2d1f14090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060a0e1011131313130909070300000000000000000000000000000000000000000000070c101313171a1c1d1e1e1e1d1a181413110d080200000000000000000000000000000000010d1925303a47535f6974818d96a09690837a6f6a605d55524c4a4746454046463d3b38322b23190f040000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98998c8073665f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f56544e463d32271b0f0300000000000013202c3946535f6c7986929faca99b8e8175675c5145382c1f130700000000000000000000000005111e2a36414c5665717e8b99a3aea396897d7063564a3d3023170a00000c18232e39424b5153585959606d7a8693a09386796d6053463a2d20130700000714212d3a46535f697683909c9d9183796d665d564f4745403f3f3e3e3f4045464e545c606c77828f999d9083766a5f54473b2e1d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e1100000000000000000000000000000000000000030f1a26313c4956626f7c8996a1aca7998c7f7266574d42362a1e0d020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070a0d0f10111211100e0b070705010000000000000000000000000000000000000008131e2b37424d57606d79849199a09590847c736d67615e56565453514b52524948443d352b21160b0000000000000000000000000000000000000000000000000000000a1724313d4a5764707d8a979b8e81746c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6260584e43372b1f130600000000000013202c3946535f6c7986929faca2978a7d7063554b4034291c1004000000000000000000000000010d1925303b4754606d7a86929faca396897d7063564a3d3023170a0004101c2834404b545c60656566666d7a8693a09386796d6053463a2d201307000005121e2b37424d5764707d8a949f958f82786d68605953514b4c4b4b4b4c4b5153585f666d73808d949e948a7d7064584e43372b1f0b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e1100000000000000000000000000000000000000000a15222e3b4754606a7884919eaba095887b6e6255483b31261a0e00000000000000000000000000000000000000000000000000000106090b0c131313131308080602000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a26313c45515d676f7c879299a09691867f79726d68666361605c5f5f5f56544f473d32271b100400000000000000000000000000000000000000000000000000000916232f3c4956626f7c89959c8f82797979797979797979797979797979797979796f6a6054473b2e22150800000000000013202c3946535f6c7986929fab9e9285796d6053463a2f23180c00000000000000000000000000000814202c3945525d6875828f9baaa396897d7063564a3d3023170a0006131f2c3845515c666d7272737373798693a09386796d6053463a2d2013070000020e1a26313c4955616c768290989e948f817a706b64605d555958575859545c60636a6f78808d929d989083766c6155463c32261b0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e11000000000000000000000000000000000000000006131f2b37434e586774808d9aa99d908477695f53473a2e1f140900000000000000000000000000000000000000000000000000060d1215181920202020201514120f090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090d0f0f131313121211100d0b09080603000000000000000000000000000000000000000000000000000000000000000000000009151f2935414b55606a707e879299a098928c847f7a7672706e6d666c6c6c6360594f44382c20130700000000000000000000000000000000000000000000000000000814212e3b4754616e7a87999f9387858585858585858585858585858585858585867c6f6256493c2f23160900000000000013202c3946535f6c7986929fa99a8e8174665c5144382c1d1207000000000000000000000000000004111d2935414c5664717e8a98a2a396897d7063564a3d3023170a000713202d3a4653606d797f7f7f8080808d9aa09386796d6053463a2d20130700000009141f2d3944505a626e7b86929a9e938f847d76716d6767666564656667666d70757c838d929d9a92867b6e615a5044342a20150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e110000000000000000000000000000000000000000030f1b27323d495663707c899793938c807366574d42372b1e12060000000000000000000000000000000000000000000000010911181e2224252d2d2d2d2d22211f1a150e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002091015191b1c2020201f1e1e1d1a181515120f0a06020000000000000000000000000000000000000000000000000000000000000000030d18242f3a434e58616c717e8791979f9f96918c86837f7d7b7979797979706b6054483b2f22160900000000000000000000000000000000000000000000000000000613202d394653606c7986929f9993929292929292929292929292929292929292897c6f6256493c2f23160900000000000013202c3946535f6c7986929fa197897d7063544a4034281c0b010000000000000000000000000000010d19242f3a4753606d7985929fa396897d7063564a3d3023170a000714212d3a4754606d7a878c8c8d8d8d929da09386796d6053463a2d20130700000003101c28333e47535f69717e8893999e969189837e7a767472727171727376797d828790959d9a93887e71695f53483e3322190e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e110000000000000000000000000000000000000000000a13202d394653606c7885868686867c6f6255483c31261a0e02000000000000000000000000000000000000000000000009131b23292e313239393939392f2e2b2620180f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c141b212528292d2d2d2c2b2b29272522211f1a15120e09030000000000000000000000000000000000000000000000000000000000000007131d28313c46505a616c717d858f949da09e99928f8c898786868585867d706356493d3023160a000000000000000000000000000000000000000000000000000006121f2b3844505b667885919ea49f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f95897c6f6256493c2f23160900000000000013202c3946535f6c7986929f9e9185796d6053463a2e23180c0000000000000000000000000000000008131f2c3945515d6775818e9ba996897d7063564a3d3023170a000714212d3a4754606d7a879399999a9a9da49f9386796d6053463a2d201307000000000b17222b37424d57616c727f8792989e9e95908a8683807f7e7e7e7f808386898f939a9f9892887f726c61574d42362c22100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e1100000000000000000000000000000000000000000006121f2b3844505b666c7879797979766a5f53473a2a201509000000000000000000000000000000000000000000000006111b252d343a3e3f46464646463b3a37312a21180e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151e262c3135363939393938373634312f2e2b26211e1a150e09020000000000000000000000000000000000000000000000000000000000010c161f2b343e48505a616b6f7a828a91959b9f9f9c99969498929292897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000030f1c28333f4a546a768390939393939393939393939393939393939393939393897c6f6256493c2f23160900000000000013202c3946535f6c79869293938d8074665c5044382b1c12070000000000000000000000000000000004101d2935404b5563707d8a979393897d7063564a3d3023170a000714212d3a4754606d7a8793939393939393939386796d6053463a2d20130700000000050e1a26313c45505a626d727d858f949c9f9d9992908d8c8b8a8b8c8d9092989c9f9d9590867e726d625a50453c31241a100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e11000000000000000000000000000000000000000000030f1c28333f4a545b606b6c6c6c6c625f584e43372b180e0300000000000000000000000000000000000000000000010d18232d373f464a4c53535353534847433c332a201509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141e2730373d414246464645454443403e3c3a37312d2b261f19140d050000000000000000000000000000000000000000000000000000000000040d19222c363e48505960686e767d848a8e9298989b9d9e9e9f9f96897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000000b17222d424f5c68758186868686868686868686868686868686868686868686867c6f6256493c2f23160900000000000013202c3946535f6c7987868686867d6f63544a3f34281c100300000000000000000000000000000000000c18242f3a4653606d7985868686867d7063564a3d3023170a000714212d3a4754606d7a8686868686868686868686786d6053463a2d20130700000000000915202a333e48515b626c707b82898f939a9c9f9d9a99989798999a9c9f9d9995908a837c716c625b51483e332a1f12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e11000000000000000000000000000000000000000000000b17222d38424a50535f6060606055534e463c31261b06000000000000000000000000000000000000000000000006121e29343f49515658606060606055534e463c31261a0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26303942494d4f535353525151504d4b4847433c3a37312a251f170e07010000000000000000000000000000000000000000000000000000000007101a232c363e474f565e616b70787d8185898c8e909191929893897d7063564a3d3023170a000000000000000000000000000000000000000000000000000000061b2834414d59656f7579797979797979797979797979797979797979797979796f6a6054473b2e221508000000000000121f2c3845525e6a7579797979796f6b605442382e23170b00000000000000000000000000000000000007131f2c3845515c666d7879797979706b6054483c2f221609000713202c3945525d6876797979797979797979797976665c5044382c1f12060000000000030e18212c363f49515961696e757d82878c8f9297969798989897969992908d89837e786e6a615a51493f362c21180e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e110000000000000000000000000000000000000000000006111c262f383f444652535353534847433c342a20150a00000000000000000000000000000000000000000000000915222e3a46515b62656c6c6c6c6c625f584e43372b2015090000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c37424c545a5c6060605f5e5e5c5a5855534e4847423c3630292018130c040000000000000000000000000000000000000000000000000000000008111a242c353d444d525961666d70757a7c7f81838485858686867d7063564a3d3023170a0000000000000000000000000000000000000000000000000000000c1925313d49535d65686c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6260584e43382b1f1306000000000000111d2a36424e59636a6c6c6c6c6c6360594f4330261c110600000000000000000000000000000000000004101c2834404b545c606c6c6c6c6c6360594f44382c2013070004111d2935414c565d6c6c6c6c6c6c6c6c6c6c6c6c6c5c544a3f34281c1003000000000000060f1a242d373f474f575e616b70767b7f828587898a8b8b8b8b8a888683807c77716c655f5850483f372d241a0f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e1100000000000000000000000000000000000000000000000a141d262d33383945464646463c3a37312a22180e0400000000000000000000000000000000000000000000000b1824313e4a56626d7279797979796e6a5f53473c31261a0e0300000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925313d49545e65696c6c6c6c6b6a696764625f5855534d46423b3229241d160d040000000000000000000000000000000000000000000000000000000008121a232b323b41464f545c6063676d70727476777879797979706b6054483c2f2216090000000000000000000000000000000000000000000000000000000915212c37424b53595c606060606060606060606060606060606060606060606056544e463d32271b0f030000000000000e1a26313d4751595e5f6060606056544f473d321e140a00000000000000000000000000000000000000000c18232e39424b51535f6060606056544f473d33271c100400010d19242f3a444c525f60606060606060606060605f504a42382e23170c000000000000000008121b242d353e454d53596063696e7276787b7c7d7e7f7e7e7d7b7977736f6a64605b534e463e362d251b120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9084776a5d5144372a1e110000000000000000000000000000000000000000000000020b141c22282b2d38393939392f2e2b26201810060000000000000000000000000000000000000000000000000c1925323f4c5865727f86868686877c6e62574d42372b1f150900000000000000000000000000000000000000000000000000000000000000000000000000000000020f1b2835414d5a6570757979797878777673716f6a66615f57524d443f352f281f160e0400000000000000000000000000000000000000000000000000000000081019202930363e424a5053555d606365686a6b6b6c6c6c6c6360594f44382c20130700000000000000000000000000000000000000000000000000000004101b25303942494d4f53535353535353535353535353535353535353535353534947433d342b20160a000000000000000915202b353f474e5253535353534948433d342b210c02000000000000000000000000000000000000000007121d27303940454652535353534a48443d352b21160b00000008131e28323a414553535353535353535353535353443f3830261c110600000000000000000009121b232c333b42464f54575f616569696e6f7171727271706f6d6766626058535049413c342c241b13090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9083776a5d5144372a1e11000000000000000000000000000000000000000000000000020a11171c1f202c2d2d2d2d22211f1b150e06000000000000000000000000000000000000000000000000000714202d3a4753606d79849193998e8175695f53473c31261a0e03000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c2936424f5c69758286868685848483807e7b77736e69615e565145403a312820160d0400000000000000000000000000000000000000000000000000000000070e171f252a30383f44464b515356595b5d5e5e5f60606056544f473d33271c10040000000000000000000000000000000000000000000000000000000009141e2730373d414246464646464646464646464646464646464646464646463c3b38322b22190f0400000000000000040f19242d353d424546464646463c3b38322b22190f000000000000000000000000000000000000000000000b151e272e34383a45464646463d3c38332b23190f05000000010c1620282f35394646464646464646464646464638342e261e150a000000000000000000000009111a212931363d44484d535559575e616364656565646362605c5556544e46443f382f2a221b1209010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9083776a5d5044372a1d110000000000000000000000000000000000000000000000000000060b0f12131f202020201515120f0a04000000000000000000000000000000000000000000000000000006131f2c3845515c67727f8c979f93877b6e62574d42372b1f1409000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c2936424f5c6975828f9a939291918f8d8b8884807b746e69625b514b433a322820160b0200000000000000000000000000000000000000000000000000000000050d14191e262e34383a404547494c4e505152525353534a48443d352b21160b0000000000000000000000000000000000000000000000000000000000020c151e252c31343539393939393939393939393939393939393939393939392f2e2b272019100700000000000000000008121b242b3136383939393939302f2c272119100700000000000000000000000000000000000000000000030c151d23282c2d3939393939302f2c27211911080000000000040d161e24292c393939393939393939393939392c28231c150c03000000000000000000000000080f171f252a32383b4246484c4d5354565758585858575553514b4947433d37332d261d180f0900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000916232f3c4956626f7c89959d9083766a5d5043372a1d10000000000000000000000000000000000000000000000000000000000306061213131313090806030000000000000000000000000000000000000000000000000000000004101c2934404b55606d7985929e998e8174695f53473b31261a0e030000000000000000000000000000000000000000000000000000000000000000000000000000030f1c2936424f5c6975828f9c9f9f9e9d9c9a9796918c87817b726d605d554c443a32281d140a000000000000000000000000000000000000000000000000000000000002080c151c23282c2f35393a3d3f41434445464646463d3c38332b23190f05000000000000000000000000000000000000000000000000000000000000030c141b212528292d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d23221f1b160f07000000000000000000000009121920262a2c2c2d2d2d2d23221f1b160f07000000000000000000000000000000000000000000000000030b12181c1f202c2d2d2d2d2322201c160f0800000000000000040c13191d202d2d2d2d2d2d2d2d2d2d2d2d2d1f1c17110a030000000000000000000000000000050d141a21272c31363a3b3f424648494a4b4c4b4b4a484645403c3b37322b27221b140b060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000a1723303d4a5663707d89969c8f8276695c504336291d100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232f3945515d67727f8c979f92877b6e61574d42362a1f14090000000000000000000000000000000000000000000000000000000000000000000000000000030f1c2936424f5c6975828f9292929995979a9ea09d99938e867f756d675e564c443a2f261c1106000000000000000000000000000000000000000000000000000000000000030a11171c1f24292c2d30323537383839393939302f2c2721191108000000000000000000000000000000000000000000000000000000000000000002091015191b1c20202020202020202020202020202020202020202020201615130f0a0400000000000000000000000000080f151a1d1f20202020201615130f0a04000000000000000000000000000000000000000000000000000000070c1013131f20202020171613100b0500000000000000000001080d11131420202020202020202020202012100c06000000000000000000000000000000000003090e161b1f262a2d2e31363a3b3c3e3e3f3f3e3d3c3a38342e2e2b271f1b17110a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000b1724313e4a5764717d8a979b8e8275685b4f4235281c0f00000000000000000000000000000000000000000000000000000406070706060300000000000000000000000000000000000000000000000000000000000000000000000007121d2935404b55606d7985929e998e8174695f53463b31261a0e0300000000000000000000000000000000000000000000000000000000000000000000000000020f1c2835424f5b6875818585858686888a8d91969b9f9f98928c81796d685e564c42382d22170b0400000000000000000000000000000000000000000000000000000000000000060c1012181d1f202326282a2b2b2c2d2d2d2322201c160f08000000000000000000000000000000000000000000000000000000000000000000000004090c0e0f1313131313131313131313131313131313131313131313090806030000000000000000000000000000000004090e11121313131313090907030000000000000000000000000000000000000000000000000000000000000004060712131313130a09070400000000000000000000000000010407071313131313131313131313130603000000000000000000000000000000000000000000040b10141a1e2122252a2d2e303132323231302f2d2c2823221f1b160f0b060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000020b1426323f4c5965727f8c989a8d8073675a4d4034271a0d000000000000000000000000000000000000000002060808070c1013131413120f0b0607070401000000000000000000000000000000000000000000000000000000000000010c18242f3945515d67737f8c979f92877b6e61574d42362a1f140900000000000000000000000000000000000000000000000000000000000000000000000000020e1b2734414d59656f75797979797a7b7d8084898e92999f9f938e837a6d685d544a3f332820150a00000000000000000000000000000000000000000000000000000000000000000003070c10131416191b1d1e1f1f202020171613100b0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e1214151a1e21212324252525252422201f1c1815130f0a0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d211407000000000000010a141d2b37434e586874818e9b988b7e7165584b3e3225180b00000000000000000000000000000000000004090f12141519181c1f2021201f1c17181413110d0802000000000000000000000000000000000000000000000000000000000007121d2935404b55606d7a85929f998e8174695f53463b31251a0e03000000000000000000000000000000000000000000000000000000000000000000000000000c1825313d48535d65686c6c6c676d6e7174777c81878f949f9e9590837a6d665b50443c31261b0f0400000000000000000000000000000000000000000000000000000000000000000000000406070a0c0e101112131313130a09070400000000000000000000000000000000000000000000000004090e111213131313130707040100000000000000000000000000000000000000000000000000000205070812131313130a0907040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507090e12141516171819181817151313100c070603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000003060b121c262f384754606a7784919e97887b6f6255483c2f22150900000000000000000000000000000000070c10151a1f21222623282c2d2d2d2b28222521201d19130f0a04000000000000000000000000000000000000000000000000000000010d18242f3945515d67737f8c979f92877b6e61574d42362a1f1409000000000000000000000000000000000000000000000000000000000000000000000000000915202c37424b53595b5f5f555d606264676a6f757c828c9399a0958f82786c60584e43372b20150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080f151a1d1f20202020201413110d08010000000000000000000000000000000000000000000002090e1214151f20202020171614100b050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050708090b0b0c0c0b0a0907060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140d0d0d0d0a0f12151d232d38424d57626f7c88969e9285786c605346392d2013060000000000000000000000000000030b12181c1f262b2e2f332e34383a3a3938332d312d2c29241e1b160f0a04000000000000000000000000000000000000000000000000000007121d2935414c55606d7a85929f998e8174695e53463b30251a0e02000000000000000000000000000000000000000000000000000000000000000000000000040f1b25303942484d4f52524b515355575860626a6f777f8793999f948c7f736a5f53473d32271b0f010000000000000004090e11121313131313070704010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121920262a2c2c2d2d2d2d2d201d19130c040000000000000000000000000000000000000000050d141a1e20212c2d2d2d2d2423201c16100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d211a1a1a1a1a1a1a1f21272f343f4a545f6974818d9a9b8e8174665b5044382b1f120600000000000000000000000002090c151d23282c31373a3b3f424045464746443f413e3a3935302c27211b150b0600000000000000000000000000000000000000000000000000010d19242f3a45525d6873808c989f92867b6e61574d42362a1f14090000000000000000000000000000000000000000000000000000000000000000000000000009141e2730373d41424646404547484a4e54585f656c737e87939f9f92877c6f62584e43372b1d1207000000000000080f151a1d1f20202020201413110d08010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121b242b3136383939393939392c29241e160d04000000000000000000000000000000000000050f171f252a2d2e3939393939302f2c28211a1108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d26262626262627262b2e31394045505b666e7b86929f95897d7063544a3f33281c0f030000000000000000000000050d141a1e272e34383c4347484c4f4b51535453504a4e4b4745413a38322b262017110a0200000000000000000000000000000000000000000000000008131e2935414c56616d7a85929f998d8174695e52463b30251a0e02000000000000000000000000000000000000000000000000000000000000000000000000020c151e252c313435392f35393a3b3e43484e535b606c727f8b939e998f82756a605447392f24180c000000000009121920262a2c2c2d2d2d2d2d201d19130c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19242d353d424546464646464639352f2820160c0100000000000000000000000000000000020d17212930363a3b45464646463d3c38332c231a10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a333333333333333331373a3e434b515b606c78828f999d9184776b605442382d22170b0000000000000000000000070e171f252a30394045464e5355595b545c6060605b545b5854524c48443d373128231c140c040000000000000000000000000000000000000000000000010d19242f3a46525d6873808d989f92867b6e61574d42362a1f140900000000000000000000000000000000000000000000000000000000000000000000000000030c141b202527282c24292c2d2f32383c4149505a626d75818e979e93897c6f62554b4035291d100400000008121b242b3136383939393939392c29241e160d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202b353f474e5253535353535345413a32281e13080000000000000000000000000000000009141f29333b42464852535353534a48443e352c21160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054474040404040404040404143474850555c606d73808c949f948a7e7164594f442f261c110600000000000000000000071019202930363e424b5153585f6266686b666d6d6c666a6764605d56544f47433c342e261e160d04000000000000000000000000000000000000000000000008131e2935414c56616d7a86929f998d8074695e52463b3025190e020000000000000000000000000000000000000000000000000000000000000000000000000002090f15181b1c1f181d202022272c2f383f44515b606d7a85919e9a8e8174675d5145392c1f13060000040f19242d353d424546464646464639352f2820160c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a26313d4751595e5f606060605f524c443a2f24190d010000000000000000000000000000040d1a25303b454d52545f6060606057554f473e33281c100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d60544d4d4d4d4d4d4d4d4d4d4e4e53555a61676d747f8c929c989083766c6155473d331d140a00000000000000000000071119222a333b424650545c60656a6e72757779797a79787774716d68636059534e443f3830281f160d0400000000000000000000000000000000000000000000010d1924303a46525e6873808d989f92867b6e61564d42362a1e140800000000000000000000000000000000000000000000000000000000000000000000000000000004090c0e0f070d101314151b1d262d333f45525d68727f8b979f9285796d6053473a2d20140700000915202b353f474e5253535353535345413a32281e1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d2a36424e59636a6c6c6c6c6c6c5d564c4135291d110400000000000000000000000000010c161f2a36424d575e616c6c6c6c6c6361594f44382c20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d60595959595959595959595a5a585f62666c7179818c919c9a92867b6e615a5045352b210b02000000000000000000061019232b343c454d525a62666d72777b7f8284858687868583817e7a756f6b625f58504a423a312820160c030000000000000000000000000000000000000000000008131e2a36414c56616e7a86929f988d8074695e52463b3025190e020000000000000000000000000000000000000000000000000000000000000000000000000000000000020200010406070a0b141b222935414c56606d7985919e988a7d7064574a3d2f24180c00000e1a26313d4751595e5f606060605f524c443a2f24190d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121f2c3845525e6a75797979797976685d5245392c2013070000000000000000000000000008131e28313a46525e696e7879797979706b6155483c2f23160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d66666666666666666666666667696a6f72777e848e929c9f93887e71695f53483e3323190f000000000000000000040e18222b353d464e575e616c71797e83888c8e9192989a9392908e8b86827c766f6a605c544b433a32281e150b00000000000000000000000000000000000000000000020d1925303a46525e6874808d989f92867b6e61564c41362a1e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a1119242f3a45515c6774818d9a9a8d817467554b4035291d100400111d2a36424e59636a6c6c6c6c6c6c5d564c4135291d1104000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7987868686867a6d6054473a2d211407000000000000000000000000030c19242f3a43505a616e7b85868686867d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a737373737373737373737373737476787b7f848a91969d99928b7f726c61574d42362c2211080000000000000000020c16202a343d474f585f696e757e848b9095999b9e9f9f9f9f9f9d9a99928f89827c736d665d554c443a30271d12070000000000000000000000000000000000000000000008131e2a36414c56616e7b86929f988d8074685e52463a3025190d02000000000000000000000000000000000000000000000000000000000000000000000000000000000002050708090a0b0a0908131e2834404b5563707d89999d918477675d5145382c1f130600121f2c3845525e6a75797979797976685d5245392c201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929393877a6d6054473a2d2114070000000000000000000000000b151e2935414c56616c75828f9893938a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f998d8080808080808080808080808080818285888c91969e9f9691877e726d625a50453b31241a1000000000000000000008131e28323c464f59606a6f7b828b91969da09d99969a93929894979a9e9f9c948f867f786d675d564c43392e23180d04000000000000000000000000000000000000000000020d1925303b46525e6874808d999f92867a6e61564c41362a1e130800000000000000000000000000000000000000000000000000000000000000000000000000020507090e1214151617171716141318232e3a4753606d7a86939f93867a6d6053473a2d2014070013202c3946535f6c7987868686867a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d211407000000000000000000000007121d27303945525d68717e8a939eaa968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f9c928d8c8c8c8c8c8c8c8c8c8c8c8c8d8d8f9197999e9d98928c847c716c625b51483e332a1f12080000000000000000010d1924303a444e58606b707c858f949e9e9c95908c8987868686878a8d91979e9f99928c82796d685d554b4034281f160c0100000000000000000000000000000000000000000008141e2a36414d56616e7b86929f988d8073685e52463a3025190d020000000000000000000000000000000000000000000000000000000000000000000002080e1114141a1e2121232424242321201d1f2c3945515d677784919e99887b6f6255483c2f2215090013202c3946535f6c7986929393877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000000020b18232e39434f59606d7a84919ea5a3968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929fa49c99999999999999999999999999999a9c9c9a9795908c857f796f6a625a51493f362c21180e00000000000000000005111d2935414c565f6a707d8691979e9e948f88837f7c7a7979797b7d80858b91969f9f948f837a6d675c51453e31281d1207000000000000000000000000000000000000000000020e1925303b46525e6974818e999f92867a6d61564c41362a1e13080000000000000000000000000000000000000000000000000000000000000000040a0f14191e2021252a2d2e303031302f2e2d29242935404b556975828f9c968a7d7063574a3d3024170a0013202c3946535f6c7986929f93877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d211407000000000000000000000a141d2834404b55606b74818e97a1ada3968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c79869294949494949494949494949494949494999291908d8b87837f7a736d67605850483f372d241a0f06000000000000000005101a232d3946525d686f7c869298a097928a827c7772706d6c666d6e7074797e848d939a9e958f82796d60594f43392f24180d0100000000000000000000000000000000000000000008141f2a36424d57616e7b86929f988d8073685e52463a3025190d02000000000000000000000000000000000000000000000000000000000002080d151b1f252a2d2e31363a3b3c3d3e3d3c3a3935302d2f424e5b6875818e9b978a7e7164574b3e3124180b0013202c3946535f6c7986929f93877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000006111c262f3845515c676f7d88939fa9b2a3968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7987878787878787878787878787878787878786868483817e7b77726d68605d554e463f362d251b12080000000000000000000b16212c38444f59616d7a849198a09591857e756f6a666361605c606164666d7179808892989f948e81746b61554b4035291d1207000000000000000000000000000000000000000000020e1a25303b46535e6974818e999f92867a6d61564c4135291e130800000000000000000000000000000000000000000000000000000000040c131920262b3036393b3f424648494a4a4a494746413e3a38414e5a6774818d9a988b7e7165584b3e3225180b0013202c3946535f6c7986929f93877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000b17222d38424e58606d7984919aa4aaaca3968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121f2c3845525e6a757a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a79787674716e6965605d56514b433d342d241b130900000000000000000004101c28333c4855616b75818e96a09691837b706c626058565453515354545c60676d737e8692999d938a7d70675d5145392f23180c0000000000000000000000000000000000000000000009141f2a36424d57616e7b87929f988d8073685e52463a3024190d010000000000000000000000000000000000000000000000000000080e161e252932373b4146474c4d5354565757575654524c4b4745404d5a6773808d9a988b7e7265584b3f3225180c0013202c3946535f6c7986929f93877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000040f1c28333f4a545f6a73808c96a09f9ea0a8968a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3946525e686e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d6d6c65696764615e5754524c454039312b221b1209010000000000000000000714202c38444f5963707d8a939e9891847a6e69615a544e4947464546484a50555d606c717d87929f9e9184796d60554b4034291c1004000000000000000000000000000000000000000000030e1a25313b46535f6974818e999f92867a6d61564c4135291e13080000000000000000000000000000000000000000000000000109111a202830353c43474d525458575e616363646362615d565753514b4d5a6773808d9a988b7e7265584b3f3225180c0013202c3946535f6c7986929f93877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000040d1a242b3844505b666f7c87929f98929196a0968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414c565e61616161616161616161616161616161616160605b535a5854534d4745413a352f271f19100900000000000000000000000916232f3c4855616b7783909d9f92867b6e685e575047433d3a39383a3b3f444b515a616b727f8b949f978c7f72675c5145382c1f13060000000000000000000000000000000000000000000009141f2a36424d57626e7b87929f988d8073685d52453a2f24190d0100000000000000000000000000000000000000000000010a131b232c323a41464e53565e616569696e6f7071706f6d686864605c55525a6773808d9a988b7e7265584b3f3225180c0013202c3946535f6c7986929f93877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d211407000000000000010c16202a36424d57606c788390999f928684919e968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1925303b444c52545454545454545454545454545454545454535350494e4b4846423b39352f29241d150d07000000000000000000000004111d2935404b5563707d8a959f958b7e72695f564d453e37322e2d2c2d2e343940455059606c77828f9a9e9285796d6053473a2d22170b00000000000000000000000000000000000000000000030e1a26313b47535f6975818e999f92857a6d60564c4135291e1308000000000000000000000000000000000000000000000a131c252d353e444c52585f62686e7276787b7c7d7d7d7c7a7875716d67615e566773808d9a988b7e7265584b3f3225180c0013202c3946535f6c7986929f93877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000008131e28323a46525e69727f8b959f958c7f828f9c968a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141e29323b41464747474747474747474747474747474747474746443f413e3b3a36312c29241e18120b030000000000000000000000000613202c3945515d6775828e9b9d9083786c60574d443b332b2721201f2023282f353e44505b656f7c87939f978a7d716453493f33271b0f030000000000000000000000000000000000000000000009141f2b37424d57626e7b87939f988c8073685d52453a2f24190d01000000000000000000000000000000000000000009121c252e373f474f565e616a6f757b7f828587898a8a8a898785817e79736d68606773808d9a988b7e7265584b3f3225180c0013202c3946535f6c7986929f93877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000030c19242f3a44505a616e7b86929f99908379828f9c968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d1720293036393b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3a3a3937332d312e2d2a25201d19130c0701000000000000000000000000000714202d3a4753606d7a86929f988a7e71655b50453c3229211b14131313171d2429333f49535f6a75828f9b9b8e8275655b5044372b1f120500000000000000000000000000000000000000000000030e1a26313c47535f6a75818e9a9f92857a6d60564c4135291d13070000000000000000000000000000000000000007101b242e374049515961686d757c82878b8f9297969697969596918e8a85807a726d6673808d9a988b7e7265584b3f3225180c0013202c3946535f6c7986929f93877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000b151e2935414c56616c75828f989f93877c76838f9c968a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171e252a2d2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2d2d2b27222521211e1a14110d08010000000000000000000000000000000a1724303d4a5763707d8a989f9285796d6053493f332a20170f0a0606060c1218222d38414e5864707d8a999f9285786c605346392d201306000000000000000000000000000000000000000000000009151f2b37434e58626f7c87939f978c8073685d52453a2f24180d010000000000000000000000000000000000030c18222d364049515b626b707a81878f93999c9f9e9c9b9a9b9c9f9e9b97928d867f786e73808d9a988b7e7265584b3f3225180c0013202c3946535f6c7986929f93877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000007121d27303945525d68717e8a939e968d807476838f9c968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191e2021212121212121212121212121212121212120201f1b17181514120e09040100000000000000000000000000000000000d192633404c5966737f8c999b8e8275675c5141382d21180e05000000000107111b262f3c4753606d7986929f97887b6e6155483b2e2215080000000000000000000000000000000000000000000000030f1a26313c47535f6a75828f9b9f92857a6d60554b4135291d130700000000000000000000000000000000000b151e2a343e48515b636d727d858e939a9f9d9896918f8e8e8e9092989a9e9f98928c837b73808d9a988b7e7265584b3f3225180c0013202c3946535f6c7986929f93877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d211407000000020b18232e39434f59606d7a85919e9e9184796d76838f9c968a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d11141414141414141414141414141414141414141413120f0b060807050200000000000000000000000000000000000000000f1c2835424f5b6875828e9b988c7f7265554b402f261b0f06000000000000000a141f2c3845515c677783909d978a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000915202b37434e58626f7c88949e978c7f73675d51453a2f24180d0100000000000000000000000000000007121d27303c46505a636d727f8791979f9e95908b8784828181828385888d92979f9f9590857c808d9a988b7e7265584b3f3225180c0013202c3946535f6c7986929f93877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000a141d2834404b55606b74818e979e938a7d706776838f9c968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507080808080808080808080808080808080807070605030000000000000000000000000000000000000000000000000000101d293643505c6976838f9c968a7d7063574a3d2e24140a000000000000000004101c2934404b556875818e9b988b7e7165584b3e3225180b000000000000000000000000000000000000000000000000030f1b26313c47535f6a75828f9c9f92857a6d60554b4035291d12070000000000000000000000000000000c18232e39424e58626c727f8b93999d96918a837f7b787675747576797c80858c92999f979285828f9c988b7e7265584b3f3225180c0013202c3946535f6c7986929f93877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d211407000006111c262f3845515c676f7d88939f978e81756b6976838f9c968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d2a3744505d6a7783909d96897c6f6356493c302316090000000000000000000c18232f414e5a6774818d9a998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000a15202b37434e58626f7c89949e978c7f72675d5145392f24180d010000000000000000000000000004101c2834404b545f6a717e8b919f9c938e847d78726e6969686768656c6f737a7f8691969f98928f949f988b7e7265584b3f3225180c0013202c3946535f6c7986929f93877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000b17222d38424e58606d7984919a9f92857a6e616976838f9c968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060607070706030000000000000000000000000000000000000000000000000000000000111e2a3744515d6a7784909d95897c6f6256493c2f231606000000000000000000071a2734414d5a6774808d9a998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000040f1b26323c4754606a76828f9c9e9285796d60554b4035291d12070000000000000000000000000006131f2c3845515c666f7c87929f9c918c8179716c65615e575b5b535b6062676d737c8490959f9f9c9fa6988b7e7265584b3f3225180c0013202c3946535f6c7986929f93877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700040f1c28333f4a545f6a73808c969f948b7e71685e6976838f9c968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060809060b0f121314141312100c060b0807050200000000000000000000000000000000000000000000101d2a3643505d697683909c96897d7063564a3d2d22170b000000000000000004101c2834404a546875818e9b988b7e7265584b3f3225180c00000000000000000000000000000000000000000000000000000a15202b37434e58626f7c89949f978c7f72675d5145392f24180c01000000000000000000000004101d2935404b55606d798390999c928c7f746d67605b53524d4e4e495053555d606a6f7a839096a0ababa5988b7e7265584b3f3225180c0013202c3946535f6c7986929f93877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d211407040d1a242b3844505b666f7c87929f988f82766c62566976838f9c968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a0f12151519171c1f202121201f1c171a171414110e080502000000000000000000000000000000000000000f1c2935424f5c6875828f9b988b7e7265544a3f33281c0f050000000000000006121f2c3844515c667683909d978a7e7164574a3e3124170b0000000000000000000000000000000000000000000000000000040f1b27323d4754606a76828f9c9e9285796d60554b4035291d120700000000000000000000000613202c3945515d67727f8c959f948d80736d605d555049464242413f44464b51585f686d7a849199a3afa5988b7e7265584b3f3225180c0013202c3946535f6c7986929f93877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2114070c16202a36424d57606c788390999f92867b6e615a5c6976838f9c968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f151b1f21222622282b2d2d2d2d2c2823272421201e1914120e090300000000000000000000000000000000000d1a2733404d5a6673808d999a8e8174665b5044382b20170d04000000000108111b262f3a4653606d7986929f98887c6e6255483b2f2215080000000000000000000000000000000000000000000000000000000a15202b38434e58636f7c89949f978c7f72675d5145392f24180c01000000000000000000000714202d3a4753606d7985929e988f82776c605b514b443f3836302d33373a41454e565e686f7c87929faaa5988b7e7265584b3f3225180c0013202c3946535f6c7986929f93877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d211408131e28323a46525e69727f8b959f958c7f72695f535c6976838f9c968a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171c1f262b2e2f322d3338393a3a3a38342e33312e2d2a25211e1a14100b050000000000000000000000000000000a1724313d4a5764707d8a999e9185786c6053463e32291f160d080505070c1319222d38414e5863707d8a989f9285786c605346392d201306000000000000000000000000000000000000000000000000000000040f1b27323d4854606b76828f9c9e9285796d60554b4035291d120700000000000000000005121e2a36424d5765727f8b979f92867b6e655b5045403a332d2a2522272b2f353c444c565f6a73808d98a2a5988b7e7265584b3f3225180c0013202c3946535f6c7986929f93877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140c19242f3a44505a616e7b86929f999083786d60574d5c6976838f9c968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b141c22282b31373a3c3f423f4446474746443f42403e3b3936302d2a251f1c17100b05000000000000000000000000000814212e3b4754616e7a86939f97897d70635a50443b31281f1913111214181e2429333f49535f6a75818e9b9c8f8275665b5044382b1f1206000000000000000000000000000000000000000000000000000000000a16202c38444f5963707d89949f978c7f72675d5145392f23180c0000000000000000000714212d3a46535e697683909d998d8073695e53493f352f27221b1a171b1f2429323a444e58616d7a85929fa5988b7e7265584b3f3225180c0013202c3946535f6c7986929f93877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2114151e2935414c56616c75828f989f93877c6f665c51505c6976838f9c968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f181d262d33383c4347484c4f4a5053545453504a4f4d4a4746413b3a36312d28221c160f080000000000000000000000000714202d3946525e6876828f9c9c8f82766c61564c433a312a25201d1e2124292f353e44505b656e7b87939f978a7e7164544a3f33281c0f0300000000000000000000000000000000000000000000000000000000040f1b27323d4854606b7683909c9e9185796d60554b4034291d120700000000000000000815212e3b4854616e7b87959f93877b6e61574d41382d241d17110e0b0f13182028323c46525d6874808d9aaa988b7e7265584b3f3225180c0013202c3946535f6c7986929f93877a6d6054473a2d211407040404000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21141d27303945525d68717e8a939e968d80746a60544a505c6976838f9c968a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071119212a2f383f44464e5355595b545b606060605c545c5a5754524c4846423b39332c2721191108000000000000000000000005111e2a36414c5664717e8b969f948a7d70685e554c433c36302d2a2a2d2f353a41455059606c77828f999f9285796d6053473a2d22170b0000000000000000000000000000000000000000000000000000000000000a16212c38444f5963707d89959f978b7f72675c5145392e23180c00000000000000000b1824313e4b5764717e8a979c908376695e52453b2f261b130b06000003070e16202935414c5663707c8998a2988b7e7265584b3f3225180c0013202c3946535f6c7986929f93877a6d6054473a2d2114101010100c0b09060100000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2118232e39434f59606d7a85919e9e9184796d60584e42505c6976838f9c968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071019232b333b424a5053585f6265686b666c6d6d6d666a686664615e5654534d49443e38332b23190e0500000000000000000000010d1925303b4653606d7984919e9e91857a6e675d564e46413a3936363a3b40454c515a616b727f8b949f968c7f72675d5145382c1c110600000000000000000000000000000000000000000000000000000000000004101c27333d4854606b7683909d9e9184796d60554b4034281d1207000000000000000d1a2734404d5a6773808d9a998c7f7366574d4233291d140a010000000000040e1924303a4653606c7985929f988b7e7265584b3f3225180c0013202c3946535f6c7986929f93877a6d6054473a2d211d1d1d1d1d181815120d06000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d211d2834404b55606b74818e979e938a7d70675d514643505c6976838f9c968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c19222b353d454d545b60646a6f72757778797a7a7978777573716e6866615e57555048443d352b20170d020000000000000000000008141f2c3845515c66717e8b949f979083796d686058524c4746414246484b51555d606c717d87929f9e9184796d60554b4035291d0a00000000000000000000000000000000000000000000000000000000000000000b16212c38444f5963707d8a959f978b7f72675c5145392e23180c000000000000000f1c2936424f5c6975828f9c968a7d7063574a3d3024170b020000000000000008131f2b3844505b667683909d988b7e7265584b3f3225180c0013202c3946535f6c7986929f93877a6d6054473a2d2a2a2a2a2a2a2524221d1811090100000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21262f3845515c676f7d88939f978e81756b61554b4043505c6976838f9c968a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e2a343d474f575f666c71767c7f82848586878786858482807d7a77726e6964615a544f473d33291f14090000000000000000000004101c2834404b54606c78828f979f9590827a6f6a615e5654524c4d5354555d60676d747e8792999d928a7d70675d5143392f24180c000000000000000000000000000000000000000000000000000000000000000005101c27333d4855616b7783909d9e9184796d60544b4034281c1207000000000000101d2a3643505d697683909c95887b6f6255483c2f2215090000000000000000030f1c28333f4a546875818e9b988b7e7265584b3f3225180c0013202c3946535f6c7986929f93877a6d6054473a3737373737373732312e29231b130900000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d222d38424e58606d7984919a9f92857a6e61594f433a43505c6976838f9c968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27303c464f5960696e787e83888c8e9192939a939792918f8d8a87837f7b76706c6360594f453b30251a0e02000000000000000000000c18232e3944505b666e7b8592999f9490847c746d6864615e56575e6164676d727a818b92999f948d80746b61554b4031271d12070000000000000000000000000000000000000000000000000000000000000000000b16212c38444f5964707d8a95a0968b7f72665c5145392e23180c000000000000111e2a3744515d6a7784909d94877b6e6154483b2e2115080000000000000000000b17222d414e5a6774818d9a988b7e7265584b3f3225180c0013202c3946535f6c7986929f93877a6d60544743434343434343433f3d3a342d251b0c03000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d28333f4a545f6a73808c969f948b7e71685e52473e3143505c6976838f9c968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e39424e58606b707b828a9095989b9e9b999998999a9b9b999795908c87837d76706b60574d42362a1e11050000000000000000000007121d28333f4a545e69707d8792999f969187807a75706d686a6b696e7174797f848e929f9e958f82796d60594f43392f1f150b0100000000000000000000000000000000000000000000000000000000000000000005101c28333e4653606c7883909d9e9184796d60544a4034281c11060000000000111d2a3744505d6a7783909d95887b6e6255483b2f221506000000000000000000061a2734414d5a6774808d9a978a7e7164574b3e3124180b0013202c3946535f6c7986929f93877a6d60545050505050505050504b4a463f372d1e150a000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2b3844505b666f7c87929f988f82766c62564c41353643505c6976838f9c968a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b545f6a707d8690949d9f9b96918f8d8c8c8c8d8e9196969a9d9995908a837d70695e52463a2d20140700000000000000000000000b17222d38424d57616b717e879298a099928d86817d7a787777797b7d81858b91979d9f948f83796d675c51473e31271d0d0300000000000000000000000000000000000000000000000000000000000000000000000b161f2b3744505b65717d8a95a0968b7e72665c5144382e23170c0000000000101d293643505c6976828f9c96897c6f6356493c2e23170c0000000000000000030f1b27333f49536874818e9b968a7d7063574a3d3024170a0013202c3946535f6c7986929f93877a6d605d5d5d5d5d5d5d5d5d5d585651493f30261c11060000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d36424d57606c788390999f92867b6e615a50443b303643505c6976838f9c968a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c666f7c8692989f9a938e898482807f7f80818284878a8e92979b9d9590867b6e6154473b2e211408000000000000000000000006111c262f3b454f59616c717d8690959f9f98928e8a8785848485878a8e92979ea099928d82796d675d554b40352c1f150b000000000000000000000000000000000000000001030406060606060606060606060606030f1b27333f4953606c7883909d9e9184796d60544a3f34281c1106000000000f1b2835424e5b6875818e9b988b7e7165544a3f34281b11060000000000000005121f2b3744505b6576838f9c99887c6f6255493c2f2216090013202c3946535f6c7986929f93877a6d6a6a6a6a6a6a6a6a6a6a6a65625b5142382e23170c0000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a323a46525e69727f8b959f958c7f72695f53483f32293643505c6976838f9c968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333f4953606d79849198a1969188817c7875737272737475777a7d8185898f93998e8174695e52463a2d2014070000000000000000000000000a141d29333d47505a616b707c838c9298a29f9b97979290919298979b9fa2a095908780786d675d554b43392f231a0d03000000000000000000000000000000000000050a0e101113131313131313131313131313130b17222d3844505b65717e8a95a0968b7e71665c5044382e23170c000000000c1926323f4c5965727f8c989a8e8174665c5044382d22170e06000000000108111a202d394653606c7985929f9286796d6053463a2d2013070013202c3946535f6c7986929f93877a767676767676767676767676726d62544a3f34281c100300000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a3a44505a616e7b86929f999083786d60574d42362d293643505c6976838f9c968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3744505b65727f8b96a09791847d756f6b68666665666768686d7074797d82878e867b6e61574d42362a1e1105000000000000000000000000020b17212c353e485059616a6e787f86929faca8a9a19e9d9e9fa2aaa7abaa9d90837c736c665d554c433a31271d11080000000000000000000000000000000000030b11161a1d1d1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1b27333f4953606c7884919d9e9184786d60544a3f34281c11060000000a1623303d495663707c89979e9285796d6053493f332720180f0b0607070d1319232a36424d57636f7c89979d908377675c5145382c1f13060013202c3946535f6c7986929f9d90838383838383838383838383837f72665c5044382c1f150a00000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a414c56616c75828f989f93877c6f665c50453c3124293643505c6976838f9c968a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202d394653606c7884919e9e91857b6f6b6360595a5959595a565e6163666d70757b818073695e53453b30251a0e0200000000000000000000000000050f1a232c363e47505a626d727d85929ea8a09e9a97969596989c9fa2aa9e91847c706c61594f453c31281f150b0000000000000000000000000000000000050d151c2226292a2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c222d3844505b66717e8a96a0968b7e71665c5044382e23170b0000000713202d3a4653606d7985929e978a7d70655b50443c322a211b17141415181e2429353d46535e6974818e9a998c807366554b4034281c10040013202c3946535f6c7986929f9f959090909090909090909090909084796d6053463c31261b0f03000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a45525d68717e8a949e968d80746a60544a3f332a1f293643505c6976838f9c968a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8897a0958a7e71696059544f4d4c4c4d4e4c5254545c60636a6e74736e64574d4233291f14090000000000000000000000000000000c18232f39434f59626c727f889297a09d96918d8a89898a8b8f92989fa19691877e706b61574d41382d22170b00000000000000000000000000000000030d171f272d33363739393939393939393939393939393939393939333f4a54606d7884919e9e9184786d60544a3f34281c1106000006121f2c3844515c6674818e9a9d9083786c60574e443c332b272221212124292f353e47505a616e7b86929f94887b6f6255483c2e23180c000013202c3946535f6c7986929fa79f9d9d9d9d9d9d9d9d9d9d9d9d968a7d7164584e43372b1f1206000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d605447434f59606d7a85919e9e9184796d60584e42382e2118293643505c6976838f9c968a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c999d9083776c61574f4843403f3f40414146474a5053585f626867645c52453b3120170d02000000000000000000000000000004101c2934404b55606b717e8b939a9c95908984807e7c7c7d7f82868c92979f9992877d70695f53493f33271c11060000000000000000000000000000000b151f2931393e424446464646464646464646464646464646464646464644505c66717e8b96a0968b7e71665c5044382d22170b000004101c2834404a54626f7c89949e958b7f726a5f564d453f37332d2e2d2e2f353a41455059626c75828f999c9083766a5f53473a2e1d1207000013202c3946535f6c7986929fa199959595959595959595959595958f83766a5f53473a2e211508000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054474b55606b74818e979e938a7d70675d51463d30261c1d293643505c6976838f9c968a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b2835424e5b6875818e9b998c8073665a50453d38323332333035393a3f44464e53555b5a58524a4033291f0e0500000000000000000000000000000006131f2c3845515c676f7d87929f9b928d837d7773716f6f7072757a7f8590959e9992857b6e655b5044382d22170b000000000000000000000000000005111c27313b434a4f50525252525252525252525252525252525252525252524a54606d7884919e9e9184786d60544a3f33281c0f0300000c18232e394754606a75828f999f92867c6e685f575046443f3c3b3a3b3c41454c525a616b717e8b939e94897d7063584e43372b1f0b00000013202c3946535f6c7986929f998f8988888888888888888888888888887b6f6255483c2f221509000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d605447515c67707d88939f978e81756b61554b40342b1e151d293643505c6976838f9c968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101c2936434f5c6976828f9c978a7d7064574a3e332c2726262625292d2e34383c4347484e4d4c4740382e21170d00000000000000000000000000000004101d2935404b55606d798491999b918b8078706b676463626365686d737b838f949e989083776c60544a3f33281c0f03000000000000000000000000000a16222d39434d555b5d5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5c66717e8b96a0968b7e71665b5044382b1f1206000007121c2b37434e58626f7c87929f9891847a6e69625a53504948474748494b51565d606c717d87929f988f82766b6054463c31261a0f00000013202c3946535f6c7986929f95897d7b7b7b7b7b7b7b7b7b7b7b7b7b7c7a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d60544e58606d7984919a9e92857a6d61594f433a2f22190c1d293643505c6976838f9c968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d2a3744505d6a7783909d96897c6f6356493c302d2c29242a2a292823282c31373a3b41403f3c362e261c0f0e07000000000000000000000000000006131f2c3945515d67737f8c969d928b7f736c66605957565657565d60696e79828f959f958b7e71665b5044382b1f1206000000000000000000000000000e1a26333e4a555f666a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6d7984919e9d9184786c605346392d2013060000000f1b27323d47535f6a73808c959f9691847b716c63605b535554545456555d60686d747e8692999f92867b6e61594f44342a20150a00000013202c3946535f6c7986929f93877a6f6f6f6f6f6f6f6f6f6f6f6f6f6f6d685d5246392d201307000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054545f6a73808c969f948b7e71685e52473e31281d10101d293643505c6976838f9c968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919d95887c6f6255493c3b3a39352f373636353434333231313035342e2d2c29241d1f19120a010000000000000000000000000714202d3a4753606d7985929e958d80736d605b544f4b49494a4c52575e676d798390999e9184786c605346392d20130800000000000000000000000000101d2936424f5b667177797979797979797979797979797979797979797979797979797979797e8b98a0968a7e7164574b3e3124180b0000000a15202b37434e58606d78839096a09691857e76706c6564626160616265676d727a818a92989c928b7e71695e53473d3322180e0300000013202c3946535f6c7986929f93877a6d62626262626262626262626262615d564c4135291d1105000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d60545b666f7c87929f988f82766c62564c41352c1f160c101d293643505c6976838f9c968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919d95887c6f625549484747454045444342424140403f3e3d3d3c3b3b3a39352f2f2a241c130a0000000000000000000000030f1b27333f495365717e8b979d9183786d605b504a423e3c3c3d41454d555d676f7c87929f968a7d7063574a3d2f24190d01000000000000000000000000111d2a3744505d6a77838585858585858585858585858585858585858585858585858585858586929fa89b8e8174685b4e4135281b0e000000040f1b26323c45515c666d7a8491969f97928b837d7874716f6e6d6e6f72757a7f858e939f9f928d80736c62574d42352b2110060000000013202c3946535f6c7986929f93877a6d6055555555555555555555555554524c443a3024190d01000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6057606c788390999f92867b6e615a50443a30231a0d04101d293643505c6976838f9c968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919d95887c6f625656555453514b5151504f4e4e4d4c4c4b4a49494847474540393b352e251c12070000000000000000000005121f2b3744505b6575828f9c978a7d70665c50443f382f302f2f353b434b555f6a74818d9a9a8e817467564c4135291d1104000000000000000000000000111e2b3744515e6a7784919292929292929292929292929292929292929292929292929292929298a2a79b8e8174685b4e4135281b0e000000000a15202834404b545e686e7b8490959f9f95908a84807e7b7a7a7b7c7e82868c92979d9a938c80776c605a50453b31231a0f000000000013202c3946535f6c7986929f93877a6d605448484848484848484848484746413a32281e130800000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d605e69727f8b959f958c7f72695f53483f32291e110800101d293643505c6976838f9c968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919d95887c6f6463626261605d555e5d5d5c5b5b5a595858575656555453514b4b4740372e24190e020000000000000000000613202d394653606c7985929e9285786c60544a3f332d2623232429313a434e58626f7c88969e918478685d5245392c201307000000000000000000000000111e2b3744515e6a7784919d9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa29f9f9b8e8174685b4e4135281b0e00000000040c18232e39424c565f696e7a838d92999f9d96918d8a88878787898b8f92989e9f9691887f746c655b50483f33291f1108000000000013202c3946535f6c7986929f93877a6d6054473c3c3c3c3c3c3c3c3c3c3a3935302820160c0200000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d60616e7b86929f999083786d60574d42362d20170d0003101d293643505c6976838f9c968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919d95887c7171706f6e6e6d676c6b6a69696867676665646463626261605d5557524a40352a1f13070000000000000000000815222e3b4855616e7b88989b8e8175665b5042382e221c1416191f28313c4653606c7984919e96877a6d6054473a2d211407000000000000000000000000111e2b3744515e6a77849193939393939393939393939393939393939393939393939393939393939393938e8174685b4e4135281b0e000000000007121d27303a444d575f686d7880878f949b9f9e9a979594939495989b9f9e98928d847d726d605b53493f362d21170d00000000000013202c3946535f6c7986929f93877a6d6054473a2f2f2f2f2f2f2f2f2f2e2d29241e160e040000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d606c75828f989f93877c6f665c50453c31241b0e050003101d293643505c6976838f9c968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919d998d807e7d7d7c7b7a7a79787877767575747373727170706f6e6e6d6766635c52473b2f23170a0000000000000000000a1623303d495663707c8996998c7f7266544a3f30261c110a080d161f2b3744505b6576838f9c95887b6f6255483c2f221509000000000000000000000000111e2b3744515e6a7784868686868686868686868686868686868686868686868686868686868686868686868174685b4e4135281b0e0000000000000b151e29323c454d565e666d737c82898e9298999b9d9e9e9d9c9b9896918c868079706b635b504941382d241b0f0500000000000013202c3946535f6c7986929f93877a6d6054473a2d222222222222222221201d19130c04000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d68717e8a949e968d80746a60544a3f332a1f1209000003101d293643505c6976838f9c968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919d9c928d8b8a89898887868685848483828181807f7f7e7d7c7c7b7a7a79736e63574b3f3226190c0000000000000000000a1724303d4a5763707d8a96988b7e7165584b3e2d25140a0000040f1b27333f49536875818e9b96897c6f6356493c30231609000000000000000000000000101d2a36434f5b67717779797979797979797979797979797979797979797979797979797979797979797979746f64594d4034271a0e000000000000030c17202a333c444c545c606a6f767c81858a8c8f90919190908e8b8884807a736d67605951443f382f261b12090000000000000013202c3946535f6c7986929f93877a6d6054473a2d21151515151515151413110d080200000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6d7a85919e9e9184796d60584e42382e21180e00000003101d293643505c6976838f9c968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919da49c999897969595949992929190908f8e8e8d8c8b8b8a898988878686807366594d4033261a0d0000000000000000000a1724303d4a5763707d8a96988b7e7165584b3e2e23170b0000030c17222d424e5b6875818e9b96897c6f6356493c302316090000000000000000000000000e1b27333f4b565f676a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c68645d53483c3024180c00000000000000050e18212a323a424b515860626a6f75797d7f828384848483817f7c77736d68605d554f473f332d261d140a000000000000000013202c3946535f6c7986929f93877a6d6054473a2d211409090909090907070501000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d74818e979e938a7d70675d51463d30261c0f0600000003101d293643505c6976838f9c968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919da59d9a9a9a9b9c9c9d9e9e9f9e9d9c9c9b9a9a9998979796959594998d8073675a4d4034271a0d000000000000000000091623303c4956636f7c8996998c7f7266544a3f34281c1109060b151e2b37434e586976838f9c9a887b6f6255483c2f2215090000000000000000000000000b17232e39444d565b5e606060606060606060606060606060606060606060606060606060606060606060605b59534b41372b2014080000000000000000060f182029303940454e54586062676d707375767778777674726f6a66615e56514b433d3527221b140b02000000000000000013202c3946535f6c7986929f93877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a707d88939f978e81756b61554b40342b1e150a0000000003101d293643505c6976838f9c968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919d9d938e8d8e8e8f9090919192939a949495969697989899999d9fa79a8d8073675a4d4034271a0d0000000000000000000815212e3b4854616e7b87979b8e8175665c5044382d221a1413151d26303847535f6a7884919e93867a6d6054473a2d21140700000000000000000000000006121d28323b444b4f51535353535353535353535353535353535353535353535353535353535353535353534e4d4841392f251a0f03000000000000000000060e171e272e343c43474e54555c606366686a6b6b6a696865625f5854524c45413a312b2317110a0200000000000000000013202c3946535f6c7986929f93877a6d6054473a2d211407030303030303030303030303030303000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a7984919a9e92857a6d61594f433a2f22190c030000000003101d293643505c6976838f9c968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919d9a8e818081828283838485858686878888898a8a8b8b8c8d90959f9a8d8073675a4d4034271a0d0000000000000000000714212d3a46535e697885929e9285796d60544a3f332b26202021272f38424d57626f7c88969e918477675d5145392c201306000000000000000000000000000b16202932393f43444646464646464646464646464646464646464646464646464646464646464646464641403c372f271d13090000000000000000000000050c151d232832373d43484b515357595c5d5e5e5d5d5b5855534e4746413a352f281f191106000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d211410101010101010101010101010101010070604010000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a808c969f948b7e71685e52473e31281d1007000000000003101d293643505c6976838f9c968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919d95887c747475757677777878797a7a7b7c7c7d7d7e7f7f8082909d9a8d8073675a4d4034271a0d00000000000000000005121e2a36424d576875828e9b978a7d70665b50443f37312d2c2d3139404a545e6974808d9a9a8e817467554c4135291d110400000000000000000000000000040e1720282e333637393939393939393939393939393939393939393939393939393939393939393939393534302b251d150b01000000000000000000000000030b121820272b3238394045474a4c4f50515151504e4c4947433c39363029241d160d0700000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d211d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1413110d0801000000000000000000000000000000000000000000000013202c3946535f6c7986929f96897c87929f988f82766c62564c41352c1f160c00000000000003101d293643505c6976838f9c968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919d95887c6f676869696a6b6b656c6d6e6e6f6f7071717272737f8c999a8d8073675a4d4034271a0d000000000000000000020e1a25313e4a5764717e8a979d9083786c605a5147423c3a393a3d434b515c666e7b86929f96897d706356493d2f24190d010000000000000000000000000000050e161d23272a2b2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d282724201a130b03000000000000000000000000000000070c151b21272c2f34383a3d40424344454443413f3c3b37322d2a251e18130c040000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a21201d19130c040000000000000000000000000000000000000000000013202c3946535f6c7986929f9d908490999f92867b6e615a50443a30231a0d0400000000000003101d293643505c6976838f9c968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919d95887c6f625b5c5d5d5e5e5b6060616162636364656566737f8c999a8d8073675a4d4034271a0d000000000000000000000914202d3a4753606d7984919e958c7f736c625b534d48474547484f555c606d78828f999d9184786c605346392d20130800000000000000000000000000000000040b12171b1d1e202020202020202020202020202020202020202020202020202020202020202020201b1a18140f09010000000000000000000000000000000000040a0f161b1d23292c2d303335373838373635322f2e2b26201d19130d0701000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a363636363636363636363636363636363636362d2c29241e160d0400000000000000000000000000000000000000000013202c3946535f6c7986929fa0959095a0958c7f72695f53483f32291e11080000000000000003101d293643505c6976838f9c968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919d95887c6f62554f50505149505353545555565757585966737f8c999a8d8073675a4d4034271a0d0000000000000000000006131f2c3845515c67727f8b959f93887e726d615f5755535154555960676d75808e949f948a7e71665b5044382b1f1206000000000000000000000000000000000000060b0e1011131313131313131313131313131313131313131313131313131313131313131313130e0e0c0803000000000000000000000000000000000000000000040a0f12181c1f202426292a2b2b2a2a282522211f1b15110d08020000000000000000000000000000000013202c3946535f6c7986929f93877a6d60544743434343434343434343434343434343434343433a39352f281f160c01000000000000000000000000000000000000000013202c3946535f6c7986929fa7a09da0999083786d60574d42362d20170d000000000000000003101d293643505c6976838f9c968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919d95887c6f6255494344443f444647474849494a4a4c5966737f8c999a8d8073675a4d4034271a0d0000000000000000000004101c2934404b55606d798390989a92877f756e696461605d6062656b7079818e929d989082776c60544a3f33281c0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c10131417191c1d1e1e1e1d1b191615130f0a050100000000000000000000000000000000000013202c3946535f6c7986929f93877a6d60545050505050505050505050505050505050505050504745413a31281e1308000000000000000000000000000000000000000013202c3946535f6c7986929facaca89f93877c6f665c50453c31241b0e05000000000000000003101d293643505c6976838f9c968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919d95887c6f6255493c372d3337393a3b3b3c3c3d404c5966737f8c999a8d8073675a4d4034271a0d00000000000000000000000c18232f3945515c666f7c86929a99928b817b75716e6d676d6e72767d838e939d9992857b6e655b5042382d22170b0000000000000000000004090e111213131313130707040100000000000000000000000000000000000000000002050708131313131307060401000000000000000000000000000000000000000000000000000000000000000406070a0d0f10111211100e0c0908060300000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d605d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d54524c433a2f24190d010000000000000000000000000000000000000013202c3946535f6c7986929facaca1968d80746a60544a3f332a1f120900000000000000000003101d293643505c6976838f9c968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919d95887c6f6255493c2f22272b2d2d2e2e2f3033404c5966737f8c999a8d8073675a4d4034271a0d000000000000000000000007121d2834404b545f6a717e8892999f938f86827e7b7a797a7b7f838990959e9892877d70695f53493f2f261c1106000000000000000000080f151a1d1f20202020201413110d0801000000000000000000000000000000000003090e121415202020201f1413100d07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6969696969696969696969696969696969696969696969605d564c4135291d11040000000000000000000000000000000000000013202c3946535f6c7986929faca59e9184796d60584e42382e21180e0000000000000000000003101d293643505c6976838f9c968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919d95887c6f6255493c2f221b1f20202122222633404c5966737f8c999a8d8073675a4d4034271a0d0000000000000000000000010c18232e39424e58616c717e8792979e99928e8b88868687888b90949d9f9691867e706b60574d41382d1d140a00000000000000000009121920262a2c2c2d2d2d2d2d201d19130c04000000000000000000000000000000050d141a1e21212d2d2d2d2c20201d18120c04000000000000000004090e111213131313131313131313131313131313131313131313131313131313131313130d0c0a07020000000000000000000000000000000013202c3946535f6c7986929f93877a7676767676767676767676767676767676767676767676766d685d5245392c2013060000000000000000000000000000000000000013202c3946535f6c7986929fa99e938a7d70675d51463d30261c0f060000000000000000000003101d293643505c6976838f9c968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d2a3744505d6a7783909d96897c706356493d30231612131414151a2633404d596673808c99998c807366594d4033261a0d00000000000000000000000007121d27303c46505a626c717d858e939b9f9b979499929995989c9f99928d847c706c61594f453b2f261b0b02000000000000000008121b242b3136383939393939392c29241e160d0400000000000000000000000000050f171f252a2d2e39393939392d2c29241d160d04000000000000080f151a1d1f20202020202020202020202020202020202020202020202020202020202020201a1917130e0700000000000000000000000000000013202c3946535f6c7986929f9d90838383838383838383838383838383838383838383838383827a6d6054473a2d2114070000000000000000000000000000000000000013202c3946535f6c7986929fa2978e81756b61554b40342b1e150a000000000000000000000003101d293643505c6976838f9c968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101d293643505c6976838f9c978a7d7164574a3e302519100c080d12182734414e5a6774818d9a998c7f7266594c3f3326190c000000000000000000000000000b151e2a343e48505a626b707a81888e9298999b9c9d9c9b9997928e87817a6f6a615a50473d332a1d140a0000000000000000040f19242d353d424546464646464639352f2820160c010000000000000000000000030d17212931363a3b46464646463a39352f281f160c010000000009121920262a2c2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2626231f19120a010000000000000000000000000013202c3946535f6c7986929f9f95909090909090909090909090909090909090909090909090877a6d6154473a2e2114070000000000000000000000000000000000000013202c3946535f6c798692939392857a6d61594f43392f22190c03000000000000000000000003101d293643505c6976838f93938a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2835414e5b6874818e9b998c7f7366564c41362a211c1819191c232b37434e586875828e9b978a7e7164574b3e3124180b00000000000000000000000000030c18222c363f48505961686e757c81868a8d8f90908f8e8c8985817b746d67605850483e352b21180b0200000000000000000915202b353f474e5253535353535345413a32281e1308000000000000000000000009141f29333b42464853535353524745403931281d120700000008121b242b313638393939393939393939393939393939393939393939393939393939393939393933322f2a241c130a0000000000000000000000000013202c3946535f6c7986929fa79f9d9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c94877a6d6154473a2e2114070000000000000000000000000000000000000013202c3946535f6c7987868686867e71685e52473e31281d100700000000000000000000000003101d293643505c697682868686867d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926323f4c5965727f8c989c8f8376685e52463c332c29232624292e343c47535f6a7784919e98887c6f6255493c2f221609000000000000000000000000000007101a242d363f474f565e616a6f757a7d8082838383827f7d79746e69605d554e463e362c231a0f060000000000000000000e1a26313d4751595e5f606060605f524c443a2f24190d01000000000000000000020e1a25313b454d535f606060605f53514b43392f24180d0100040f19242d353d42454646464646464646464646464646464646464646464646464646464646464646403f3b352e261c120700000000000000000000000013202c3946535f6c798692939393939393939393939393939393939393939393939393939393877a6d6154473a2e21140700000000000000000000000000000000000000121f2c3845525e6a757979797979716c62564c41352c1f160c00000000000000000000000000020f1c2835414e5a66707679797979706b6155483c2f2316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c88969f92867a6d61584e463f38342f3230353940444e58626e7b88969f9286786d6053463a2d20130700000000000000000000000000000008121b242d353e444c52585f62676d7073757677767573706d66615f57514c433d342c241a110800000000000000000000111d2a36424e59636a6c6c6c6c6c6c5d564c4135291d110400000000000000000005121e2a36424d575e6c6c6c6c6c6c605d554b4035291d1004000915202b353f474e5253535353535353535353535353535353535353535353535353535353535353534d4b4740382e24190e02000000000000000000000013202c3946535f6c798786868686868686868686868686868686868686868686868686868686867a6d6154473a2e21140700000000000000000000000000000000000000111d2a36424e59636a6c6c6c6c6c64625a50443a30231a0d0400000000000000000000000000000d1926323e49545e66696c6c6c6c6361594f44382c2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4754606a7884919e998d80746a605850474540403f4041454a5158606a74808d9a9b8f8275665c5144382c1f12060000000000000000000000000000000009121b232c323b41464e54555d60646668696a69686663605c54534d45413a312b221a12080000000000000000000000121f2c3845525e6a75797979797976685d5245392c2013070000000000000000000714212d3a46535e697679797979796d675d5145392c201306000e1a26313d4751595e5f606060606060606060606060606060606060606060606060606060606060605957524a40352a1f13070000000000000000000000121f2c3845525e6a7579797979797979797979797979797979797979797979797979797979797976685e5246392d201307000000000000000000000000000000000000000e1a26313d4751595e5f60606060585650483e32291e11080000000000000000000000000000000915212d38424c545a5c6060606057554f473e33281c100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2b37434e5866727f8c979f92867c6f6a625a53514b4d4c4c4c52545c606a6f7c87939f968a7d7164544a4034281c1004000000000000000000000000000000000009111a202930363c43474b5153575a5c5d5d5c5b595653514b46423b352f281f19100800000000000000000000000013202c3946535f6c7987868686867a6d6054473a2d2114070000000000000000000815212e3b4854616e7b8686868686796d6053473a2d20140700111d2a36424e59636a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c66635c52473b2f23170a0000000000000000000000111d2a36424e59636a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c5e564c41362a1d1105000000000000000000000000000000000000000915202b353f474e5253535353534b49453e362d20170d0000000000000000000000000000000005101b26303a42494e50535353534a48443e352c21160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323c4754606d7a85929e9892857c716c64605c55595959565d60666d727c8592999e9184786d6053463a2e23180c00000000000000000000000000000000000000080e171e252a32373a4045474a4d4f5050504f4c4a46454039363129241e160d070000000000000000000000000013202c3946535f6c7986929393877a6d6054473a2d211407000000000000000006121e2b37424d5766727f8c93938e8275675d5145392c20130600121f2c3845525e6a757979797979797979797979797979797979797979797979797979797979797979736e63574b3f3226190c00000000000000000000000e1a26313d4751595e5f60606060606060606060606060606060606060606060606060606060605f524c443a3025190d0100000000000000000000000000000000000000040f19242d353d424546464646463e3d39342d241b0e0500000000000000000000000000000000000a141e2830383e4143464646463d3c38332c231a100500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202c3945525d68717e8a929d9792867e77716d676766656667686d72797f8692979d928a7d70665c5044382b1c12070000000000000000000000000000000000000000050d141920262b2f35393a3d404243444342403d3a38342e2a261f19130c04000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000814212e3a47535f697783909d988a7d7164554b4035291d10040013202c3946535f6c798686868686868686868686868686868686868686868686868686868686868686807366594d4033261a0d00000000000000000000000915202b353f474e525353535353535353535353535353535353535353535353535353535353535346413a32281e130800000000000000000000000000000000000000000008121b242b313638393939393931302d29221b1209000000000000000000000000000000000000030c161e262d32353639393939302f2c28211a110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c56616c74808d939f98928b837e79767473727374767a7f848b92989d948d80746b61544a3f34281c0b0000000000000000000000000000000000000000000002080d151b1d24292c2d3133353637363533302d2c28231d1a140d080100000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000815222f3b4855626e7b88959f9285796d6053473a2f24180d010013202c3946535f6c79869293939393939393939393939393939393939393939393939393939393938c807366594d4033261a0d0000000000000000000000040f19242d353d4245464646464646464646464646464646464646464646464646464646464646463936302820160c020000000000000000000000000000000000000000000009121920262a2c2c2d2d2d2d2524211d1711090000000000000000000000000000000000000000040c141b212628292d2d2d2d2423201c16100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d19242f3a43505a606d78818c93999f95908a868381807f7f8183868b91969f9e928d82786d60594f42382e23170b000000000000000000000000000000000000000000000000040a0f13181d20202427292a2a29282623201f1c18120e0903000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000006121f2b37434e586673808c999b8e8175675d5145382c1d1207000013202c3946535f6c7986929fa49c99999999999999999999999999999999999999999999999999998c807366594d4033261a0d00000000000000000000000008121b242b3136383939393939393939393939393939393939393939393939393939393939392e2d2a251e160e05000000000000000000000000000000000000000000000000080f151a1d1f2020202020181715110c0600000000000000000000000000000000000000000000030a1015191c1d20202020171614100b0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28313e44505c666d777f8790959c9d9992908d8c8c8c8d9092999e9d96918a80786d665c50473e30261c1106000000000000000000000000000000000000000000000000000001070d111314171a1c1d1d1d1c19171313100c07000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d211407000000000000000815212e3b47535f6a7784919d988a7d7064554b4035291d0c01000013202c3946535f6c7986929f9c928d8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c807366594d4033261a0d0000000000000000000000000009121920262a2c2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d21201d19130c05000000000000000000000000000000000000000000000000000004090e111213131313130b0a0805000000000000000000000000000000000000000000000000000005090d0f10131313130a0907040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f28343f4a545c656c737c838a8f9299999b9a9998999a9c9a9795908b847d736d665c544a3f352c1e140a0000000000000000000000000000000000000000000000000000000000010406070a0d0f1011100f0d0a0706040000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d211407000000000000000915222f3c4855626f7c88959f9285796d6053473a2f24180c00000013202c3946535f6c7986929f998d8080808080808080808080808080808080808080808080808080807d706356493d3023160a0000000000000000000000000000080f151a1d1f2020202020202020202020202020202020202020202020202020202020201413110d08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d17232e38424a535b606a6f777d82868a8d8f90919191908f8d8a87837e79706c605c544a42382e231a0c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000006131f2b37434e586673808d999b8e8175675c5145382c1d120700000013202c3946535f6c7986929f93877a7373737373737373737373737373737373737373737373737373706b6054483b2f22160900000000000000000000000000000004090e111213131313131313131313131313131313131313131313131313131313131307070501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2630384149505860626b70757a7d8082838485848382817e7b77716d66615a504a423830261c11080000000000000000000000000000000000000000000000000000000000000000000002070a0c0d131313130d0c0a0702000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000815222e3b4754606a7784919e988a7d7064554b4034291c100400000013202c3946535f6c7986929f93877a6d666666666666666666666666666666666666666666666666666360594f44382c2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e262f383f444e54596163686d70737577777877767574716e6964605c5450443f3830261e150a00000000000000000000000000000000000000000000000000000000000000000000080e1317191a202020201a1917130e070000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000030f1b27333f4953626f7c89969f9285796d6053473a2f23180c0000000013202c3946535f6c7986929f93877a6d6059595959595959595959595959595959595959595959595956544f473d33271c1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c141d262d333d43474f55565d606466686a6b6b6a6a696764615e5753514a423e342e261e150c030000000000000000000000000000000000000000000000000000000000000000020a12191f2326272d2d2d2d2626231f19120a01000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d211407000000000005121f2b3744505b6574808d9a9b8e8175675c5145382c1d12070000000013202c3946535f6c7986929f93877a6d60544d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4948443d352b21160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141b222732373e44484c5254575a5c5d5e5e5e5d5c5a5754524d464440393028231c150c030000000000000000000000000000000000000000000000000000000000000000000a141c242a2f32333939393933322f2a241c130a000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000613202d394653606c7884919e978a7d7064554b4034291c0b010000000013202c3946535f6c7986929f93877a6d605447404040404040404040404040404040404040404040403d3b38332b23190f05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a111720272b33383a4145474a4d4f50515251504f4e4b4746423b38342e271e17110a0300000000000000000000000000000000000000000000000000000000000000000008121c262e363b3f4046464646403f3b352e261c12070000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2114070606060603101c28343f4a54636f7c89969f9285796d6053463a2f23180c000000000013202c3946535f6c7986929f93877a6d6054473a333333333333333333333333333333333333333333302f2c2721191107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b161b21282c2f35393a3d4042444445444342413e3b3a36302c28231c150c0600000000000000000000000000000000000000000000000000000000000000000000020e19242e3840474b4d535353534d4b4740382e24190e0200000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2114131313131313121f2b3844505c6674818d9a9b8e8174675c5145382c1d1207000000000013202c3946535f6c7986929f93877a6d6054473a2d26262626262626262626262626262626262626262322201c160f070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f161c1e24292c2d31333537383837373634312e2d2a251f1c18120b03000000000000000000000000000000000000000000000000000000000000000000000007131f2a36404a52585a606060605957524a40352a1f130700000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d211f1f1f1f1f1f1f1f202d3a4653606d7985929e978a7d7063554b4034281c1004000000000013202c3946535f6c7986929f93877a6d6054473a2d211a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a161613100b050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b1013191d20212427292a2b2b2b2a29272421201e1a14100c07000000000000000000000000000000000000000000000000000000000000000000000000000a17232f3b47525c63666c6c6c6c66635c52473b2f23170a00000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2c2c2c2c2c2c2c2c2c2834404b5463707d89979f9285796d6053463a2e23180c00000000000013202c3946535f6c7986929f93877a6d6054473a2d21140d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0a09070400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080d111314171a1c1d1e1f1e1d1c1b181414110e09040000000000000000000000000000000000000000000000000000000000000000000000000000000c1926323f4b58636e7379797979736e63574b3f3226190c00000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a39393939393939393939393845515c6674818e9b9b8e8174665c5145382c1d120700000000000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070a0d0f11111211100f0e0b0807050200000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a66738086868686807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f93877a6d605447464646464646464646464646464653606d7985929f978a7d7063544b4034281c0b0000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d93938c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f93877a6d605452525252525252525252525252524b5564707d8a979e9285796d6053463a2e23180c0000000000000013202c3946535f6c7986929f93877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090e11121313131313070704010000000000000000000000000002070a0c0d131313130c0b0906010000000000000000000000050a0d0f101313131309080603000000000000000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f93877a6d605f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5d6775818e9b9a8e8174665c5144382c1d12070000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080f151a1d1f20202020201413110d080100000000000000000000070e1317191a20202020191816120d070000000000000000030a11161a1c1d202020201615130f0a0400000000000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f93877a6d6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b6d7985929f97897d7063544a4034281c10040000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121920262a2c2c2d2d2d2d2d201d19130c0400000000000000010a12191f2326262d2d2d2d2525221e181109010000000000040d151c2226292a2d2d2d2d22211f1b150e06000000000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f93877a79797979797979797979797979797979797878777e8a989e9285796d6053463a2e231813090000000000000013202c3946535f6c7986929f93877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121b242b3136383939393939392c29241e160d040000000000000a131c242a2f32333939393932312e29231b130900000000030d161f272d323536393939392f2e2b26201810060000000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f9f9286858585858585858585858585858585858585848384919e9a8e8174665c504440382e251b0f0600000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19242d353d424546464646464639352f2820160c010000000007121c262e353b3f40464646463f3e3a342d251b11070000000a151f2831383e4243464646463c3b37322a22180e0400000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929fa2989292929292929292929292929292929292929291909196a0968a7d706b635c524a40372d21180e03000000000013202c3946535f6c7986929f93877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202b353f474e5253535353535345413a32281e1308000000020e19242e3840474b4d535353534c4a463f372d23180d010005111c27313a434a4e50535353534947433c342a20150a00000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929faaa29f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9e9d9ea0a89e91847d736e645c52493f332a1f1409000000000013202c3946535f6c7986929f93877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a26313d4751595e5f606060605f524c443a2f24190d01000007131f2a35404a52575960606060585651493f34291e1206000a16222d38434c545a5d6060606055534e463c32261b0f03000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f9e96939393939393939393939393939393939393939496999d9fa196918880746e645b51453b31261a0e020000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d2a36424e59636a6c6c6c6c6c6c5d564c4135291d110400000a17232f3b47525c63666c6c6c6c65625b51463a2e221609010d1a26323e4a545e66696c6c6c6c625f584e43372b1f1306000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f968c8786868686868686868686868686868686868687898c90959ea09a938d80746d62574d42362a1f14090000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121f2c3845525e6a75797979797976685d5245392c20130700000c1926323f4b57636e7379797979726d62564a3e3125180b030f1c2935424e5a66707679797979766a5f53473b2e211508000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f93877a79797979797979797979797979797979797a7b7c7f838991969f9f928c7f72695f53463b30251a0e0200000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7987868686867a6d6054473a2d21140700000d1a2633404d59667380868686867f7265584c3f3225190c03101d2a3643505d697682868686867c6f6255493c2f221609000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f93877a6d6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c676d6e6f73777d8490959f9f92867b6e61574d42362a1e120500000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929393877a6d6054473a2d21140700000d1a2633404d596673808c93938b7f7265584c3f3225190c03101d2a3643505d697683909393887c6f6255493c2f221609000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f93877a6d6060606060606060606060606060555d606163666b707a839096a1988f8275695e52463a2d20140700000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000d1a2633404d596673808c99988b7f7265584c3f3225190c03101d2a3643505d697683909c95887c6f6255493c2f221609000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f93877a6d60545353535353535353535353534b515354565960686d7a84919e9f92867b6e6154483b2f23180c00000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000d1a2633404d596673808c99988b7f7265584c3f3225190c03101d2a3643505d697683909c95887c6f6255493c2f221609000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f93877a6d605447464646464646464646464640454748494f565e68707d89939e998c7f7366554b4034291c1004000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000d1a2633404d596673808c99988b7f7265584c3f3225190c03101d2a3643505d697683909c95887c6f6255493c2f221609000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a3939393939393939392f35393a3b3d444c56606b75828e9b9c908376675c5145382c1f1306000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000d1a2633404d596673808c99988b7f7265584c3f3225190c03101d2a3643505d697683909c95887c6f6255493c2f221609000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2d2d2d2d2d2d2d2d24292c2d2e323a444f59636f7c89969f9286796d6053473a2d201407000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000d1a2633404d596673808c99988b7f7265584c3f3225190c03101d2a3643505d697683909c95887c6f6255493c2f221609000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2120202020202020181d20202129323d4854606b7884919e99897c6f6356493c30231609000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000d1a2633404d596673808c99988b7f7265584c3f3225190c03101d2a3643505d697683909c95887c6f6255493c2f221609000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21141313131313070d10131417202c38434f596874818e9b988b7e7265584b3f3225180c000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000d1a2633404d596673808c99988b7f7265584c3f3225190c03101d2a3643505d697683909c95887c6f6255493c2f221609000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2114070606060600010406070e1b27323f4c5966727f8c999a8d8074675a4d4134271a0e010013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000d1a2633404d596673808c99988b7f7265584c3f3225190c03101d2a3643505d697683909c95887c6f6255493c2f221609000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000a1724313e4a5764717d8a979c8f8275695c4f4236291c06000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000d1a2633404d596673808c99988b7f7265584c3f3225190c03101d2a3643505d697683909c95887c6f6255493c2f221609000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000916232f3c4956626f7c89959d9083776a5d50442e23170b000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000d1a2633404d596673808c99988b7f7265584c3f3225190c03101d2a3643505d697683909c95887c6f6255493c2f221609000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000814212e3b4754616e7a87949e9185786b544a3f34281c10030013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000d1a2633404d596673808c99988b7f7265584c3f3225190c03101d2a3643505d697683909c95887c6f6255493c2f221609000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000714212d3a4754606d7a87939f928679665c5044382b1f12060013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000d1a2633404d596673808c99988b7f7265584c3f3225190c03101d2a3643505d697683909c95887c6f6255493c2f221609000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000713202d3a4653606d798699a39986796d6053463a2d2013070013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000d1a2633404d596673808c99988b7f7265584c3f3225190c03101d2a3643505d697683909c95887c6f6255493c2f221609000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000006131f2c3845515c677986939f9386796d6053473a2d2014070013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000d1a2633404d596673808c99988b7f7265584c3f3225190c03101d2a3643505d697683909c95887c6f6255493c2f221609000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000006121f2b3844505c667985929f93877a6d6054473a2d2114070013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000d1a2633404d596673808c99988b7f7265584c3f3225190c03101d2a3643505d697683909c95887c6f6255493c2f221609000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000713202d3a4653606d798698a39387796d6054473a2d2114070013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000d1a2633404d596673808c99988b7f7265584c3f3225190c03101d2a3643505d697683909c95887c6f6255493c2f221609000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000714212d3a4754606d7a8793a29886796d6053463a2d2013070013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000d1a2633404d596673808c99988b7f7265584c3f3225190c03101d2a3643505d697683909c95887c6f6255493c2f221609000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000815212e3b4854616e7b87949f928579665c5144382c1f12060013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000d1a2633404d596673808c99988b7f7265584c3f3225190c03101d2a3643505d697683909c95887c6f6255493c2f221609000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000a1623303d495663707c89969e9184776b544a4034281c10040013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000d1a2633404d596673808c99988b7f7265584c3f3225190c03101d2a3643505d697683909c95887c6f6255493c2f221609000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d211407030303030303000006101c2834404a5465727f8c989c8f8276695c4f432e23180c000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000d1a2633404d596673808c99988b7f7265584c3f3225190c03101d2a3643505d697683909c95887c6f6255493c2f221609000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d211410101010101010090e1117212c3844515c6675818e9b9a8d8073675a4d4034271a07000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000d1a2633404d596673808c99988b7f7265584c3f3225190c03101d2a3643505d697683909c95887c6f6255493c2f221609000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d211d1d1d1d1d1d1d1d1d1a1b2227333b4653606d7985929e998a7d7064574a3d3124170a000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000d1a2633404d596673808c99988b7f7265584c3f3225190c03101d2a3643505d697683909c95887c6f6255493c2f221609000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2a2a2a2a2a2a2a2a2a2a262a2d333c45505a64707d8a979f93867a6d6154473a2e211407000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000d1a2633404d596673808c99988b7f7265584c3f3225190c03101d2a3643505d697683909c95887c6f6255493c2f221609000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a36363636363636363636363136383f444d57616c76828f9c9c8f8276685e5246392d201307000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000d1a2633404d596673808c99988b7f7265584c3f3225190c03101d2a3643505d697683909c95887c6f6255493c2f221609000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f93877a6d6054474343434343434343434343434342464950575f69717e8a949f968b7e7164564c4135291d1105000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000d1a2633404d596673808c99988b7f7265584c3f3225190c03101d2a3643505d697683909c95887c6f6255493c2f221609000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f93877a6d605450505050505050505050505050504d53535b60696e7b85929e9e9184796d6053463a3025190d01000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000d1a2633404d596673808c99988b7f7265584c3f3225190c03101d2a3643505d697683909c95887c6f6255493c2f221609000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f93877a6d605d5d5d5d5d5d5d5d5d5d5d5d5d5d5d575f61656c717b8491979f958b7e71665c514538281e130800000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000d1a2633404d596673808c99988b7f7265584c3f3225190c03101d2a3643505d697683909c95887c6f6255493c2f221609000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f93877a6d6969696969696969696969696969696a6b696e72787e859196a1989083786c60544b403428160c0200000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000d1a2633404d596673808c99988b7f7265584c3f3225190c03101d2a3643505d697683909c95887c6f6255493c2f221609000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f93877a767676767676767676767676767676767677797b7f838b9297a19892867b6e665b5042392e2318040000000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000d1a2633404d596673808c99988b7f7265584c3f3225190c03101d2a3643505d697683909c95887c6f6255493c2f221609000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f9d908383838383838383838383838383838383838485888b90959e9e9792867d70695f544a3f30271d12070000000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140702020e1a2734414d5a6774808d9a988b7e7265584b3f3225180c03101c28343f4a546a7784909d95887c6f6255483c2f221509000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929f9f95909090909090909090909090909090909090919298989d9f9c948f857d706b60574d42382d1e150b000000000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2114110e0e111c28343f4a546874818e9b978b7e7164584b3e3125180d0f121f2c3844505c667884919e94887b6e6155483b2e221508000d1a2733404d5a6673808d94948c807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929fa79f9d9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9d9e9e9c9a99928f89827b706b60594f453c2f261c0c03000000000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21201e19191e212b3844505c6676828f9c96897d7063564a3d30231d191a1d232d3a4653606d7985929f97867a6d6053473a2d201407000d1a2733404d5a66738087878787807366594d4033261a0d00000000000000000000000000000013202c3946535f6c7986929393939393939393939393939393939393939399929291908d8a86827d766e6960594f473d332a1d140a00000000000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a322e2d2a25252a2d333c4653606d7985929f96877b6e6154483b2e2c2924262b2f35404b55626f7c89989e918578675d5145392c1f1306000714202d3a4753606d797a7a7a7a796d6053473a2d20140700000000000000000000000000000013202c3946535f6c798786868686868686868686868686868686868686868686858483817e7a76706b615e574f473d352b21180b0200000000000013202c3946535f6c7986929f93877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d605447433d3b39363030363a3e454f59626f7c89989e918478695e52463d3a39352f3137394045515d67737f8c999c8f827569554b4035291d1004000613202c3945515d676d6e6e6e6e6d675d5145392c201306000000000000000000000000000000121f2c3845525e6a75797979797979797979797979797979797979797979797978787674716d68636059534d453d352b23190f060000000000000013202c3946535f6c7986929393877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6056544e4a47464143424246475057606b75828e9b9a8d80746757534d4a474541434343474b515a606d7985929e998b7f7265584c3f2f24180c000004111d2935404b555d6061616161605d554b4035291d1104000000000000000000000000000000111d2a36424e59636a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b696764615e56544f46423b332b23191107000000000000000013202c3946535f6c7987868686867a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6e686260585754524d504f4d52545a616a6f7d88939f99887b6f68615f575654514c4f4f4e53555c606c73808d979f92867b6e6154473b2e2114070000010d18242f3a434b51535454545453514b433a2f24180d010000000000000000000000000000000e1a26313d4751595e5f6060606060606060606060606060606060606060605f5f5e5d5a5754524c48443d36312921191107000000000000000000121f2c3845525e6a75797979797976685d5245392c2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f9a8d807a746f6a6764615e565c5c565e61646c717c85929a9f9287807b746e696663605d555c5c585f62676d747e8b929c988e8175695e52463a2d20140700000007131d28313a404547474747474745403a31281d1307000000000000000000000000000000000915202b353f474e5253535353535353535353535353535353535353535353535251504e4b4746413a38332a251f170f0700000000000000000000111d2a36424e59636a6c6c6c6c6c6c5d564c4135291d11040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f9d928d86817c7873706e686a69696a696e71777e8692979e9b99928d86807b7773706d676a69696a6a6e7379808b909b9f92867b6e61564d42362a1e1105000000010c161f282f35393a3b3b3b3b3a39352f281f160c0100000000000000000000000000000000040f19242d353d42454646464646464646464646464646464646464646464646454543413e3a3936302c27211a140d0500000000000000000000000e1a26313d4751595e5f606060605f524c443a2f24190d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f9f9d98928d8984807d7a7877767576787b7e838b92989f938f919798928d8883807d7a7876767677787b7f858d929b9f928b7f72695e53443b3025190e0200000000040d161d24292c2d2e2e2e2e2d2c29241d160d0400000000000000000000000000000000000008121b242b313638393939393939393939393939393939393939393939393939383634312e2d2a251e1c160e09030000000000000000000000000915202b353f474e5253535353535345413a32281e1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f95908e939a96918d8a87858483828384878b90959f99928c82858c92979a95908c8987858382828385888c92979d99938c80746d62574d4232291f14090000000000030c151c23282e34383a3a39352f29241e160d040000000000000000000000000000000000000009121920262a2c2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2c2b2a272421201e1913100b050000000000000000000000000000040f19242d353d424546464646464639352f2820160c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929d908282878f92999a979791908f8f909196979d9c9590877f75797f858c91969b99969791908f8f909297999e9e9691877f776c605b51453b3120170d0200000000000b151e272e34394045464745403a352f281f160c0100000000000000000000000000000000000000080f151a1d1f20202020202020202020202020202020202020202020201f1e1d1b181413110d0802000000000000000000000000000000000008121b242b3136383939393939392c29241e160d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798692949083777c82868b909299989a9b9b9b9b9999928f8a837d726d6d727a7f848a8e9297989b9c9c9c9d9c9b9896918b847d726c655b50493f33291f0e05000000000007121c27303940444b515353514b45413a31281e1308000000000000000000000000000000000000000004090e111213131313131313131313131313131313131313131313131212100e0b07070501000000000000000000000000000000000000000009121920262a2c2c2d2d2d2d2d201d19130c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798787878786786f757a7f8386898c8d8e8f8f8e8c8a86827d76706b6260686d73787d8285898c8e90919191908e8c88847f79706b605b53493f372d21170d0000000000000c18232e39424a51555c60605d55514c433a2f24190d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080f151a1d1f20202020201413110d08010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121f2c3845525e6a757a7a7a7a7a776c686d72767a7c7f80818282817f7d7a76706b636059565d60666d7075797c7f818384848483827f7c78726d676059504941382d241b0f05000000000004101c2834404a545c60676d6d67605d554c4135291c110600000000000004090e1112131313131313131313131313131313131313131313131313131313131312110f0c0701000000000000000000000000000000000000000000000000000000000000000004090e1112131313131307070401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3946525e686e6e6e6e6e6c655e6165676d6f72737475757473706d68636159544f4c52545c6064666d6f7274767778777675726f6c65605c554f443f382f261b120900000000000006121f2c3844515c666d74797a756d675d5145382d22170b0000000000080f151a1d1f20202020202020202020202020202020202020202020202020202020201f1e1b18130c050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414c565e6161616161605b5354555d60636567686868686664615e56554f484441454a5053545c60636568696a6b6a69686562605b53514b433d332d261d140a000000000000000713202d3a4653606d7880868681796d60544a3f33281c0f0300000009121920262a2c2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2b2b28241e170f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1925303b444c525454545454535049474b515356595a5b5c5c5b595754524c48443e3835383f44464a505356595b5d5e5e5e5d5b59555350494540393027221b140b02000000000000000d1a2733404d5a6673808d92938e8174665b5044382b1f1206000008121b242b31363839393939393939393939393939393939393939393939393939393939393837342f2921180f0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141e29323b4146474747474746443f3a404547494c4d4e4f4f4e4c4a4746413a38332c292e34383a3f4446494c4e50515151504f4c4946443f38342e271e17110a020000000000000000121f2b3845525e6b7884919e9f9285786c605346392d20130600040f19242d353d424546464646464646464646464646464646464646464646464646464646464544403a332b21170c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d1720293036393b3b3b3b3b3937332f35393a3c3f4041424241403d3a3935302c28211c23282b2e34383a3c3f414344454443423f3c3937332d28231d150c0600000000000000000000121e2b3845515e6b7884919d9d928578665b5044382b1f1206000915202b353f474e52535353535353535353535353535353535353535353535353535353535352504c453d33291e1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171e252a2d2e2e2e2e2e2d2b2724292c2d3032343535353533312e2d29251e1c1611171c1f23282c2d303235363738373635322f2d2b27221b18120b0300000000000000000000000c1925323f4c5865727f8b90908c807367544a3f33281c0f03000e1a26313d4751595e5f606060606060606060606060606060606060606060606060606060605e5c574f453a2f24180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191e202121212121201f1b181d202023262728292928262421201d1913100b060b1012171c1f202326282a2b2b2b2a282622201f1b17110c07000000000000000000000000000b1825313e4a56626d727e83847f786d6053463a2d22170b0000111d2a36424e59636a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b6861574c4034281b0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d1114141414141413120f0d10131416191a1b1c1c1b19171413110d080200000003060c10121316191b1d1e1e1e1d1c191613120f0b060000000000000000000000000000000916222e3a46515b626d717777736d665c5144382c1c11060000121f2c3845525e6a7579797979797979797979797979797979797979797979797979797979797873685c5044372b1e1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507080808080806050301040607090c0d0e0f0f0e0d0a070705010000000000000000030607090c0e10111211100f0c09060503000000000000000000000000000000000006121e29343f49515a62656a6a66605c544a4034281c0a00000013202c3946535f6c79878686868686868686868686868686868686868686868686868686868685786b5e5245382b1f120500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18232d373f485056585d5d5953514a42392e23180c00000013202c3946535f6c79869293939393939393939393939393939393939393939393939393939185786b5e5245382b1f1205000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030709091313131311100e0a05000000000000000000000000000004090e1112131313131312100d0903000000000000000000000000000000000000000000000000000000000007111b252d363f454a4b50514c4644403930271c120700000013202c3946535f6c7986929fa49c99999999999999999999999999999999999999999999999185786b5e5245382b1f120500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f131516202020201d1d1a16110b030000000000000000000000080f151a1d1f20202020201f1d19140e07000000000000000000000000000000000000000000000000000000000009131b242d343a3d3e4444403a38342e271e150b0000000013202c3946535f6c7986929f9c928d8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c85786b5e5245382b1f1205000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161b1f22232d2d2d2d2a2926221c150d0500000000000000000009121920262a2c2c2d2d2d2c2b29251f191108000000000000000000000000000000000000000000000000000000000109121b22292e31323737332d2c28231c150c030000000013202c3946535f6c7986929f998d8080808080808080808080808080808080808080808080807f7265594c3f3226190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101921272c2f30393939393736322d271f170d030000000000000008121b242b31363839393939393835312a231a110700000000000000000000000000000000000000000000000000000000000911181d2124252a2a26201f1c18120b03000000000013202c3946535f6c7986929f93877a7373737373737373737373737373737373737373737373726d62574a3e3125180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19232b32383b3c4646464644423e3931291f150b000000000000040f19242d353d4245464646464645413c352c23190e030000000000000000000000000000000000000000000000000000000000060c111517181d1e191312100c070000000000000013202c3946535f6c7986929f93877a6d6666666666666666666666666666666666666666666665625b51463a2e22160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212b353d43484953535353504f4a433b31271c110500000000000915202b353f474e525353535353514d473e352a1f14090000000000000000000000000000000000000000000000000000000000000105090b0b11110d07060400000000000000000013202c3946535f6c7986929f93877a6d60595959595959595959595959595959595959595959595751493f35291e120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323d474f5456606060605d5b554d43392d22160a00000000010e1a26313d4751595e5f6060605f5e5850473c3125190d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d60544d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4a463f372d23180d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2c38434f5960636c6c6c6c6a665f554a3e32261a0e0100000004111d2a36424e59636a6c6c6c6c6c6a62584d4135291d10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d605447404040404040404040404040404040404040403f3e3a352d251b110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3b4854606b6f797979797771665b4f4236291d100300000006121f2c3845525e6a757979797979746a5e5145382b1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a33333333333333333333333333333333333332312e29231b130a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7d8686868683776a5d5044372a1d11040000000613202c3946535f6c798786868686796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d26262626262626262626262626262626262625221e18110a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c8993939083776a5d5044372a1d11040000000613202c3946535f6c798692939286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d211a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a191816120d070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969d9083776a5d5044372a1d11040000000613202c3946535f6c7986929f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0c0b090601000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969d9083776a5d5044372a1d11040000000613202c3946535f6c7986929f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969d9083776a5d5044372a1d11040000000613202c3946535f6c7986929f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969d9083776a5d5044372a1d11040000000613202c3946535f6c7986929f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969d9083776a5d5044372a1d11040000000613202c3946535f6c7986929f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969d9083776a5d5044372a1d11040000000613202c3946535f6c7986929f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969d9083776a5d5044372a1d11040000000613202c3946535f6c7986929f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969d9083776a5d5044372a1d11040000000613202c3946535f6c7986929f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969d9083776a5d5044372a1d11040000000613202c3946535f6c7986929f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969d9083776a5d5044372a1d11040000000613202c3946535f6c7986929f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140704040404040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969d9083776a5d5044372a1d11040000000613202c3946535f6c7986929f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21141010101010100d0c0a0702000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969d9083776a5d5044372a1d11040000000613202c3946535f6c7986929f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d211d1d1d1d1d1d1d1a1917130e080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969d9083776a5d5044372a1d11040000000613202c3946535f6c7986929f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d2a2a2a2a2a2a2a2a2726231f19120a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969d9083776a5d5044372a1d11040000000613202c3946535f6c7986929f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a37373737373737373733322f2a241c140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969d9083776a5d5044372a1d11040000000613202c3946535f6c7986929f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d60544743434343434343434343403f3b352e261c0d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969d9083776a5d5044372a1d11040000000613202c3946535f6c7986929f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d605450505050505050505050504d4b4740382e1f150b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969d9083776a5d5044372a1d11040000000613202c3946535f6c7986929f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d605d5d5d5d5d5d5d5d5d5d5d5d5a58524a4031271d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969d9083776a5d5044372a1d11040000000613202c3946535f6c7986929f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6a6a6a6a6a6a6a6a6a6a6a6a6a66635c5243392f24180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969d9083776a5d5044372a1d11040000000613202c3946535f6c7986929f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a7676767676767676767676767676736e63554b4035291d1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969d9083776a5d5044372a1d11040000000613202c3946535f6c7986929f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f9d908383838383838383838383838383838073675d5145382c1f1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969d9083776a5d5044372a1d11040000000613202c3946535f6c7986929f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f9f9590909090909090909090909090909086796d6053473a2f24180d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969d9083776a5d5044372a1d11040000000613202c3946535f6c7986929f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929fa79f9d9d9d9d9d9d9d9d9d9d9d9d9d9d988a7d7164554b4135291d11040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969d9083776a5d5044372a1d11040000000613202c3946535f6c7986929f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929fa1999595959595959595959595959595958e8275675d5145392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969d9083776a5d5044372a1d11040000000613202c3946535f6c7986929f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f998f89888888888888888888888888888888867a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969d9083776a5d5044372a1d11040000000613202c3946535f6c7986929f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f95897d7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7c796d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969d9083776a5d5044372a1d11040000000613202c3946535f6c7986929f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6d675d5145382c1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969d9083776a5d5044372a1d11040000000613202c3946535f6c7986929f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d626262626262626262626262626262605d554b4035291d10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969d9083776a5d5044372a1d11040000000613202c3946535f6c7986929f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d60555555555555555555555555555553514b43392f24180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969d9083776a5d5044372a1d110400000006131f2c3845515c677986929f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054484848484848484848484848484745403931271d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969d9083776a5d5044372a1d11050200030714202d3a4753606d7a86999f9285786c5f5245392c1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473c3c3c3c3c3c3c3c3c3c3c3c3a38352f271f150b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969d9083776a5d5044372a1d14120e0b0f1216212e3b4854616e7b87949e9185786b5e5245382b1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2f2f2f2f2f2f2f2f2f2f2f2d2c29241d150d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969d9083776a5d5044372621201e1a171c1f2028323c4956636f7c89969d9084776a5d5144372a1e11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d22222222222222222222201f1d18120b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969d9083776a5d504437312e2d2a2522282b2d323a444f5966737f8c999b8e8275685b4f4235281c0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d211515151515151515151413100c0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969d9083776a5d4b47433d3b3a36302d3338393e444c56616b7683909d998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140909090909090909070604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969d9083776a5d55534e4a48464243423f44464850565d68707d8a959f95887c6f6255483c2f221509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969d9083776d67625f585754524d504f4a5053555a61686d7a84919d9d9184776a5f53473b2e211508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140702020202020202020202020202020200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969f92857f79736f6a6664615e575d5c545b6062656c717a8390969f958a7e7164584e43372b1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d21140f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f07060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c8996a297928b85807b7773706e696a696969666c6f72777e859095a0979083786c6053463c32261b0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d211c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1413110d070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c8996a59e9b97928c8884807d7b787776757677797b7f848a9197a09892857b6e665b5044382a20150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a2d29292929292929292929292929292929292921201d18130c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969e938e90959995918d8a8785848382838485888c91959e9f9691867d6f695f544a3f3328180e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6054473a353535353535353535353535353535353535352d2c29241d160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89969b8e81838c92979c9997979291908f8f909298989d9e98928d847c6f6b60574d42382d2217060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d60544742424242424242424242424242424242424242423a39352f281f160c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c8994948e81797f858b8f9298989a9b9c9c9c9c9b999796918c8680796f6a60594f453b2f261c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d60544f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4745413a31281d130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c87878787827672797e8285888b8d8e8f90908f8e8d8b88847f7b736d675f584f463d33291d140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d605c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c54514b433a2f24180d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d787a7a7a7a7a6d676d7176797c7e80818283838382807e7b77736e69605d554e463d342b21180b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a6d6868686868686868686868686868686868686868686868605d554b4135291d110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844515c666d6e6e6e6e6d685d6064666d6f717475767676767573716e6966615e57514b433c342b22190f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f93877a7575757575757575757575757575757575757575757575756d675d5145392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404a545c6061616161615d5653545c6062656768696a6a69686664615f5754524d45413a312a221910070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f9c8f82828282828282828282828282828282828282828282828281796d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e39424a51535454545454524c474a505355585a5b5c5d5d5c5b5a5855534d4846423b352f281f191007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f9e948f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f877a6d6154473a2e2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c273039404446474747474746413a3f4446494b4d4e4f5050504f4d4b4846423c3a363029241d160d0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929fa69e9c9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b94877a6d6154473a2e21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e272e34383a3b3b3b3b3a39353034383a3c3e41424343434342403e3b3a37312d2a251f18130c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798692939393939393939393939393939393939393939393939393939393877a6d6154473a2e2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151c23282c2d2e2e2e2e2e2d2924282c2d2f323435363737363533312e2d2b26201e1a140d0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798786868686868686868686868686868686868686868686868686868686867a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181c1f202121212121201d191c1f2022252728292a2a2928272522211e1a14120e090200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121f2c3845525e6a7579797979797979797979797979797979797979797979797979797979797976685e5246392d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c101213141414141413110d10121316181a1b1c1d1d1d1c1a181514120e090502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d2a36424e59636a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c5e564c41362a1d1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070808080807070501030607090b0e0f101010100f0d0b080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a26313d4751595e5f60606060606060606060606060606060606060606060606060606060605f524c443a3025190d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202b353f474e525353535353535353535353535353535353535353535353535353535353535346413a32281e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19242d353d4245464646464646464646464646464646464646464646464646464646464646463936302820160c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121b242b3136383939393939393939393939393939393939393939393939393939393939392e2d2a251e160e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121920262a2c2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d21201d19130c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080f151a1d1f2020202020202020202020202020202020202020202020202020202020201413110d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090e111213131313131313131313131313131313131313131313131313131313131307070501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 m_StreamData: serializedVersion: 2 offset: 0 @@ -87,6 +89,20 @@ MonoBehaviour: m_StrikethroughThickness: 4.5 m_TabWidth: 25 m_GlyphTable: + - m_Index: 3 + m_Metrics: + m_Width: 0 + m_Height: 0 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 0 + m_HorizontalAdvance: 25.015625 + m_GlyphRect: + m_X: 0 + m_Y: 0 + m_Width: 0 + m_Height: 0 + m_Scale: 1 + m_AtlasIndex: 0 - m_Index: 11 m_Metrics: m_Width: 27.359375 @@ -101,6 +117,20 @@ MonoBehaviour: m_Height: 26 m_Scale: 1 m_AtlasIndex: 0 + - m_Index: 14 + m_Metrics: + m_Width: 28.796875 + m_Height: 4.953125 + m_HorizontalBearingX: 4.046875 + m_HorizontalBearingY: 37.171875 + m_HorizontalAdvance: 36.90625 + m_GlyphRect: + m_X: 543 + m_Y: 76 + m_Width: 29 + m_Height: 6 + m_Scale: 1 + m_AtlasIndex: 0 - m_Index: 17 m_Metrics: m_Width: 37.796875 @@ -185,6 +215,62 @@ MonoBehaviour: m_Height: 65 m_Scale: 1 m_AtlasIndex: 0 + - m_Index: 23 + m_Metrics: + m_Width: 38.25 + m_Height: 64.078125 + m_HorizontalBearingX: 2.15625 + m_HorizontalBearingY: 63 + m_HorizontalAdvance: 42.5625 + m_GlyphRect: + m_X: 256 + m_Y: 94 + m_Width: 39 + m_Height: 65 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 24 + m_Metrics: + m_Width: 35.46875 + m_Height: 63 + m_HorizontalBearingX: 2.15625 + m_HorizontalBearingY: 63 + m_HorizontalAdvance: 39.78125 + m_GlyphRect: + m_X: 133 + m_Y: 160 + m_Width: 36 + m_Height: 63 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 25 + m_Metrics: + m_Width: 38.34375 + m_Height: 64.890625 + m_HorizontalBearingX: 2.15625 + m_HorizontalBearingY: 63.8125 + m_HorizontalAdvance: 42.65625 + m_GlyphRect: + m_X: 67 + m_Y: 174 + m_Width: 39 + m_Height: 66 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 26 + m_Metrics: + m_Width: 38.25 + m_Height: 63.90625 + m_HorizontalBearingX: 2.15625 + m_HorizontalBearingY: 63.90625 + m_HorizontalAdvance: 42.5625 + m_GlyphRect: + m_X: 188 + m_Y: 161 + m_Width: 39 + m_Height: 64 + m_Scale: 1 + m_AtlasIndex: 0 - m_Index: 34 m_Metrics: m_Width: 45.453125 @@ -213,6 +299,118 @@ MonoBehaviour: m_Height: 64 m_Scale: 1 m_AtlasIndex: 0 + - m_Index: 38 + m_Metrics: + m_Width: 30.0625 + m_Height: 63 + m_HorizontalBearingX: 7.015625 + m_HorizontalBearingY: 63 + m_HorizontalAdvance: 41.84375 + m_GlyphRect: + m_X: 112 + m_Y: 324 + m_Width: 31 + m_Height: 63 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 39 + m_Metrics: + m_Width: 30.0625 + m_Height: 63 + m_HorizontalBearingX: 7.015625 + m_HorizontalBearingY: 63 + m_HorizontalAdvance: 40.046875 + m_GlyphRect: + m_X: 246 + m_Y: 178 + m_Width: 31 + m_Height: 63 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 42 + m_Metrics: + m_Width: 11.078125 + m_Height: 63 + m_HorizontalBearingX: 5.9375 + m_HorizontalBearingY: 63 + m_HorizontalAdvance: 23.765625 + m_GlyphRect: + m_X: 444 + m_Y: 94 + m_Width: 13 + m_Height: 63 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 45 + m_Metrics: + m_Width: 32.5 + m_Height: 63 + m_HorizontalBearingX: 7.015625 + m_HorizontalBearingY: 63 + m_HorizontalAdvance: 39.59375 + m_GlyphRect: + m_X: 184 + m_Y: 244 + m_Width: 33 + m_Height: 63 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 46 + m_Metrics: + m_Width: 48.25 + m_Height: 63 + m_HorizontalBearingX: 7.015625 + m_HorizontalBearingY: 63 + m_HorizontalAdvance: 62.453125 + m_GlyphRect: + m_X: 376 + m_Y: 94 + m_Width: 49 + m_Height: 63 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 47 + m_Metrics: + m_Width: 44.28125 + m_Height: 63 + m_HorizontalBearingX: 7.015625 + m_HorizontalBearingY: 63 + m_HorizontalAdvance: 58.5 + m_GlyphRect: + m_X: 314 + m_Y: 176 + m_Width: 45 + m_Height: 63 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 48 + m_Metrics: + m_Width: 37.796875 + m_Height: 65.421875 + m_HorizontalBearingX: 5.671875 + m_HorizontalBearingY: 64.4375 + m_HorizontalAdvance: 49.40625 + m_GlyphRect: + m_X: 476 + m_Y: 94 + m_Width: 39 + m_Height: 66 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 51 + m_Metrics: + m_Width: 39.15625 + m_Height: 63 + m_HorizontalBearingX: 7.015625 + m_HorizontalBearingY: 63 + m_HorizontalAdvance: 50.765625 + m_GlyphRect: + m_X: 125 + m_Y: 242 + m_Width: 40 + m_Height: 63 + m_Scale: 1 + m_AtlasIndex: 0 - m_Index: 52 m_Metrics: m_Width: 42.75 @@ -255,6 +453,20 @@ MonoBehaviour: m_Height: 47 m_Scale: 1 m_AtlasIndex: 0 + - m_Index: 67 + m_Metrics: + m_Width: 33.21875 + m_Height: 64.078125 + m_HorizontalBearingX: 7.015625 + m_HorizontalBearingY: 63 + m_HorizontalAdvance: 43.203125 + m_GlyphRect: + m_X: 490 + m_Y: 10 + m_Width: 34 + m_Height: 65 + m_Scale: 1 + m_AtlasIndex: 0 - m_Index: 69 m_Metrics: m_Width: 33.21875 @@ -269,6 +481,76 @@ MonoBehaviour: m_Height: 65 m_Scale: 1 m_AtlasIndex: 0 + - m_Index: 70 + m_Metrics: + m_Width: 32.390625 + m_Height: 46.984375 + m_HorizontalBearingX: 3.15625 + m_HorizontalBearingY: 45.90625 + m_HorizontalAdvance: 39.0625 + m_GlyphRect: + m_X: 10 + m_Y: 203 + m_Width: 33 + m_Height: 48 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 72 + m_Metrics: + m_Width: 33.9375 + m_Height: 64.8125 + m_HorizontalBearingX: 3.328125 + m_HorizontalBearingY: 45.90625 + m_HorizontalAdvance: 40.3125 + m_GlyphRect: + m_X: 436 + m_Y: 10 + m_Width: 35 + m_Height: 65 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 74 + m_Metrics: + m_Width: 6.03125 + m_Height: 63.90625 + m_HorizontalBearingX: 7.015625 + m_HorizontalBearingY: 63.90625 + m_HorizontalAdvance: 20.25 + m_GlyphRect: + m_X: 86 + m_Y: 259 + m_Width: 7 + m_Height: 64 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 78 + m_Metrics: + m_Width: 56.171875 + m_Height: 45.90625 + m_HorizontalBearingX: 7.015625 + m_HorizontalBearingY: 45.90625 + m_HorizontalAdvance: 66.15625 + m_GlyphRect: + m_X: 10 + m_Y: 270 + m_Width: 57 + m_Height: 46 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 79 + m_Metrics: + m_Width: 33.203125 + m_Height: 45.8125 + m_HorizontalBearingX: 5.765625 + m_HorizontalBearingY: 45.8125 + m_HorizontalAdvance: 45 + m_GlyphRect: + m_X: 10 + m_Y: 335 + m_Width: 34 + m_Height: 46 + m_Scale: 1 + m_AtlasIndex: 0 - m_Index: 84 m_Metrics: m_Width: 32.40625 @@ -283,6 +565,34 @@ MonoBehaviour: m_Height: 49 m_Scale: 1 m_AtlasIndex: 0 + - m_Index: 85 + m_Metrics: + m_Width: 15.84375 + m_Height: 64.171875 + m_HorizontalBearingX: 3.953125 + m_HorizontalBearingY: 63 + m_HorizontalAdvance: 21.875 + m_GlyphRect: + m_X: 596 + m_Y: 10 + m_Width: 17 + m_Height: 65 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 86 + m_Metrics: + m_Width: 33.578125 + m_Height: 46.078125 + m_HorizontalBearingX: 3.234375 + m_HorizontalBearingY: 45.09375 + m_HorizontalAdvance: 40.234375 + m_GlyphRect: + m_X: 543 + m_Y: 10 + m_Width: 34 + m_Height: 47 + m_Scale: 1 + m_AtlasIndex: 0 - m_Index: 113 m_Metrics: m_Width: 38.078125 @@ -298,10 +608,18 @@ MonoBehaviour: 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: 42 m_GlyphIndex: 11 m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 45 + m_GlyphIndex: 14 + m_Scale: 1 - m_ElementType: 1 m_Unicode: 48 m_GlyphIndex: 17 @@ -326,6 +644,22 @@ MonoBehaviour: m_Unicode: 53 m_GlyphIndex: 22 m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 54 + m_GlyphIndex: 23 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 55 + m_GlyphIndex: 24 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 56 + m_GlyphIndex: 25 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 57 + m_GlyphIndex: 26 + m_Scale: 1 - m_ElementType: 1 m_Unicode: 65 m_GlyphIndex: 34 @@ -334,6 +668,38 @@ MonoBehaviour: m_Unicode: 68 m_GlyphIndex: 37 m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 69 + m_GlyphIndex: 38 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 70 + m_GlyphIndex: 39 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 73 + m_GlyphIndex: 42 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 76 + m_GlyphIndex: 45 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 77 + m_GlyphIndex: 46 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 78 + m_GlyphIndex: 47 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 79 + m_GlyphIndex: 48 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 82 + m_GlyphIndex: 51 + m_Scale: 1 - m_ElementType: 1 m_Unicode: 83 m_GlyphIndex: 52 @@ -346,14 +712,46 @@ MonoBehaviour: m_Unicode: 97 m_GlyphIndex: 66 m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 98 + m_GlyphIndex: 67 + m_Scale: 1 - m_ElementType: 1 m_Unicode: 100 m_GlyphIndex: 69 m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 101 + m_GlyphIndex: 70 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 103 + m_GlyphIndex: 72 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 105 + m_GlyphIndex: 74 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 109 + m_GlyphIndex: 78 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 110 + m_GlyphIndex: 79 + m_Scale: 1 - m_ElementType: 1 m_Unicode: 115 m_GlyphIndex: 84 m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 116 + m_GlyphIndex: 85 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 117 + m_GlyphIndex: 86 + m_Scale: 1 - m_ElementType: 1 m_Unicode: 8230 m_GlyphIndex: 113 @@ -424,19 +822,91 @@ MonoBehaviour: m_Y: 68 m_Width: 51 m_Height: 83 - m_FreeGlyphRects: + - m_X: 246 + m_Y: 84 + m_Width: 58 + m_Height: 84 - m_X: 123 - m_Y: 82 - m_Width: 19 - m_Height: 941 + m_Y: 150 + m_Width: 55 + m_Height: 82 + - m_X: 57 + m_Y: 164 + m_Width: 58 + m_Height: 85 + - m_X: 178 + m_Y: 151 + m_Width: 58 + m_Height: 83 + - m_X: 115 + m_Y: 232 + m_Width: 59 + m_Height: 82 - m_X: 0 m_Y: 193 - m_Width: 1023 - m_Height: 830 - - m_X: 57 - m_Y: 110 - m_Width: 1 - m_Height: 913 + m_Width: 52 + m_Height: 67 + - m_X: 0 + m_Y: 260 + m_Width: 76 + m_Height: 65 + - m_X: 76 + m_Y: 249 + m_Width: 26 + m_Height: 83 + - m_X: 0 + m_Y: 325 + m_Width: 53 + m_Height: 65 + - m_X: 426 + m_Y: 0 + m_Width: 54 + m_Height: 84 + - m_X: 480 + m_Y: 0 + m_Width: 53 + m_Height: 84 + - m_X: 533 + m_Y: 0 + m_Width: 53 + m_Height: 66 + - m_X: 586 + m_Y: 0 + m_Width: 36 + m_Height: 84 + - m_X: 533 + m_Y: 66 + m_Width: 48 + m_Height: 25 + - m_X: 366 + m_Y: 84 + m_Width: 68 + m_Height: 82 + - m_X: 434 + m_Y: 84 + m_Width: 32 + m_Height: 82 + - m_X: 466 + m_Y: 84 + m_Width: 58 + m_Height: 85 + - m_X: 304 + m_Y: 166 + m_Width: 64 + m_Height: 82 + - m_X: 236 + m_Y: 168 + m_Width: 50 + m_Height: 82 + - m_X: 174 + m_Y: 234 + m_Width: 52 + m_Height: 82 + - m_X: 102 + m_Y: 314 + m_Width: 50 + m_Height: 82 + m_FreeGlyphRects: - m_X: 106 m_Y: 24 m_Width: 2 @@ -449,26 +919,6 @@ MonoBehaviour: m_Y: 25 m_Width: 1 m_Height: 57 - - m_X: 426 - m_Y: 0 - m_Width: 597 - m_Height: 1023 - - m_X: 366 - m_Y: 84 - m_Width: 657 - m_Height: 939 - - m_X: 57 - m_Y: 166 - m_Width: 966 - m_Height: 857 - - m_X: 57 - m_Y: 164 - m_Width: 254 - m_Height: 859 - - m_X: 366 - m_Y: 82 - m_Width: 5 - m_Height: 941 - m_X: 195 m_Y: 66 m_Width: 1 @@ -476,19 +926,119 @@ MonoBehaviour: - m_X: 246 m_Y: 68 m_Width: 2 - m_Height: 955 - - m_X: 123 - m_Y: 151 - m_Width: 188 - m_Height: 872 + m_Height: 16 - m_X: 123 + m_Y: 82 + m_Width: 19 + m_Height: 68 + - m_X: 57 + m_Y: 110 + m_Width: 1 + m_Height: 54 + - m_X: 178 m_Y: 150 - m_Width: 72 - m_Height: 873 - - m_X: 246 + m_Width: 17 + m_Height: 1 + - m_X: 115 + m_Y: 164 + m_Width: 8 + m_Height: 68 + - m_X: 52 + m_Y: 193 + m_Width: 5 + m_Height: 67 + - m_X: 52 + m_Y: 249 + m_Width: 24 + m_Height: 11 + - m_X: 53 + m_Y: 325 + m_Width: 23 + m_Height: 698 + - m_X: 622 + m_Y: 0 + m_Width: 401 + m_Height: 1023 + - m_X: 581 m_Y: 84 - m_Width: 65 + m_Width: 442 + m_Height: 939 + - m_X: 581 + m_Y: 66 + m_Width: 5 + m_Height: 957 + - m_X: 366 + m_Y: 82 + m_Width: 5 + m_Height: 2 + - m_X: 524 + m_Y: 91 + m_Width: 499 + m_Height: 932 + - m_X: 524 + m_Y: 84 + m_Width: 9 m_Height: 939 + - m_X: 304 + m_Y: 84 + m_Width: 7 + m_Height: 82 + - m_X: 368 + m_Y: 166 + m_Width: 98 + m_Height: 857 + - m_X: 368 + m_Y: 169 + m_Width: 655 + m_Height: 854 + - m_X: 236 + m_Y: 151 + m_Width: 10 + m_Height: 17 + - m_X: 286 + m_Y: 248 + m_Width: 737 + m_Height: 775 + - m_X: 286 + m_Y: 168 + m_Width: 18 + m_Height: 855 + - m_X: 174 + m_Y: 232 + m_Width: 4 + m_Height: 2 + - m_X: 226 + m_Y: 250 + m_Width: 797 + m_Height: 773 + - m_X: 226 + m_Y: 234 + m_Width: 10 + m_Height: 789 + - m_X: 102 + m_Y: 249 + m_Width: 13 + m_Height: 65 + - m_X: 0 + m_Y: 396 + m_Width: 1023 + m_Height: 627 + - m_X: 0 + m_Y: 390 + m_Width: 102 + m_Height: 633 + - m_X: 53 + m_Y: 332 + m_Width: 49 + m_Height: 691 + - m_X: 152 + m_Y: 316 + m_Width: 871 + m_Height: 707 + - m_X: 152 + m_Y: 314 + m_Width: 22 + m_Height: 709 m_fontInfo: Name: PointSize: 0 @@ -577,7 +1127,7 @@ Material: m_PrefabAsset: {fileID: 0} m_Name: AdventPro-Regular Atlas Material m_Shader: {fileID: 4800000, guid: 68e6db2ebdc24f95958faec2be5558d6, type: 3} - m_ShaderKeywords: + m_ShaderKeywords: ETC1_EXTERNAL_ALPHA m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 @@ -661,7 +1211,7 @@ Material: m_Colors: - _ClipRect: {r: -32767, g: -32767, b: 32767, a: 32767} - _EnvMatrixRotation: {r: 0, g: 0, b: 0, a: 0} - - _FaceColor: {r: 1, g: 1, b: 1, a: 1} + - _FaceColor: {r: 0.74509805, g: 0.74509805, b: 0.7647059, a: 1} - _GlowColor: {r: 0, g: 1, b: 0, a: 0.5} - _MaskCoord: {r: 0, g: 0, b: 32767, a: 32767} - _OutlineColor: {r: 0, g: 0, b: 0, a: 0} diff --git a/Assets/Project/Graphics/UI/Fonts/AdventPro-SemiBold SDF.asset b/Assets/Project/Graphics/UI/Fonts/AdventPro-SemiBold SDF.asset index 520f0fd3..d778aca1 100644 --- a/Assets/Project/Graphics/UI/Fonts/AdventPro-SemiBold SDF.asset +++ b/Assets/Project/Graphics/UI/Fonts/AdventPro-SemiBold SDF.asset @@ -12,6 +12,7 @@ Texture2D: Hash: 00000000000000000000000000000000 m_ForcedFallbackFormat: 4 m_DownscaleFallback: 0 + m_IsAlphaChannelOptional: 0 serializedVersion: 2 m_Width: 1024 m_Height: 1024 @@ -38,8 +39,9 @@ Texture2D: m_WrapW: 0 m_LightmapFormat: 0 m_ColorSpace: 0 + m_PlatformBlob: image data: 1048576 - _typelessdata: 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306070d1213110b0a0805000000000005080a0b1113120d07060300000000000407090a1013120e0707040100000000000000000000000000000105070708080808080808080808080808080808080808080808080808080808070603000000000000000000000000000000000000000000000003070b0d0e131313131313130f0f0d0904000000000000000000000002060a0c0c13131313131313131313131313131313131313131313131313131313131313130c0c0a06020000000000000000000000000000000000000000000000000000000000000000000000000000000002050708131313131313131307070401000000000000000000000000000000000000000000000000000000000000000000000000000003060707070604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c101213191e201e181715110c0600060c111517181e201e191312100b0600040b101316161d201f1b1413110d08010000000000000000000002080d111314151515151515151515151515151515151515151515151515151515151312100b060000000000000000000000000000000000000001080e13171a1a202020202020201c1b19151009020000000000000000070d121618192020202020202020202020202020202020202020202020202020202020202020191816120d070000000000000000000000000000000000000000000000000000000000000000000000000003090e12141520202020202020201413110d080100000000000000000000000000000000000000000000000000000000000001050707060b101213141312100c070807050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a11171c1f20262b2c2a2524211d17100911171d2124252a2c2b26201f1c17110a0f161b2022232a2c2c2721201d19130c040000000000000000050d13191e202121212121212121212121212121212121212121212121212121212121201f1c17110a0200000000000000000000000000000000020b12191f2326272d2d2d2d2d2d2d292825211b140c030000000000010a12181e2225262d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2625221e18120a0100000000000000000000000000000000000000000000000000000000000000000000050d141a1e21212d2d2d2d2d2d2d2d2d201d19130c0400000000000000000000000000000000000000000000000000000002080d11131418171c1f2021201f1c18191514120e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151c23282c2d3338393731302d28221b121b22292d3031373938332d2b28231c141921272c2f30363938342d2c29241e160d04000000000000050e171e252a2d2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2d2b28231c140c020000000000000000000000000000010b141d242b303334393939393939393635312c261e150c02000000000a131c232a2f3233393939393939393939393939393939393939393939393939393939393939393933322f2a231c130a000000000000000000000000000000000000000000000000000000000000000000050f171f252a2d2e3939393939393939392c29241e160d04000000000000000000000000000000000000000000000000050b1013191d20212523282b2d2d2d2c28232622211e1a14100c0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b151e262e34383a404546443e3d39342d241c242d34393d3e444645403a38342e261e232b32383b3d434645413a39352f2820160d0300000000020d1720293036393a3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3a38342e261e140a000000000000000000000000000008121d262f363c3f414646464646464642413d3730271e140900000007121c252e353a3e3f46464646464646464646464646464646464646464646464646464646464646463f3e3a352e251c120700000000000000000000000000000000000000000000000000000000000000030d17212931363a3b46464646464646464639352f2820160c01000000000000000000000000000000000000000000040a0f161c1e252a2d2e322e34383a3a3a38342e322e2d2b261f1c17110a0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d2630383f44464c5153514b49453e362e252e363e45494b5153514c46443f3830262c353d4448495053524e4745413a32281f150b0100000008131e29323a4146474848484848484848484848484848484848484848484848484848484846443f3830261c1106000000000000000000000000030e19242f3840474c4d535353535353534f4d49423930261b100400020d18232e373f464b4c53535353535353535353535353535353535353535353535353535353535353534c4b463f372e23180d0200000000000000000000000000000000000000000000000000000000000009141f29333b42464853535353535353535345413a32281e13080000000000000000000000000000000000000000060c151b21272c3036393a3e413f444647464440423f3b3a37312c28231c150c0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b262f38424a5053595e5f5d585650483f372e3740485056585d5f5e5953504a42382e363e474f54565d5f5f5a54524c443a31271d12070000010d1925303a444c52545454545454545454545454545454545454545454545454545454545453504a42382e23170b00000000000000000000000007131f2b36404a52585a606060606060605c5a544c42372c2115090006121e2a353f495157596060606060606060606060606060606060606060606060606060606060606060595751493f352a1e12060000000000000000000000000000000000000000000000000000000000020e1a25313b454d535f60606060606060605f524c443a2f24190d010000000000000000000000000000000000030a111720262b33383a4146474b4e4a50535453514a4f4c4846423c38342e261e19130c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d38414a545c60666b6c6a64615a51493f334049525a62646a6c6b66605c544a3f343e4850596063696c6b67605d564c43392f24180c000005111e2a36414c565e6161616161616161616161616161616161616161616161616161616161605c544a3f34281c100300000000000000000000000b1723303c47525c64676c6c6c6c6c6c6c69655e54493d3125190d000a16222f3a46515b63666c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c66635b51463a2f22160a000000000000000000000000000000000000000000000000000000000005121e2a36424d575e6c6c6c6c6c6c6c6c6c6c5d564c4135291d110400000000000000000000000000000000040c151c232832373d44484c5254585b545c6060605c545b5955534d46443f38302a251e170e060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333f49535c666d73787977716c635b51443b45525b636c71777978736d665c50443d42505a616b70767978746d685d554b4035291d1004000713202d3946525e686d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d665c5044382b1f120600000000000000000000000d1a26333f4c58646e74797979797979797570655a4d4135281b0f000c1825323e4b57636d727979797979797979797979797979797979797979797979797979797979797979726d63574b3e3225180c00000000000000000000000000000000000000000000000000000000000714212d3a46535e6976797979797979797976685d5245392c201307000000000000000000000000000000040d161e262e343c43474f54565e6165686a666d6d6d666b6865615f5753504a423e36302920180f070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3744505b656d787f8486847e726d63564c424d57636e737e8486847f786d60594f444a54616c707d838685817a6d675d5145392c1f1306000714212e3a4754616d7a7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b786d6053463a2d20130700000000000000000000010e1a2734414d5a677480868686868686868275695c4f4236291c0f000c1926333f4c5966727f86868686868686868686868686868686868686868686868686868686868686867f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b86868686868686867a6d6054473a2d2114070000000000000000000000000000040d161f2830383f444e53596063686d71747778797a79797775726e6964605c545046413a322a211910070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202d394653606c78818c9192908b7f72685e5246535f6973808b9092918c81756b605448505c66707e879092928d83796d6053473a2d201407000f1c2936424f5c697582878787878787878787878787878787878787878787878787878787877a6e6154473b2e21140800000000000000000000010e1a2734414d5a6774808d93939393938f8275695c4f4236291c0f000c1926333f4c5966727f8c9393939393939393939393939393939393939393939393939393939393938c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b87939393939393877a6d6054473a2d21140700000000000000000000000000030c161f283139424a50585f626b70767a7e8183858687868584827f7b77716d66615a524c443c332b22190f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717e8a939e9f9d92867a6e61544855616e7b87929d9f9e93897d7063564953606d798591999f9e958c7f7265594c3f3226190c000f1c2936424f5c6975828f9494949494949494949494949494949494949494949494949494877a6e6154473b2e21140800000000000000000000010e1a2734414d5a6774808d9a9f9f9f9c8f8275695c4f4236291c0f000c1926333f4c5966727f8c999f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b87949f9f9f9f93877a6d6054473a2d211407000000000000000000000000000b151e28313a434b545c606a6f767d82868b8e909298939892918e8c88837e78716c615e564e463d342b21180d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2734414e5a6774818d9aa5aca3998a7d7164574b5865717e8b99a3aca5998c807366594d55626f7c8897a1aba79c8f8276695c4f4336291c10000f1c2936424f5c6975828f9ca1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a194877a6e6154473b2e21140800000000000000000000010e1a2734414d5a6774808d9aa7aca89c8f8275695c4f4236291c0f000c1926333f4c5966727f8c99a5acacacacacacacacacacacacacacacacacacacacacacacacacaca5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1acaca093877a6d6054473a2d21140700000000000000000000000007121c27303a434c555d666d737c83898f92999b9d9fa2aaa29f9e9b9895908b847e756d685f584e463d332a1f160c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2734414e5a6774808d9aa6aca3998a7d7064574b5865717e8b99a3aca5998c807366594d55626f7b8897a1aba79c8f8275695c4f4236291c0f000f1c2936424f5c6975828f9c9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f94877a6e6154473b2e21140800000000000000000000010e1a2734414d5a6774808d9aa7b3a89c8f8275695c4f4236291c0f000c1926333f4c5966727f8c99a5b2b9b9b7afaaa8a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aeada093877a6d6054473a2d2114070000000000000000000000030d18232e39424c565d676d787f8790949c9fa3abaaabaeb4aeacaaa8a7a09d96918a817a6e6a60584e453c31281d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724313d4a5764707e8a949e9f9d92867a6e61544855616e7b87929d9f9e93897c7063564953606d788591999f9f958c7f7265594c3f3226190c000f1c2936424f5c6975828f9393939393939393939393939393939393939393939393939393877a6e6154473b2e21140800000000000000000000010d1a2734404d5a6773808d9aa6b3a89c8f8275695c4f4236291c0f000c1926333f4c5966727f8c99a5b2bfbaafa59e9b9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aeada093877a6d6054473a2d21140700000000000000000000010b151f2834404a545d686d79828c92999fa6acafb5b2afaeadadafb1b5b1aba8a09e938e847c6f6a60574d43392f24180d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202d394653606c77828c9192918b7f72685e5246535f6973808b9192918c81756b605448505c66707e879092928e83796d6053473a2d201407000f1c2936424f5c697582868686868686868686868686868686868686868686868686868686867a6e6154473b2e21140800000000000000000000010d1a2734404d5a6773808d9aa6b3a89c8f8275695c4f4236291c0f000c1926333f4c5966727f8c99a7b1bdb6aa9e938e8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aeada093877a6d6054473a2d2114070000000000000000000007121d27313944515c666d7a838f949fa3abb0b1abaaa6a2a1a0a1a2a5a9acafb2aca59e9691857c6f695f554b40352921160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3744505b656d78808486847e726d63564c424d57636e737e84868480786d60594f444a54616c707d838685817a6d675d5145392c201306000f1b2835414d5a6570757979797979797979797979797979797979797979797979797979797976685e5246392d20140700000000000000000000010d1a2734404d5a6773808d9aa6b3a89c8f8275695c4f4236291c0f000c1825323f4b5865727e8b95a0abb5b4a89b8e81808080808080808080808080808080808080808080807d706356493d3023160a00000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aeada093877a6d6054473a2d211407000000000000000000000c18232f39434f59606d78828f959ea6aeb1aca79f9d999594939495989c9fa4abb0afa8a19792857b6e675d51453d32271b0f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333f49535c666d73787977716c635b51443b45525c636c71777978736d665c50473d42505a616b70767978746d685d554b4035291d1004000d1925313d49545e65696c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c5e564c41362a1e110500000000000000000000010d1a2734404d5a6773808d9aa6b3a89c8f8275695c4f4236291c0f000713202d3a4653606d78839099a3aeb5a89b8f8275747474747474747474747474747474747474747474706b6054483c2f22160900000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aeada093877a6d6054473a2d21140700000000000000000004101c2934404b55606b74808d949fa7b0afa7a09d95908c89878687888b8f93999fa6adb2a9a1979184796d60594f43382c21160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d38414a545c60666b6c6a64625a51493f33404a525a62656a6c6b66605c544a3f353e48505960636a6c6c67605d564c43392f24180d01000915212c37424c545a5c606060606060606060606060606060606060606060606060606060605f524c443b3025190e0200000000000000000000010d1a2734404d5a6773808d9aa6b3a89c8f8275695c4f4236291c0f0006121f2c3844515c666f7c87929fa7b1aa9e938a7e7168676767676767676767676767676767676767676360594f44382c20130700000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aeada093877a6d6054473a2d21140700000000000000000006131f2c3845515c67707d89929da6b0afa59e95908a837f7c7b7a7a7c7e82878f949ca4adb3a9a0968d80746b6054483d32271b0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b262f39424a5153595e5f5e585650483f372e3740485056585e5f5e5953504a42382e363e474f54565d5f5f5b54524c443a31281d1207000004101b26303942494d4f535353535353535353535353535353535353535353535353535353535346413b32291e14080000000000000000000000010d1a2734404d5a6773808d9aa6b3a89c8f8275695c4f4236291c0f0004101c2834404a545f6a737f8c95a0abafa59e92857a6d615a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a56544f473d33271c100400000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aeada093877a6d6054473a2d211407000000000000000004101c2834404a54606d7984919ea4aeafa59d938e837d77736f6e6d6e6f72767c828c929ba3adb2a89f93877c6f63594f43382c1c110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d2730394044464d5153514b49453e362e252e363f454a4b5153524d46443f3830262c353d4448495053524e4745413a32281f160c0100000009141e2730373d4142464646464646464646464646464646464646464646464646464646463b3936302920170d020000000000000000000000010d1a2734404d5a6773808d9aa6b3a89c8f8275695c4f4236291c0f00000c18232e39424e58606d78839099a3aeada1978e81756c61564c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4948443d352b21160b0000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aeada093877a6d6054473a2d211407000000000000000006121f2c3844515c66727f8b96a1acb0a69d938e8179706b666261606162656a6f767f8b919ba4aeafa49a8f82766b605448382e23170c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b151e272e34383a404546443e3d39342d241c242d343a3d3e444645403a38342e261e232b33383c3d434645413a3935302820160d0400000000020c151e262c313536393939393939393939393939393939393939393939393939393939392e2d2a251e170e05000000000000000000000000010d1a2734404d5a6773808d9aa6b3a89c8f8275695c4f4236291c0f000007121c27303c44505c666f7c86929fa7b1a99e938a7e71685e524641414141414141414141414141413d3c38332b23190f050000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aeada093877a6d6054473a2d21140700000000000000000713202d3a4653606d7984919ea8b2ab9f948e81776d6761595654535455585f626d737f8b929da8b2ac9f94897c6f63544a3f34281c10030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151c23282c2d3338393731302d29221b121b22292e3132373938332d2c28231c151921272c2f30373939342d2c29241e160e04000000000000030c141b212528292d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d21201e19140d0500000000000000000000000000010d1a2734404d5a6773808d9aa6b3a89c8f8275695c4f4236291c0f0000000b151e28343f4a545f6a727f8c959faaafa59e92857a6d615a50443a303434343434343434343434302f2c2721191107000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aeada093877a6d6054473a2d21140700000000000000000a1724303d4a5763707d8a96a1adafa3999082786d655d554f49484747494e535b636d74808d96a1adb0a69a8e8174665c5044382c1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181c1f20262b2c2b2524211d17110911171d2124252b2c2b26201f1c17110a0f161c2022232a2c2c2821201d19130c04000000000000000002091015191b1c202020202020202020202020202020202020202020202020202020201414110e08020000000000000000000000000000010d1a2734404d5a6773808d9aa6b3a89c8f8275695c4f4236291c0f000000030c17232e38424e58606d78839098a3aeada1978e81756c61564c413529272727272727272727272322201c160f0700000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aeada093877a6d6054473a2d2114070000000000000005121e2a36424d576874818e9ba8b2ac9f92877b6e665c534b433e3b3a3b3c4347525b606d7984919eaab4ab9e9285796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c1012131a1e201e181715110c0600060c111517181e201f1a1312100c0600050b101316161d201f1b1413110d0802000000000000000000000004090d0f0f131313131313131313131313131313131313131313131313131313130807050200000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3a89c8f8275695c4f4236291c0f0000000006111c26303c44505c666e7c86929fa7b1a99e938a7d70685d52463e32281e1a1a1a1a1a1a1a1a161613100b050000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aeada093877a6d6054473a2d211407000000000000000714202d3a46525e697885929eabb3a99a8e8174695f544b4139312e2d2e32374045515c67717e8b98a3aeada197897c6f6256493c2f231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070d1213110b0a0805000000000105090b0b1113120d07060300000000000407090a1013120e07070401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3a89c8f8275695c4f4236291c0f00000000000a151e28343f4a545f6a727f8c959faaafa59e91857a6d61594f443a2f24190d0e0e0e0e0e0e0a09070400000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aeada093877a6d6054473a2d211407000000000000000815212e3b4854616e7b8797a1adada197897c6f62574d42392f27212021262b34404b55606d7a86929facb3a9988b7e7265584b3f3225180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005060400000000000000000000000000040605000000000000000000000000000406060100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3a89c8f8275695c4f4236291c0f0000000000030c17232e38424e58606c78839098a2aeada1978e81746b61564c4135291f160c01010101010000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aeada093877a6d6054473a2d211407000000000000000a1724303d4a5763707d8a96a9b3ab9e9285796c6053463c30271d1514141b232f3945515d6776828f9ca9b4a79a8e8174675b4e4134281b0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3a89c8f8275695c4f4236291c0f00000000000006111c26303c44505b666e7b86929fa6b0a99e938a7d70685d52453d31281e1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aeada093877a6d6054473a2d211407000000000000000b1825313e4b5864717e8b97a4b1a99c908376665b5044382a1e150b070a121d2935404b556773808d9aa6b3a89b8f8275685c4f4235291c0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030607090c0e101212131312110f0d0a0706040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3a89c8f8275695c4f4236291c0f000000000000000a141e28333f4a545f69727f8c949faaafa59e91847a6d60594f433a2f24190d040000000000000000000000000000000000000000000000000303030303030303030303030303030303030815212e3b4854616e7b8794a1aeada093877a6d6054473a2d211407000000000000000c1925323f4c5865727f8b98a5b2a89b8f827568544a3f3328180c0300010d18242f3f4c5966727f8c99a5b2a99c8f8376695c504336291d1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b10121316191b1d1e1f201f1f1e1c1a171413100d07030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3a89c8f8275695c4f4236291c0f00000000000000020c17222d38424d57606c78829098a2aeada1968e81746b61554c4135291f160c0100000000000000000000000000000000000000030608091010101010101010101010101010101010101015212e3b4854616e7b8794a1aeada093877a6d6054473a2d211407000000000000000c1926333f4c5966727f8c99a5b2a89b8e8175685b4e4231261a0e020000071926323f4c5965727f8c98a5b2a99c908376695d5043362a1d1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f11171c1f202226282a2b2c2c2c2c2a29262420201d18120f0b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3a89c8f8275695c4f4236291c0f000000000000000006111c262f3c44505b666e7b86929fa6b0a99d93897d70675d51453d31281d13070000000000000000000000000000000000040a0f1315161d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d212e3b4854616e7b8794a1aeada093877a6d6054473a2d211407010000000000000c1926333f4c5966727f8c99a5b2a99c8f827669574d42362a1e130a070a101c2834404a546673808d99a6b3a89b8f8275685c4f4235291c0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b10161b1c23282b2d2f3235363839393938373533302d2c29241f1b17110a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3a89c8f8275695c4f4236291c0f0000000000000000000a141d28333f4a545f69727f8b949faaafa59e91847a6d60594f433a2f24180d04000000000000000000000000000000070f151b1f22232929292929292929292929292929292929292929292e3b4854616e7b8794a1aeada093877a6d6054473a2d2114120a0200000000000c1926333f4c5966727f8c99a5b2aa9e918477695f53463a30241c1514141a242c3844515c6675828f9ba8b4a79b8e8174685b4e4135281b0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d161b21272c2e34383a3c3f414345454646454442403d3a39352f2b27221b140b09020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3a89c8f8275695c4f4236291c0f000000000000000000020b17222d38424d57606c77828f98a2aeada1968e81746b60554b4035291f160c010000000000000000000000000007101920272b2e2f363636363636363636363636363636363636363636363b4854616e7b8794a1aeada093877a6d6054473a2d2b241c140a01000000000c1926333f4c5966727f8c99a5b2aca096887b6e61564c41352e26212021262b343f4a54606d7985929fabb4aa988c7f7265594c3f3226190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c121821272c3238383f4446494c4e505152535252514f4d4a4745403937332d261d19140d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3a89c8f8275695c4f4236291c0f0000000000000000000006111c262f3b44505b656e7b86929fa6b0a89d93897d70675d51453d31281d1207000000000000000000000000040f19222b32373b3c43434343434343434343434343434343434343434343434854616e7b8794a1aeada093877a6d6054473a3b362e261c1208000000000c1926333f4c5966727f8c99a5b2b2a8998c7f72685d52463f38302e2d2e31373f44505c66707d8a98a2aeaea298897d706356493d3023160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d161d242932383d43484a505355595b5d5e5f5f5f5f5d5c595753514b46443f382f2a251f170e07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3a89c8f8275695c4f4236291c0f00000000000000000000000a141d27333f49535f69727f8b949faaafa59e9184796d60594f43392f24180d0300000000000000000000000a15202b343d43474950505050505050505050505050505050505050505050505054616e7b8794a1aeada093877a6d60544d4c4740382e24190e030000000c1926333f4c5966727f8c99a5b2b8ab9f92857a6d615b504a423d3b3a3b3c4347515a606d7883919daab3ac9f9285796d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171f282f353d44484f54545c60626568696b6c6c6c6b6a686663605d55535049413e363029201911080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3a89c8f8275695c4f4236291c0f0000000000000000000000020b17222d38414d57606c77828f98a2aeaca1968d80746b60554b4035291f150b01000000000000000000030f1b27323d464e54565c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c616e7b8794a1aeada093877a6d605c5a58524a40362b1f13030000000c1926333f4c5966727f8c99a5b2baada2978e81746d605c544f49484747494e535b626c737f8c95a0acb1a79b8e8175675d5145392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e172029313940454f54596063666d6f7274767878797978777573706d6763605b535046423b322b231a110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3a89c8f8275695c4f4236291c0f00000000000000000000000006111b262f3b44505b656e7b85929fa6b0a89f93887d70675d51453d31271d120700000000000000000006131f2b37434e58606269696969696969696969696969696969696969696969696969696e7b8794a1aeada093877a6d696967645c52473b301f14090000000c1926333f4c5966727f8c99a5b2beb3a99e938c7f746d6660595654535455585f626d727e88939fa7b1aba0958a7d7063554b4035291d100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c172029323b434b515960636b6f74797c7f818384858685858482807d7a75706c65615a524d443d352c231a1007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3a89c8f8275695c4f4236291c0f000000000000000000000000000a141d27333f49535e69717e8b949ea9afa49a9184796d60594f43392f24180d0300000000000000000815222e3b4754606a6f7676767676767676767676767676767676767676767676767676767b8794a1aeada093877a767676736e64584c3c31261a0e0200000c1926333f4c5966727f8c99a5b2bfbbafa59c918c8078706b666261606162656a6e757f87929aa4afafa59d9083776b615543392f24180d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e29333b444c555d606b70767c8185888c8e909192929292908f8c8a86827d78706c615e564f473e352c22190c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3a89c8f8275695c4f4236291c0f00000000000000000000000000020b17222d38414d57626c76828f97a2adaca0968d80746b60554b4035291f150b01000000000000000916232f3c4956626f7c82838383838383838383838383838383838383838383838383838383909da9b6b6a99c9082838383807367574d42372b1e120500000c1926333f4c5966727f8c99a5b2bfc1b7ada49c928d837d76726f6e6d6e6f72757c828c9299a3acb2a99e938a7d7063594f4431281d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27303b454d565e676d747d83898d9297989b9c9e9f9f9f9e9d9b9998928f8a837d766e6960594f473e342a1e150b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3a89c8f8275695c4f4236291c0f000000000000000000000000000006111b262f3b45505a616e7b85929fa6b0a89f93887d6f675d51453d31271d1207000000000000000613202d394653606c78838f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f90959fabb8b7ab9f94908f8f8f8578695f53463a2d21140700000c1926333f4c5966727f8c99a5b2bfc8bfb6ada49d959089837f7c7b7a7a7c7e82878f939fa3abb4aaa1978e81756b6155473e331f160c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e39434d575e686e79818990949a9ea1a9a7a9ababacacabaaa8aaa39f9b95908a827b706b61594f463c30271d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3a89c8f8275695c4f4236291c0f0000000000000000000000000000000a141d29333f46525e69717e8b949ea9afa49a9184796d60594f43392f23180b0200000000000005121f2b3744505b65707d8a959c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9d9fa7b1bcbcb0a69f9c9c9c97887b6e6155483b2e22150700000c1926333f4c5966727f8c99a5b2bfbcb8b6b6aea79f9d95908c89878687888b8f92999ea6afb3aaa29891857a6d61594f44352c210d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b555e696e7a838d929c9fa6abadb3b4b3b1b0afb0b1b3b5b4aeaca7a09d948f857d706b61584e43392e23180c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3a89c8f8275695c4f4236291c0f000000000000000000000000000000020b17212a36424d57626c75828f97a2adaca0968d80736b60554b4034291d140a000000000000030f1b27333f4953616c7683909da6a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9abb1b9c2c2b8b0aba9a9a9978a7e7164574b3e2f23180c00000c1926333f4c5966727f8c99a5b2b9b1aba9a9abb1aba79f9d999594939495989c9fa3abb0b0a9a19892867c6f685e52473e33231a1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d17212c3845515c676e7b8490959da4abb0b6afacaaa6a4a3a2a3a4a6aaacafb6b1aca69e9792867d706a5f554b4034281d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3a89c8f8275695c4f4236291c0f00000000000000000000000000000000050f1a25303b45505a616e7b85929fa5afa89f93877c6f675c51453c2f261b11060000000000000b17222d3841505a63707d89949fabb6b6b6b6b6b6b6b0aeaeaeaeaeaeaeaeaeaeaeaeaeb0b1b6bdc5c5bcb5b1afaea79a8d807467554b4034291c1004000c1926333f4c5966727f8c99a5b2b1a79f9d9d9fa7aeb1aba9a5a2a1a0a1a2a5a8acafb3ada69f9792867d706a60564c41352c2111080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2b37434e58606d79839096a0a7aeb7afaca49f9d9a9796959697999d9fa4acafb8b0a9a19892867c6f675c5145392f24180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3a89c8f8275695c4f4236291c0f000000000000000000000000000000000009141f29333e46525e68717e8a939ea9afa4999184796d60584e41382d22170b00000000000006111b262f3e4855616b7683909ca6b0bbc2beb6afaca3a2a2a2a2a2a2a2a2a2a2a2a2a2a3a5abb3bdbcb3aaa4a2a2a29d908377675c5145382c1f1306000c1926333f4c5966727f8c99a5b2ab9f959090959fa3abaeb4b2afaeadadafb1b5b2ada9a19e9490857d706b61584e443a30231a1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25313b47535f6a74808d959fa8b1b4aea59e9a93908d8a8989898a8d90939a9ea5aeb4b3aaa2989183796d60554b4035291d10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3a89c8f8275695c4f4236291c0f0000000000000000000000000000000000020d17202a36414d56616c75828f97a1adaba0968d80736a6053493f33271d12070000000000000a141d2c38444f5963707d89949fabb7c0b6aca49f96959595959595959595959595959699a1abb6b5aaa199959595959286796d6053473a2d201407000c1926333f4c5966727f8c99a5b2a99d9083838d92999fa2aaaaacafb5b3adaba9a8a19e97928b827b6f6b61594f463c32281e11080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d57626f7c87939fa7b1b4aaa29f938e8783807e7d7c7d7e8083878e939fa2aab4b4aaa0958c7f72675d5145382c1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3a89c8f8275695c4f4236291c0f000000000000000000000000000000000000050e1925303b44505a616e7a85929ea5afa89f92877c6f655b5044392e23180c000000000000020b1c27333d4854606b76828f9ca6b0bbafa49a938a88888888888888888888888888898f99a5b1b1a4998f8988888888887c6f6356493c30231609000c1926333f4c5966727f8c99a5b2a99c8f827980868d92989a9d9fa3aba9a29f9c9a96918c857f776e6960594f473d342b20160c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a46535e6976828f99a4afb5aba298928a817c777371706f707173777c818a9298a2abb5b1a79e9285796d6053473a2d2014090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3a89c8f8275695c4f4236291c0f0000000000000000000000000000000000000008141f29323e46525e68717e8a939ea9afa3999083786c60544b4034281c10040000000000000b16212c38444f59626f7c89949eacb6ac9f93877d7b7b7b7b7b7b7b7b7b7b7b7b7b7d8996a3b0afa295897d7b7b7b7b7c7a6d6054473a2d211407000c1926333f4c5966727f8c99a5b2a99c8f8276737b81858a8e919299959497928f8d89847f79726c655f574f463d352c22190e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b87939fabb5afa49992867e756f6a676463626364666a6f757e869299a3afb9ada1978a7e7164574a3e31251a0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3a89c8f8275695c4f4236291c0f00000000000000000000000000000000000000020d17202a36414c56616c75818e97a2adab9f958a7e71665c5145382c1f150900000000000005101b27323d4854606a75828f9aa4afafa49a8d80746f6f6f6f6f6f6f6f6f6f6f6f7b8794a1aeada093877a6f6f6f6f6f6d685d5245392c201306000c1926333f4c5966727f8c99a5b2a99c8f8276696e747a7d818486878887878583807c78726d67605b534d453d342c231a10070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c9aa4afb3a99f93877d716c625f585756565657585f626c717d87929fa8b2b3a99b8e827568574d42362a1e120500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3a89c8f8275695c4f4236291c0f0000000000000000000000000000000000000000050e1925303b44505a616d7a85929ea7b1a79e9184796d6053463c31261a0e020000000000000b16212c38434e58626f7c87939fabb5ac9f92867a6d626262626262626262626e7b8794a1aeada093877a6d62626262605d564c4135291d1104000c1926333f4c5966727f8c99a5b2a99c8f82766961676d717477797b7b7b7a7876736f6c65605d555049413b332b221a110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d576976838f9cacb6ada1978c80736b615a534e4b4a494a4b4e535a616b727f8c96a1adb8ab9e928578695e53463a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001050d1a2633404d596673808c99a6b3a89c8f8275695c4f4236291c0f00000000000000000000000000000003060809090808141e29323e46525e68727e8b95a0acada1968a7e7164574d42372b1e1206000000000000040f1b27323d47545f6a75828f99a4afaea2988d8073685d55555555555555616e7b8794a1aeada093877a6d6055555554524c433a2f24190d01000c1926333f4c5966727f8c99a5b2a99c8f827669555d606467666d6e6e6e6d67696763605b53514b443f382f2921191008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a46535e697885929fabb8ab9e9285796d60595047433e3d3c3d3e43475059606d7984919eabb7ada197877b6e6154483b2e2115080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d11131a2633404d596673808c99a6b3a89c8f8275695c4f4236291c0f00000000000000000000000000040a0f1315161615130f17202a36414c56606c7883909da9b2a89c908376695f53473a2e211408000000000000000a16212b37434e58626f7c87939fabb4aa9f92857a6d60554b4848484854616e7b8794a1aeada093877a6d605448484745413a31281e130800000c1926333f4c5966727f8c99a5b2a99c8f8276695c515357545c60616261605d555a5653504945403a332d261d170f0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8797a2adb3a6998d8073675d51473e3731302f3031373e45515c66727f8c98a9b3b3a996897c706356493d3023160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c13191d20212633404d596673808c99a6b3a89c8f8275695c4f4236291c0f0000000000000000000000040a0f161b1f222322211f1b151925303a44505b66717e8a96a1adab9f94887b6e6255483b2f22150700000000000000040f1b26323c47535f6a75818e99a3afada2978c7f72675d51453c3c4854616e7b8794a1aeada093877a6d6054473c3a39352f281f160c0100000c1926333f4c5966727f8c99a5b2a99c8f8276695c4f474a4a515354555454514b4d4946443f38352f27221b140b060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8995a9b3b4aa96897d7063554b40352b26232323262b34404b54626f7b8897a2adb1a4978b7e7164584b3e3125180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171e252a2d2e3033404d596673808c99a6b3a89c8f8275695c4f4236291c0f000000000000000000040a0f161b20272b2e2f2f2e2b2620181e28333f4a54606d7984919eabb0a6988b7f7265584c3f2e23180c00000000000000000a15202b37434e58616e7b87929fabb3a99e9285796d60544b403b4854616e7b8794a1aeada093877a6d6054473a2d2c29241e160d040000000c1926333f4c5966727f8c99a5b2a99c908376695d50433e404446484848474541403c3937332d29241d17110a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0aea298867a6d6053473a2f201b1716171b232e3947535f6a7885929eabb1a5988b7e7265584b3f3225180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c1720293036393a3c3b404c5966737f8c99a6b2a89c8f8275695c4f4236291c0f00000000000000040a0f161b20272b32373b3c3c3b37322a2217222d3844515c6674818d9aa7b4a89b8e827568544a4034281c100400000000000000040f1a26313c47535f6974818e99a3aeada1978b7f72665c51453b4854616e7b8794a1aeada093877a6d6054473a2d211d19130c04000000000c1825323f4b5865727e8b98a5b1aa9d9084776a564c413634383a3b3b3b3a39352f302d2b27221b18130b060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724313d4a5764707d8a97a3b0ac9f928579675d5145392c20130a090a121d2b37434e586a7784909daab2a5988c7f7265594c3f3226190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e29323a4146474947464c5966737f8c99a6b2a89c8f8275695c4f4236291c0f000000000000070f161b20272b32373d4347494947433c342a201c2834404a5464707d8a97a3b0ab9e918578665c5144382c1f120600000000000000000a15202b37424d57616e7b86929faab3a99e9184796d60544a3f4854616e7b8794a1aeada093877a6d6054473a2d21140d080100000000000b1825313e4b5864717e8b97a4b1ab9f928578685e5246392d2c2d2e2f2e2d2c292423201f1b17110d0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0ab9e9184786b554b4035291d110400000f1b263143505c6976838f9ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1925303a444c52545654524c5966737f8c99a6b2a89c8f8275695c4f4236291c0f000000000007101920272b32383d43474e545655534e463c32261b232e3b4855616e7b8894a1aeada19786796d6053463a2d2013070000000000000000030e1a26313c46535e6974818d98a3aeada1968b7e71665c50444854616e7b8794a1aeada093877a6d6054473a2d211407000000000000000a1623303d495663707c8996a9b3ada297877a6d6154473a2e232021222121201d181613120f0b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e51442f24180d0100000a1c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d2a36414c565e6163615e565966737f8c99a6b2a89c8f8275695c4f4236291c0f00000000030c19222b32383d43474e54586062625f584e43372b1e202d3a4753606d7a8693a0adb2a994877a6e6154473b2e21140800000000000000000009151f2a36424d57616e7b86929faab2a89e9184786d6053464854616e7b8794a1aeada093877a6d6054473a2d211407000000000000000814212e3b4754616e7a8797a1adb3a996897d7063544a3f34281d1615151413110d070605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e07000003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3946525e686d6f6e68686466737f8c99a6b2a89c8f8275695c4f4236291c0f000000000b151e2b343d43474e545860626a6f6f6a5f53473a2f24232d3a4653606d798693a0acaea295887b6f6255483c2f221509000000000000000000030e1a25313b46525e6974808d98a2aeaca0968a7e7164594f4854616e7b8794a1aeada093877a6d6054473a2d211407000000000000000714202d3946525e687885929eabb3a69a8d8073665c5044392f281f1c17171616161514120e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a7c7a7875716d737f8c99a6b2a89c8f8275695c4f4236291c0f00000007121c27303d464e545860626a6f767c7c6f62564c41352f2e343c4854616e7b8794a1aeb4aa95887b6e6255483b2f2215080000000000000000000009141f2a36424d57616d7a86929faab2a89d9083776b61554854616e7b8794a1aeada093877a6d6054473a2d2114070000000000000005111e2a36414c566875818e9babb4ab9e9184796d60554b413a312b28232323222221211e1a140d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414c5666727f898785827e7a747f8c99a6b2a89c8f8275695c4f4236291c0f0000000c18232e39424e5860626a6f767c82898074685d5245403b3b3f444f5964717e8a97a4b1aea298877a6e6154473b2e21140800000000000000000000030e1a25303b46525e6873808d98a2aeaca0958a7d7063594f54616e7b8794a1aeada093877a6d6054473a2d21140700000000000000010d1925303e4b5865717e8b99a3aeada1968a7e71675d534b433d38342e302f2f2f2e2d2a251f170f0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3946525e6876839097918e8b8681808d9aa7b4a89c8f8275695c4f4236291c0f000004101c2834404a54606a6f767c82898f92857a6d605b514b48484a5058616c76828f9ca9b5ac9f9285796c605346392d201306000000000000000000000009141f2a36414c56616d7a85929fa9b1a79d9083766b605454616e7b8794a1aeada093877a6d6054473a2d21140700000000000000000814212e3a4754616d7a86929facb2a89e9184796d655d554f46443f3e3d3c3c3c3b3a36312921170d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a87939f9e9b98928d8d929da9b5a89c8f8275695c4f4236291c0f000006121f2c3844515c666f7c82898f949c988e81746d605d555555545c606a707d8a949fabb6a99d908376665b5044382b1f12060000000000000000000000020d1925303a46525d6873808c97a2adab9f95897d70635854616e7b8794a1aeada093877a6d6054473a2d21140700000000000000000713202d3946525e6875828f9ba6b0aca0968e81776d67605953504a4b4a4949494846423b33291f1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935404b5565717e8b9aa4abaaa29f9a9a9da4aeb5a89c8f8275695c4f4236291c0f00000713202d3a4653606d79858f949c9ea69d938c7f746d6763616263666d727c86929fa6b0b0a6998c7f7366544a3f33281c0f0300000000000000000000000008131e2935414c56606d7a85929ea9b1a79c8f82766a6054616e7b8794a1aeada093877a6d6054473a2d211407000000000000000005111d2a36414c5663707d89949facb2a89e938e8179706b64605c54575656555554534d453b31251a0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d6775828f9cacb1b4aeaca7a7a9aeb6b5a89c8f8275695c4f4236291c0f000006121f2c3844515c6673808d98a2aaafa59c918c817973706e6e7073787f869298a2aeb5ab9e94887b6e6255483b2d22170b00000000000000000000000000020d1924303a45515d67727f8c97a1adab9f94897c6f6258616e7b8794a1aeada093877a6d6054473a2d2114070000000000000000010d1925303a4854606b76828f9aa4afafa59e938e847d76706d66666463626262615e574d42362a1e12050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7986929da0a7aab0b8b4b4b5bac0b5a89c8f8275695c4f4236291c0f000004101c2834404a54616e7a85929fa6b0ada39c928e85807d7b7b7d80848b9298a2aab4afa4998f82766a5f53473a2e1c1106000000000000000000000000000008131e2935414c55606d7985929ea8b0a69b8f82756a5f616e7b8794a1aeada093877a6d6054473a2d21140700000000000000000008131e2c38444f59626f7c87939fa7b1afa59e969189827d79767371706f6f6f6e695e53463a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724313d4a5764707d888c90959c9fa6acb2bac2c5c2b5a89c8f8275695c4f4236291c0f0000000c18232e3946525e68727f8b949fa7b1ada59d97928d898888898c91969fa3aab4b0a69f93877c6f62584e43372b1f0a000000000000000000000000000000020d19242f3a45515d67727f8c96a1adac9f93877c6f62616e7b8794a1aeada093877a6d6054473a2d21140700000000000000000002101c27333d4854606a73808d959fa7b1afa8a09e948f8a85827f7e7d7c7c7c7b6e6154483b2e2115080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1623303c4955616c707b7f83898f949ea1a8b0b8c2c2b5a89c8f8275695c4f4236291c0f00000007121c2a36414c56606c78828f95a0a7b0afa9a19e9996949596999ea0a8aeb4afa79f948d80736a6054463c31261a0f0000000000000000000000000000000008131e2935404b55606d7984919ea8afa49a8e817569616e7b8794a1aeada093877a6d6054473a2d211407000000000000000000000b16212c38434e58606d78839095a0a8b0b2aca69f9c97928f8c8a898988888175685b4e4235281b0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202d3944505a61696e72777c828991969fa6b0b8b9b5a89c8f8275695c4f4236291c0f000000000e1925303b44505b666d7a8390959ea6adb3adaba6a3a1a1a3a6aaacb2b3ada59e959082796d60584e43332a20150900000000000000000000000000000000010d18242f3945515c67727e8b96a1acac9f92877b6e616e7b8794a1aeada093877a6d6054473a2d21140700000000000000000000050f1b27323d44515c666d7a8391969ea6aeb4b0aba9a29f9c99979695958e8175685b4e4235281b0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c28333e4850575f62656a6f767d848f949fa6b0acaca89c8f8275695c4f4236291c0f0000000008141e28333f4a545d686e7b838f949ea1a9acb2b3afaeaeafb3b4b2aca9a19e938f837a6d675c51463d3221180e03000000000000000000000000000000000007121d2934404b55606d7984919ea8afa3998d8174686e7b8794a1acaca093877a6d6054473a2d21140700000000000000000000000a16212834404a545e686e7a848f949fa3aaafb7b3adaba9a6a4a3a29b8e8175685b4e4235281b0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222c363e454d53555860626b707a828f949fa79f9f9f9c8f8275695c4f4236291c0f00000000020b17222d38424c565e696e79828b92979ea0a8a8a9aaabaaa9a7a8a09e97928b81796d685d554b40342b200f06000000000000000000000000000000000000010c18232f3944515c66717e8b96a09f9f9f92867b6e6e7b87949f9f9f9f93877a6d6054473a2d2114070000000000000000000000040c18232e39424c565e686e7a828c92989ea5aaacb2b3b5b2b1b0a89b8e8175685b4e4235281b0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101a232c333c4247484e545960686d79828f9593939393938f8275695c4f4236291c0f000000000006111c262f3a434d575e676d757e858c9196989b9c9d9e9d9d9b9896918c857e756d675d564c43392f22190f000000000000000000000000000000000000000007121d2834404a54606d78849193939393988d80736e7b87939393939393877a6d6054473a2d21140700000000000000000000000007121c27303a444c565e686d777f868e93999ea0a8a7a9aaababa89b8e8175685b4e4235281b0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a212a31373a3d43474f565d676d7983868686868686868275695c4f4236291c0f0000000000000a141d28313b454d555d606c717a7f84898b8e90919191908e8c88847f7a716c605d554c443a31271d10070000000000000000000000000000000000000000010c18232e3944505c66717e86868686868686867a6e7b86868686868686867a6d6054473a2d211407000000000000000000000000000b151e29323b444c565d656c737b81888d9196979a9c9d9e9f9f9b8e8175685b4e4235281b0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080f1820262b2e32373d444c555d676d77797979797979797570655a4d4135281b0f000000000000020b161f29333b434b515a62686d72787c7f828384848483817f7c77726d67625a514b433a32281f150b0000000000000000000000000000000000000000000007121c28343f4a54616c7179797979797979796d6976797979797979797976685d5245392c20130700000000000000000000000000030c172029323b444c535b60696e757b8084888b8d8f919192939a8e8175685b4e4235281b0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151a1e21272b323a434c555d606a6c6c6c6c6c6c6c69655e54493d3125190d00000000000000040d172029313a414550565d61656c6f7275767778777674726f6a65605d5550454039312820160d0300000000000000000000000000000000000000000000000b17232e3842505a61646c6c6c6c6c6c6c6c615e6c6c6c6c6c6c6c6c6c6c5d564c4135291d11040000000000000000000000000000050e172029323a414950575e616a6e73777c7e80838484858686868175685b4e4235281b0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e12151b2028313a434c51545e606060606060605c5a544c42372c2115090000000000000000050e171f282f353e444c52535b60626568696a6b6a6a6865625f5854514b433e352f281f160e0400000000000000000000000000000000000000000000000006111c26303e48505557606060606060605f54535f60606060606060605f524c443a2f24190d01000000000000000000000000000000050e1720282f383f444d53585f62666a6f717476777878797979756f65594d4034271b0e0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002060a0e161f28313a41454751535353535353534f4d49423930261b1004000000000000000000050d161d2429323a414649505356585b5d5e5e5e5d5b5955534e4745413a3129241d160d0400000000000000000000000000000000000000000000000000000a141e2c363e45494b535353535353535247464853535353535353535345413a32281e13080000000000000000000000000000000000050e161d262d333b42464e5355585f626467696a6b6c6c6c6c68655d53483d3124180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161f282f35393a444646464646464642413d3730271e14090000000000000000000000040c131820283035383f4446494c4f50515151504e4c4947433c39352f281f18120c04000000000000000000000000000000000000000000000000000000020c1a242c34393d3e46464646464646463a3a3b46464646464646464639352f2820160c01000000000000000000000000000000000000040b141b222731363c4347484e5355585a5c5e5e5f6060605b59534b41372c2014080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161e24292c2d37393939393939393635312c261e150c0200000000000000000000000001070e161e24292d3337393c3f424344454443413f3c3b37322c29241d160d0701000000000000000000000000000000000000000000000000000000000008121a22282d303139393939393939392e2d2e3939393939393939392c29241e160d040000000000000000000000000000000000000000020a11171f252a31373a3c4347484b4d505151525353534e4d4841392f251a0f040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13191d20212b2d2d2d2d2d2d2d292825211b140c03000000000000000000000000000000040c13191b22272b2d2f3235363738373735322f2e2b26201d18130c0400000000000000000000000000000000000000000000000000000000000000000810171d2123242d2d2d2d2d2d2d2c2121212d2d2d2d2d2d2d2d2d201d19130c040000000000000000000000000000000000000000000000060b141a20262b2e31373a3c3e414344454546464642403d372f271d1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080d1113141e202020202020201c1b1915100902000000000000000000000000000000000002080d11171b1f202325282a2b2b2b2a282622211f1b15110d070100000000000000000000000000000000000000000000000000000000000000000000060c11151718202020202020201f14141520202020202020201413110d08010000000000000000000000000000000000000000000000000003090e151a1f21262b2e2f3134363738393939393534312c251d150b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e07000003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104060711131313131313130f0f0d090400000000000000000000000000000000000000000000060b0f121316191c1d1e1e1e1d1b191615130f0a0401000000000000000000000000000000000000000000000000000000000000000000000000000005080a0b13131313131313130707081313131313131313070704010000000000000000000000000000000000000000000000000000000000030a0f12151b1f21222527292b2b2c2d2d2d282724201a130b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e51442e23180c000003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506090c0f10111211100e0c0908060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002060a0f121515181a1d1e1e1f2020201b1b18140f09010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0ab9e9185786b544a4034281c10040003101d2a3643505d697683909ca9b2a5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000040607070706030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306071113131313131313130909070300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030608090b0e101112121313130f0e0c080400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0ac9f928579665c5144382c1f12060004111d2935414c566a7784909daab2a5998c7f7266594c3f3326190c000000000000000000000000000000000002050708070c101313141312100c060807050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060607070604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b1012131e20202020202020201615130f0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a96a3b0ac9f9386796d6053463a2d201308090713202c3945525d687884919eabb2a5988b7f7265584c3f3225190c00000000000000000000000000000003090e12141518181c1f2021201f1c17181414110e08020000000000000000000000000000000000000000000000000000000000000000000000000001040707060b0f1213141313100c070908060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171c1f202b2d2d2d2d2d2d2d2d23221f1b160f070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1623303d495663707d8996a3afafa49a887b6f6255483c2f241917161718212d3a4754606d7a8796a1adb1a4988b7e7165584b3e3225180b00000000000000000000000000060b0f141a1e20212523282c2d2d2d2c28232521201e1914100b0500000000000000000000000000000000000000000000000000000000000000000001080d11131418171c1f2021201f1c18191515120f0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c141c23282b2d373939393939393939302f2c272119100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7b8895a9b3b6ac978b7e7164564c413529252323232429343f4a5463707c8996a8b2b4ab968a7d7063574a3d3024170a0000000000000000000000020a11171b1f252a2d2e322e34383a3a3a38342e322e2d2a251f1c17100b040000000000000000000000000000000000000000000000000000000000040a0f13191d20212522282b2d2d2d2c28232622211f1b15100c0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e262e34383a4446464646464646463c3b38322b22190f04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a8797a1adb4a89b8e8175685d52453c3530302f302f353c44505c6673808d9aa6b3aea399887c6f6255483c2f22150900000000000000000001070b141b22272b30363a3b3f424045464746443f413f3b3936302d28221b160c070100000000000000000000000000000000000000000000000000030a0f161b1e24292c2d312d3338393a3a38342e332f2e2b261f1c18120b03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2630383f44465153535353535353534948433d342b21160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202c3945525d687885919eabb8ac9f92867a6d60584e46413e3d3c3d3e40454d57606d7885919eabb8ac9f9286796d6053463a2d2013070000000000000000030b12181d262d33373b4246484b4e4b51535453504a4e4b4746413b39332c272118120b030000000000000000000000000000000000000000000000060b151a21272c2f35393a3e413f444647464540423f3c3a37312c29231d150d09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e38424a50535e606060606060606056544f473d32271b0f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c566975828f9ca8b5aea2988c80736a6058524c4b4a494a4b4b51575f69727f8b97a1adb6aa9d908377665c5145382c1f130600000000000000050d151d24292f383f44464d5254585b545c6060605c545b5854524d49443e383229241d150d050000000000000000000000000000000000000000020a111720262b32383a4145474b4e4a50535453514b4f4c4847433c38342f271f1a140d050000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a545c606a6c6c6c6c6c6c6c6c6360594f43382c20160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1924303f4c5965727f8c98a6b0b4aa9f92877c6f6a615e565756565657555d60696e7b86929fa9b3b1a7998c807366544b4034281c1004000000000000050f171f272f353d41495053575e6165686a666d6d6d666a6865615e56555048443d352f271f170e05000000000000000000000000000000000000030c141c232831373d43484c5254585b545b6060605c555c5955534e47454039312a251f170f0700000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505c666d7779797979797979796f6b6054483d32271b0f040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4855616e7b88949fabb7aea39992857c736d6866646362636466676d737b849198a2aeb8ab9f95887c6f6255493c2e23180c000000000000050f172129313940454f535b6064696e72757779797a79797774726e6864615a544f454039312920170f0500000000000000000000000000000000040d151e262e343c43474f54565d6064676a666c6d6d676b6866625f5853514b433f3630292119100800000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798486868686868686867d6f63584e43382b20150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a46535f697683909ca6b0b5aba1979286807a767371706f707172767a7f859196a1aab4b0a69d9083766a5f54473b2e1d12070000000000050e172129333b434b515960656c70767b7f8184858687868584817e7b76706c636059514b433b322921170e040000000000000000000000000000040d161f2730383f444e53596063686d71747778797a79797775726f6a65605c555046423b332b221a11080000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505c66717e8b9693939393938f82766a6054473d32271b0f04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2b37424d5764707d8a949faab4b3a9a198928d86837f7e7d7c7d7e7f82858c9297a1a8b2b4aa9f948a7d7064584e43372b1f0b0000000000020b172029333b454d555d606b70787d83878b8e919298939892908e8b87837d77706b605d554c443b332920160b02000000000000000000000000030c161f283139424a50585f626b6f757a7e8183858687868684827f7b77726d67625a524d453d342b231a100700000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54606d7884919ea89f9f9f94897c6f62584e43372b20150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a26313c4955616c76829098a2acb5b3aaa29f98928f8c8a8989898a8c8f92989fa2a9b2b6aca2989083766c6155463c32261b0f00000000000a141d29323b454d575e676d747d838a90939a9b9d9fa2aaa29f9d9b99938f8a837d746d675e564d453b32281d140a0000000000000000000000000b151e28313a434b545c606a6f767c82868b8e9092939a9892918f8c88847f79716c615e574e463d352b22180e050000000000000000000000000000000000000000000000000000000000000000000000000b17232e3844505c66717e8b96a1acb0a69c8f82756a6054473c32261b0f04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2d3944505a626e7b86929aa4abb3b4aeaaa39f9c999796959697999c9fa2aaadb3b4aca49a92867b6e615a5044342a20150a0000000006111c262f3b444d575e696e79818990959c9fa4acaaacaeb4aeacaaaba49f9c95908880796e685e574d443a2f261b11060000000000000000000007121c27303a434c555d666d727c82898f92999a9d9f9fa4a39f9e9b9995918b847e766e6960584f473d342a20160c02000000000000000000000000000000000000000000000000000000000000000000000006111c28343f4a54606d7984919ea8b2aa9e94897c6f62584e43372b20150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28333e47535f69717e889399a2aab0b9b4aeaca9a6a4a3a2a3a4a5a9acaeb4b8b1aaa29a93887e71695f53483e3322190e04000000000b17222d38424c565e696e7b838e939da0a7acafb6b1aeadadadaeb1b5afaca7a09a938d837a6e695e564c41382d22170b020000000000000000030d18232e39424c555d676d787f868f949b9fa3abaaabacafaeacaaa8a7a09d96918b827b6f6a60594f463c32281e13080000000000000000000000000000000000000000000000000000000000000000000000000c17232e3844515c66727e8b96a1adb0a69c8f82756a5f54473c32261b0f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222b37424d57616c727f8792989ea6acafb6b8b6b2b1b0afb0b1b2b5b8b6b1aca79f9892887f726c61574d42362c22100700000000030f1c28333f4a545e686e7b8490959da5acb1aeaca8a4a1a0a0a1a2a4a8acaeb1aca49f9590847b6e685d53493f33271f140900000000000000010b151f2834404a545d676d79828c92989fa6acaeb4b4b0afaeaeb0b2b5b1aca9a19e948f857c706b60584e443a3025190b02000000000000000000000000000000000000000000000000000000000000000000000006111c2834404a54606d7984919ea8b2aa9e94887c6f62584e43372b20150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e1a26313c45505a626d727d858f949c9fa4acabadb3b0b1b2b1b1b5aeacaaa7a09d9590867e726d625a50453c31241a10000000000006121f2b3844505b666e7a849196a0a7afafaaa29f9b979593939495979b9fa2aaafafa79f9691837a6d655b50443b30251a0e0200000000000007121d27313944515c666d79838f949fa3aab0b2adaba7a4a2a1a2a3a5a9abb1b2ada69f9792867d706a5f564c41362a1d140a0000000000000000000000000000000000000000000000000000000000000000000000000c18232e3945515c66727f8b96a1adb0a69b8f82756a5f53473c31261b0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202a333e48515b626c707b82898f939a9c9fa2a9a4a4a5a5a4aba39f9d9995908a837c716c625b51483e332a1f120800000000000613202d394653606c78828f96a0a8b1aea59d98928e8a88878687888b8e92989fa3abb1a8a0958f82776c60574d42362a1f14080000000000000c18232f39434f59606d78828f959ea6aeb3ada9a19e9a9795949596999d9fa7abb0b0a9a19892867c6f685e52463e2f261b1106000000000000000000000000000000000000000000000000000000000000000000000007121c2834404b54606d7984919ea9b3ac9f93877c6f62584e43372b20150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e18212c363f49515961696e757d82878c8f9297969798989897969992908d89837e786e6a615a51493f362c21180e0000000000000a1623303d495663707c89919ca4adaaa29f938e86817e7b7a7a7a7b7e81858d9299a2aab1a89f948b7f72695e52463b3025190e020000000004101c2934404b55606b74808d949fa7b0b1a9a19e96918e8a898888898c90959c9fa6afb3aaa29891847a6d61594f41382d22170b0000000000000000000000000000000000000000000000000000000000000000000000000c18232e3945515c67727f8b97a1adafa49a8f82756a5f53473c31261a0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f1a242d373f474f575e616b70767b7f828587898a8b8b8b8b8a888683807c77716c655f5850483f372d241a0f060000000000000916222f3b4854606b727f8c929ca4a298928a817a75716e6d6d6e6f71757a80879298a2abb0a69f92867b6e61564d41362a1e11050000000006131f2c3845515c67707d89929da6b0b0a79f97918b84817d7c7b7b7d7f83888f949fa4acb4aaa1968e81756b6153493f33271b0f03000000000000000000000000000000000000000000000000000000000000000000000007121d2834404b55606d7985919ea9b3ac9f93877c6f62584e43372b20150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121b242d353e454d53596063696e7276787b7c7d7e7f7e7e7d7b7977736f6a64605b534e463e362d251b1208000000000000000713202c38444f59636d73808c929c9792867d746e6864626060616264686d747e869299a4afaea2988d8074685e5246392d20140800000004101c2834404a54606d7984919ea4aeb0a69f9590857f7974716f6e6f7072767c828c939aa4afb2a99e938a7d70655b5044372b1f13080000000000000000000000000000000000000000000000000000000000000000000000000c18232e3945515c67727f8c97a1adafa49a8e81756a5f53473c31261a0e0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b232c333b42464f54575f616569696e6f7171727271706f6d6766626058535049413c342c241b1309000000000000000004101b27323d47515b636d73808d9292857c706c615e565554535455565e616c707d87939fa8b2aa9f92867b6e6154473b3024190d01000006121f2c3844515c66727f8b96a1acb2a89f948f837a726d666462616263666a6f767f88939fa4aeafa59d9083786c6053463a2f24190d01000000000000000000000000000000000000000000000000000000000000000000000007121d2934404b55606d7985929ea9b3ac9f93877c6e62574e42372b1f15090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009111a212931363d44484d535559575e616364656565646362605c5556544e46443f382f2a221b1209010000000000000000000b16212b353f49525b636e74808d867c6f6a6159524c48474747484c525a616b73808c96a1adaea3988c7f7265564c4135291d110400000713202d3a4653606d7984919ea8b2aca0968f82796e68605c54565555565860626d737e8b929ca7b1aca0958a7d7064564c4135291d11040000000000000000000000000000000000000000000000000000000000000000000000000c18232f3945515d67727f8c97a1adafa4998e81756a5f53473c31261a0e0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080f171f252a32383b4246484c4d5354565758585858575553514b4947433d37332d261d180f090000000000000000000000040f19232e374049525c646e74817e716a60584f46413b3a3a3b3c41465059606d7984919eabb4aa9d908376685d5245392c20130700000a1724303d4a5763707d8a96a1adb0a69d91847a6d675e56514a4948484a4e545b636c73808c95a0acb1a79b8f8275685d5245392c20130600000000000000000000000000000000000000000000000000000000000000000000000007121d2935404b55606d7985929ea9b3ab9f93877b6e62574d42372b1f14090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141a21272c31363a3b3f424648494a4b4c4b4b4a484645403c3b37322b27221b140b060000000000000000000000000007111c252e37404a525c646e74716c61584e463e36302d2d2e30363e45515c66727f8c98a8b2ab9f95877a6d6054473a2d2114070005121e2a36424d576874818e9ba8b2aa9e94897c6f685d554c44403c3b3c3d4347515a606c7883909da9b3ac9f92867a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000010c18242f3945515d67727f8c97a2adafa4998e8175695f53473b31261a0e03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e161b1f262a2d2e31363a3b3c3e3e3f3f3e3d3c3a38342e2e2b271f1b17110a020000000000000000000000000000000a131c252e38404a525c646764615a50463d342a25212021252a34404b54616e7b8796a0acb1a796897d706356493d3023160a000714202d3a46525e697885929eabb5ab9c8f82756b60564c433b342e2e2f32374044505b66707d8a97a1adaea3988a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000007121d2935404b55606d7a85929ea9b3ab9f92877b6e61574d42362a1f140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b10141a1e2122252a2d2e303132323231302f2d2c2823221f1b160f0b060000000000000000000000000000000000010a131c262e38414a52585a585650483e342b221914141419232e3946525e697784919daab2a5988c7f7265594c3f3226190c000815212e3b4854616e7b8797a1adaea3998a7d7064594f443a3028232222272b333f4a54606c7885929eabb4aa998c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3945515d67737f8c97a2adafa3998e8174695f53463b31261a0e03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e1214151a1e21212324252525252422201f1c1815130f0a030000000000000000000000000000000000000000010a141d262f3841474c4e4b49453e362d221910080708121d2a36424d576875828f9ba8b3a6998d8073665a4d4033271a0d000a1724303d4a5763707d8a96a9b3ac9f92867a6d6054473d32281e1815151b222d3844505b6674818e9ba7b4a89b8f8275685c4f4235291c0f000000000000000000000000000000000000000000000000000000000000000000000000000007121d2935414b55606d7a85929faab3ab9f92877b6e61574d42362a1f140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507090e12141516171819181817151313100c0706030000000000000000000000000000000000000000000000020b141d262f363c40413e3d39342d241b10070000000e1a2530414e5b6774818e9aa7b4a79a8d8174675a4e4134271b0e000b1825313e4b5864717e8b97a4b1aa9e918477675d5145392b20160c070a111c28333f4a5466727f8c99a5b2a99c908376695d5043362a1d100000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3a45525d6873808c98a2aeafa3998e8174695f53463b31251a0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050708090b0b0c0c0b0a0907060400000000000000000000000000000000000000000000000000000000020b141d242b30333431302d28221b1209000000020b142834414e5b6774818e9aa7b4a79a8e8174675b4e4134281b0e000c1925323f4c5865727f8b98a5b2a99c90837669554b413529180d0400000b17222d3e4b5864717e8b97a4b1aa9d9184776a5e5144372b1e1100000000000000000000000000000000000000000000000000000000000000000000000000000007131d2935414c56606d7a85929faab4ab9f92877b6e61574d42362a1f1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b131a1f2426272524211d171009000105070b141d2a36424d576975828f9ca8b3a6998d8073665a4d4033271a0d000c1926323f4c5965727f8c98a5b2a99c90837669544b4034281c10040000061824313e4b5764717e8a97a4b1aa9d9184776a5e5144372b1e11000000000000000000000000000000000000000000000000000000000000000000000000000000010d19242f3a45525d6873808d98a2aeafa3998e8174695e53463b30251a0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607070706030000000000000000000000000000000000000000000000000000000000000000000000000004080e14171a1b181715110c1010080d1113181d262f3846535f697784909daab2a5998c7f7266594c3f3326190c000b1825313e4b5864717e8b97a4b1aa9d918477665c5145382c1f150a0408101926323f4c5965727f8c98a5b2a99d9083766a5d5043372a1d100000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2935414c56616d7a86929faab4ab9f92867b6e61574d42362a1f14090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050708070c101313141312100c0608070502000000000000000000000000000000000000000000000000000000000002091015191b1c1d1d1d1d1d1d1d1d1d1d191e2024292f38424c56616e7b8895a0acb2a8968a7d7063574a3d3024170a000a1724313d4a5764707d8a97a9b3ac9f9285796d6053463c30261c14111319222b37434e586774818d9aa7b4a89c8f8275695c4f4236291c0f00000000000000000000000000000000000000000000000000000000000000000000000000000000010d1924303a46525e6873808d98a2aeaea3998d8174695e52463b3025190e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e12141518181c1f2021201f1c17181414110e08020000000000000000000000000000000000000000000000000000030c141b2125282929292929292929292929252a2d2f353a414a545e68727f8c99a7b1aca096877a6e6154473b2e211408000815222f3b4855626e7b8897a2adaea298897d7063574d42382e26201d20252a343c4754606a7784919eaab5ab998d8073665a4d4033271a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2935414c56616d7a86929faab4ab9f92867b6e61564d42362a1e14080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f141a1e20212523282c2d2d2d2c28232521201e1914100b050000000000000000000000000000000000000000000000020c151e262c313435363636363636363636363036393a40454c535b666e7a85929fabb5ab9d918477685e5246392d201407000613202d394653606c7885929fabb4aa9b8e8174695f544a3f38302c292c30363e46505a626f7c8896a0acafa3998a7d7164574a3e3124170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000020d1925303a46525e6873808d98a2aeaea3998d8074695e52463b3025190e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171b1f252a2d2e322e34383a3a3a38342e322e2d2a251f1c17100b0400000000000000000000000000000000000000000009141e2730373d414243434343434343434343434146474b51565e656c78818f97a2adafa4998c807366564d41362a1e11050005121f2b3744505b6575828f9caab4ac9f92877b6e665c504a423c3935393a41464f58616c76828f9ca8b2ac9f92867a6e6154473b2e21140800000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2a36414c56616e7a86929faab4ab9f92867b6e61564c41362a1e140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070b141b22272b30363a3b3f424045464746443f413f3b3936302d28221b160c070100000000000000000000000000000000000004101b26303942494d4f50505050505050505050504c5254555d60686d77818e939ea9b3ab9f93877b6e6155483b3025190e0200030f1b27333f495364717e8a98a2aeafa3998f82786d605c544e47454145474c5259616a717e8a949fabb1a79c8f8276685e5246392d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d1925303a46525e6874808d98a3aeaea3988d8074685e52463b3025190d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181d262d33373b4246484b4e4b51535453504a4e4b4746413b39332c272118120b0300000000000000000000000000000000000915212c37424b54595c5c5c5c5c5c5c5c5c5c5c5d565e6164676d727a818e939da5afafa3998e8175695f53473a2d1f14080000000b17222d3a4753606d7985929fa9b3ab9f948d80746d665f5854524c5254565e616b707c86929fa6b0aca0958a7e7164564c41362a1e11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2a36414c56616e7b86929fabb4aa9f92867a6e61564c41362a1e1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d151d24292f383f44464d5254585b545c6060605c545b5854524d49443e383229241d150d05000000000000000000000000000000000c1925313d49545d6568696969696969696969696a6b686d7074797e858f939da5afb1a79f92877b6e62574d42372b1e0d020000000613202c3945515d6773808d97a2adb0a69d928d80786f6a64605d565d6064686d737d859298a2aeafa59d9183786d6053463b3025190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d1925303b46525e6974808d99a3aeaea3988d8073685e52463a3025190d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f171f272f353d41495053575e6165686a666d6d6d666a6865615e56555048443d352f271f170e050000000000000000000000000000020e1b2834414d59656f75767676767676767676767677787a7d80858b92979ea5afb2a8a0958c80736a5f53453c31261a0e0000000004101d2935404b55606d7a85929fa5afaea49d928d827c75716d686b686d70747a80879297a2aab2a89e938a7d70665c504438291e140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141e2a36424d56616e7b86929fabb4aa9f92867a6e61564c41362a1e1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f172129313940454f535b6064696e72757779797a79797774726e6864615a544f454039312920170f0500000000000000000000000000020f1c2935424f5c68758183838383838383838383838485878a8d92979ea1a9afb2a9a1969083786d60574e42332a1f150900000000010d18242f3945525d68717e8b939ea7b1aea49d948f87817d7a7878797a7d81858d9399a2a9b3aaa1968f81756c61544a3f3428170d02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1925303b46525e6974818d99a3aeaea2988d8073685e52463a3025190d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e172129333b434b515960656c70767b7f8184858687868584817e7b76706c636059514b433b322921170e0400000000000000000000000004111e2a3744515d6a77848f8f8f8f8f8f8f8f8f8f90919297979a9fa2a9adb3afa8a09791847b6e665c51453c3121180e03000000000007121d2935414c56626c75818e95a0a8b1aea69f99928e8a87858485878a8d92989fa4abb3aaa29891847a6d615a5042382e231705000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2a36424d57616e7b86929fabb4aa9f92867a6d61564c4135291e1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b172029333b454d555d606b70787d83878b8e919298939892908e8b87837d77706b605d554c443b332920160b02000000000000000000000003101c2936434f5c6976828f9c9c9c9c9c9c9c9c9c9d9e9ea1a9a7abadb3b2aca59e9691857c6f695e544a40332a200f06000000000000010d19242f3a43505a606d7a8390969fa7afb0aba39f9b979892919298979a9fa2aaafb1a9a19892867c6f685d52473e30261c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25303b46535e6974818e99a3afaea2988d8073685e52463a3024190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d29323b454d575e676d747d838a90939a9b9d9fa2aaa29f9d9b99938f8a837d746d675e564d453b32281d140a0000000000000000000000010e1b2834414e5b6774818e9aa7a9a9a9a9a9a9a9a9aaabadb3b3b5b1aca8a19e938e847b6f6a5f574d42392e21180e000000000000000008131e28313f45525d686e7a8490959fa4acb1afaca8aaa29f9e9fa2aaa7abaeb4aea79f9791867d706a60564c41352c1e140a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2a36424d57616e7b87929fabb4aa9f92867a6d61564c4135291e13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c262f3b444d575e696e79818990959c9fa4acaaacaeb4aeacaaaba49f9c95908880796e685e574d443a2f261b110600000000000000000000000d1a2633404d596673808c99a6b3b6b6b6b6b3aeaeaeaeb3adaba9a8a09d96918a817a6e695f584e453b30271c0f060000000000000000010c161f2935414c565e686e7a838d939aa0a7b1b9b4b3aeababacaeb4b4b8b4aaa29f9590857d706b60584e443a30231a0c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25313b46535f6974818e99a3afaea2988d8073685d52453a2f24190d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d38424c565e696e7b838e939da0a7acafb6b5afacacaeb4b1b5afaca7a09a938d837a6e695e564c41382d22170b02000000000000000000000b1825323e4b5865717e8b98a4b1beb6aea8a6a2a2a2a1a9a19e9c9995918b847e756d685f574e463c33291e150b00000000000000000000040d19242f3a444c565e686e7880889095a0acb8c1bebab8b7b8babfc0baaea298928b837b6f6b60594f463c32281e110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2a36424d57616e7b87929fabb4aa9f92857a6d60564c4135291e13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a545e686e7b8490959da5acb1adaba7aba39f9fa2aaa4a8acaeb1aca49f9590847b6e685d53493f33271f1409000000000000000000000a1724303d4a5763707d8a96a3b0b9aea49c9a959595959497928f8c88847e79716c615e564d453c342a21170c03000000000000000000000008131e28323b444d565e666d747d83909daab7c3cac6c5c4c5c6cac5b8ac9f92857f776e6960594f473d342b20160c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a26313b46535f6975818e99a4afaea2988c8073685d52453a2f24190d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505b666e7a849196a0a7afaea9a29f9a969992929894979b9fa3abafafa79f9691837a6d655b50443b30251a0e020000000000000000000915222f3c4855626f7b8895aab4b5a89c928d8888888887868582807c77716d66615a524c443c332a22180f05000000000000000000000000010c162029323b444d575f696e7a828f9ca9b6c2c5c2bfbebfc1c5c5b9ac9f92877f776d665c50443f352b22190e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2b37424d57626e7b87939facb4aa9f92857a6d60554c4135291d1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202d394653606c78828f96a0a8b1aaa29f97928e8a87868586878b8e92999ea5afb1a8a0958f82776c60574d42362a1f14080000000000000000000714212e3a4754616d7a8798a2aeb3a69a8d807c7b7b7b7a7a7876736f6a65605c545046413a322a21181006000000000000000000000000000004101c2934404b555e696e7b848f949fabb7bab8b5b2b2b2b5b8b9bbafa399928c81786d605b51463c31261b0f040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a26313c47535f6a75818e9aa4afada2978c7f73675d51453a2f24180d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1623303d495663707c89919ba3ada7a098928c85817d7a79797a7b7e81868e939fa4acb1a89f948b7f72695e52463b3025190e0200000000000000000713202d3946525d687985929facb3a69a8d80736f6f6e6e6d676966625f5853514a423e35302820180f0600000000000000000000000000000006131f2c3845515c676e7b8491969fa6b0b4aeaca8a6a5a6a8abadb3b5aba39f938e81756d63584e43372b21160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2b37424e57626e7c87939facb3a99f92857a6d60554b4135291d13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3b4854606b727f8c919ca39f9590867f7a74706e6c676d6e71757b818c939aa4afb0a69f92867b6e61564d41362a1e1105000000000000000005111d2935414c566b7784919eaab4a89b8e817568626261605d555955534e464440393029251e160e0600000000000000000000000000000005121e2a36424d57606d79839096a1a8b0afaaa29f9b9998999b9ea2a9aeb4afa59e938c7f726a5f53473d32271b0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a26313c47535f6a75828e9aa4afada2978c7f73675d51453a2f24180d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202c38444f59626d727f8c919c9490837b736d676361605c606164696e757f88939fa5afaea2988d8074685e5246392d2014080000000000000000010d19243043505c6976838f9ca9b6a99c8f8376695c555453514b4d4847433c38342e271e19130c04000000000000000000000000000000000714212d3a46535f6973808d959fa9b2aca49f98928f8c8b8c8e92979fa2aab2afa59f92877c6f62594f44382c1d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202b37434e58626f7c87939facb3a99e92857a6d60554b4035291d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101b27323d47515b636d737f8c9290827a6e69605d555453515354575f616d727f8b939da9b3aa9f92867b6e6154473b3024190d010000000000000000081b2835424e5b6875818e9ba8b4aa9d9184776a554b47474540403c3a37312c28231c150c08020000000000000000000000000000000004111d2935404b55616e7b86929fa7b1aba39a938d86827f7f7f82858b9298a1a8b2afa3999083766b605448392e23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a26313c47535f6a75828f9ba6b0ada2978c7f72675d5145392f24180c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353f49515b636d737f8c847a6d685f57514b47464547484d535b626d74818e97a2adaea3988c7f7265564c4135291d110400000000000000000d1a2733404d5a6673808d99a6b3ab9f928578675d51453a39352f2f2e2b261f1c18120b030000000000000000000000000000000000000613202c3945515d6774818d99a3aeafa3999288807a7573727375797f869196a1a9b3ab9f94897c6f63554b4034281c10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202b37434e58626f7c88949eaab3a99e9285796d60554b4035291d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19232d373f49515b636d73807d6f685e564d45413b39383a3b4246515b606d7a85929fabb4aa9d908376685d5245392c20130700000000000000000c1925323f4c5865727f8b98a5b2aea298877a6d6054473a2d292422211f1b15100c0700000000000000000000000000000000000000000714202d3a4753606d7a86929fabb1a79f92877e746d68666566676d727c849197a2adb0a69b8e8175675c5145382c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000105070709090909090909090909090f1b26313c47535f6a75828f9ca6b0ada1978c7f72675d5145392f24180c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b252e374049525b636d736f6b60564c433c352f2d2c2d31363f45525d68737f8c99a8b2ab9f95877a6d6054473a2d21140700000000000000000b1724313e4a5764717d8a97a4b0b4aa95887b6e6255483b2f22181515120f0a04000000000000000000000000000000000000000000000b1724313e4a5764717d8a98a2aeab9f958b7f726c605d5658555c606a6e7c85929faab4ac9f9285796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000002080d11131416161616161616161616161616202b37434e58626f7c89949eaab3a99e9285796d60554b4035291d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131c252e374049525b63666360594f443a312924201f20262a35414c56616e7b8896a0acb1a796897d706356493d3023160a00000000000000000916232f3c4956626f7c8995abb5afa396897c706356493d302316070909090909090908070502000000000000000000000000000000010e1a2734414d5a6774808d9aaab4aa9d9083786c605a524c4c4b51575f6a727f8c98a2aeaea298897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000040c13191d2021222222222222222222222222222226323c4754606a76828f9ca6b0ada1978c7f72675d5145392f23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131c252e37404952575956544f473d32281f181313141a242f3a46535f697784919eaab2a5988c7f7265594c3f3226190c00000000000000000815212e3b4854616e7b8799a3afb1a4978a7e7164574b3e31241816161616161616161514120e09020000000000000000000000000003101d2a3643505d697683909ca9b5ab978b7e71655b5045413f40454e57606d7986929facb4aa988b7e7265584b3f3225180c000000000000000000000000000000000000000000000000000000000000000000000000040e161e24292d2e2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f37434e58626f7c89949fabb3a99e9185796d60554b4034291d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131c252e3740474b4d4948443d352b20160d070609131e2a36424d576975828f9ca8b3a6998d8073665a4d4033271a0d00000000000000000713202d3a4653606d7986929facb2a5988c7f7265594c3f322622222222222222222221201e1a140d0500000000000000000000000005121e2b3845515e6b7884919eabafa399877b6e6153493f3530343c45515d6776828f9ca9b3a6998d8073665a4d4033271a0d0000000000000000000000000000000000000000000000000000000000000000000000020c1620283035393a3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3d4754606a76828f9ca6b0ada1978b7f72675c5145392e23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131c252e353b3f403c3b38322b23190e040000010e1a2631414e5b6874818e9ba7b4a79a8d8174675a4e4134271b0e000000000000000006121f2b3844505c667885919eabb3a79a8d8074675a4d41342f2f2f2f2f2f2f2f2f2f2e2d2a251f170f05000000000000000000000005121f2c3845525f6b7885929eabac9f9286796c605346392d242935404b556774818e9aa7b4a79a8d8174675a4e4134271b0e010000000000000000000000000000000000000000000000000000000000000000000008131e28323a414647494949494949494949494949494949494949494e58636f7c89949fabb3a99e9184796d60554b4034281c110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131c242a2f3233302f2c2721191107000000030c152834414e5b6774818e9aa7b4a79a8e8174675b4e4134281b0e000000000000000003101c28343f4a546a7683909da9b5a89b8e8275685b4f423c3c3c3c3c3c3c3c3c3c3c3b3a36302921170d020000000000000000000005121f2c3845525f6b7885929eabac9f9386796c605346392d242834404b556774818e9aa7b4a79a8d8174675a4e4134271b0e01000000000000000000000000000000000000000000000000000000000000000000010d1924303a444c5254555555555555555555555555555555555555555555606b76828f9ca6b0ada1978b7f72675c5145382e23170c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a12191e23252623221f1b160f07000306090c151e2a36424d576975828f9ca8b3a69a8d8073675a4d4034271a0d0000000000000000000b17232e424f5c6875828f9ba8b5a99c908376695d504949494949494949494949494846423b33291f14090000000000000000000005111e2b3844515e6b7784919eaaafa499877b6e6153493f352f323a45515c6776828f9ca9b3a6998d8073665a4d4033271a0d0000000000000000000000000000000000000000000000000000000000000000000005111d2935414c565d616262626262626262626262626262626262626262626263707d89949fabb2a99e9184796d60544a3f34281c1003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d1316191a1615130f0a10060b1012131a1e27303846535f697784909daab2a5998c7f7266594c3f3326190c000000000000000000061a2734414d5a6774808d9aa7b3aa9e9184776b565555555555555555555555555554524d453b30251a0e0200000000000000000003101d293643505c6976838f9ca9b5ab988b7e71655b5045403c3d444d56606d7986929facb3a9988b7e7265584b3f3225180c000000000000000000000000000000000000000000000000000000000000000000000713202d3946525d686d6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f7683909ca9b6ada1968b7e72665c5044382c1f12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c111417171d1d1d1d1d1d1d1d171c1f20252a3039424d56616e7b8895a0acb2a8978a7d7064574a3d3124170a0000000000000000000c1926333f4c5966727f8c99a5b2ac9f928579686262626262626262626262626262615e574d42362a1e1205000000000000000000010d1a2734404d5a6773808d9aa9b3aa9d9083786c605a514b494a4e565e69727e8b98a2aeada297897c6f6256493c2f231609000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7f8b98a5b2b2a89e9184796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810171c212324292929292929292923282b2d31363c424a545e69727f8c99a7b1aca096877b6e6154483b2e2115080000000000000000000b1824313e4b5764717e8a97a4b1aea398877a6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6e695e52463a2d201407000000000000000000000a1724303d4a5763707d8a97a2adaca0958b7f726c605d5556565860686e7b85919eaab4ab9f9285796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e888888888888888888888888888888888888888888888888888b919ba7b3b9ada196877a6d6054473a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121a22282d303136363636363636362e34383a3c42464e545c666e7b85929fabb6ac9e918477695e53463a2d2114070000000000000000000a1623303d495663707c8996a3afb4aa978a7e7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b6e6154483b2e211508000000000000000000000713202d3a4653606d7985929faab1a79f92877e736d67646363656a6f7a839097a1adb0a69b8e8174675c5145382c1f1306000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b959595959595959595959595959595959595959595959595989ba3adb8bdb2a893877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101a242c33393c3e4343434343434343433f4446484d53585f666d78828f98a2aeafa49a8d807367574d42362a1e12050000000000000000000815222f3b4855626e7b8895a9b3b2a69a908a8888888888888888888888888888888174675a4e4134271b0e0100000000000000000006131f2c3845515c6674808d98a2aeafa3999287807974716f7072767c8490959fa9b3aa9f94897c6f62554b4034281c1004000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a5a7adb5bfbaada093877a6d6054473a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17222c363e45494a5050505050505050504a505355575e616a6e78818f949eaab3ab9f93877c6f6255483c31251a0e020000000000000000000714202d3a4753606d7a8697a2adbaaca29a9795959595959595959595959595958d8174675a4e4134271b0e0100000000000000000004101c2834404b54616e7a86929fa7b1aba399938c84807d7c7d7e828991969fa7b1aea3988f82766a605443392e23180c00000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4afafafafafafafafafafafafafafafafafafafafafafb2b3b8b9b9b9ada093877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111c28333e485055575c5c5c5c5c5c5c5c5c545c606265696e737c838f939ea6b0afa3998f82756a5f53473a2e1f14090000000000000000000006131f2c3945515d677885929fabb8b4aca6a3a2a2a2a2a2a2a2a2a2a2a2a2a29a8d8174675a4e4134271b0e01000000000000000000000c18232e3946525e68727f8c959fa8b2aba49f97918d8a89898b8f949da0a8b1afa59f92867c6e62584e4330271d120700000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4acacacacacacacacacacacacacacacacacacacacacacacacacacacacaca093877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212d3945505a61646969696969696969696a666d6f72757b808690959ea5afb1a79f92877c6f62584e43372b1f0d030000000000000000000004101d2935404b556a7784909daab7b9b6b2b0afafafafafafafafafafafafa79a8d8174675a4e4134271b0e010000000000000000000007121d2a36414c56606d78839096a0a8b0afa9a19e9a979696989c9fa6acb2afa59d938c7f726a5f53463d321e150b0000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b989f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f93877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303c4955616c717676767676767676767678797b7f82878d92989fa7afb3a9a0958d80736a5f53463c31261b0f0000000000000000000000000c18242f434f5c6976828f9ca9acacacacacacacacacacacacacacacacaca79a8d8174675a4e4134271b0e0100000000000000000000000e1925303b44505c666e7a8491969fa6aeb2adaba7a4a2a3a5a9abb0b1aba39f938e81746d63584e43342b210c030000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b939393939393939393939393939393939393939393939393939393939393939393877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717e828383838383838383838586888b8f92999fa3aab1b2a9a1979083796d60584e43342a20150a000000000000000000000000071b2834414e5b6774818e9a9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9a8d8174675a4e4134271b0e01000000000000000000000008141e28343f4a545e686e7b8490949fa2aaacb2b3b0afb0b1b5afaca7a099928c81786d605b51463c3122190f000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e86868686868686868686868686868686868686868686868686868686868686868686867a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d79848f8f8f8f8f8f8f8f90919299989c9fa3abaeb4b0a8a19792857b6e675d51463c3222180e030000000000000000000000000d1a2633404d596673808c9393939393939393939393939393939393939393938d8174675a4e4134271b0e010000000000000000000000020b17232e38424c565f696e7a828c92989ea1a8a7a9a9a9a8aba49f9c9590877f756d665c51493f342a201007000000000000000000000000000000000000000000000000000000000000000000000000000b1724313d4a56626c71797979797979797979797979797979797979797979797979797979797979797979797976685d5245392c2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c666f7c87929c9c9c9c9c9c9d9e9fa3aba8acafb5b2ada69e9691857c6f695f554b40342a201006000000000000000000000000000b1825323e4b5865717e86868686868686868686868686868686868686868686868074675a4e4134271b0e0100000000000000000000000006111c26303b444d575f686e787f858c9196989b9c9d9c9c9a99938f8a837c736d605c544a40372d22180e00000000000000000000000000000000000000000000000000000000000000000000000000000915212e3a45505a62656c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c5d564c4135291d11040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b54606a73808d95a0aba9a9a9a9abacafb5b5b6b2aca8a19e948f847c6f6a60574d43392f22180e00000000000000000000000000000b1724313d4a56626d717979797979797979797979797979797979797979797979746e64584c4033271a0d01000000000000000000000000000a141e29323c454d565e666c727a8084898c8e8f90908f8d8b86837d776f6a635b514a42392e251c0f06000000000000000000000000000000000000000000000000000000000000000000000000000005111d29343f4850565860606060606060606060606060606060606060606060606060606060606060606060605f524c443a2f24190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e39424e58606d79839199a3afb6b6b6b8b9b4aeaca9a8a09e96918a827a6f6a60584e453b31271d100700000000000000000000000000000915212e3a45505a62656c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c67645c53483c3024180b0000000000000000000000000000020c17202a333c444c545b60686d73787c7f8182838382807e7b76706c6260585144403930271c130a000000000000000000000000000000000000000000000000000000000000000000000000000000010c18222d363f454a4b53535353535353535353535353535353535353535353535353535353535353535353535345413a32281e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27303c45515c676f7c87929fa7b1bdc3b9b1aaa29f9d9996918b847e756d685f584e463d33291f150b00000000000000000000000000000005111d29343f4850565860606060606060606060606060606060606060606060605a58534a41362b201408000000000000000000000000000000050e18212a323b424a50565d60656c6f72747676767574716e6864615a544e4640342e271e150b010000000000000000000000000000000000000000000000000000000000000000000000000000000006111b242d343a3d3e46464646464646464646464646464646464646464646464646464646464646464646464639352f2820160c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e2834404b55606a73808d95a0abb5bcb1a7a09892908d89847f79716c615e564e463d342b21170d03000000000000000000000000000000010c18222d363f454a4b53535353535353535353535353535353535353535353534e4c4841382f251a0f0300000000000000000000000000000000060f1820292f383f444c52535b60626568696a69696764615e56555047433c3428231c150c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b22292e31323939393939393939393939393939393939393939393939393939393939393939393939392c29241e160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c18232e39434e58606d79839199a3afb8aca095908683807c78726d67615a524c443c342b22190f06000000000000000000000000000000000006111b242d343a3d3e464646464646464646464646464646464646464646464641403c362f261d1308000000000000000000000000000000000000060e171d262d333a414549505356595b5c5d5d5c5a5854524d49443e37322b2218120b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000911181d2124252d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d201d19130c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27303d45515c676f7c87929fa7b1aa9d90837876736f6c66605d555046413a322a221910070000000000000000000000000000000000000009121b22292e313239393939393939393939393939393939393939393939393433302b251d140b0100000000000000000000000000000000000000050b141c22283035383f4446494c4e4f50504f4d4b4746413b39332b27201910070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c1115171820202020202020202020202020202020202020202020202020202020202020202020201413110d08010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e2834404b55606a73808d95a0abaca0958b7f726963605b54514b433e353028201810070000000000000000000000000000000000000000000911181d2124252d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d272724201a130b02000000000000000000000000000000000000000000020a11171e24292d3337393c3f4143434342413e3b3936302d28221b150e07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105090b0b1313131313131313131313131313131313131313131313131313131313131313131313070704010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c18232e39434e58606d79839199a3afa79f92867b6e655b504a4540393129251e160e060000000000000000000000000000000000000000000000060c1115171820202020202020202020202020202020202020202020201b1a18140f0801000000000000000000000000000000000000000000000000060b13191b22272b2d2f32353637363634312e2d2a251f1c170f0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27303d45515c676f7c87929fa8aea2988f82776c60574d41382f271f19130c04000000000000000000000000000000000000000000000000000105090b0b13131313131313131313131313131313131313131313130e0d0b080300000000000000000000000000000000000000000000000000000002080d11171b1f20232628292a2a29272521201e1914100b05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e2934404b55606a73808d96a0abaa9f948b7f72695f53493f33271d140a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f121316191b1c1d1d1c1a181414110e0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c18232f39434e58606d79849199a4afa69f92867b6e655b50443b2f261b11060000000000000000000000000000000000000000000000000000000000000004080a0b131313131211100e0c0a07060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506090c0e1010100f0e0b0807050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27313d45515c676f7c87939fa8aea2988f82776c60574d41382d22170b0200000000000000000000000000000000000000000000000000000000050c111417172020201f1f1e1d1b19161413100c07030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151f2934404b55606a73808d96a0abaa9f948b7f72695f53493f33271d140a0000000000000000000000000000000000000000000000000000000810171c2123242d2d2d2c2b2b2a282523201f1c18120f0b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205070d18232f39434e58606d79849199a4afa69f92867b6e655b50443b2f261b11060000000000000000000000000000000000000000000000000008121a22282d3031393939393838373532302d2c29231f1c17110a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080e111414161d27313d45515c676f7c87939fa8aea2988f82776c60574d41382d22170b02000000000000000000000000000000000000000000000005101a242c33393c3e46464646454443413f3d3a38342f2b28221c140b080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191e20212222222934404b55606a73808d96a0abaa9f948b7f72695f53493f33271d140a00000000000000000000000000000000000000000000000c17222c363e45494a535353525251504e4c494745403938332d261d19130c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171e252a2d2e2f2f2f2f2f39434e58606d79849199a4afa69f92867b6e655b50443b2f261b110600000000000000000000000000000000000000000004111c28333e485055576060605f5e5e5d5b585653514b46443f382f29251e160e07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d1720293036393b3c3c3c3c3c3c3d45515d676f7c87939fa8aea2988f82776c60574d41382d22170b0300000000000000000000000000000000000000000814212d3945505a61646c6c6c6c6b6b6a686563605c5553504a423d35302820191008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141e29323b41464749494949494949494b55606b74808d96a0abaa9f948b7f72695f53493f33271f140900000000000000000000000000000000000000000a1723303c4955616c71797979797877767472706d6763605b544f46413a322b221a1108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1925303b444c52545555555555555555555559606d79849199a4afa69f92867b6e655b50443b31261a0e02000000000000000000000000000000000000000b1724313e4a5764717e86868685858483817f7c7974706c666059524c443c342c231a1107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414c565e61626262626262626262626262676f7c87939fa9aea2988f82776c60574d42362a1e1205000000000000000000000000000000000000000b1724313e4a5764717d8a9398929191908e8b8985817d78706b615e564e463d352c23190f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3946525e686e6f6f6f6f6f6f6f6f6f6f6f6f6f6f74808d97a2adaa9f948b7f72695f53463a2d211407000000000000000000000000000000000000000b1724313e4a5764717d8a97a29f9e9e9d9b9898928e89837d756d6860584f473d352b21180c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7d85929eabb0a69f92867b6e6155483b2e221508000000000000000000000000000000000000000b1724313e4a5764717d8a97a4acabaaa9a7aaa29f9b959089827a6f6a60594f473d332a1e150b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d59667380888888888888888888888888888888899297a2adb9aea2988b7e7265584b3f3225180c000000000000000000000000000000000000000b1724313e4a5764717d8a97a4a8a9aaacaeb3aeaba7a09d938f847c706b60594f453c30271d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c9595959595959595959595959595969ea2a9b3beb4aa988b7e7265584b3f3225180c000000000000000000000000000000000000000b1724313e4a5764717d8a979b9b9c9d9fa3abacaeb1aca59e9691867d706b60574e43392e23180c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a2a2a2a2a2a2a2a2a2a2a2a2a2a2abadb3bbbeb1a5988b7e7265584b3f3225180c000000000000000000000000000000000000000b1724313e4a5764717d8a8e8e8e8f9092999b9fa3abafafa8a19892867d706a5f554b4034281e1408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6afafafafafafafafafafafafafb8b9beb9b9b1a5988b7e7265584b3f3225180c000000000000000000000000000000000000000916232f3c4956626f7c81828282828486898e92999ea5afb2aaa39892867c6e675c51453b3025190e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6acacacacacacacacacacacacacacacacacacaca5988b7e7265584b3f3225180c000000000000000000000000000000000000000815222e3b4754606a6f7575757576777a7d81868e939fa3abb4aaa2989083796d60564c41362a1d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c999f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f988b7e7265584b3f3225180c0000000000000000000000000000000000000006131f2b37434e5860626868686869676d70747b818b9299a3abb4aaa0958d8073685e5246392f24180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c93939393939393939393939393939393939393939393938b7e7265584b3f3225180c00000000000000000000000000000000000000030f1b27323d464e54565b5b5b5b555d6063696e757e879299a3afb1a79f92867a6e61554b4035291d100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d59667380868686868686868686868686868686868686868686868686867f7265584b3f3225180c00000000000000000000000000000000000000000a16202b343d4347494f4f4f4f4b5153575e616d717e87929fa7b1aea2988d8074675d5145382c1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926323f4b57636e7379797979797979797979797979797979797979797979797979726d62564a3d3124180b0000000000000000000000000000000000000000040f19222b32373b3c424242424045474d525a626c73808c959fabb4aa9f9285796d6053473a2e23170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a17232f3b47525c63666c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c65625b51453a2e22150900000000000000000000000000000000000000000007101920272b2e2f3535352f35383b4246505a606d7883909da6b0ada2978a7e7164544a3f34281c10030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2a35404a52575960606060606060606060606060606060606060606060606060585651493f34291d110500000000000000000000000000000000000000000000070f161b1f222328282824292c30363f44505c666f7c88949fabb3a99b8f8275665c5044382c1f120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e19242e3840474b4d535353535353535353535353535353535353535353535353534b4a453f372d23180c010000000000000000000000000000000000000000000000040a0f1315161c1c1c181d1f252a343f4a54606a7683909cacb6ab9f9285796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c262e353b3f40464646464646464646464646464646464646464646464646463f3d3a342d241b11060000000000000000000000000000000000000000000000000000030608090f0f070c10141a232e38424e5864717e8a9aa4afaea298897c6f6256493c2f2316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a131c242a2f32333939393939393939393939393939393939393939393939393932312e29231b12090000000000000000000000000000000000000000000000000000000406080d111314161717171c26303c4754606d7a86939facb3aa988b7e7165584b3e3225180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a12191f2326262d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2524221d1811090000000000000000000000000000000000000000000000000000070c101313191d20212223242423222c3945525d687784909daab3a79a8d8074675a4d4134271a0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e1317191a20202020202020202020202020202020202020202020202020181815110c0600000000000000000000000000000000000000000000000001080d12181c1f2024292c2d2f303131302f2d35414c566774818e9aa7b4a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070a0c0d131313131313131313131313131313131313131313131313130c0b090501000000000000000000000000000000000000000000000000060b13191d23282c2d2f35393a3c3d3e3d3d3b3a38404c5966737f8c99a6b2a99c8f8276695c4f4336291c10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171e24292e34383a3d414547494a4a4a4a484745404c5865727f8b98a5b2a99c908376695d5043362a1d100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b141b22272f35394045464a4c525455565757565553514b4b5764717e8a97a4b1a99d9083766a5d5043372a1d1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e171d262d333a41454b515357565d60626364646362605c55545764707d8a97a3b0a99d9083766a5d5043372a1d1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101820292f383f444c52545c606368686d6f707170706e6d6766615e64707d8a97a3b0a99d9083766a5d5043372a1d100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061018222a323b414950565d60666d7074777a7c7d7d7d7d7b7976726d6864707d8a97a3b0a99d9083766a5d5043372a1d1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f18222a343c444d535b60686d73797d81848788898a8a898886837f7a736d707d8a97a3b0a99d9083766a5d5043372a1d10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c17212a343c464e565e656c727a7f858a8e919695969797969992908c85807a707d8a97a3b0a99d9083766a5d5043372a1d100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e29333c464e585f686e777f858c92979b9ea0a8a3a4a3aba39f9d98928d847d7e8a97a3b0a99d9083766a5d5043372a1d10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26303b454e585f6a6f7a828b92979fa2a9aaacb2b0b0b0b5aeacaaa29f969187828f9ca9b6a99d9083766a5d5043372a1d1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e38424d575f6a6f7c848f949fa2a9adb3b5b4aeacaaabacafb5b4aea9a199938f949fabb6a99d9083766a5d5043372a1d100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a545e696f7c8591969fa6adb3afaca8aaa29f9e9e9fa4ababadb2aba49f9c9fa6b0b6a99d9083766a5d5043372a1d10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c17202b3844505c666e7b849197a1a8b0b0aca49f9b97989291929399999ea1a9afafaca9abb0b8b6a99d9083766a5d5043372a1d1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2a36424d57606d78839096a1a9b2aea69f9a938f8a8785848586898d92979fa3abb3b6b7bbc2b6a99d9083766a5d5043372a1d100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1925303a46525e69727f8c959fa8b2aea49d949087827e7a797778797c80858c9299a2a9b3bcc6c3b6a99d9083766a5d5043372a1d10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d2a36414c56616e7b86929fa7b1aea49d928d827c75716d686b666d6f737a80879297a2aab4bfc3b6a99d9083766a5d5043372a1d1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3946525e6874818d98a3aeb0a69d928d80786f6a64615e565c6063676d737d859298a2aebac2b6a99d9083766a5d5043372a1d1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a86929faab4ab9e948d80746d665f5854524c5053555d606b707c86929fa6b0bbb6a99d9083766a5d5043372a1d100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a5465727e8b99a3aeaea3998f82786c605c544e47464144464b5159606a717e8a949fabb7b6a99d9083766a5d5043372a1d100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505c6676838f9cabb4ac9f92867b6e665b504a423c3935383a41454f58616c76828f9ca8b2b6a99d9083766a5d5043372a1d10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7885929facb3aa9a8d8074695f544a3f38302d292c2f353d46505a636f7c8996a1adb6a99d9083766a5d5043372a1d10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7c8898a2aeaea298897c6f63574d42382e26201d1f2429343e4854606b7884919eabb6a99d9083766a5d5043372a1d10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97aab4ab9f9285796d6053463b2f261c15111318222c38434f596774818e9aa7b4a99d9083766a5d5043372a1d10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1aa9d908477665c504438291d140a0507101b27323f4c5966727f8c99a5b2a99d9083766a5d5043372a1d10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926323f4c5965727f8c98a5b2a99c8f837669544a3f3428190b0200000a1825313e4b5864717e8b97a4b1a99d9083766a5d5043372a1d10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2a99c90837669564c41362a1b11060001081724313e4a5764717d8a97a4b0a99c8f8276695c4f4336291c10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1ab9e918478685e5246382d22170e080b131c28333f4a5465727e8b98a5b1a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1623303d495663707d8996a8b2aca196877a6d6153493f3327201916171e242b3844505b6674818e9aa7b3a79a8d8074675a4d4134271a0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a8796a1acb2a8988b7e71655b50443b322a252322282f35404b55606c7884919eabb2a8988b7e7165584b3e3225180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3946525e687884919eabb7aa9d9083786c60574d443c36302f2d333a4145515d67707d8a96a1adaca196887c6f6255483c2f2215090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d2935414c566774808d9aa7b1aca0958b7e71695e564e46413d3c3d3f444c525c606d7984919da8b2ab9e9184786c605346392d20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1925303c4956636f7c8995a0acb1a79e92857b6e685f58524c4a49494a50565d606e75818e96a0acafa4998d8073655b5044372b1f120500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000813202d394653606c7883909da7b1ada29791837a6f6a615e56575656545b60686d75808c939ea8b2aa9f93877b6e6253493f33271b0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3744505b65717e8a959fabb3a9a09591847c736d686563626364666c717a818c929ca5afaea3988e8175695f5341382d22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333f4953606c78839099a3aeb1a7a0969187807a7572706f707174787e848f939ca4aeb0a69f92867b6e61574d422f261b1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d3844505b656f7c86929fa4aeb1a8a099928d86827f7d7c7c7e81848a91969ea5aeb1a79f948c7f72695f53453c311d140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b27333f49535f6a727f8c929da5aeb2aba39f99928f8c8a89898b8d91969ea1a8afb0a8a0958f82786c60574d42332a200b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d38414e58626d74808d939ca4adb2aeaba39f9c98969596979a9ea1a9acb2afa69f9691837a6d665b50453c3121180e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b262f3c46515b606d78818c929ea1a8aeb4aeaca8a5a3a2a3a4a7abadb2b0aba39f9490847b6e685d544a3f332a1f0f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d2a343f44505c666d74808991969fa2aaacb2b4b2b0afafb1b4b4aeaca69f99928c827a6e695e564c42382d21180e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b182228343f4a545c606e737d848d92989ea0a8a7a9aaabaaa9a8aaa29f9b948f8780786d685e574d443a2f261c0f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061017232e38424a505c636b707a80868c9196989a9c9d9e9e9d9b9998928e89827c736d665d564d453b32281d140a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2630383f44525961686d737a8084888b8e90909191908f8c8a85817c766f6a605c544c443b332920160b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e262e3440474f565d60686d73777c7e818384848483827f7d79756f6a625f58514a423a322921170d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c141c2328353d434c52565e61666a6f727476777877767573706d67626058534e444039302820170f0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a1117232c313a41454c5254585f626567696a6b6b6a686663605d55544e47433c342e271e160e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111a1f282f353a4146474e5355585b5d5d5e5e5d5c595753514b48433d373228231c150c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080d161e24293036393c4347494b4e50515151504f4c4a4745403938322b262018120b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13191e252a2d32373b3c3f41434445444342403d3a38352f2c27211b150c07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080d13191e20262b2e2f323436373838373533302d2c29241d1b160f0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d11151b1f212225282a2a2b2b2a292624201f1d18120f0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001050a0f131516181b1d1e1e1e1d1c19171413100c07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030608090c0e10111211100f0d0a0706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + _typelessdata: 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306070d1213110b0a0805000000000005080a0b1113120d07060300000000000407090a1013120e0707040100000000000000000000000000000105070708080808080808080808080808080808080808080808080808080808070603000000000000000000000000000000000000000000000003070b0d0e131313131313130f0f0d0904000000000000000000000002060a0c0c13131313131313131313131313131313131313131313131313131313131313130c0c0a0602000000000000000000000000000000000000000000000000000000000000000000000000000000000205070813131313131313130707040100000000000000000000000000000000000000000000000000000000000000000000000000000306070707060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003050608090a0b0a0909080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506070707060603000002000000000000000000000000000000000000000000000003070909131313131313131311100e0b06000000000000000000000000000000000000020608081313131313131313130b0b0905010000000000000000000004090e11121313131313131313090806030000000002070a0d0d1313131313130e0e0c080300000002080c101212131313131313130a090704000000000000000000000004090e111213131313131313130908060300000000000000000000000000000000000000000407090a13131313131313130a090704000000000000000000000004090e111213131313131313131313131313131313131313131312100f0d0a0706040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c101213191e201e181715110c0600060c111517181e201e191312100b0600040b101316161d201f1b1413110d08010000000000000000000002080d111314151515151515151515151515151515151515151515151515151515151312100b060000000000000000000000000000000000000001080e13171a1a202020202020201c1b19151009020000000000000000070d121618192020202020202020202020202020202020202020202020202020202020202020191816120d070000000000000000000000000000000000000000000000000000000000000000000000000003090e12141520202020202020201413110d080100000000000000000000000000000000000000000000000000000000000001050707060b101213141312100c070807050200000000000000000000000000000000000000000000000000000000000000000000000306060b0f1213141617171716151414110e09080602000000000000000000000000000000000000000000000000000000000000000000010507070b060b0f121314141413120f0b060e0d0c0b0a0807070401000000000000000000000000040b0f13151620202020202020201e1d1b17110b04000000000000000000000000000003090e121415202020202020202020181715110c060000000000000000080f151a1d1f20202020202020201615130f0a0400080e1317191a2020202020201b1a18140f0901060d13181c1e1f20202020202020171613100b050000000000000000080f151a1d1f20202020202020201615130f0a0400000000000000000000000000000000050b101416172020202020202020171614100b050000000000000000080f151a1d1f20202020202020202020202020202020202020201f1e1d1c19171413110d0703000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a11171c1f20262b2c2a2524211d17100911171d2124252a2c2b26201f1c17110a0f161b2022232a2c2c2721201d19130c040000000000000000050d13191e202121212121212121212121212121212121212121212121212121212121201f1c17110a0200000000000000000000000000000000020b12191f2326272d2d2d2d2d2d2d292825211b140c030000000000010a12181e2225262d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2625221e18120a0100000000000000000000000000000000000000000000000000000000000000000000050d141a1e21212d2d2d2d2d2d2d2d2d201d19130c0400000000000000000000000000000000000000000000000000000002080d11131418171c1f2021201f1c18191514120e090300000000000000000000000000000000000000000000000000000000000000030a0f1215171b1f202123232424232221201e1a1514120e0903000000000000000000000000000000000000000000000000000000000104080d111314181a171b1f20212120201f1c171c1b1a191816151413110d0802000000000000000000070f161b2022232d2d2d2d2d2d2d2d2b2a27221d160e05000000000000000000000000060e151a1e21222d2d2d2d2d2d2d2d2d2524211d18110900000000000009121920262a2c2c2d2d2d2d2d2d2d22221f1b150f0a12191f2326272d2d2d2d2d2d282724201a130b10181f24282b2c2d2d2d2d2d2d2d2322201c160f0800000000000009121920262a2c2c2d2d2d2d2d2d2d22221f1b150f0700000000000000000000000000000810161c2023242d2d2d2d2d2d2d2d2423201c16100800000000000009121920262a2c2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2c2b2a28262420201d1813100c06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151c23282c2d3338393731302d28221b121b22292d3031373938332d2b28231c141921272c2f30363938342d2c29241e160d04000000000000050e171e252a2d2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2d2b28231c140c020000000000000000000000000000010b141d242b303334393939393939393635312c261e150c02000000000a131c232a2f3233393939393939393939393939393939393939393939393939393939393939393933322f2a231c130a000000000000000000000000000000000000000000000000000000000000000000050f171f252a2d2e3939393939393939392c29241e160d04000000000000000000000000000000000000000000000000050b1013191d20212523282b2d2d2d2c28232622211e1a14100c06000000000000000000000000000000000000000000000000000000050b10151a1f2122272b2d2e30303131302f2e2d2a2522211e1a15100b0500000000000000000000000000000000000000000000000001070d1113191d2021242722272b2d2d2e2d2d2b28222928272524232221201d19130c040000000000000007111921272c2f3039393939393939393736332e2720170e0000000000000000000000060f181f262b2e2f39393939393939393932312e29221b12090000000008121b242b31363839393939393939392f2e2b272019141c242a2f32333939393939393534302b251d151922293035383939393939393939302f2c27211911080000000008121b242b31363839393939393939392f2e2b272019100700000000000000000000000008111a21282c2f303939393939393939302f2c28211a11080000000008121b242b31363839393939393939393939393939393939393939393938373533302d2c29241f1c17110a03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b151e262e34383a404546443e3d39342d241c242d34393d3e444645403a38342e261e232b32383b3d434645413a39352f2820160d0300000000020d1720293036393a3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3a38342e261e140a000000000000000000000000000008121d262f363c3f414646464646464642413d3730271e140900000007121c252e353a3e3f46464646464646464646464646464646464646464646464646464646464646463f3e3a352e251c120700000000000000000000000000000000000000000000000000000000000000030d17212931363a3b46464646464646464639352f2820160c01000000000000000000000000000000000000000000040a0f161c1e252a2d2e322e34383a3a3a38342e322e2d2b261f1c17110a03000000000000000000000000000000000000000000000003090e171c20262b2e2d3337393b3c3d3e3d3c3c3b3a36302f2e2b261f1c160c0701000000000000000000000000000000000000000002090e13181d2025292d2e31342d3337393a3a3a3938332d3635333231302f2d2c29241e160e070000000000040f19232b32383b3c464646464646464644433f393229200e05000000000000000000030e18212a31373a3b4646464646464646463e3d3a342d241b11060000040f19242d353d424546464646464646463c3b37322b221c262e363b3f4046464646464641403c372f271d222b343b414445464646464646463d3c38332b23190f050000040f19242d353d424546464646464646463c3b37322b22190f0400000000000000000000030c1a232c33383c3d46464646464646463d3c38332c231a10050000040f19242d353d4245464646464646464646464646464646464646464646454342403d3a39352f2c28231c150c0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d2630383f44464c5153514b49453e362e252e363e45494b5153514c46443f3830262c353d4448495053524e4745413a32281f150b0100000008131e29323a4146474848484848484848484848484848484848484848484848484848484846443f3830261c1106000000000000000000000000030e19242f3840474c4d535353535353534f4d49423930261b100400020d18232e373f464b4c53535353535353535353535353535353535353535353535353535353535353534c4b463f372e23180d0200000000000000000000000000000000000000000000000000000000000009141f29333b42464853535353535353535345413a32281e13080000000000000000000000000000000000000000060c151b21272c3036393a3e413f444647464440423f3b3a37312c28231c150c08020000000000000000000000000000000000000000060e151a22282d31373a3c3f444647494a4a4a49484746423f3b3a37312c272118120b03000000000000000000000000000000000000050d14191d24292c3035393a3e40423f444647474746443f444341403f3e3d3b3a3935302820191007000000000b16212b353d4448495353535353535353514f4a443b3220170d02000000000000000009151f2a333c4247485353535353535353534b4a453f362d22180c01000915202b353f474e5253535353535353534947433c342b242e3840474b4d5353535353534e4d4841392f1e29343d464c5152535353535353534a48443d352b21160b00000915202b353f474e5253535353535353534947433c342b20150a000000000000000000000b151e2c353e44484a53535353535353534a48443e352c21160b00000915202b353f474e5253535353535353535353535353535353535353535251504f4c4a4745403a38342e261e19130c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b262f38424a5053595e5f5d585650483f372e3740485056585d5f5e5953504a42382e363e474f54565d5f5f5a54524c443a31271d12070000010d1925303a444c52545454545454545454545454545454545454545454545454545454545453504a42382e23170b00000000000000000000000007131f2b36404a52585a606060606060605c5a544c42372c2115090006121e2a353f495157596060606060606060606060606060606060606060606060606060606060606060595751493f352a1e12060000000000000000000000000000000000000000000000000000000000020e1a25313b454d535f60606060606060605f524c443a2f24190d010000000000000000000000000000000000030a111720262b33383a4146474b4e4a50535453514a4f4c4846423c38342e261e19130c05000000000000000000000000000000000000080f181f262b33393c4347484950535456565757565554524d4c4847423c383329241d150d0500000000000000000000000000000000070e171f252a2f35393a4146474b4d4f49505354545353504a504f4e4d4c4b49484745413a322b23190f040000030f1b27323d474f545660606060606060605e5b554d4432291e140800000000000000020e1a26313c454d5355606060606060606060585650483f34291d1105000e1a26313d4751595e5f6060606060606055544e463c322a36404a52585a6060606060605b59534b413027303b464f575d5f6060606060606056544f473d33271c1004000e1a26313d4751595e5f6060606060606055544e463c32271b0f03000000000000000007121d27303e474f5557606060606060606057554f473e33281c1004000e1a26313d4751595e5f6060606060606060606060606060606060605f5f5e5d5b595753514b46443f38302a251e160e06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d38414a545c60666b6c6a64615a51493f334049525a62646a6c6b66605c544a3f343e4850596063696c6b67605d564c43392f24180c000005111e2a36414c565e6161616161616161616161616161616161616161616161616161616161605c544a3f34281c100300000000000000000000000b1723303c47525c64676c6c6c6c6c6c6c69655e54493d3125190d000a16222f3a46515b63666c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c66635b51463a2f22160a000000000000000000000000000000000000000000000000000000000005121e2a36424d575e6c6c6c6c6c6c6c6c6c6c5d564c4135291d110400000000000000000000000000000000040c151c232832373d44484c5254585b545c6060605c545b5955534d46443f38302a251e170e060000000000000000000000000000000009121a212a31373e44494e5355535b6061636364646362615e575955534d48443d352f271f170f0500000000000000000000000000030b1218202930363a4145474c5254575a5c5e5b60606160605b5e5d5c5b5a5857565554524c443d352b21160a00000713202c38444f5960636c6c6c6c6c6c6c6c6a675f55443b3025190d0100000000000006121e2b37424d575f6c6c6c6c6c6c6c6c6c6c65625a50453a2e21150900111d2a36424e59636a6c6c6c6c6c6c6c6c6260584e43372f3b47525c63666c6c6c6c6c6c68645d5342392e35414c5761696c6c6c6c6c6c6c6c6360594f44382c20130700111d2a36424e59636a6c6c6c6c6c6c6c6c6260584e43372b1f130600000000000000000c18232e39434f5961636c6c6c6c6c6c6c6c6361594f44382c20140700111d2a36424e59636a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b6a686663605d5553504a423e36302820180f060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333f49535c666d73787977716c635b51443b45525b636c71777978736d665c50443d42505a616b70767978746d685d554b4035291d1004000713202d3946525e686d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d665c5044382b1f120600000000000000000000000d1a26333f4c58646e74797979797979797570655a4d4135281b0f000c1825323e4b57636d727979797979797979797979797979797979797979797979797979797979797979726d63574b3e3225180c00000000000000000000000000000000000000000000000000000000000714212d3a46535e6976797979797979797976685d5245392c201307000000000000000000000000000000040d161e262e343c43474f54565e6165686a666d6d6d666b6865615f5753504a423e36302920180f07000000000000000000000000000009121b242c333c42475055585f6266656c6e6f7071706f6f6e696966625f57544f454039312921170e050000000000000000000000030c151d2328323b42464b5154565e616467696b656c6d6d6d6c666b6a69686665646362605d564f473d32271b0f03000915222f3b4854606b6f7979797979797979777167564c41362a1e11050000000000000814212e3a47535f6976797979797979797979716c62564a3d3124170b00121f2c3845525e6a757979797979797979766a6054473b323f4b58636e73797979797979746f64544a40343844515d69737879797979797979706b6054483c2f22160900121f2c3845525e6a757979797979797979766a6054473b2e2215080000000000000004101c2834404b55616b707979797979797979706b6155483c2f23160900121f2c3845525e6a7579797979797979797979797979797979797979797978767573706d6764605c545046413a322a21180e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3744505b656d787f8486847e726d63564c424d57636e737e8486847f786d60594f444a54616c707d838685817a6d675d5145392c1f1306000714212e3a4754616d7a7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b786d6053463a2d20130700000000000000000000010e1a2734414d5a677480868686868686868275695c4f4236291c0f000c1926333f4c5966727f86868686868686868686868686868686868686868686868686868686868686867f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b86868686868686867a6d6054473a2d2114070000000000000000000000000000040d161f2830383f444e53596063686d71747778797a79797775726e6964605c545046413a322a2119100700000000000000000000000007111b242d363e454d535a61646a6f7376797b7c7d7d7d7c7b7a7875726e69636059514b433b332920170b02000000000000000000020c151e272e343f444d52555d6065686d7173757779797a7a7a797978777674737271706e6d6860594f43382c1f130700091623303c4956636f7c86868686868686868377685e5246392d2014070000000000000815222f3b4855626e7b8686868686868686867e7165584b3e3225180b0013202c3946535f6c7987868686868686867c6f6255493c37434e586673808686868686868174665c5144383945525f6c7885868686868686867d7063564a3d3023170a0013202c3946535f6c7987868686868686867c6f6255493c2f221609000000000000030c1a232c3845515c67707d86868686868686867d7063574a3d3024170a0013202c3946535f6c798786868686868686868686868686868686868686858483827f7d7a76716d66615a524c443b332a20170b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202d394653606c78818c9192908b7f72685e5246535f6973808b9092918c81756b605448505c66707e879092928d83796d6053473a2d201407000f1c2936424f5c697582878787878787878787878787878787878787878787878787878787877a6e6154473b2e21140800000000000000000000010e1a2734414d5a6774808d93939393938f8275695c4f4236291c0f000c1926333f4c5966727f8c9393939393939393939393939393939393939393939393939393939393938c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b87939393939393877a6d6054473a2d21140700000000000000000000000000030c161f283139424a50585f626b70767a7e8183858687868584827f7b77716d66615a524c443c332b22190f0600000000000000000000030d19232d363f4850575f616c70767b7f83858789898a8a89888785827f7b75706b605d554d453b32291d140a0000000000000000000a141e273039404551565e61676d72767a7e8082848586878786868584838281807f7e7c7b7a6f6b6054483b2f221509000713202d3a4653606d798592939393939395877a6e6154473b2e211409000000000003101c28343f4a5465727e8b93939393939395877b6e6154483b2e2115080013202c3946535f6c7986929393939393887c6f6255493c3b47535f6a778491939393939285796d6053463a2e45525f6c7885929393939393897d7063564a3d3023170a0013202c3946535f6c7986929393939393887c6f6255493c2f2216090000000000000b151e2a36424d57606d7984919393939393938a7d7063574a3d3024170a0013202c3946535f6c7986929393939393939393939393939393939399929291908e8c8a86827e78716c615e564d453b32291d140a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717e8a939e9f9d92867a6e61544855616e7b87929d9f9e93897d7063564953606d798591999f9e958c7f7265594c3f3226190c000f1c2936424f5c6975828f9494949494949494949494949494949494949494949494949494877a6e6154473b2e21140800000000000000000000010e1a2734414d5a6774808d9a9f9f9f9c8f8275695c4f4236291c0f000c1926333f4c5966727f8c999f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b87949f9f9f9f93877a6d6054473a2d211407000000000000000000000000000b151e28313a434b545c606a6f767d82868b8e909298939892918e8c88837e78716c615e564e463d342b21180d040000000000000000010b151f2b353f48505a61696e767d83888c8f929896969797969597928f8c87827d746d675e574d443b2f261c11060000000000000006111c263039424b515b62696e747a7f83868a8d8f9192939a9493989291908f8e8d8b8a8988877c6f6356493c302316090006131f2c3845515c6676828f9c9f9f9fa7978a7e7164574b3e31251a0e020000000006121f2b3844505c6675828f9b9f9f9f9f9d918477695e52463a2d2014070013202c3946535f6c7986929f9f9f9f95887c6f6255493c3c4855626f7c8896a09f9fa2978a7d7063544a3f3445525f6c7885929f9f9f9f96897d7063564a3d3023170a0013202c3946535f6c7986929f9f9f9f95887c6f6255493c2f221609000000000007121d27303946535e69737f8c96a09f9f9f9f968a7d7063574a3d3024170a0013202c3946535f6c7986929f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa39f9f9e9d9b9999928f8a847e766d685f574d443b2f261b110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2734414e5a6774818d9aa5aca3998a7d7164574b5865717e8b99a3aca5998c807366594d55626f7c8897a1aba79c8f8276695c4f4336291c10000f1c2936424f5c6975828f9ca1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a194877a6e6154473b2e21140800000000000000000000010e1a2734414d5a6774808d9aa7aca89c8f8275695c4f4236291c0f000c1926333f4c5966727f8c99a5acacacacacacacacacacacacacacacacacacacacacacacacacaca5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1acaca093877a6d6054473a2d21140700000000000000000000000007121c27303a434c555d666d737c83898f92999b9d9fa2aaa29f9e9b9895908b847e756d685f584e463d332a1f160c010000000000000007121d27313d47505a626c717b838a9095999c9fa2aaa3a4a3a2a9a19e9c9a938f8981796e695e564c42382d22170b010000000000000b17232e38424b545c606d727b80858b9093999a9c9e9f9fa4a0aaa29f9e9d9c9b9998979695897c6f6356493c302316090004101c2834404b5465727f8c98a9b3aca79a8e817467574d42362a1e1205000000000713202d3a4653606d7985929fabacb4aa9a8d807367574d42362a1e12050013202c3946535f6c7986929facaca295887c6f6255493c424d576673808c99a8b2b3a99a8e8174665c50443845525f6c7885929fabaca396897d7063564a3d3023170a0013202c3946535f6c7986929facaca295887c6f6255493c2f22160900000000000c18232e39424f59616e7b86929fa8b2acaca3968a7d7063574a3d3024170a0013202c3946535f6c7986929facacacacacacacacacacacacacacb5aeacacaba9a8aba39f9c96918b827a6e695f564c41382d22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2734414e5a6774808d9aa6aca3998a7d7064574b5865717e8b99a3aca5998c807366594d55626f7b8897a1aba79c8f8275695c4f4236291c0f000f1c2936424f5c6975828f9c9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f94877a6e6154473b2e21140800000000000000000000010e1a2734414d5a6774808d9aa7b3a89c8f8275695c4f4236291c0f000c1926333f4c5966727f8c99a5b2b9b9b7afaaa8a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aeada093877a6d6054473a2d2114070000000000000000000000030d18232e39424c565d676d787f8790949c9fa3abaaabaeb4aeacaaa8a7a09d96918a817a6e6a60584e453c31281d1207000000000000000c18242f39434f59626c717e8690949d9fa7a9acaeb4b0b0b0afb3adabaca49f9c938e837b6e685e544a3f33281d1207000000000003101c28343f4a545c666d757f868d92989d9fa4aba8aaacacafb6b4aeacabaaa9a7a6a5a4a296897c6f6356493c3023160900000c18232e3c4955626f7c8897a1adb7aa9e918477695e53463a2d211407000000000916232f3c4956626f7c8997a2adbaaea298897d7063564a3d30251a0e020013202c3946535f6c7986929facafa295887c6f6255493c47535f697784909daab7b8ab9e9285796d6053463a45525f6c7885929fabb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000004101c2834404b54606b75828f98a2aebab9b0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facb9b6aea9a7a5a5a5a5a5a5a5a5a5a6a7a8aaacaeb4aeaca8a19e948f847b6e685e53493f33271d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724313d4a5764707e8a949e9f9d92867a6e61544855616e7b87929d9f9e93897c7063564953606d788591999f9f958c7f7265594c3f3226190c000f1c2936424f5c6975828f9393939393939393939393939393939393939393939393939393877a6e6154473b2e21140800000000000000000000010d1a2734404d5a6773808d9aa6b3a89c8f8275695c4f4236291c0f000c1926333f4c5966727f8c99a5b2bfbaafa59e9b9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aeada093877a6d6054473a2d21140700000000000000000000010b151f2834404a545d686d79828c92999fa6acafb5b2afaeadadafb1b5b1aba8a09e938e847c6f6a60574d43392f24180d04000000000004101d2935404b55606b717e8792989fa6abb1afaca9a6a4a3a4a5a7abadb3afaca59d9590847a6e665b5044392f24180c00000000020c16202b3844505c666d78818c92989fa2aaacafaeacaaa7a6a6a6a7a8a9abadb3b4b3b2afa296897c6f6356493c3023160900000713202d394653606c7885929eabb8aca096877b6e6154483b2e21150900000004111d2935404b5566737f8c99a9b3b8ac9f9286796d6053473a2d201409000013202c3946535f6c7986929facafa295887c6f6255493c4855626e7b8895a0acb8b9ada197897d7063544a3f45525f6c7885929fabb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c6f6255493c2f221609000000030c1a232c3845515c66707d89939eaab4bfbdb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facb9aea49d9a999999999999999999999a9b9d9fa3aaacaeb2aca69f9691847a6e655b5044392e23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202d394653606c77828c9192918b7f72685e5246535f6973808b9192918c81756b605448505c66707e879092928e83796d6053473a2d201407000f1c2936424f5c697582868686868686868686868686868686868686868686868686868686867a6e6154473b2e21140800000000000000000000010d1a2734404d5a6773808d9aa6b3a89c8f8275695c4f4236291c0f000c1926333f4c5966727f8c99a7b1bdb6aa9e938e8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aeada093877a6d6054473a2d2114070000000000000000000007121d27313944515c666d7a838f949fa3abb0b1abaaa6a2a1a0a1a2a5a9acafb2aca59e9691857c6f695f554b40352921160a000000000006131f2c3845515d676f7d879299a2aab0afaba39f9c99979797989a9ea1a9adb3afa7a0968f82786c60554b4035291d100400000008131e2b37424e57606d78818e939fa2aaaeafacaaa29f9d9b9a99999a9b9c9fa2a9adb2bbafa296897c6f6356493c30231609000005121f2b3744505b6575828e9ba8b5b2a8988b7e7165584b3e31261a0f0200000613202c3945515d677683909ca9b6b5a99c8f8276675c5145382c1f1306000013202c3946535f6c7986929facafa295887c6f625549424d5766727f8c99a7b1bcbeb3a99a8d8174665b504445525f6c7885929fabb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000b151e2a36424d57606d7984919ea5afbcc6bdb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facb9a99d928d8c8c8c8c8c8c8c8c8c8d8d8e9092989a9fa2aaafb0a8a0968f82776c60544b4034281c100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3744505b656d78808486847e726d63564c424d57636e737e84868480786d60594f444a54616c707d838685817a6d675d5145392c201306000f1b2835414d5a6570757979797979797979797979797979797979797979797979797979797976685e5246392d20140700000000000000000000010d1a2734404d5a6773808d9aa6b3a89c8f8275695c4f4236291c0f000c1825323f4b5865727e8b95a0abb5b4a89b8e81808080808080808080808080808080808080808080807d706356493d3023160a00000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aeada093877a6d6054473a2d211407000000000000000000000c18232f39434f59606d78828f959ea6aeb1aca79f9d999594939495989c9fa4abb0afa8a19792857b6e675d51453d32271b0f0400000003101c28343f4a54606d79849199a3abb4aba39f99928f8d8b8a8a8b8e92979ea1a9b2b1a89f948b7f72675d5145392c1f13060000010d1925303a47535f6a727f8c939ea5aeb1aba49f9b9892908e8d8c8c8d8e9092979ea1a9b2afa296897c6f6356493c302316090000030f1b27333f495365717e8b98a8b2b4a89b8e817568584e43372b1f120600000714202d3a4753606d7a86929facb9b2a8988b7f7265554b4034291c1004000013202c3946535f6c7986929facafa295887c6f62554946535e697783909daab6c3c4b8ab9e9185796c60534645525f6c7885929fabb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c6f6255493c2f221609000007121d27303946535e69727f8c96a0acb7c1cebdb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facb3a79a8d807f7f7f7f7f7f7f7f7f80808284868a8e92989da5adb2a89f948b7e71665c5145382c1f1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333f49535c666d73787977716c635b51443b45525c636c71777978736d665c50473d42505a616b70767978746d685d554b4035291d1004000d1925313d49545e65696c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c5e564c41362a1e110500000000000000000000010d1a2734404d5a6773808d9aa6b3a89c8f8275695c4f4236291c0f000713202d3a4653606d78839099a3aeb5a89b8f8275747474747474747474747474747474747474747474706b6054483c2f22160900000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aeada093877a6d6054473a2d21140700000000000000000004101c2934404b55606b74808d949fa7b0afa7a09d95908c89878687888b8f93999fa6adb2a9a1979184796d60594f43382c21160a00000006121f2b3844505c66727f8c96a1abb4aaa299928d8782807e7d7d7e81858b9297a0a8b2b0a69e9285796d6053473a2d201408000005111d2a36414c56626e7b87929fa5afb0a79f99938e8a85838180808080818385879197a1adafa296897c6f6356493c302316090000000b17222d3b4855616e7b8896a0acb8ab9e9185786a5f53473a2e21140600010a1724303d4a5763707d8a99a3aeb9aca196887b6e6255483b2f23180c00000013202c3946535f6c7986929facafa295887c6f6255494854616e7b8795a0abb8c4c6b9ada197897c706353493f525f6c7885929fabb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c6f6255493c2f22160900000c18232e39424f59616e7b86929fa8b2bdc9c9bdb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c727272727272727272737475777a7d81868e939ba3adb0a69e9184796d6053463a2f24180d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d38414a545c60666b6c6a64625a51493f33404a525a62656a6c6b66605c544a3f353e48505960636a6c6c67605d564c43392f24180d01000915212c37424c545a5c606060606060606060606060606060606060606060606060606060605f524c443b3025190e0200000000000000000000010d1a2734404d5a6773808d9aa6b3a89c8f8275695c4f4236291c0f0006121f2c3844515c666f7c87929fa7b1aa9e938a7e7168676767676767676767676767676767676767676360594f44382c20130700000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aeada093877a6d6054473a2d21140700000000000000000006131f2c3845515c67707d89929da6b0afa59e95908a837f7c7b7a7a7c7e82878f949ca4adb3a9a0968d80746b6054483d32271b0f0000000713202d3a4653606d7984919ea8b2aea2989287807b76737170717274797e859196a0abb5ada1978b7e7164584b3e3025190d01000713202d3946525e6875818e99a3aeb0a69e959087817d797774737373747576787a84919eabafa296897c6f6356493c302316090000000614212d3a46535f697784919eaab7ada197887b6e6255483b2d22170b0d0d111e2a36414d566774808d9aabb5b7ab9e9184786a5f53473a2e1d120700000013202c3946535f6c7986929facafa295887c6f6255494d5665727f8c98a7b1bcc8c9beb3a99a8d8074655b5044525f6c7885929fabb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c6f6255493c2f2216090004101c2834404b54606b75828f98a2aebac3cec9bdb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6666666666666666666768676d70747a818b919ba6b0ada1968a7e7164554b4035291d110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b262f39424a5153595e5f5e585650483f372e3740485056585e5f5e5953504a42382e363e474f54565d5f5f5b54524c443a31281d1207000004101b26303942494d4f535353535353535353535353535353535353535353535353535353535346413b32291e14080000000000000000000000010d1a2734404d5a6773808d9aa6b3a89c8f8275695c4f4236291c0f0004101c2834404a545f6a737f8c95a0abafa59e92857a6d615a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a56544f473d33271c100400000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aeada093877a6d6054473a2d211407000000000000000004101c2834404a54606d7984919ea4aeafa59d938e837d77736f6e6d6e6f72767c828c929ba3adb2a89f93877c6f63594f43382c1c110600000a1623303d495663707c8996a1a9aaa69f92867d746e686664646465666d717b849199a3afb3a99b8f827568564c41362a1d1105000714212e3a4754616d7a86929fabb3a99e948f837c75706d6768676666676869687884919eabafa296897c6f6356493c3023160900000005121e2a36424d576774818e9aacb6b2a9988b7f7265544a3f33281c1a1a1a1a202d3946525e687784909daab7b5ab9a8e817467584e43372b1f0b0100000013202c3946535f6c7986929facafa295887c6f625549525e687683909ca9b6c3cdcfc4b8ab9e9184786c605346525f6c7885929fabb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c6f6255493c2f221609030c1a232c3845515c66707d89939eaab4bfccd4c9bdb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f62595959595959595a5a555d6063686d747f8b949eaab2a99c8f8276675d5145392c201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d2730394044464d5153514b49453e362e252e363f454a4b5153524d46443f3830262c353d4448495053524e4745413a32281f160c0100000009141e2730373d4142464646464646464646464646464646464646464646464646464646463b3936302920170d020000000000000000000000010d1a2734404d5a6773808d9aa6b3a89c8f8275695c4f4236291c0f00000c18232e39424e58606d78839099a3aeada1978e81756c61564c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4948443d352b21160b0000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aeada093877a6d6054473a2d211407000000000000000006121f2c3844515c66727f8b96a1acb0a69d938e8179706b666261606162656a6f767f8b919ba4aeafa49a8f82766b605448382e23170c00000d1a2633404d596673808c999b9c9d9e948a7d706b615e56585757545c60696f7c87929facb8ab9e928578685e5246392d201307000b1825323e4b5865717e8b99a3afada1978f82796e6a63605c555a59595a5b566b7884919eabafa296897c6f6356493c30231609000000020e1a26313e4a5764717e8a9aa4afb5a89b8f8275665b5044382b2727272727272e3b4754616e7a8795a0acb8afa3998a7d7164574a3e31261a0f0000000013202c3946535f6c7986929facafa295887c6f62554954616e7b87939facb9c6c5c5c5b9ada196897c6f635649525f6c7885929fabb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c6f6255493c2f2216090b151e2a36424d57606d7984919da5afbcc5c6c8ccbdb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f62554c4c4c4c4c4c4d4d4b5153565e616d75828f9ca8b2ac9f9286796d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b151e272e34383a404546443e3d39342d241c242d343a3d3e444645403a38342e261e232b33383c3d434645413a3935302820160d0400000000020c151e262c313536393939393939393939393939393939393939393939393939393939392e2d2a251e170e05000000000000000000000000010d1a2734404d5a6773808d9aa6b3a89c8f8275695c4f4236291c0f000007121c27303c44505c666f7c86929fa7b1a99e938a7e71685e524641414141414141414141414141413d3c38332b23190f050000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aeada093877a6d6054473a2d21140700000000000000000713202d3a4653606d7984919ea8b2ab9f948e81776d6761595654535455585f626d737f8b929da8b2ac9f94897c6f63544a3f34281c1003000f1c2835424f5b6875818d8e8f9091928f82766c6159524d4b4a4a4a51575f6a75828f9ba8b5ada297877a6d6154473a2e211407000e1b2835414e5b6874818e9babb5ab9e91857a6d675f5853514b4d4d4d4d515e6b7884919eabafa296897c6f6356493c30231609000000000914212e3a4754616d7a87939facb8ab9f9285796c6053463934343434343434343e4b5864717e8b97a7b1b9ac9f92867a6d6054473a2d2114090000000013202c3946535f6c7986929facafa295887c6f62554c5665727e8b9aa4afbbbbb9b8babdb2a99a8d807367584e525f6c7885929fabb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c6f6255493c2f221607121d27303946525e69727f8c96a0acb7bbb9b9bbc0bdb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255493f3f3f3f3f40414045474c525b626e7b8896a0acaea399897c706356493d3023160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151c23282c2d3338393731302d29221b121b22292e3132373938332d2c28231c151921272c2f30373939342d2c29241e160e04000000000000030c141b212528292d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d21201e19140d0500000000000000000000000000010d1a2734404d5a6773808d9aa6b3a89c8f8275695c4f4236291c0f0000000b151e28343f4a545f6a727f8c959faaafa59e92857a6d615a50443a303434343434343434343434302f2c2721191107000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aeada093877a6d6054473a2d21140700000000000000000a1724303d4a5763707d8a96a1adafa3999082786d655d554f49484747494e535b636d74808d96a1adb0a69a8e8174665c5044382c1f1206000b1824313e4b5764717e808182838485877f72655a5046413e3d3e40444e5865727f8c98a5b2b3a995887b6e6255483b2f22150800111d2a3744505d6a7783909daab3a6998d8073685d554e46454040404045515e6b7884919eabafa296897c6f6356493c30231609000000000713202d3946525e687783909daab6ada297887c6f625549404040404040404040434e586874818e9ba7b4b6a99c908376685d5245392c2013070000000013202c3946535f6c7986929facafa295887c6f6255525e6876828f9cacb6b5afacacaeb4b7ab9e9184786a6054525f6c7885929fabb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c6f6255493c2f22160c18232e39424f59616e7b86929fa8b2b5afacacafb6beb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255493c33333333332f35383a4147535f6a7784919eaab4ab988c7f7265594c3f3226190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181c1f20262b2c2b2524211d17110911171d2124252b2c2b26201f1c17110a0f161c2022232a2c2c2821201d19130c04000000000000000002091015191b1c202020202020202020202020202020202020202020202020202020201414110e08020000000000000000000000000000010d1a2734404d5a6773808d9aa6b3a89c8f8275695c4f4236291c0f000000030c17232e38424e58606d78839098a3aeada1978e81756c61564c413529272727272727272727272322201c160f0700000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aeada093877a6d6054473a2d2114070000000000000005121e2a36424d576874818e9ba8b2ac9f92877b6e665c534b433e3b3a3b3c4347525b606d7984919eaab4ab9e9285796d6053463a2d201307000a1723303d4955616c7173747576777879786d6053463e3630312f353f4b5865727e8b98a5b1b5ab95887b6e6255483b2f22150800121f2b3845525e6b7885919eabafa396897c7063564c433c38342e333845515e6b7884919eabafa296897c6f6356493c302316090000000005111d2a36414c566773808d9aabb4b3a9988c7f7265544a4d4d4d4d4d4d4d4d4d4d535f6a7884919eabb8b3a9998c7f7366564c4135291d11040000000013202c3946535f6c7986929facafa295887c6f625554616d7a86929facb5aba39f9fa2aab4aca196897c6f6256525f6c7885929fabb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c6f6255493c2f2216101c2834404b54606b75818e98a2aeb5aba39f9fa4acb6b0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255493c2f2626262724292c3037434e586774818e9aa7b4a79a8d8174675a4e4134271b0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c1012131a1e201e181715110c0600060c111517181e201f1a1312100c0600050b101316161d201f1b1413110d0802000000000000000000000004090d0f0f131313131313131313131313131313131313131313131313131313130807050200000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3a89c8f8275695c4f4236291c0f0000000006111c26303c44505c666e7c86929fa7b1a99e938a7d70685d52463e32281e1a1a1a1a1a1a1a1a161613100b050000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aeada093877a6d6054473a2d211407000000000000000714202d3a46525e697885929eabb3a99a8e8174695f544b4139312e2d2e32374045515c67717e8b98a3aeada197897c6f6256493c2f231609000814212d3945505a6164666768696a666c6d665c5044382c30363a4145505a6673808c99a6b3afa399877b6e6154473b2e21140800131f2c3946525f6c7985929facaea195887b6e6255483b302c28232b3845515e6b7884919eabafa296897c6f6356493c3023160900000000010d1925303d4a5663707d8999a3aeb5a99c8f8276665c5a5a5a5a5a5a5a5a5a5a5a5a626e7b8896a1adb9ada197897c6f6256493c2f24190d010000000013202c3946535f6c7986929facafa295887c6f62555565717e8b99a3afafa399929298a2aeb2a8998d807366584e5f6c7885929fabb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c6f6255493c2f221619232c3845515c66707d89939eaab4afa39992939aa4afb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255493c2f2219191a181d1f2631404d596673808c99a6b3a89c8f8275695c4f4236291c0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070d1213110b0a0805000000000105090b0b1113120d07060300000000000407090a1013120e07070401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3a89c8f8275695c4f4236291c0f00000000000a151e28343f4a545f6a727f8c959faaafa59e91857a6d61594f443a2f24190d0e0e0e0e0e0e0a09070400000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aeada093877a6d6054473a2d211407000000000000000815212e3b4854616e7b8797a1adada197897c6f62574d42392f27212021262b34404b55606d7a86929facb3a9988b7e7265584b3f3225180c0005111d28333e485055575a5b5c5d545b60605c544a3f34383b41464c5259616c7783909daab6ac9f9286796d6053463a2d2013070013202c3946535f6c7986929facaea194877b6e6154483b2e211c182b3845515e6b7884919eabafa296897c6f6356493c3023160900000000000814202d3a4753606d7a86929facb8ac9f9285796d6767676767676767676767676767727f8b98a8b2b8ab9e9285796c605346392d201308000000000013202c3946535f6c7986929facafa295887c6f62555d6775828f9cabb5ac9f928785929facb7aa9e9184776a5f535f6c7885929fabb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c6f6255493c2f22151e2a36424d57606d7984919da5afb2a99f928688939facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255493c2f22160c070c101925323f4c5865727f8b98a5b2a99c908376695d5043362a1d100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050604000000000000000000000000000406050000000000000000000000000004060601000000000000000000000000000000000004090d0f101010101010101010101010101010101010101010101010101010100e0e0c080400000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3a89c8f8275695c4f4236291c0f0000000000030c17232e38424e58606c78839098a2aeada1978e81746b61564c4135291f160c01010101010000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aeada093877a6d6054473a2d211407000000000000000a1724303d4a5763707d8a96a9b3ab9e9285796c6053463c30271d1514141b232f3945515d6776828f9ca9b4a79a8e8174675b4e4134281b0e00000c17222c363e45494b4d4e4f504a505353504a42393f44464c52565d606b707d8a95a0abb6aa9d908377665c5145382c1f13060013202c3946535f6c7986929facaea194877b6e6154483b2e21151e2b3845515e6b7884919eabafa296897c6f6356493c30231609000000000006131f2c3945515d677683909ca9b6aea298897d73737373737373737373737373737375828f9ca8b5b4a89b8e8175665b5044382b1f1206000000000013202c3946535f6c7986929facafa295887c6f6255606d7a86929facb4ab9c8f82818e9ba9b3aca096887c6f62555f6c7885929fabb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c6f6255493c2f221c27303946525e69727f8c96a0acb9ada1978d8087929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255493c2f22160900000b1825313e4b5864717e8b97a4b1a99d9083766a5d5043372a1d100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a1015191b1c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1b1a18140f09010000000000000000000000000000000d1a2733404d5a6673808d99a6b3a89c8f8275695c4f4236291c0f00000000000006111c26303c44505b666e7b86929fa6b0a99e938a7d70685d52453d31281e1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aeada093877a6d6054473a2d211407000000000000000b1825313e4b5864717e8b97a4b1a99c908376665b5044382a1e150b070a121d2935404b556773808d9aa6b3a89b8f8275685c4f4235291c0f000006101a242c33393d3e404142433f444646443f44464a5053565e61686d737d85929fa7b1b0a69a8d807467544b4034281c10040013202c3946535f6c7986929facaea194877b6e6154483b2e21151e2b3845515e6b7884919eabafa296897c6f6356493c30231609000000000004101d2935404b5566737f8c99aab3b4aa9c8f828080808080808080808080808080808086929facb8b1a7978b7e7164544a3f33281c0f03000000000013202c3946535f6c7986929facafa295887c6f625564717e8a99a3aeaea3998b7e7d8a97a1adb2a8998c807366585f6c7885929fabb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c6f6255493c2f22232e39424f59616e7b86929fa8b2b0a69e91847a86929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255493c2f22160900000b1825313e4b5864717e8b97a4b1aa9d9083776a5d5144372a1e11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030607090c0e101212131312110f0d0a070604010000000000000000000000000000000000000000000000040c141b21252829292929292929292929292929292929292929292929292929292929282724201a130b0300000000000000000000000000000d1a2733404d5a6673808d99a6b3a89c8f8275695c4f4236291c0f000000000000000a141e28333f4a545f69727f8c949faaafa59e91847a6d60594f433a2f24190d040000000000000000000000000000000000000000000000000303030303030303030303030303030303030815212e3b4854616e7b8794a1aeada093877a6d6054473a2d211407000000000000000c1925323f4c5865727f8b98a5b2a89b8f827568544a3f3328180c0300010d18242f3f4c5966727f8c99a5b2a99c8f8376695c504336291d1000000008121a22282d30313334352d33383b4246495053545c6063686e737a80879297a2adb4aa9e94887c6f6255493c2e23180c000013202c3946535f6c7986929facaea194877b6e6154483b2e21151e2b3845515e6b7884919eabafa296897c6f6356493c302316090000000000000c18242f3c4956636f7c8998a2aeb7ab9f948f8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d9298a2aeb8aca095877b6e6154473b2d22170b00000000000013202c3946535f6c7986929facafa295887c6f625d6775828f9babb4ac9f92867a7885929eabb7aa9d9184776a5f5f6c7885929fabb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c6f6255493c2f222834404a54606b75818e98a2aeb5ab9f948a7e7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255493c2f22160900000b1825313e4b5864717e8b97a4b1aa9d9084776a5d5144372a1e1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b10121316191b1d1e1f201f1f1e1c1a171413100d07030000000000000000000000000000000000000000020c161e262c3135363636363636363636363636363636363636363636363636363636363534302c251d150b01000000000000000000000000000d1a2733404d5a6673808d99a6b3a89c8f8275695c4f4236291c0f00000000000000020c17222d38424d57606c78829098a2aeada1968e81746b61554c4135291f160c0100000000000000000000000000000000000000030608091010101010101010101010101010101010101015212e3b4854616e7b8794a1aeada093877a6d6054473a2d211407000000000000000c1926333f4c5966727f8c99a5b2a89b8e8175685b4e4231261a0e020000071926323f4c5965727f8c98a5b2a99c908376695d5043362a1d10000000000810171d212324272930363d43474d52535b6063666d70757a80858d9299a2a9b3aca2988f82756a5f53473b2e1d1207000013202c3946535f6c7986929facaea194877b6e6154483b2e21151e2b3845515e6b7884919eabafa296897c6f6356493c302316090000000000000713202d3a4653606d7985929fabb8b0a69f9c9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9fa2aab4b7aa9d908377695e52463a2d1c110600000000000013202c3946535f6c7986929facafa295887c6f62606d7986929facb4aa9c8f827574818e9aa9b2aca096887b6f625f6c7885929fabb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c6f6255493c2f222c3844515c66707d89939eaab4afa3998f82767986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255493c2f22160900000b1825313e4b5864717e8b97a4b1aa9d9084776a5d5144372a1e1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f11171c1f202226282a2b2c2c2c2c2a29262420201d18120f0b060000000000000000000000000000000000000a141e2830383d414343434343434343434343434343434343434343434343434343434341403c372f271d1309000000000000000000000000000d1a2733404d5a6673808d99a6b3a89c8f8275695c4f4236291c0f000000000000000006111c262f3c44505b666e7b86929fa6b0a99d93897d70675d51453d31281d13070000000000000000000000000000000000040a0f1315161d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d212e3b4854616e7b8794a1aeada093877a6d6054473a2d211407010000000000000c1926333f4c5966727f8c99a5b2a99c8f827669574d42362a1e130a070a101c2834404a546673808d99a6b3a89b8f8275685c4f4235291c0f0000000000060c11141a232b323b42464e54575e61656c6f74797d81868c92979fa3abb3aca49a92867b6e61584e43372b1f0b00000013202c3946535f6c7986929facaea194877b6e6154483b2e21151e2b3845515e6b7884919eabafa296897c6f6356493c3023160900000000000006121f2c3844505c6675828f9ca8b5b8b0aba9a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6acaeb4bcb4aa9a8d807367564d42362a1e0a0000000000000013202c3946535f6c7986929facafa295887c6f6264717d8a98a2aeaea3988a7e71707c8996a1adb2a8998c7f7366576c7885929fabb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c6f6255493c2f2a36424d57606d7884919da5afb2a99f92877c6f7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255493c2f22160900000b1825313e4b5864717e8b97a4b1aa9d9084776a5d5144372a1e110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b10161b1c23282b2d2f3235363839393938373533302d2c29241f1b17110a0200000000000000000000000000000004101b26303a42494e4f5050505050505050505050505050505050505050505050505050504e4d4841392f251a0f040000000000000000000000000d1a2733404d5a6673808d99a6b3a89c8f8275695c4f4236291c0f0000000000000000000a141d28333f4a545f69727f8b949faaafa59e91847a6d60594f433a2f24180d04000000000000000000000000000000070f151b1f22232929292929292929292929292929292929292929292e3b4854616e7b8794a1aeada093877a6d6054473a2d2114120a0200000000000c1926333f4c5966727f8c99a5b2aa9e918477695f53463a30241c1514141a242c3844515c6675828f9ba8b4a79b8e8174685b4e4135281b0e00000000000007111a242c353d444d52586062696e73787c81858a8e92999fa2a9afb1aaa29a93887e71695f53463c32261b0f00000013202c3946535f6c7986929facaea194877b6e6154483b2e21151e2b3845515e6b7884919eabafa296897c6f6356493c3023160900000000000003101c28343f4a5465727f8b98a9b2bebbb7b6b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b8babfbaaea298897d706356493d3025190e0000000000000013202c3946535f6c7986929facafa295887c6f626675818e9baab4ac9f92867a6d6c7884919eabb7aa9d908477695f6c7885929fabb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c6f6255493c2f303946525e69727f8c95a0acb9ada1968d80736a7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255493c2f22160900000b1825313e4b5864717e8b97a4b1aa9d9084776a5d5144372a1e1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d161b21272c2e34383a3c3f414345454646454442403d3a39352f2b27221b140b0902000000000000000000000000000915212c38424c545a5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5b59534b41372c2014080000000000000000000000000d1a2733404d5a6673808d99a6b3a89c8f8275695c4f4236291c0f000000000000000000020b17222d38424d57606c77828f98a2aeada1968e81746b60554b4035291f160c010000000000000000000000000007101920272b2e2f363636363636363636363636363636363636363636363b4854616e7b8794a1aeada093877a6d6054473a2d2b241c140a01000000000c1926333f4c5966727f8c99a5b2aca096887b6e61564c41352e26212021262b343f4a54606d7985929fabb4aa988c7f7265594c3f3226190c0000000000040d19232c363e474f565e616a6f757b7f84898d92979b9fa3abadb1aca79f9892887f726c61574d42342a20150a00000013202c3946535f6c7986929facaea194877b6e6154483b2e21151e2b3845515e6b7884919eabafa296897c6f6356493c30231609000000000000000c17232e3c4855626f7b8897a1adb9c6c0bab5b4acacacacacacacacacacacadb9bbc0c7c5b8ac9f9285796d6053463a2d2013090000000000000013202c3946535f6c7986929facafa295887c6f626d7985929fabb4aa9b8f8275676674808d9aa8b2aca095887b6e626c7885929fabb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c6f6255493c2e39424f59616e7b86929fa8b1b0a69e9184796d6c7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255493c2f22160900000b1825313e4b5864717e8b97a4b1aa9d9084776a5d5144372a1e110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c121821272c3238383f4446494c4e505152535252514f4d4a4745403937332d261d19140d050000000000000000000000000d1925313d49545e656969696969696969696969696969696969696969696969696969696968655d53483c3024180c0000000000000000000000000d1a2733404d5a6673808d99a6b3a89c8f8275695c4f4236291c0f0000000000000000000006111c262f3b44505b656e7b86929fa6b0a89d93897d70675d51453d31281d1207000000000000000000000000040f19222b32373b3c43434343434343434343434343434343434343434343434854616e7b8794a1aeada093877a6d6054473a3b362e261c1208000000000c1926333f4c5966727f8c99a5b2b2a8998c7f72685d52463f38302e2d2e31373f44505c66707d8a98a2aeaea298897d706356493d3023160a00000000010c16202b353e48505960696e757c82878c91969a9ea1a9acaeb0aba7a09d9590867e726d625a50453b3122180e0400000013202c3946535f6c7986929facaea194877b6e6154483b2e21151e2b3845515e6b7884919eabafa296897c6f6356493c30231609000000000000000615212e3a47535f6a7885919eabb8c0b6aea9a79f9f9f9f9f9f9f9f9f9f9fa0acafb6bec2b5a89c8f8275675c5145382c1f13060000000000000013202c3946535f6c7986929facafa295887c6f63707d8a98a2aeaea2988a7e7164626f7c8996a0acb1a7998c7f72666c7885929fabb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c6f6255493c34404a54606b75818e98a2aeb5ab9f948a7e71676c7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255493c2f22160900000b1825313e4b5864717e8b97a4b1aa9d9084776a5d5144372a1e1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d161d242932383d43484a505355595b5d5e5f5f5f5f5d5c595753514b46443f382f2a251f170e0700000000000000000000000f1b2835414e5a657076767676767676767676767676767676767676767676767676767676746f65594d4034271a0e0000000000000000000000000d1a2733404d5a6673808d99a6b3a89c8f8275695c4f4236291c0f00000000000000000000000a141d27333f49535f69727f8b949faaafa59e9184796d60594f43392f24180d0300000000000000000000000a15202b343d43474950505050505050505050505050505050505050505050505054616e7b8794a1aeada093877a6d60544d4c4740382e24190e030000000c1926333f4c5966727f8c99a5b2b8ab9f92857a6d615b504a423d3b3a3b3c4347515a606d7883919daab3ac9f9285796d6053473a2d2014070000000008131e28323d47505a616b707b81898e92999ea0a8abadb3adaba69f9c95918a837c716c625b51483e332a1f10060000000013202c3946535f6c7986929facaea194877b6e6154483b2e21151e2b3845515e6b7884919eabafa296897c6f6356493c302316090000000000000006121f2b37434e586875818e9ba8b4baaea49d9a9393939393939393939393949fa4acb6bdb2a8988b7f7265554b4034281c10040000000000000013202c3946535f6c7986929facafa295887c6f6674818e9baab3ac9f9285796d60606a7784919eaab6aa9d908377696c7885929fabb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c6f6255493c3844515c66707d89939eaab4aea3998f82766c616c7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255493c2f22160900000b1825313e4b5864717e8b97a4b1aa9d9084776a5d5144372a1e11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171f282f353d44484f54545c60626568696b6c6c6c6b6a686663605d55535049413e3630292019110800000000000000000000101c2936434f5c6976828383838383838383838383838383838383838383838383838383838174685b4e4135281b0e0000000000000000000000000d1a2733404d5a6673808d99a6b3a89c8f8275695c4f4236291c0f0000000000000000000000020b17222d38414d57606c77828f98a2aeaca1968d80746b60554b4035291f150b01000000000000000000030f1b27323d464e54565c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c616e7b8794a1aeada093877a6d605c5a58524a40362b1f13030000000c1926333f4c5966727f8c99a5b2baada2978e81746d605c544f49484747494e535b626c737f8c95a0acb1a79b8e8175675d5145392c201306000000010d19242f3a444f59616c717d858e939b9fa3abacb2aeaca9a19e9a948f8a847e786f6a615a51493f362c21180e000000000013202c3946535f6c7986929facaea194877b6e6154483b2e21151e2b3845515e6b7884919eabafa296897c6f6356493c3023160900000000000000030f1a26313e4b5864717e8b97a8b2b5a99d928d868686868686868686868687939aa4afb9aca096887b6e6255483b2e23180c000000000000000013202c3946535f6c7986929facafa295887c6f6d7985929eabb3aa9b8e8175675d586673808d99a7b1aca095887b6e6c7885929fabb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c6f6255493c424d56606d7883919da5afb2a89f92877c6e625a6c7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255493c2f22160900000b1825313e4b5864717e8b97a4b1aa9d9084776a5d5144372a1e110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e172029313940454f54596063666d6f7274767878797978777573706d6763605b535046423b322b231a1108000000000000000000131f2c3946525f6c79868f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f84776a5e5144372b1e110000000000000000000000000d1a2733404d5a6673808d99a6b3a89c8f8275695c4f4236291c0f00000000000000000000000006111b262f3b44505b656e7b85929fa6b0a89f93887d70675d51453d31271d120700000000000000000006131f2b37434e58606269696969696969696969696969696969696969696969696969696e7b8794a1aeada093877a6d696967645c52473b301f14090000000c1926333f4c5966727f8c99a5b2beb3a99e938c7f746d6660595654535455585f626d727e88939fa7b1aba0958a7d7063554b4035291d100400000004111d2935414c56606b717e8792979ea5acafb1acaaa29f9b97918d88827d78716c655f5850483f372d241a0f06000000000013202c3946535f6c7986929facaea194877b6e6154483b2e21151e2b3845515e6b7884919eabafa296897c6f6356493c3023160900000000000000000a15212e3b4854616e7b8796a0acb4a79a8d8179797979797979797979797a87939facb7aa9e918477695f53473a2e1d1207000000000000000013202c3946535f6c7986929facafa295887c6f707d8997a1adaea2988a7d70645555626f7c8895a0acb1a7988c7f726c7885929fabb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c6f6255493c46525e69727f8c95a0acb9ada1968d80736a5f5f6c7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255493c2f22160900000b1825313e4b5864717e8b97a4b1aa9d9084776a5d5144372a1e1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c172029323b434b515960636b6f74797c7f818384858685858482807d7a75706c65615a524d443d352c231a10070000000000000000131f2c3946525f6c7985929c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9184776a5e5144372b1e110000000000000000000000000d1a2733404d5a6673808d99a6b3a89c8f8275695c4f4236291c0f000000000000000000000000000a141d27333f49535e69717e8b949ea9afa49a9184796d60594f43392f24180d0300000000000000000815222e3b4754606a6f7676767676767676767676767676767676767676767676767676767b8794a1aeada093877a767676736e64584c3c31261a0e0200000c1926333f4c5966727f8c99a5b2bfbbafa59c918c8078706b666261606162656a6e757f87929aa4afafa59d9083776b615543392f24180d010000000713202c3945525d68707d879299a2a9afb1aba7a09d98928e8a85807b76706c65605b534e463e362d251b120800000000000013202c3946535f6c7986929facaea194877b6e6154483b2e21151e2b3845515e6b7884919eabafa296897c6f6356493c3023160900000000000000000714202d3a46525e697784919daab7aa9e918477696c6c6c6c6c6c6c6c717e8b9aa4afb5ab9a8d817467574d42372b1e0b00000000000000000013202c3946535f6c7986929facafa295887c6f74818d9aa9b3ab9f9285796d6053535f6a7784919daab6a99d908376697885929fabb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c6f625549424f59616e7b86929fa7b1b0a69e9184796d60585f6c7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255493c2f22160900000b1825313e4b5864717e8b97a4b1aa9d9084776a5d5144372a1e11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e29333b444c555d606b70767c8185888c8e909192929292908f8c8a86827d78706c615e564f473e352c22190c0300000000000000131f2c3946525f6c7985929fa9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a99d9184776a5e5144372b1e110000000000000000000000000d1a2733404d5a6673808d99a6b3a89c8f8275695c4f4236291c0f00000000000000000000000000020b17222d38414d57626c76828f97a2adaca0968d80746b60554b4035291f150b01000000000000000916232f3c4956626f7c82838383838383838383838383838383838383838383838383838383909da9b6b6a99c9082838383807367574d42372b1e120500000c1926333f4c5966727f8c99a5b2bfc1b7ada49c928d837d76726f6e6d6e6f72757c828c9299a3acb2a99e938a7d7063594f4431281d120700000003101c28343f4a54606d7a849199a3abb3ada79f9d95908b86817d79736e6963605b535049413c342d241b13090000000000000013202c3946535f6c7986929facaea194877b6e6154483b2e21151e2b3845515e6b7884919eabafa296897c6f6356493c30231609000000000000000005121e2a36424d576774818d9aabb5aca096887b6e6160606060605c6675828e9bacb6aea3998a7d7064574a3d31261a0e00000000000000000013202c3946535f6c7986929facafa295887c6f7885919eabb3a99b8e8174675c514e5866737f8c99a7b1ab9f95877b6e7885929fabb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c6f6255494a54606b75818e98a2aeb5ab9f948a7e71675d515f6c7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255493c2f22160900000b1825313e4b5864717e8b97a4b1aa9d9084776a5d5144372a1e1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27303b454d565e676d747d83898d9297989b9c9e9f9f9f9e9d9b9998928f8a837d766e6960594f473e342a1e150b00000000000000131f2c3946525f6c7985929facaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa9d9184776a5e5144372b1e110000000000000000000000000d1a2733404d5a6673808d99a6b3a89c8f8275695c4f4236291c0f000000000000000000000000000006111b262f3b45505a616e7b85929fa6b0a89f93887d6f675d51453d31271d1207000000000000000613202d394653606c78838f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f90959fabb8b7ab9f94908f8f8f8578695f53463a2d21140700000c1926333f4c5966727f8c99a5b2bfc8bfb6ada49d959089837f7c7b7a7a7c7e82878f939fa3abb4aaa1978e81756b6155473e331f160c0100000006121f2c3844505c6673808c96a1abb5ada39c959089837e7a75706d66625f57535049443f382f2a221b1209010000000000000013202c3946535f6c7986929facaea194877b6e6154483b2e21151e2b3845515e6b7884919eabafa296897c6f6356493c302316090000000000000000020e1a25303d4a5764707d8a99a4afb2a8988b7e7265544a535353606d7985929fabb8ac9f92867a6d6054473a2d21140900000000000000000013202c3946535f6c7986929facafa295887c6f7c8997a1adada2978a7d7063554b4855616e7b8895a0acb1a7988b7f727885929fabb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c6f625549505c66707d89939eaab4aea3998f82766c61554b5f6c7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255493c2f22160900000b1825313e4b5864717e8b97a4b1aa9d9084776a5d5144372a1e110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e39434d575e686e79818990949a9ea1a9a7a9ababacacabaaa8aaa39f9b95908a827b706b61594f463c30271d1207000000000000131f2c3946525f6c7985929fa2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29d9184776a5e5144372b1e110000000000000000000000000d1a2633404d596673808c99a6b3a89c8f8275695c4f4236291c0f0000000000000000000000000000000a141d29333f46525e69717e8b949ea9afa49a9184796d60594f43392f23180b0200000000000005121f2b3744505b65707d8a959c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9d9fa7b1bcbcb0a69f9c9c9c97887b6e6155483b2e22150700000c1926333f4c5966727f8c99a5b2bfbcb8b6b6aea79f9d95908c89878687888b8f92999ea6afb3aaa29891857a6d61594f44352c210d04000000000713202d3a4653606d7985929ea8b2aea49c918c837d77726d6763605c54534d46443f38332d261d18100900000000000000000013202c3946535f6c7986929facaea295887b6f6255483c2f22171e2b3845515e6b7884919eabafa296897c6f6356493c302316090000000000000000000914212d3a4754606d7a86939facb5a89b8f8275665c50444956636f7c8997a2adb6a99c908376675d5145392c20130600000000000000000013202c3946535f6c7986929facafa295887c73808d9aa9b3ab9e9285796d60534647535f697783909dacb6a99c9083767885929fabb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c6f62554d56606d7883919da5afb2a89f92877b6e625a50535f6c7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255493c2f22160900000b1825313e4b5864717e8b97a4b1aa9d9084776a5d5144372a1e11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b555e696e7a838d929c9fa6abadb3b4b3b1b0afb0b1b3b5b4aeaca7a09d948f857d706b61584e43392e23180c010000000000131f2c3946525f6c798692959595959595959595959595959595959595959595959595959184776a5e5144372b1e110000000000000000000000000d1a2633404d596673808c99a6b3a89c8f8275695c4f4236291c0f000000000000000000000000000000020b17212a36424d57626c75828f97a2adaca0968d80736b60554b4034291d140a000000000000030f1b27333f4953616c7683909da6a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9abb1b9c2c2b8b0aba9a9a9978a7e7164574b3e2f23180c00000c1926333f4c5966727f8c99a5b2b9b1aba9a9abb1aba79f9d999594939495989c9fa3abb0b0a9a19892867c6f685e52473e33231a1000000000000a1623303d495663707c8997a1adb5a99d928c7f78706b65605d5553504a47423c37332d27221b140b060000000000000000000013202c3946535f6c7986929facafa396897c706356493d302722242b3845515e6b7884919eabafa296897c6f6356493c302316090000000000000000000713202c3945525d687783909daab6ab9f9285796d6053464d566673808d99a9b3b3a9998c7f7266554b4135291d110400000000000000000013202c3946535f6c7986929facafa295887c7884919eabb3a99a8e8174665c5144424d5765727f8c9aa4afac9f93877b7885929fabb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c6f6255525e69727f8c95a0acb9ada1968d80736a5f5348535f6c7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255493c2f22160900000b1825313e4b5864717e8b97a4b1aa9d9084776a5d5144372a1e1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d17212c3845515c676e7b8490959da4abb0b6afacaaa6a4a3a2a3a4a6aaacafb6b1aca69e9792867d706a5f554b4034281d12070000000000131f2c3946525f6c798688888888888888888888888888888888888888888888888888888884776a5e5144372b1e110000000000000000000000000d1a2633404d596673808c99a6b3a89c8f8275695c4f4236291c0f00000000000000000000000000000000050f1a25303b45505a616e7b85929fa5afa89f93877c6f675c51453c2f261b11060000000000000b17222d3841505a63707d89949fabb6b6b6b6b6b6b6b0aeaeaeaeaeaeaeaeaeaeaeaeaeb0b1b6bdc5c5bcb5b1afaea79a8d807467554b4034291c1004000c1926333f4c5966727f8c99a5b2b1a79f9d9d9fa7aeb1aba9a5a2a1a0a1a2a5a8acafb3ada69f9792867d706a60564c41352c21110800000000000c1926333f4c5966727f8c99a9b3b4a79a8d80746c66605954514b46443f383d3e3d39342c241a10020000000000000000000000131f2c3946525f6c7985929facb2a5988b7f7265574d4239332d31313145515e6b7884919eabafa296897c6f6356493c3023160900000000000000000004111d2935414c566673808d99aab4ada297897c6f625649525e697783909daab7ada197887c6f6255493c2f24180d0100000000000000000013202c3946535f6c7986929facafa295887c7c8896a1acada197897d7063544a403c4854616e7b87939facafa49a8b7f7885929fabb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c6f625559616e7b86929fa7b1b0a69e9184796d60574e42535f6c7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255493c2f22160900000b1825313e4b5864717e8b97a4b1aa9d9084776a5d5144372a1e110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2b37434e58606d79839096a0a7aeb7afaca49f9d9a9796959697999d9fa4acafb8b0a9a19892867c6f675c5145392f24180c00000000000815222f3b4855626e7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b6e6155483b2e2215080000000000000000000000000d1a2633404d596673808c99a6b3a89c8f8275695c4f4236291c0f000000000000000000000000000000000009141f29333e46525e68717e8a939ea9afa4999184796d60584e41382d22170b00000000000006111b262f3e4855616b7683909ca6b0bbc2beb6afaca3a2a2a2a2a2a2a2a2a2a2a2a2a2a3a5abb3bdbcb3aaa4a2a2a29d908377675c5145382c1f1306000c1926333f4c5966727f8c99a5b2ab9f959090959fa3abaeb4b2afaeadadafb1b5b2ada9a19e9490857d706b61584e443a30231a100000000000020e1b2835414e5b6874818e9ba7b4aea194887b6e615b544f4745413a3d44484a4b49453e362c22170c0000000000000000000000121f2c3845525f6b7885929eabb5a89b8f8275695f544b443f3e3d3e3f43515e6b7884919eabafa296897c6f6356493c30231609000000000000000000010d19242f3d495663707d8998a3aeb3a9998c7f7366554c54616e7b8795a0acb8ab9e9285786c605346392d2013070000000000000000000013202c3946535f6c7986929facafa295887c808d99a8b2ab9e9285796d6053463a3a46525e697683909cabb5ac9c8f837885929fabb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c6f6254606b75818e98a2aeb4ab9f948a7e71675d514546535f6c7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255493c2f22160900000b1825313e4b5864717e8b97a4b1aa9d9084776a5d5144372a1e11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25313b47535f6a74808d959fa8b1b4aea59e9a93908d8a8989898a8d90939a9ea5aeb4b3aaa2989183796d60554b4035291d1004000000000814212e3a47535f6a6e6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6e695f53473a2d2114080000000000000000000000000d1a2633404d596673808c99a6b3a89c8f8275695c4f4236291c0f0000000000000000000000000000000000020d17202a36414d56616c75828f97a1adaba0968d80736a6053493f33271d12070000000000000a141d2c38444f5963707d89949fabb7c0b6aca49f96959595959595959595959595959699a1abb6b5aaa199959595959286796d6053473a2d201407000c1926333f4c5966727f8c99a5b2a99d9083838d92999fa2aaaaacafb5b3adaba9a8a19e97928b827b6f6b61594f463c32281e11080000000000030f1c2936424f5c6975828f9ca8b5ada093867a6d60534a4242424246484f5556575550483e34281d110300000000000000000000111e2b3744515e6a7784919daab7ac9f92877b6e665c5550494b4a4b4c4e53556b7884919eabafa296897c6f6356493c30231609000000000000000000000814202d3a4753606d7986929facb6a99c908376675d515465717e8b98a7b1b6ac9b8e8175655b5044372b1f12050000000000000000000013202c3946535f6c7986929facafa295887c84919daab2a89a8d8174665c50443836424d5765727f8b99a3afac9f92867a85929fabb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c6f625c66707d89939eaab4aea3998f82766c61554b4046535f6c7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255493c2f22160900000b1825313e4b5864717e8b97a4b1aa9d9084776a5d5144372a1e1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d57626f7c87939fa7b1b4aaa29f938e8783807e7d7c7d7e8083878e939fa2aab4b4aaa0958c7f72675d5145382c1f13060000000006121f2b37434e585f62626262626262626262626262626262626262626262626262626262615f574d42372b1e12060000000000000000000000000d1a2633404d596673808c99a6b3a89c8f8275695c4f4236291c0f000000000000000000000000000000000000050e1925303b44505a616e7a85929ea5afa89f92877c6f655b5044392e23180c000000000000020b1c27333d4854606b76828f9ca6b0bbafa49a938a88888888888888888888888888898f99a5b1b1a4998f8988888888887c6f6356493c30231609000c1926333f4c5966727f8c99a5b2a99c8f827980868d92989a9d9fa3aba9a29f9c9a96918c857f776e6960594f473d342b20160c000000000000020f1c2935424f5c6875828f9ba8b5aea194887b6e6158524c4f4f4d535559616364615a5045392d1f1409000000000000000000000f1c2935424f5c6875828f9ba8b5afa3998f82786d67605b5357575859585f62677884919eabafa296897c6f6356493c302316090000000000000000000006131f2c3845515c6776828f9ca9b6ac9f92867a6d60545c6675828f9ba8b5afa49a8b7e716453493f33271b0f030000000000000000000013202c3946535f6c7986929facb1a4978b7e8b96a0acada196897c6f63544a3f34303b4754616e7a86929facafa3998b7e85929fabb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c6f62606d7883909da5afb2a89f92867b6e625a50433946535f6c7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255493c2f22160900000b1825313e4b5864717e8b97a4b1aa9d9084776a5d5144372a1e110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a46535e6976828f99a4afb5aba298928a817c777371706f707173777c818a9298a2abb5b1a79e9285796d6053473a2d20140900000000020f1a26313c464e535555555555555555555555555555555555555555555555555555555555534d453c31261a0e020000000000000000000000000d1a2633404d596673808c99a6b3a89c8f8275695c4f4236291c0f0000000000000000000000000000000000000008141f29323e46525e68717e8a939ea9afa3999083786c60544b4034281c10040000000000000b16212c38444f59626f7c89949eacb6ac9f93877d7b7b7b7b7b7b7b7b7b7b7b7b7b7d8996a3b0afa295897d7b7b7b7b7c7a6d6054473a2d211407000c1926333f4c5966727f8c99a5b2a99c8f8276737b81858a8e919299959497928f8d89847f79726c655f574f463d352c22190e04000000000000010e1a2734414d5a6774808d9aabb5b2a5998c7f726a605d565b5c575f61656b70716c6155493b31251a0e020000000000000000000d192633404c5966737f8c99a8b1b5ab9e948e8179706c656564646466686a6f737985919eabafa296897c6f6356493c302316090000000000000000000004101c2934404b5566727f8c99a9b3afa3998a7d706457606d7985929fabb8ac9f93877a6e6154473b2d22170b000000000000000000000013202c3946535f6c7986929facb5a89c8f828f9ca8b2ab9e9184786c605346392e2d3946525e6876828f9cabb4ab9c8f8285929fabb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c6f6268727f8c95a0acb9ada1968d8073695f53483e3146535f6c7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255493c2f22160900000b1825313e4b5864717e8b97a4b1aa9d9084776a5d5144372a1e110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b87939fabb5afa49992867e756f6a676463626364666a6f757e869299a3afb9ada1978a7e7164574a3e31251a0e02000000000915202a333c4347484848484848484848484848484848484848484848484848484848484847423c332a1f1509000000000000000000000000000d1a2633404d596673808c99a6b3a89c8f8275695c4f4236291c0f00000000000000000000000000000000000000020d17202a36414c56616c75818e97a2adab9f958a7e71665c5145382c1f150900000000000005101b27323d4854606a75828f9aa4afafa49a8d80746f6f6f6f6f6f6f6f6f6f6f6f7b8794a1aeada093877a6f6f6f6f6f6d685d5245392c201306000c1926333f4c5966727f8c99a5b2a99c8f8276696e747a7d818486878887878583807c78726d67605b534d453d342c231a100700000000000000000b1824313e4b5764717e8a99a3afb8ab9f92867c726d6869686969696e72777d7e7164574d42362a1e12050000000000000000000916222f3c4955626f7c8895a0acb8b0a69d938e837d7874727170717275777b80859197a1adafa296897c6f6356493c3023160900000000000000000000000c18232f3c4956626f7c8997a2adb5ab9a8d8174675763707c8998a2aeb6aa9d908377685e5246392d1b1106000000000000000000000013202c3946535f6c7986929facb9ac9f9286929facb2a89a8d8074655b5044372b2a36414c5665717e8b99a3aeac9f928687929facb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c6f626e7b86929fa7b1b0a69e9184796d60574d42363946535f6c7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255493c2f22160900000b1825313e4b5864717e8b97a4b1aa9d9084776a5d5144372a1e110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c9aa4afb3a99f93877d716c625f585756565657585f626c717d87929fa8b2b3a99b8e827568574d42362a1e120500000000030e18212a31373a3b3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3b3a37312a21180e03000000000000000000000000000d1a2633404d596673808c99a6b3a89c8f8275695c4f4236291c0f0000000000000000000000000000000000000000050e1925303b44505a616d7a85929ea7b1a79e9184796d6053463c31261a0e020000000000000b16212c38434e58626f7c87939fabb5ac9f92867a6d626262626262626262626e7b8794a1aeada093877a6d62626262605d564c4135291d1104000c1926333f4c5966727f8c99a5b2a99c8f82766961676d717477797b7b7b7a7876736f6c65605d555049413b332b221a11080000000000000000000714212e3a4754616d7a86929fabb5aea29892867f7a7776757576787b7f83898376695e53463a2d2114090000000000000000000815212e3b47535f6a7784919da7b1b8afa59d95908a84817e7e7d7e7f8184888d9297a1a9b3afa296897c6f6356493c3023160900000000000000000000000713202d394653606c7985929fabb7aa9e918477695e6773808d9aaab3b4aa998d807366564c41362a1e0a00000000000000000000000013202c3946535f6c7986929facb9aea3989298a3aeaca196897c6f6253493f332725303b4754606d7a86929facafa399929299a3aeb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c6f6b75818e98a2aeb4ab9f948a7e71675d51453c313946535f6c7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255493c2f22160900000b1825313e4b5864717e8b97a4b1aa9d9084776a5d5144372a1e11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d576976838f9cacb6ada1978c80736b615a534e4b4a494a4b4e535a616b727f8c96a1adb8ab9e928578695e53463a2d2114070000000000060f1820262b2e2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2e2d2b261f180f0600000000000000000000000001050d1a2633404d596673808c99a6b3a89c8f8275695c4f4236291c0f00000000000000000000000000000003060809090808141e29323e46525e68727e8b95a0acada1968a7e7164574d42372b1e1206000000000000040f1b27323d47545f6a75828f99a4afaea2988d8073685d55555555555555616e7b8794a1aeada093877a6d6055555554524c433a2f24190d01000c1926333f4c5966727f8c99a5b2a99c8f827669555d606467666d6e6e6e6d67696763605b53514b443f382f2921191008000000000000000000000713202d3946525e6875828f99a4afb4aaa298928c86848282828385888b9095877b6e6154483b31251a0e02000000000000000006131f2b37434e5864717e8b959fa9b3b7afa7a09d96918e8b8a8a8b8c8e9196999fa2a9b3bbafa296897c6f6356493c30231609000000000000000000000006121f2b3844505b6675828f9ba8b5aca096877b6e61697784909daab7aea298897c706356493d3025190d01000000000000000000000013202c3946535f6c7986929facb9b4aaa39fa3aab4ab9e9184786a605441382d22202c3945525d6875828f9caab4aba39f9fa3abb4b0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c6f6f7d89939eaab4aea3998f82766c61554b40332a3946535f6c7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255493c2f22160900000b1825313e4b5864717e8b97a4b1aa9d9084776a5d5144372a1e1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a46535e697885929fabb8ab9e9285796d60595047433e3d3c3d3e43475059606d7984919eabb7ada197877b6e6154483b2e211508000000000000060e151a1f212222222222222222222222222222222222222222222222222222222222211e1a150e06000000000000000000000002080d11131a2633404d596673808c99a6b3a89c8f8275695c4f4236291c0f00000000000000000000000000040a0f1315161615130f17202a36414c56606c7883909da9b2a89c908376695f53473a2e211408000000000000000a16212b37434e58626f7c87939fabb4aa9f92857a6d60554b4848484854616e7b8794a1aeada093877a6d605448484745413a31281e130800000c1926333f4c5966727f8c99a5b2a99c8f8276695c515357545c60616261605d555a5653504945403a332d261d170f07000000000000000000000005111e2a36414c56626f7c87939fa6afb4aaa29f9993918f8e8f909297989d988c7f7265574d42362a1e12050000000000000000030f1b26323c4653606d78839097a2a9b1bab1aca8a09e9a98979797999b9ea0a8abadb3bbbcafa296897c6f6356493c302316090000000000000000000000030f1c28333f4a5465727e8b98a8b2b2a8988b7e71656e7b8795a0acb8ac9f9285796d6053463a2d20130800000000000000000000000013202c3946535f6c7986929facb9bcb4aeacaeb4b2a8998d807366584e432f261b1d2935414c5664717e8a98a2aeb5afacacaeb4bdb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c6f7883909da5afb2a89f92867b6e625a5043392f2c3946535f6c7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255493c2f22160900000b1825313e4b5864717e8b97a4b1aa9d9083776a5d5144372a1e1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8797a2adb3a6998d8073675d51473e3731302f3031373e45515c66727f8c98a9b3b3a996897c706356493d3023160a0000000000000003090f1214151515151515151515151515151515151515151515151515151515151514120e09030000000000000000000000050c13191d20212633404d596673808c99a6b3a89c8f8275695c4f4236291c0f0000000000000000000000040a0f161b1f222322211f1b151925303a44505b66717e8a96a1adab9f94887b6e6255483b2f22150700000000000000040f1b26323c47535f6a75818e99a3afada2978c7f72675d51453c3c4854616e7b8794a1aeada093877a6d6054473c3a39352f281f160c0100000c1926333f4c5966727f8c99a5b2a99c8f8276695c4f474a4a515354555454514b4d4946443f38352f27221b140b06000000000000000000000000010d1925303a47535f6a74808d949ea5aeb4aeaba49f9d9c9b9c9c9ea1a9a99d908376695e53463a2d2114070000000000000000000a151f2b3844505c666e7b859297a0a7adb3b8b2acaaa7a5a4a3a4a5a8aaacb2b1b7b9bdbcafa296897c6f6356493c302316090000000000000000000000000b17222d3b4855626e7b8896a1adb5a89b8e827566727e8b98a7b1b5a89b8f8275665c5144382c1f120600000000000000000000000013202c3946535f6c7986929facb9c5bfbab9bab8aca096887c6f6255493d3222141924303a4753606d7a86929facb8bbb9b9babfbcb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c727f8b95a0acb9aca1968d8073695f53483e31282c3946535f6c7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255493c2f22160900000b1825313e4b5864717e8b97a4b1aa9d9083776a5d5044372a1d1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8995a9b3b4aa96897d7063554b40352b26232323262b34404b54626f7b8897a2adb1a4978b7e7164584b3e3125180b0000000000000000000206080809090909090909090909090909090909090909090909090909090908080602000000000000000000000000050e171e252a2d2e3033404d596673808c99a6b3a89c8f8275695c4f4236291c0f000000000000000000040a0f161b20272b2e2f2f2e2b2620181e28333f4a54606d7984919eabb0a6988b7f7265584c3f2e23180c00000000000000000a15202b37434e58616e7b87929fabb3a99e9285796d60544b403b4854616e7b8794a1aeada093877a6d6054473a2d2c29241e160d040000000c1926333f4c5966727f8c99a5b2a99c908376695d50433e404446484848474541403c3937332d29241d17110a02000000000000000000000000000008131e2b37434e58606d78828f939fa2aaaeb4afacaaa9a8a8a9abadb3ab9f95877b6e6154483b2e21150800000000000000000003101c28343f4a545f696f7c8590959fa2a9acb1b3b5b4b1b1b0b1b2b5afaca9a4abadb2baafa296897c6f6356493c302316090000000000000000000000000614212e3a47535f697884919eabb7ab9f9285796d75828f9ca8b5b2a8988b7e7265544a4034281c100400000000000000000000000013202c3946535f6c7986929facb9c5cbc7c5c4b7aa9e9184776a5f54473b2e221513202c3945515d6775828e9baab3bec5c5c7cbbcb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c7a85929fa7b1b0a69e9184796d60574d42362c1f2c3946535f6c7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255493c2f22160900000b1825313e4b5864717e8b97a4b1a99d9083766a5d5043372a1d1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0aea298867a6d6053473a2f201b1716171b232e3947535f6a7885929eabb1a5988b7e7265584b3f3225180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c1720293036393a3c3b404c5966737f8c99a6b2a89c8f8275695c4f4236291c0f00000000000000040a0f161b20272b32373b3c3c3b37322a2217222d3844515c6674818d9aa7b4a89b8e827568544a4034281c100400000000000000040f1a26313c47535f6974818e99a3aeada1978b7f72665c51453b4854616e7b8794a1aeada093877a6d6054473a2d211d19130c04000000000c1825323f4b5865727e8b98a5b1aa9d9084776a564c413634383a3b3b3b3a39352f302d2b27221b18130b0600000000000000000000000000000000020f1b26323c44515c666d79818c92989fa2aaaaacaeb4aeb5aeacaaaba39f988c7f7265594c3f3226190c000000000000000000000b17232e38424d57606a6f7b838c92979da0a7a7a8aaaaabaaaaa8aba39f9c979ea1a8b2afa296897c6f6356493c3023160900000000000000000000000006121e2b37424d576874818e9ba7b4ada297897c6f7985929facb8aca096887b6e6155483b2e23180c0000000000000000000000000013202c3946535f6c7986929facb9c5d2d3c8bcb1a7998c807366584e43372b1f13111d2935404b5564707d8a98a2aebac6d2d3c9bcb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facafa295887c818e98a2aeb4ab9f948a7d70675d51453c31241a2c3946535f6c7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255493c2f22160900000c1926323f4c5965727f8c98a5b2a99c8f8276695c504336291d1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724313d4a5764707d8a97a3b0ac9f928579675d5145392c20130a090a121d2b37434e586a7784909daab2a5988c7f7265594c3f3226190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e29323a4146474947464c5966737f8c99a6b2a89c8f8275695c4f4236291c0f000000000000070f161b20272b32373d4347494947433c342a201c2834404a5464707d8a97a3b0ab9e918578665c5144382c1f120600000000000000000a15202b37424d57616e7b86929faab3a99e9184796d60544a3f4854616e7b8794a1aeada093877a6d6054473a2d21140d080100000000000b1825313e4b5864717e8b97a4b1ab9f928578685e5246392d2c2d2e2f2e2d2c292423201f1b17110d07010000000000000000000000000000000000000a15202834404a545d676d787f868d92989a9d9fa2aaa1aba39f9d9b99928e898074675a4d4134271a0e0100000000000000000006111c26303b454e5860696e797f858b9095979a9c9d9e9e9d9d9b9999928f8a9196a1adafa296897c6f6356493c30231609000000000000000000000000020e1a26313e4b5764717e8a97a7b1b3a9998c7f737d8998a2aeb7aa9e918477695f53463a2d1c12070000000000000000000000000013202c3946535f6c7986929facb9c5d2d1c5b8aca095887b6f6255483c32261b0f0d18242f3a4653606d7985929fabb8c5cfdac9bcb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facb2a5988c7f8c939eaab3aea3998f82766c61554b40332a1f202c3946535f6c7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255493c2f22160907080e172733404d5a6673808d99a6b3a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0ab9e9184786b554b4035291d110400000f1b263143505c6976838f9ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1925303a444c52545654524c5966737f8c99a6b2a89c8f8275695c4f4236291c0f000000000007101920272b32383d43474e545655534e463c32261b232e3b4855616e7b8894a1aeada19786796d6053463a2d2013070000000000000000030e1a26313c46535e6974818d98a3aeada1968b7e71665c50444854616e7b8794a1aeada093877a6d6054473a2d211407000000000000000a1623303d495663707c8996a9b3ada297877a6d6154473a2e232021222121201d181613120f0b06000000000000000000000000000000000000000000040c18232e39424b555d666c727b80868a8e9092989495949992908e8b86827c746e64584c3f33261a0d00000000000000000000000a141e2a333c464e575f676d727a7f83878b8d8f90919191908f8c8a86837e84919eabafa296897c6f6356493c30231609000000000000000000000000000914212e3b4754616e7a8795a0acb6a99c908376808d9aaab4b4ab9a8d807467574d42362a1e0b000000000000000000000000000013202c3946535f6c7986929facb9c5d2d0c3b7aa9d9084776a5f53473a2a20150a07131f2c3845515c6774818e9ba9b3bec9d5c9bcb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facb8ab9f9285929fa5afb2a89f92867b6e615a5043392f2118202c3946535f6c7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255493c2f221613141519202b37424e576875818e9ba8b3a69a8d8073675a4d4034271a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e51442f24180d0100000a1c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d2a36414c565e6163615e565966737f8c99a6b2a89c8f8275695c4f4236291c0f00000000030c19222b32383d43474e54586062625f584e43372b1e202d3a4753606d7a8693a0adb2a994877a6e6154473b2e21140800000000000000000009151f2a36424d57616e7b86929faab2a89e9184786d6053464854616e7b8794a1aeada093877a6d6054473a2d211407000000000000000814212e3b4754616e7a8797a1adb3a996897d7063544a3f34281d1615151413110d0706050300000000000000000000000000000000000000000000000007121c273039434b545b60696e747a7d81838587878887878684817e7a756f6b645c52473c3023170b0000000000000000000000020c18212b343c454d555c60686d72777b7e8082848485848382807d7a767884919eabafa296897c6f6356493c30231609000000000000000000000000000714202d3946525e687784909daab7ac9f92867a84919daab7aea3998a7d7063574a3d31261a0e020000000000000000000000000013202c3946535f6c7986929facb9c5d2c8bcb1a7998c7f7366584e43372b190e0404101c2834404b5563707d8a97a1adb9c6d2c9bcb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facb9aea2989298a2aeb9aca1968d8073695f53483e31271d0f202c3946535f6c7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255493c2f2220202122252a323b47535f6a7884919eabb3a9988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e07000003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3946525e686d6f6e68686466737f8c99a6b2a89c8f8275695c4f4236291c0f000000000b151e2b343d43474e545860626a6f6f6a5f53473a2f24232d3a4653606d798693a0acaea295887b6f6255483c2f221509000000000000000000030e1a25313b46525e6974808d98a2aeaca0968a7e7164594f4854616e7b8794a1aeada093877a6d6054473a2d211407000000000000000714202d3946525e687885929eabb3a69a8d8073665c5044392f281f1c17171616161514120e090300000000000000000000000000000000000000000000000b151e273139424a50575e61676d717477797a7b7b7b7a797774716d68636059524a40362b1f1307000000000000000000000000060f19222b333c434b51565d6065696e71747577777877777573716d687884919eabafa296897c6f6356493c302316090000000000000000000000000005111e2a36414c566774808d9aabb5aea3998b7f8b96a0acb9ac9f92867a6d6053473a2d201409000000000000000000000000000013202c3946535f6c7986929facb9c5d2c4b8aca095887b6e6255483c31261b0800000c18232e3a4653606d7985929eabb8c4cfc9bcb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facb9b3aaa29fa2aab3b0a69e9184796d60574d42362c1f150b202c3946535f6c7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255493c2f2d2d2d2d2e30363c444e58626e7b8896a1adada197887b6f6255483c2f22150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a7c7a7875716d737f8c99a6b2a89c8f8275695c4f4236291c0f00000007121c27303d464e545860626a6f767c7c6f62564c41352f2e343c4854616e7b8794a1aeb4aa95887b6e6255483b2f2215080000000000000000000009141f2a36424d57616d7a86929faab2a89d9083776b61554854616e7b8794a1aeada093877a6d6054473a2d2114070000000000000005111e2a36414c566875818e9babb4ab9e9184796d60554b413a312b28232323222221211e1a140d0500000000000000000000000000000000000000000000030c151f272f383f444d53555d606467656c6d6e6e6e6d6d666864615e56544f4740382f24190e0300000000000000000000000000071019212a303940454c5254575e616467696a6b6b6a6a686664606b7884919eabafa296897c6f6356493c3023160900000000000000000000000000020e1925303d4a5763707d8a99a3afb5ab9f9285929fa8b2b6a99c8f8376675d5145392c201306000000000000000000000000000013202c3946535f6c7986929facb9c5d0c3b6aa9d908377695f53473a2a20150a000007121f2c3844505c6674818d9aa9b2bdc9c9bcb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facb9bcb3aeabaeb3b4aa9e948a7d70675d51453c31241a0d13202c3946535f6c7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255493c3a3a3a3a3a3b3c41464e565f6a74818e9ba8b2ab9e9285786c605346392d20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414c5666727f898785827e7a747f8c99a6b2a89c8f8275695c4f4236291c0f0000000c18232e39424e5860626a6f767c82898074685d5245403b3b3f444f5964717e8a97a4b1aea298877a6e6154473b2e21140800000000000000000000030e1a25303b46525e6873808d98a2aeaca0958a7d7063594f54616e7b8794a1aeada093877a6d6054473a2d21140700000000000000010d1925303e4b5865717e8b99a3aeada1968a7e71675d534b433d38342e302f2f2f2e2d2a251f170f0500000000000000000000000000000000000000000000030d151d262d333b42464c515457535b606061626161605c545854524c48433d342f261d1208000000000000000000000000000000070f181e272e343a4145474d5254585a5c5d5e5e5e5d5c59575e6b7884919eabafa296897c6f6356493c3023160900000000000000000000000000000814212d3a4754606d7a86929facb9ada2979297a2adbab3a9998c7f7266554b4035291d1004000000000000000000000000000013202c3946535f6c7986929facb9c5c8bcb1a7998c7f7266574d42372b1e1206000003101c28343f4a5463707c8996a1adb9c5c9bcb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facb9c5bebab8babaaea3988f82766c61554b40332a1f120813202c3946535f6c7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f62554946464646464748494c52585f686f7c87929facb1a79b8e8174665b5044382b1f120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3946525e6876839097918e8b8681808d9aa7b4a89c8f8275695c4f4236291c0f000004101c2834404a54606a6f767c82898f92857a6d605b514b48484a5058616c76828f9ca9b5ac9f9285796c605346392d201306000000000000000000000009141f2a36414c56616d7a85929fa9b1a79d9083766b605454616e7b8794a1aeada093877a6d6054473a2d21140700000000000000000814212e3a4754616d7a86929facb2a89e9184796d655d554f46443f3e3d3c3c3c3b3a36312921170d0300000000000000000000000000000000000000000000030b141c222831363a4145474a495053545455545453504a4b4746413a38322b221d140b0100000000000000000000000000000000060c151d23282f35393b4246474b4d4f51515251504f4d515e6b7884919eabafa296897c6f6356493c3023160900000000000000000000000000000613202c3945515d677683909da9b6b3a9a29fa2a9b3b9ada197887c6f6255483c2f24180d01000000000000000000000000000013202c3946535f6c7986929facb9c5c4b8ab9f95887b6e6155483c31261a0e020000000c17232e394653606c7884919eabb8c4cebcb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facb9c5cac6c5bdb2a89f92867b6e615a5043392f21180e0013202c3946535f6c7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6255535353535353545556565e616a6f7a849199a3afaca095897d7063544a3f33281c0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a87939f9e9b98928d8d929da9b5a89c8f8275695c4f4236291c0f000006121f2c3844515c666f7c82898f949c988e81746d605d555555545c606a707d8a949fabb6a99d908376665b5044382b1f12060000000000000000000000020d1925303a46525d6873808c97a2adab9f95897d70635854616e7b8794a1aeada093877a6d6054473a2d21140700000000000000000713202d3946525e6875828f9ba6b0aca0968e81776d67605953504a4b4a4949494846423b33291f14090000000000000000000000000000000000000000000000020a11171f252a2f35393a3e3f4446474848484746443f3e3a3935302c272119100b02000000000000000000000000000000000000030b12181e24292c30363a3b3e414244444544444245515e6b7884919eabafa296897c6f6356493c30231609000000000000000000000000000004111d2935414b556673808c99aab4bbb3adabadb3bbb8ab9e9185786c605346392d20130700000000000000000000000000000013202c3946535f6c7986929facb9c5c0b6ac9d908376695f53463a2a1f15090000000006121f2b3844505b6674808d9aa8b2bdc9bcb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facb9c5d2cfc6b9aca1968c8073695f53483e31271d0f060613202c3946535f6c7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f626060606060606060616365686e737c839196a1abb0a69d9184776b605442382d22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935404b5565717e8b9aa4abaaa29f9a9a9da4aeb5a89c8f8275695c4f4236291c0f00000713202d3a4653606d79858f949c9ea69d938c7f746d6763616263666d727c86929fa6b0b0a6998c7f7366544a3f33281c0f0300000000000000000000000008131e2935414c56606d7a85929ea9b1a79c8f82766a6054616e7b8794a1aeada093877a6d6054473a2d211407000000000000000005111d2a36414c5663707d89949facb2a89e938e8179706b64605c54575656555554534d453b31251a0e02000000000000000000000000000000000000000000000000060b141a1e24292c2d2d3337393a3b3b3b3a3a38342e2e2d29251e1b160f0700000000000000000000000000000000000000000000070c13191d20252a2d2e31343637383837373845515e6b7884919eabafa296897c6f6356493c302316090000000000000000000000000000010d18242f3d495663707c8998a2aebabebab8babec0b5ab9b8e8174655b5044372b1f120500000000000000000000000000000013202c3946535f6c7986929facb9c5bbafa49a8c7f7265574d42362a180e0300000000030f1c28333f4a54626f7c8996a0acb9c5bcb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facb9c5d1c6bcb0a69e9184796d60574d42362c1f150b000613202c3946535f6c7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295887c6f6d6d6d6d6d6d6d6d6d6e6f72757a80869195a0a8b2aa9f948a7e7164594f442f261c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d6775828f9cacb1b4aeaca7a7a9aeb6b5a89c8f8275695c4f4236291c0f000006121f2c3844515c6673808d98a2aaafa59c918c817973706e6e7073787f869298a2aeb5ab9e94887b6e6255483b2d22170b00000000000000000000000000020d1924303a45515d67727f8c97a1adab9f94897c6f6258616e7b8794a1aeada093877a6d6054473a2d2114070000000000000000010d1925303a4854606b76828f9aa4afafa59e938e847d76706d66666463626262615e574d42362a1e12050000000000000000000000000000000000000000000000000003090e13191d202122272b2d2d2e2f2e2e2d2b282321201d19130f0a0400000000000000000000000000000000000000000000000001080d11141a1e20212527292a2b2b2b2b3845515e6b7884919eabafa296897c6f6356493c302316090000000000000000000000000000000713202d3a4653606d7985929facb8c5c6c5c6c7bbafa4998a7e716453493f33271b0f0300000000000000000000000000000013202c3946535f6c7986929facb9c5b9ac9f93877b6e6154483b31261a080000000000000b17222d384754606a7784919eaab7c3bcb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facb9c5cbbfb4aa9e948a7d70675d51453c31241a0d03000613202c3946535f6c7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facafa295897c7979797979797979797a7b7c7f82868d9299a0a8b1aca2989083766c6155473d331d140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7986929da0a7aab0b8b4b4b5bac0b5a89c8f8275695c4f4236291c0f000004101c2834404a54616e7a85929fa6b0ada39c928e85807d7b7b7d80848b9298a2aab4afa4998f82766a5f53473a2e1c1106000000000000000000000000000008131e2935414c55606d7985929ea8b0a69b8f82756a5f616e7b8794a1aeada093877a6d6054473a2d21140700000000000000000008131e2c38444f59626f7c87939fa7b1afa59e969189827d79767371706f6f6f6e695e53463a2d21140700000000000000000000000000000000000000000000000000000001080d111314171b1f202121222121201f1c171413110d0802000000000000000000000000000000000000000000000000000000000104090e111414181a1c1e1e1f1e2b3845515e6b7884919eabafa296897c6f6356493c3023160900000000000000000000000000000006131f2c3845515c6676828f9ca9b5c2cfd2d2c6b9ac9f93867a6d6154473a2d22170b0000000000000000000000000000000013202c3946535f6c7986929facb9c0b5ab9c908376695e52463a291f140900000000000006111c2b37434e586673808d99a7b1bcbcb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facb9c5c7baaea3988f82756c61554b40332a1f110800000613202c3946535f6c7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facb9a4998e898686868686868686868788898c8f92999fa3abb1afa49a92867b6e615a5045352b210b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724313d4a5764707d888c90959c9fa6acb2bac2c5c2b5a89c8f8275695c4f4236291c0f0000000c18232e3946525e68727f8b949fa7b1ada59d97928d898888898c91969fa3aab4b0a69f93877c6f62584e43372b1f0a000000000000000000000000000000020d19242f3a45515d67727f8c96a1adac9f93877c6f62616e7b8794a1aeada093877a6d6054473a2d21140700000000000000000002101c27333d4854606a73808d959fa7b1afa8a09e948f8a85827f7e7d7c7c7c7b6e6154483b2e2115080000000000000000000000000000000000000000000000000000000000010406060b0f121314151515141312100b06070501000000000000000000000000000000000000000000000000000000000000000000020507080b0e0f1111121e2b3845515e6b7884919eabafa296897c6f6356493c3023160900000000000000000000000000000004101c2834404b5465727f8c98a9b3bec9d5d0c3b6aa9d908377685e5246392d1b11060000000000000000000000000000000013202c3946535f6c7986929facb9bbafa3998b7f7265574d42362a1e1205000000000000000f1b27323d4855626f7c8895a0acb8bcb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facb9c5bdb2a89f92867b6e615a5043392f21180e0000000613202c3946535f6c7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facb9aaa09995939393939393939393939496989b9fa3abaeb2aba39f93887e71695f53483e3323190f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1623303c4955616c707b7f83898f949ea1a8b0b8c2c2b5a89c8f8275695c4f4236291c0f00000007121c2a36414c56606c78828f95a0a7b0afa9a19e9996949596999ea0a8aeb4afa79f948d80736a6054463c31261a0f0000000000000000000000000000000008131e2935404b55606d7984919ea8afa49a8e817569616e7b8794a1aeada093877a6d6054473a2d211407000000000000000000000b16212c38434e58606d78839095a0a8b0b2aca69f9c97928f8c8a898988888175685b4e4235281b0f0200000000000000000000000000000000000000000000000000000000000000000003050607080808070706030000000000000000000000000000000000000000000000000000000000000000000000000000000000000001030405121e2b3845515e6b7884919eabafa296897c6f6356493c30231609000000000000000000000000000000000c18232e3c4955626f7c8897a1adb9c6c6cabeb3a9998c807366564c41362a1d0a000000000000000000000000000000000013202c3946535f6c7986929facb9b9ac9f92867a6e6154473b30251a0e02000000000000000a16212e3a47535f6a7784919daab7bcb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facb9c5b9aca0968c8073695f53473e31271d0f060000000613202c3946535f6c7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facb9b2aaa4a2a0a0a0a0a0a0a0a0a0a0a1a2a5a8acaeb4aea8a199928b7f726c61574d42362c22110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202d3944505a61696e72777c828991969fa6b0b8b9b5a89c8f8275695c4f4236291c0f000000000e1925303b44505b666d7a8390959ea6adb3adaba6a3a1a1a3a6aaacb2b3ada59e959082796d60584e43332a20150900000000000000000000000000000000010d18242f3945515c67727e8b96a1acac9f92877b6e616e7b8794a1aeada093877a6d6054473a2d21140700000000000000000000050f1b27323d44515c666d7a8391969ea6aeb4b0aba9a29f9c99979695958e8175685b4e4235281b0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2b3845515e6b7884919eabafa296897c6f6356493c30231609000000000000000000000000000000000713202d394653606c7885929eabb8b9b9b9baada297897c6f6356493c3025190d010000000000000000000000000000000013202c3946535f6c7986929facb9b5ab9c8f8276685e524639291f1409000000000000000006121f2b37434e5866737f8c99a7b1bcb0a396897d7063564a3d3023170a0013202c3946535f6c7986929facb9bcb0a69e9184796d60574d42352c1f150b000000000613202c3946535f6c7986929facb0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facb9bab5b1afacacacacacacacacacadaeafb2b4b1acaaa29f9691877e726d625a50453b31241a100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c28333e4850575f62656a6f767d848f949fa6b0acaca89c8f8275695c4f4236291c0f0000000008141e28333f4a545d686e7b838f949ea1a9acb2b3afaeaeafb3b4b2aca9a19e938f837a6d675c51463d3221180e03000000000000000000000000000000000007121d2934404b55606d7984919ea8afa3998d8174686e7b8794a1acaca093877a6d6054473a2d21140700000000000000000000000a16212834404a545e686e7a848f949fa3aaafb7b3adaba9a6a4a3a29b8e8175685b4e4235281b0f0200000000000000000000000000000000000000000000000004080c0e0f131313131313130e0e0c08030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2b3845515e6b7884919eabafa296897c6f6356493c302316090000000000000000000000000000000005121f2b3744505b6575828e9ba8acacacacacab9f9285796d6053463a2d201308000000000000000000000000000000000013202c3946535f6c7986929facacaea3998b7e7165564c41362a170d020000000000000000030f1b26313c4855616e7b8895a0abacaca396897d7063564a3d3023170a0013202c3946535f6c7986929facacb4aa9e948a7d70675d51453b31231a0d03000000000613202c3946535f6c7986929facaca3968a7d7063574a3d3024170a0013202c3946535f6c7986929facadadadadadadadadadadadadadb5afacaba9a7a7a09d98928c847c716c625b51483e332a1f12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222c363e454d53555860626b707a828f949fa79f9f9f9c8f8275695c4f4236291c0f00000000020b17222d38424c565e696e79828b92979ea0a8a8a9aaabaaa9a7a8a09e97928b81796d685d554b40342b200f06000000000000000000000000000000000000010c18232f3944515c66717e8b96a09f9f9f92867b6e6e7b87949f9f9f9f93877a6d6054473a2d2114070000000000000000000000040c18232e39424c565e686e7a828c92989ea5aaacb2b3b5b2b1b0a89b8e8175685b4e4235281b0f020000000000000000000000000000000000000000000002090f14181b1c202020202020201b1a18140f0901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2b3845515e6b7884919eabafa296897c6f6356493c3023160900000000000000000000000000000000030f1b27333f495365717e8b98a89f9f9f9f9f9f9b8f8275665c5044382c1f1206000000000000000000000000000000000013202c3946535f6c7986929f9f9f9f9f92867a6d6154473b30251907000000000000000000000a15212d3a47535f697783909d9f9f9f9f96897d7063564a3d3023170a0013202c3946535f6c7986929f9f9f9fa3988f82756c61554b40332a1f110800000000000613202c3946535f6c7986929f9f9f9f968a7d7063574a3d3024170a0013202c3946535f6c7986929fa1a1a1a1a1a1a1a1a1a1a1a1a1a1a0a39f9e9c9a9795908c857f796f6a625a51493f362c21180e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101a232c333c4247484e545960686d79828f9593939393938f8275695c4f4236291c0f000000000006111c262f3a434d575e676d757e858c9196989b9c9d9e9d9d9b9896918c857e756d675d564c43392f22190f000000000000000000000000000000000000000007121d2834404a54606d78849193939393988d80736e7b87939393939393877a6d6054473a2d21140700000000000000000000000007121c27303a444c565e686d777f868e93999ea0a8a7a9aaababa89b8e8175685b4e4235281b0f02000000000000000000000000000000000000000000030c131a202527282d2d2d2d2d2d2d282724201a130b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2b3845515e6b7884919eabaca296897c6f6356493c3023160900000000000000000000000000000000000b17222d3b4855616e7b889693939393939393938b7e7165544a3f34281c1003000000000000000000000000000000000013202c3946535f6c79869293939393938f8275685e524639291e14080000000000000000000006121e2b37424d5765727f8c9a9393939393897d7063564a3d3023170a0013202c3946535f6c798692939393939392867b6e61594f43392f21180e0000000000000613202c3946535f6c79869293939393938a7d7063574a3d3024170a0013202c3946535f6c79869294949494949494949494949494949494999291908d8b87837f7a736d67605850483f372d241a0f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a212a31373a3d43474f565d676d7983868686868686868275695c4f4236291c0f0000000000000a141d28313b454d555d606c717a7f84898b8e90919191908e8c88847f7a716c605d554c443a31271d10070000000000000000000000000000000000000000010c18232e3944505c66717e86868686868686867a6e7b86868686868686867a6d6054473a2d211407000000000000000000000000000b151e29323b444c565d656c737b81888d9196979a9c9d9e9f9f9b8e8175685b4e4235281b0f020000000000000000000000000000000000000000020c151e252c313435393939393939393534302b251d150b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2b3845515e6b7884919e9f9f9f96897c6f6356493c3023160900000000000000000000000000000000000614212d3a46535f697784868686868686868686867b6e6154483b2e23170c00000000000000000000000000000000000013202c3946535f6c7987868686868686867e7164564c4135291d110500000000000000000000020e1a26313c4854616e7b88868686868686867d7063564a3d3023170a0013202c3946535f6c7987868686868686868073695f53473e31271d0f060000000000000613202c3946535f6c7987868686868686867d7063574a3d3024170a0013202c3946535f6c7987878787878787878787878787878787878786868483817e7b77726d68605d554e463f362d251b120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080f1820262b2e32373d444c555d676d77797979797979797570655a4d4135281b0f000000000000020b161f29333b434b515a62686d72787c7f828384848483817f7c77726d67625a514b433a32281f150b0000000000000000000000000000000000000000000007121c28343f4a54616c7179797979797979796d6976797979797979797976685d5245392c20130700000000000000000000000000030c172029323b444c535b60696e757b8084888b8d8f919192939a8e8175685b4e4235281b0f02000000000000000000000000000000000000000009131e272f373d40424646464646464641403c372f271d130900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2b3845515e6b7884919393939393897c6f6356493c30231609000000000000000000000000000000000005121e2a36424d576772777979797979797979797976695e53463a2d1c1106000000000000000000000000000000000000121f2c3845525e6a757979797979797979716c6256443a3025190d0100000000000000000000000915202d3a46525e69767979797979797979706b6054483c2f22160900121f2c3845525e6a757979797979797979736d63574d42352c1f150b0000000000000006121f2c3845525e6a757979797979797979706b6155483c2f23160900121f2c3845525e6a757a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a79787674716e6965605d56514b433d342d241b13090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151a1e21272b323a434c555d606a6c6c6c6c6c6c6c69655e54493d3125190d00000000000000040d172029313a414550565d61656c6f7275767778777674726f6a65605d5550454039312820160d0300000000000000000000000000000000000000000000000b17232e3842505a61646c6c6c6c6c6c6c6c615e6c6c6c6c6c6c6c6c6c6c5d564c4135291d11040000000000000000000000000000050e172029323a414950575e616a6e73777c7e80838484858686868175685b4e4235281b0f0200000000000000000000000000000000000000040f1a252f3941484d4f535353535353534e4d4841392f251a0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2b3845515e6b7884868686868686867d6f6356493c302316090000000000000000000000000000000000020e1a26313b455660676b6c6c6c6c6c6c6c6c6c6c6c5e574d42362a1e0a00000000000000000000000000000000000000111d2a36424e59636a6c6c6c6c6c6c6c6c64625a504532281e130800000000000000000000000005121e2a36424d575e6b6c6c6c6c6c6c6c6c6360594f44382c20130700111d2a36424e59636a6c6c6c6c6c6c6c6c66635b52453b31231a0d030000000000000004111d2a36424e59636a6c6c6c6c6c6c6c6c6361594f44382c201407000714202d3946525e686e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d6d6c65696764615e5754524c454039312b221b1209010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e12151b2028313a434c51545e606060606060605c5a544c42372c2115090000000000000000050e171f282f353e444c52535b60626568696a6b6a6a6865625f5854514b433e352f281f160e0400000000000000000000000000000000000000000000000006111c26303e48505557606060606060605f54535f60606060606060605f524c443a2f24190d01000000000000000000000000000000050e1720282f383f444d53585f62666a6f717476777878797979756f65594d4034271b0e01000000000000000000000000000000000000000814202c37414b53595b606060606060605b59534b41372b201408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2a3743505c687278797979797979796f6b6054483b2f22150900000000000000000000000000000000000009141f2933444e565c5e606060606060606060605f534d453b31251a0e000000000000000000000000000000000000000e1a26313d4751595e5f60606060606060585650483e3420160c02000000000000000000000000020e1a25303b454d5254606060606060606056544f473d33271c1004000e1a26313d4751595e5f60606060606060595752494033291f11080000000000000000010e1a26313d4751595e5f6060606060606057554f473e33281c10040005111e2a36414c565e61616161616161616161616161616161616160605b535a5854534d4745413a352f271f19100900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002060a0e161f28313a41454751535353535353534f4d49423930261b1004000000000000000000050d161d2429323a414649505356585b5d5e5e5e5d5b5955534e4745413a3129241d160d0400000000000000000000000000000000000000000000000000000a141e2c363e45494b535353535353535247464853535353535353535345413a32281e13080000000000000000000000000000000000050e161d262d333b42464e5355585f626467696a6b6c6c6c6c68655d53483d3124180c00000000000000000000000000000000000000000c1825313d48535d65686c6c6c6c6c6c6c68645d53483c3024180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1b27333f4b5660686b6c6c6c6c6c6c6c6360594f43382c1f1307000000000000000000000000000000000000030d1721323c444b5051535353535353535353534846423b33291f1409000000000000000000000000000000000000000915202b353f474e5253535353535353534b49453e362d220e04000000000000000000000000000009141f29333b42464853535353535353534a48443d352b21160b00000915202b353f474e5253535353535353534d4b4740372e21180d000000000000000000000915202b353f474e5253535353535353534a48443e352c21160b0000010d1925303b444c52545454545454545454545454545454545454535350494e4b4846423b39352f29241d150d070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161f282f35393a444646464646464642413d3730271e14090000000000000000000000040c131820283035383f4446494c4f50515151504e4c4947433c39352f281f18120c04000000000000000000000000000000000000000000000000000000020c1a242c34393d3e46464646464646463a3a3b46464646464646464639352f2820160c01000000000000000000000000000000000000040b141b222731363c4347484e5355585a5c5e5e5f6060605b59534b41372c20140800000000000000000000000000000000000000010e1b2734404d59656f7579797979797979746f64594d4034271a0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232f3a444e565c5e6060606060606056544f473d32271b0f0300000000000000000000000000000000000000060f202a323a3f4344464646464646464646463b3a36312921170d0300000000000000000000000000000000000000040f19242d353d424546464646464646463e3d39342d241b10000000000000000000000000000000030d17212930363a3b46464646464646463d3c38332b23190f050000040f19242d353d42454646464646464646403f3b352e251c0f0600000000000000000000040f19242d353d424546464646464646463d3c38332c231a100500000008141e29323b41464747474747474747474747474747474747474746443f413e3b3a36312c29241e18120b03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161e24292c2d37393939393939393635312c261e150c0200000000000000000000000001070e161e24292d3337393c3f424344454443413f3c3b37322c29241d160d0701000000000000000000000000000000000000000000000000000000000008121a22282d303139393939393939392e2d2e3939393939393939392c29241e160d040000000000000000000000000000000000000000020a11171f252a31373a3c4347484b4d505151525353534e4d4841392f251a0f0400000000000000000000000000000000000000020f1c2835424f5b687581868686868686868174685b4e4135281b0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d28323c444b5051535353535353534948433d352b21160a0000000000000000000000000000000000000000000e1820282e333738393939393939393939392e2d2a251f170f0500000000000000000000000000000000000000000008121b242b313638393939393939393931302d29221b120900000000000000000000000000000000050f171f252a2d2e3939393939393939302f2c27211911080000000008121b242b313638393939393939393933322f2a241c130a00000000000000000000000008121b242b3136383939393939393939302f2c28211a110800000000020d1720293036393b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3a3a3937332d312e2d2a25201d19130c070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13191d20212b2d2d2d2d2d2d2d292825211b140c03000000000000000000000000000000040c13191b22272b2d2f3235363738373735322f2e2b26201d18130c0400000000000000000000000000000000000000000000000000000000000000000810171d2123242d2d2d2d2d2d2d2c2121212d2d2d2d2d2d2d2d2d201d19130c040000000000000000000000000000000000000000000000060b141a20262b2e31373a3c3e414344454546464642403d372f271d13090000000000000000000000000000000000000000020f1c2835424f5b6875828e93939393938e8174685b4e4135281b0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c16202a323a3f4345464646464646463c3b38322b23190f04000000000000000000000000000000000000000000060e161d23272a2b2d2d2d2d2d2d2d2d2d2d21211e1a140d05000000000000000000000000000000000000000000000009121920262a2c2c2d2d2d2d2d2d2d2524211d171009000000000000000000000000000000000000050d141a1e20212d2d2d2d2d2d2d2d2322201c160f0800000000000009121920262a2c2c2d2d2d2d2d2d2d2625231e19120a010000000000000000000000000009121920262a2c2c2d2d2d2d2d2d2d2423201c161008000000000000050e171e252a2d2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2d2d2b27222521211e1a14110d0801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080d1113141e202020202020201c1b1915100902000000000000000000000000000000000002080d11171b1f202325282a2b2b2b2a282622211f1b15110d070100000000000000000000000000000000000000000000000000000000000000000000060c11151718202020202020201f14141520202020202020201413110d08010000000000000000000000000000000000000000000000000003090e151a1f21262b2e2f3134363738393939393534312c251d150b010000000000000000000000000000000000000000020f1c2835424f5b6875828e9b9f9f9f9b8e8174685b4e4135281b0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f1820282f33373839393939393939302f2c27211910070000000000000000000000000000000000000000000000040c12171b1d1e202020202020202020201514120e090300000000000000000000000000000000000000000000000000080f151a1d1f2020202020202020181715110c06000000000000000000000000000000000000000003090e1214152020202020202020171613100b050000000000000000080f151a1d1f20202020202020201a1916130d0700000000000000000000000000000000080f151a1d1f2020202020202020171614100b050000000000000000050d14191e2021212121212121212121212121212121212120201f1b17181514120e0904010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e07000003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104060711131313131313130f0f0d090400000000000000000000000000000000000000000000060b0f121316191c1d1e1e1e1d1b191615130f0a0401000000000000000000000000000000000000000000000000000000000000000000000000000005080a0b13131313131313130707081313131313131313070704010000000000000000000000000000000000000000000000000000000000030a0f12151b1f21222527292b2b2c2d2d2d282724201a130b03000000000000000000000000000000000000000000020f1c2835424f5b6875828e9ba8aca79b8e8174685b4e4135281b0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f161d23272a2b2d2d2d2d2d2d2d23221f1b160f070000000000000000000000000000000000000000000000000001060b0f111113131313131313131313080705020000000000000000000000000000000000000000000000000000000004090e111213131313131313130b0a08050000000000000000000000000000000000000000000000000205070813131313131313130a090704000000000000000000000004090e111213131313131313130d0c0a070200000000000000000000000000000000000004090e111213131313131313130a090704000000000000000000000002080d11141414141414141414141414141414141414141413120f0b06080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e51442e23180c000003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506090c0f10111211100e0c0908060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002060a0f121515181a1d1e1e1f2020201b1b18140f090100000000000000000000000000000000000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c12171b1d1e202020202020201615130f0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507080808080808080808080808080808080807070605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0ab9e9185786b544a4034281c10040003101d2a3643505d697683909ca9b2a5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000040607070706030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306071113131313131313130909070300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030608090b0e101112121313130f0e0c0804000000000000000000000000000000000000000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070b0f11121313131313131309090703000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0ac9f928579665c5144382c1f12060004111d2935414c566a7784909daab2a5998c7f7266594c3f3326190c000000000000000000000000000000000002050708070c101313141312100c060807050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060607070604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b1012131e20202020202020201615130f0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a96a3b0ac9f9386796d6053463a2d201308090713202c3945525d687884919eabb2a5988b7f7265584c3f3225190c00000000000000000000000000000003090e12141518181c1f2021201f1c17181414110e08020000000000000000000000000000000000000000000000000000000000000000000000000001040707060b0f1213141313100c070908060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171c1f202b2d2d2d2d2d2d2d2d23221f1b160f07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080b0d0f11121213131212100f0d0b08070502000000000000000000000000000000000000000000000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1623303d495663707d8996a3afafa49a887b6f6255483c2f241917161718212d3a4754606d7a8796a1adb1a4988b7e7165584b3e3225180b00000000000000000000000000060b0f141a1e20212523282c2d2d2d2c28232521201e1914100b0500000000000000000000000000000000000000000000000000000000000000000001080d11131418171c1f2021201f1c18191515120f0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c141c23282b2d373939393939393939302f2c272119100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205090e121415181a1c1e1e1f201f1f1e1d1c1a181514120e090603000000000000000000000000000000000000000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7b8895a9b3b6ac978b7e7164564c413529252323232429343f4a5463707c8996a8b2b4ab968a7d7063574a3d3024170a0000000000000000000000020a11171b1f252a2d2e322e34383a3a3a38342e322e2d2a251f1c17100b040000000000000000000000000000000000000000000000000000000000040a0f13191d20212522282b2d2d2d2c28232622211f1b15100c0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e262e34383a4446464646464646463c3b38322b22190f04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090e12141a1e21212527292b2b2c2c2c2c2b2a29272421211e1a15120f0a0300000000000000000000000000000000000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a8797a1adb4a89b8e8175685d52453c3530302f302f353c44505c6673808d9aa6b3aea399887c6f6255483c2f22150900000000000000000001070b141b22272b30363a3b3f424045464746443f413f3b3936302d28221b160c070100000000000000000000000000000000000000000000000000030a0f161b1e24292c2d312d3338393a3a38342e332f2e2b261f1c18120b03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2630383f44465153535353535353534948433d342b21160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e141a1e20252a2d2e31343637383939393938373533312e2d2a25211f1a150f0a040000000000000000000000000000000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202c3945525d687885919eabb8ac9f92867a6d60584e46413e3d3c3d3e40454d57606d7885919eabb8ac9f9286796d6053463a2d2013070000000000000000030b12181d262d33373b4246484b4e4b51535453504a4e4b4746413b39332c272118120b030000000000000000000000000000000000000000000000060b151a21272c2f35393a3e413f444647464540423f3c3a37312c29231d150d09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e38424a50535e606060606060606056544f473d32271b0f0400000000000000000000000000000000000000000000000000000000000000000000000000000001070c141a1f252a2d31363a3b3e4042444545464645454342403e3b3a36312e2b26201b160d0801000000000000000000000000000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c566975828f9ca8b5aea2988c80736a6058524c4b4a494a4b4b51575f69727f8b97a1adb6aa9d908377665c5145382c1f130600000000000000050d151d24292f383f44464d5254585b545c6060605c545b5854524d49443e383229241d150d050000000000000000000000000000000000000000020a111720262b32383a4145474b4e4a50535453514b4f4c4847433c38342f271f1a140d050000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a545c606a6c6c6c6c6c6c6c6c6360594f43382c20160a0000000000000000000000000000000000000000000000000000000000000000000000000000030b12181f262b30363a3b4246484b4d4f51515253525251504f4d4b4846423c3a37312c272119130c040000000000000000000000000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1924303f4c5965727f8c98a6b0b4aa9f92877c6f6a615e565756565657555d60696e7b86929fa9b3b1a7998c807366544b4034281c1004000000000000050f171f272f353d41495053575e6165686a666d6d6d666a6865615e56555048443d352f271f170e05000000000000000000000000000000000000030c141c232831373d43484c5254585b545b6060605c555c5955534e47454039312a251f170f0700000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505c666d7779797979797979796f6b6054483d32271b0f04000000000000000000000000000000000000000000000000000000000000000000000000060d151d232931373b4246484d5354585a5c5e5e5f5f5f5f5e5d5c5a5754534d4847433c383229241e160d0600000000000000000000000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4855616e7b88949fabb7aea39992857c736d6866646362636466676d737b849198a2aeb8ab9f95887c6f6255493c2e23180c000000000000050f172129313940454f535b6064696e72757779797a79797774726e6864615a544f454039312920170f0500000000000000000000000000000000040d151e262e343c43474f54565d6064676a666c6d6d676b6866625f5853514b433f3630292119100800000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798486868686868686867d6f63584e43382b20150a0000000000000000000000000000000000000000000000000000000000000000000000070f171f272f343c42464d5254575e616467696a6b6c6c6c6c6b6a686664615e5755534e48433d352f2820180f06000000000000000000000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a46535f697683909ca6b0b5aba1979286807a767371706f707172767a7f859196a1aab4b0a69d9083766a5f54473b2e1d12070000000000050e172129333b434b515960656c70767b7f8184858687868584817e7b76706c636059514b433b322921170e040000000000000000000000000000040d161f2730383f444e53596063686d71747778797a79797775726f6a65605c555046423b332b221a11080000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505c66717e8b9693939393938f82766a6054473d32271b0f040000000000000000000000000000000000000000000000000000000000000000000710192129313940454d53575e6166696e71737577787879797878767573716e6967625f58544f45413a322a211810060000000000000000000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2b37424d5764707d8a949faab4b3a9a198928d86837f7e7d7c7d7e7f82858c9297a1a8b2b4aa9f948a7d7064584e43372b1f0b0000000000020b172029333b454d555d606b70787d83878b8e919298939892908e8b87837d77706b605d554c443b332920160b02000000000000000000000000030c161f283139424a50585f626b6f757a7e8183858687868684827f7b77726d67625a524d453d342b231a100700000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54606d7884919ea89f9f9f94897c6f62584e43372b20150a0000000000000000000000000000000000000000000000000000000000000000071019222b333b434b51575f61696e73777b7e8082848485868585848382807e7b77736f6a636059524c443c332a22180f0500000000000000000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a26313c4955616c76829098a2acb5b3aaa29f98928f8c8a8989898a8c8f92989fa2a9b2b6aca2989083766c6155463c32261b0f00000000000a141d29323b454d575e676d747d838a90939a9b9d9fa2aaa29f9d9b99938f8a837d746d675e564d453b32281d140a0000000000000000000000000b151e28313a434b545c606a6f767c82868b8e9092939a9892918f8c88847f79716c615e574e463d352b22180e050000000000000000000000000000000000000000000000000000000000000000000000000b17232e3844505c66717e8b96a1acb0a69c8f82756a6054473c32261b0f04000000000000000000000000000000000000000000000000000000000000050e19222b343d454d555c60696e757b8084878b8d8f91919292929291908f8d8a8784807b766f6b605d564d453c342a21170c03000000000000000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2d3944505a626e7b86929aa4abb3b4aeaaa39f9c999796959697999c9fa2aaadb3b4aca49a92867b6e615a5044342a20150a0000000006111c262f3b444d575e696e79818990959c9fa4acaaacaeb4aeacaaaba49f9c95908880796e685e574d443a2f261b11060000000000000000000007121c27303a434c555d666d727c82898f92999a9d9f9fa4a39f9e9b9995918b847e766e6960584f473d342a20160c02000000000000000000000000000000000000000000000000000000000000000000000006111c28343f4a54606d7984919ea8b2aa9e94897c6f62584e43372b20150a0000000000000000000000000000000000000000000000000000000000020b17202b343d464e575f676d737b81868d9195979a9c9d9e9f9f9f9f9e9d9b999796918d88827c746d685f574e463c33291e150a000000000000000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28333e47535f69717e889399a2aab0b9b4aeaca9a6a4a3a2a3a4a5a9acaeb4b8b1aaa29a93887e71695f53483e3322190e04000000000b17222d38424c565e696e7b838e939da0a7acafb6b1aeadadadaeb1b5afaca7a09a938d837a6e695e564c41382d22170b020000000000000000030d18232e39424c555d676d787f868f949b9fa3abaaabacafaeacaaa8a7a09d96918b827b6f6a60594f463c32281e13080000000000000000000000000000000000000000000000000000000000000000000000000c17232e3844515c66727e8b96a1adb0a69c8f82756a5f54473c32261b0f04000000000000000000000000000000000000000000000000000000000a141d29323d464e5860696e7980868e92999da0a7a6a8aaababacacababa9a8a6a8a09e9a948f89817a6e695f584e453b30261c11060000000000000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222b37424d57616c727f8792989ea6acafb6b8b6b2b1b0afb0b1b2b5b8b6b1aca79f9892887f726c61574d42362c22100700000000030f1c28333f4a545e686e7b8490959da5acb1aeaca8a4a1a0a0a1a2a4a8acaeb1aca49f9590847b6e685d53493f33271f140900000000000000010b151f2834404a545d676d79828c92989fa6acaeb4b4b0afaeaeb0b2b5b1aca9a19e948f857c706b60584e443a3025190b02000000000000000000000000000000000000000000000000000000000000000000000006111c2834404a54606d7984919ea8b2aa9e94887c6f62584e43372b20150a00000000000000000000000000000000000000000000000000000006111b262f3b444e58606a6f7b838d92989fa3abacb1b3b3b0aeadacadaeafb2b4b3b2acaaa69f9c938e847b6f6a5f574d42382e23170c0200000000000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e1a26313c45505a626d727d858f949c9fa4acabadb3b0b1b2b1b1b5aeacaaa7a09d9590867e726d625a50453c31241a10000000000006121f2b3844505b666e7a849196a0a7afafaaa29f9b979593939495979b9fa2aaafafa79f9691837a6d655b50443b30251a0e0200000000000007121d27313944515c666d79838f949fa3aab0b2adaba7a4a2a1a2a3a5a9abb1b2ada69f9792867d706a5f564c41362a1d140a0000000000000000000000000000000000000000000000000000000000000000000000000c18232e3945515c66727f8b96a1adb0a69b8f82756a5f53473c31261b0f0300000000000000000000000000000000000000000000000000000b17222d38414c56606a6f7c8590959fa3aaafb5b1acaaa6a3a1a0a0a0a1a2a5a8abadb3b7b0aba59d9691857c6f695e544a3f34281e130800000000000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202a333e48515b626c707b82898f939a9c9fa2a9a4a4a5a5a4aba39f9d9995908a837c716c625b51483e332a1f120800000000000613202d394653606c78828f96a0a8b1aea59d98928e8a88878687888b8e92989fa3abb1a8a0958f82776c60574d42362a1f14080000000000000c18232f39434f59606d78828f959ea6aeb3ada9a19e9a9795949596999d9fa7abb0b0a9a19892867c6f685e52463e2f261b1106000000000000000000000000000000000000000000000000000000000000000000000007121c2834404b54606d7984919ea9b3ac9f93877c6f62584e43372b20150a00000000000000000000000000000000000000000000000000030f1b27333f49535e686f7c859297a0a7aeb4b0aba7a09d9996959493949496989b9fa2a9acb2b7afa8a09791857b6e665c50443a3025190d00000000000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e18212c363f49515961696e757d82878c8f9297969798989897969992908d89837e786e6a615a51493f362c21180e0000000000000a1623303d495663707c89919ca4adaaa29f938e86817e7b7a7a7a7b7e81858d9299a2aab1a89f948b7f72695e52463b3025190e020000000004101c2934404b55606b74808d949fa7b0b1a9a19e96918e8a898888898c90959c9fa6afb3aaa29891847a6d61594f41382d22170b0000000000000000000000000000000000000000000000000000000000000000000000000c18232e3945515c67727f8b97a1adafa49a8f82756a5f53473c31261a0f0300000000000000000000000000000000000000000000000005121f2b3744505b656e7a859297a2a9b1b4aea69f9c95908d8a8887868788898b8e92979ea0a8aeb6b2a9a1979083786d60564c41362a1c1106000000000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f1a242d373f474f575e616b70767b7f828587898a8b8b8b8b8a888683807c77716c655f5850483f372d241a0f060000000000000916222f3b4854606b727f8c929ca4a298928a817a75716e6d6d6e6f71757a80879298a2abb0a69f92867b6e61564d41362a1e11050000000006131f2c3845515c67707d89929da6b0b0a79f97918b84817d7c7b7b7d7f83888f949fa4acb4aaa1968e81756b6153493f33271b0f03000000000000000000000000000000000000000000000000000000000000000000000007121d2834404b55606d7985919ea9b3ac9f93877c6f62584e43372b201509000000000000000000000000000000000000000000000004101c2934404b55606c77828f97a1a9b3b4aaa39f948f8983807d7b7a797a7b7c7f81858b91969da4adb5b3a99f958c7f72685e5246382d22170b000000000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121b242d353e454d53596063696e7276787b7c7d7e7f7e7e7d7b7977736f6a64605b534e463e362d251b1208000000000000000713202c38444f59636d73808c929c9792867d746e6864626060616264686d747e869299a4afaea2988d8074685e5246392d20140800000004101c2834404a54606d7984919ea4aeb0a69f9590857f7974716f6e6f7072767c828c939aa4afb2a99e938a7d70655b5044372b1f13080000000000000000000000000000000000000000000000000000000000000000000000000c18232e3945515c67727f8c97a1adafa49a8e81756a5f53473c31261a0e030000000000000000000000000000000000000000000006131f2c3845515c67717e8b949fa9b3b4aaa398928b827c7773706e6d6d6d6e6f7275797e848d929ca3adb6b1a79f92867a6d61544a3f33281c0f030000000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b232c333b42464f54575f616569696e6f7171727271706f6d6766626058535049413c342c241b1309000000000000000004101b27323d47515b636d73808d9292857c706c615e565554535455565e616c707d87939fa8b2aa9f92867b6e6154473b3024190d01000006121f2c3844515c66727f8b96a1acb2a89f948f837a726d666462616263666a6f767f88939fa4aeafa59d9083786c6053463a2f24190d01000000000000000000000000000000000000000000000000000000000000000000000007121d2934404b55606d7985929ea9b3ac9f93877c6e62574e42372b1f1509000000000000000000000000000000000000000000000714202d3a4753606d7984919ea6b0baaea39892867f78706b666362616061616365676d7179808c919ca4aebaaea2988c8073665b5044382b1f12060000000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009111a212931363d44484d535559575e616364656565646362605c5556544e46443f382f2a221b1209010000000000000000000b16212b353f49525b636e74808d867c6f6a6159524c48474747484c525a616b73808c96a1adaea3988c7f7265564c4135291d110400000713202d3a4653606d7984919ea8b2aca0968f82796e68605c54565555565860626d737e8b929ca7b1aca0958a7d7064564c4135291d11040000000000000000000000000000000000000000000000000000000000000000000000000c18232f3945515d67727f8c97a1adafa4998e81756a5f53473c31261a0e03000000000000000000000000000000000000000005111d2a36414c5664717e8b96a1acb8afa59f92867d726c65605957555453545556555d60676d747f8c929da9b2b4aa9e9185786c605346392d2013060000000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080f171f252a32383b4246484c4d5354565758585858575553514b4947433d37332d261d180f090000000000000000000000040f19232e374049525c646e74817e716a60584f46413b3a3a3b3c41465059606d7984919eabb4aa9d908376685d5245392c20130700000a1724303d4a5763707d8a96a1adb0a69d91847a6d675e56514a4948484a4e545b636c73808c95a0acb1a79b8f8275685d5245392c20130600000000000000000000000000000000000000000000000000000000000000000000000007121d2935404b55606d7985929ea9b3ab9f93877b6e62574d42372b1f140900000000000000000000000000000000000000000713202d3946525e687683909ca8b2b5ab9e938a7e716b605b534f4a4847464748494b51555d606d74808d96a1adb9ada197897c706356493d3023160a0000000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141a21272c31363a3b3f424648494a4b4c4b4b4a484645403c3b37322b27221b140b060000000000000000000000000007111c252e37404a525c646e74716c61584e463e36302d2d2e30363e45515c66727f8c98a8b2ab9f95877a6d6054473a2d2114070005121e2a36424d576874818e9ba8b2aa9e94897c6f685d554c44403c3b3c3d4347515a606c7883909da9b3ac9f92867a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000010c18242f3945515d67727f8c97a2adafa4998e8175695f53473b31261a0e03000000000000000000000000000000000000000714212e3a4754616d7a87939facb4aea3998e81756c61595049413d3b3a3a3a3b3c40454b515b606d7a84919eabb8b3a9998c807366594d4033261a070000000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e161b1f262a2d2e31363a3b3c3e3e3f3f3e3d3c3a38342e2e2b271f1b17110a020000000000000000000000000000000a131c252e38404a525c646764615a50463d342a25212021252a34404b54616e7b8796a0acb1a796897d706356493d3023160a000714202d3a46525e697885929eabb5ab9c8f82756b60564c433b342e2e2f32374044505b66707d8a97a1adaea3988a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000007121d2935404b55606d7a85929ea9b3ab9f92877b6e61574d42362a1f1409000000000000000000000000000000000000000b1724313e4a5764717d8a9aa4a6a7a99f92867b6e615a50443f382f2f2e2d2e2e2f35394045515d6773808d99a6b3b5a99c8f8276695c4f432f24180c0000000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b10141a1e2122252a2d2e303132323231302f2d2c2823221f1b160f0b060000000000000000000000000000000000010a131c262e38414a52585a585650483e342b221914141419232e3946525e697784919daab2a5988c7f7265594c3f3226190c000815212e3b4854616e7b8797a1adaea3998a7d7064594f443a3028232222272b333f4a54606c7885929eabb4aa998c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3945515d67737f8c97a2adafa3998e8174695f53463b31261a0e030000000000000000000000000000000000000d1a2633404d596673808c9697999a9c9b8e8275685e52483e332d26222120212224292f35414c55626f7c8895aab4b7ab9e9184786b554b4035291d100400000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e1214151a1e21212324252525252422201f1c1815130f0a030000000000000000000000000000000000000000010a141d262f3841474c4e4b49453e362d221910080708121d2a36424d576875828f9ba8b3a6998d8073665a4d4033271a0d000a1724303d4a5763707d8a96a9b3ac9f92867a6d6054473d32281e1815151b222d3844505b6674818e9ba7b4a89b8f8275685c4f4235291c0f000000000000000000000000000000000000000000000000000000000000000000000000000007121d2935414b55606d7a85929faab3ab9f92877b6e61574d42362a1f14090000000000000000000000000000000000000e1b2834414e5b67748188898b8c8e8f918a7e7164564d413627221b1414131415181d242f3a4753606d7a8698a2aeb9ac9f928679675d5145382c1f130600000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507090e12141516171819181817151313100c0706030000000000000000000000000000000000000000000000020b141d262f363c40413e3d39342d241b10070000000e1a2530414e5b6774818e9aa7b4a79a8d8174675a4e4134271b0e000b1825313e4b5864717e8b97a4b1aa9e918477675d5145392b20160c070a111c28333f4a5466727f8c99a5b2a99c908376695d5043362a1d100000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3a45525d6873808c98a2aeafa3998e8174695f53463b31251a0e0200000000000000000000000000000000000714202d3a4753606d797b7c7e7f818284867c6e6255483b302217110a070707070c13202c3945515d677885929fabb8afa39986796d6053473a2d20140700000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050708090b0b0c0c0b0a0907060400000000000000000000000000000000000000000000000000000000020b141d242b30333431302d28221b1209000000020b142834414e5b6774818e9aa7b4a79a8e8174675b4e4134281b0e000c1925323f4c5865727f8b98a5b2a99c90837669554b413529180d0400000b17222d3e4b5864717e8b97a4b1aa9d9184776a5e5144372b1e1100000000000000000000000000000000000000000000000000000000000000000000000000000007131d2935414c56606d7a85929faab4ab9f92877b6e61574d42362a1f1409000000000000000000000000000000000006131f2c3845515d676d6e707173747677796e6a5f53473a2e21140600000000000713202c3945525d687986929facb9afa49a877a6d6054473a2d21140700000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b131a1f2426272524211d171009000105070b141d2a36424d576975828f9ca8b3a6998d8073665a4d4033271a0d000c1926323f4c5965727f8c98a5b2a99c90837669544b4034281c10040000061824313e4b5764717e8a97a4b1aa9d9184776a5e5144372b1e11000000000000000000000000000000000000000000000000000000000000000000000000000000010d19242f3a45525d6873808d98a2aeafa3998e8174695e53463b30251a0e020000000000000000000000000000000004101d2935404b555d606263646667696a6c625f584e43372b1f120600000000060f17212d3a4754606d7a8799a3aeb9ac9f9386796c605346392d20130600000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607070706030000000000000000000000000000000000000000000000000000000000000000000000000004080e14171a1b181715110c1010080d1113181d262f3846535f697784909daab2a5998c7f7266594c3f3326190c000b1825313e4b5864717e8b97a4b1aa9d918477665c5145382c1f150a0408101926323f4c5965727f8c98a5b2a99d9083766a5d5043372a1d100000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2935414c56616d7a86929faab4ab9f92867b6e61574d42362a1f140900000000000000000000000000000000000c18242f39434b5153555658595b5c5e5f55534e463c31261a0f020000020a1117212834404a5463707d8996abb5b8ab9f928578665b5044382b1f120600000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050708070c101313141312100c0608070502000000000000000000000000000000000000000000000000000000000002091015191b1c1d1d1d1d1d1d1d1d1d1d191e2024292f38424c56616e7b8895a0acb2a8968a7d7063574a3d3024170a000a1724313d4a5764707d8a97a9b3ac9f9285796d6053463c30261c14111319222b37434e586774818d9aa7b4a89c8f8275695c4f4236291c0f00000000000000000000000000000000000000000000000000000000000000000000000000000000010d1924303a46525e6873808d98a2aeaea3998d8174695e52463b3025190e020000000000000000000000000000000007121d27313940454748494b4c4e4f51524847433c332a20150900040b0b141b2227333b44515c6673808d99a6b3b7aa9d9084776a544a3f33281c0f0300000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e12141518181c1f2021201f1c17181414110e08020000000000000000000000000000000000000000000000000000030c141b2125282929292929292929292929252a2d2f353a414a545e68727f8c99a7b1aca096877a6e6154473b2e211408000815222f3b4855626e7b8897a2adaea298897d7063574d42382e26201d20252a343c4754606a7784919eaab5ab998d8073665a4d4033271a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2935414c56616d7a86929faab4ab9f92867b6e61564d42362a1e140800000000000000000000000000000000010b151f272f35383a3b3d3e40414344463b3a37312a21180e070c10161c1d262d333c454e58606d7985919eabb8b4ab9a8e8174675b4e412d22170b0000000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f141a1e20212523282c2d2d2d2c28232521201e1914100b050000000000000000000000000000000000000000000000020c151e262c313435363636363636363636363036393a40454c535b666e7a85929fabb5ab9d918477685e5246392d201407000613202d394653606c7885929fabb4aa9b8e8174695f544a3f38302c292c30363e46505a626f7c8896a0acafa3998a7d7164574a3e3124170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000020d1925303a46525e6873808d98a2aeaea3998d8074695e52463b3025190e0200000000000000000000000000000000030d151d24292c2d2f303133343637392f2e2b2620180f0e12181c1f272c2f383f444e575f6a727f8c97a1adb9aea3998b7e7165584b3e322518060000000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171b1f252a2d2e322e34383a3a3a38342e322e2d2a251f1c17100b0400000000000000000000000000000000000000000009141e2730373d414243434343434343434343434146474b51565e656c78818f97a2adafa4998c807366564d41362a1e11050005121f2b3744505b6575828f9caab4ac9f92877b6e665c504a423c3935393a41464f58616c76828f9ca8b2ac9f92867a6e6154473b2e21140800000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2a36414c56616e7a86929faab4ab9f92867b6e61564c41362a1e14080000000000000000000000000000000000030b12181d1f202223252628292b2c22211f1a1510141a1d23282c33383d414950585f696f7c86929fa9b3b5ab9f92867a6d6154473a2e2114070000000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070b141b22272b30363a3b3f424045464746443f413f3b3936302d28221b160c070100000000000000000000000000000000000004101b26303942494d4f50505050505050505050504c5254555d60686d77818e939ea9b3ab9f93877b6e6155483b3025190e0200030f1b27333f495364717e8a98a2aeafa3998f82786d605c544e47454145474c5259616a717e8a949fabb1a79c8f8276685e5246392d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d1925303a46525e6874808d98a3aeaea3988d8074685e52463b3025190d02000000000000000000000000000000000001070c101314151618191b1c1e1f15141211171c1f252a2e34383d44484f535b606a6f7b849198a2aebbafa3998e8175685e5246392d2013070000000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181d262d33373b4246484b4e4b51535453504a4e4b4746413b39332c272118120b0300000000000000000000000000000000000915212c37424b54595c5c5c5c5c5c5c5c5c5c5c5d565e6164676d727a818e939da5afafa3998e8175695f53473a2d1f14080000000b17222d3a4753606d7985929fa9b3ab9f948d80746d665f5854524c5254565e616b707c86929fa6b0aca0958a7e7164564c41362a1e11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2a36414c56616e7b86929fabb4aa9f92867a6e61564c41362a1e13080000000000000000000000000000000000000000040607080a0b0d0e1011090e13191c23282c3136394045464f545960656c717c849196a1aab4b1a79f92877c6f62564c41362a1d11050000000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d151d24292f383f44464d5254585b545c6060605c545b5854524d49443e383229241d150d05000000000000000000000000000000000c1925313d49545d6568696969696969696969696a6b686d7074797e858f939da5afb1a79f92877b6e62574d42372b1e0d020000000613202c3945515d6773808d97a2adb0a69d928d80786f6a64605d565d6064686d737d859298a2aeafa59d9183786d6053463b3025190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d1925303b46525e6974808d99a3aeaea3988d8073685e52463a3025190d020000000000000000000000000000000000000000000000000000030a0f151a1e252a2e34383b42464b51535960636b6f787e869196a1a9b2b3a9a0958d80746a5f53443a3025190d010000000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f171f272f353d41495053575e6165686a666d6d6d666a6865615e56555048443d352f271f170e050000000000000000000000000000020e1b2834414d59656f75767676767676767676767677787a7d80858b92979ea5afb2a8a0958c80736a5f53453c31261a0e0000000004101d2935404b55606d7a85929fa5afaea49d928d827c75716d686b686d70747a80879297a2aab2a89e938a7d70665c504438291e140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141e2a36424d56616e7b86929fabb4aa9f92867a6e61564c41362a1e130800000000000000000000000000000000000000000000000002080d151a20262b3036383f44464d53545c60646b70767c838b9298a1a8b2b3aaa2979083796d60584e4332281e1308000000000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f172129313940454f535b6064696e72757779797a79797774726e6864615a544f454039312920170f0500000000000000000000000000020f1c2935424f5c68758183838383838383838383838485878a8d92979ea1a9afb2a9a1969083786d60574e42332a1f150900000000010d18242f3945525d68717e8b939ea7b1aea49d948f87817d7a7878797a7d81858d9399a2a9b3aaa1968f81756c61544a3f3428170d02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1925303b46525e6974818d99a3aeaea2988d8073685e52463a3025190d0200000000000000000000000000000000000000000000040c131920262b31373a41464a5053575e61666d71777d828990949fa2aab2b1a9a29892857b6e675d51463c3220160c02000000000000000000020f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e172129333b434b515960656c70767b7f8184858687868584817e7b76706c636059514b433b322921170e0400000000000000000000000004111e2a3744515d6a77848f8f8f8f8f8f8f8f8f8f90919297979a9fa2a9adb3afa8a09791847b6e665c51453c3121180e03000000000007121d2935414c56626c75818e95a0a8b1aea69f99928e8a87858485878a8d92989fa4abb3aaa29891847a6d615a5042382e231705000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2a36424d57616e7b86929fabb4aa9f92867a6d61564c4135291e1308000000000000000000000000000000000000000000070e161e242931373c42474c52545c6064696e73797e83898f949c9fa6aeb4afa7a09792867c6f695f554b40342a200e0500000000000000000000000f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b172029333b454d555d606b70787d83878b8e919298939892908e8b87837d77706b605d554c443b332920160b02000000000000000000000003101c2936434f5c6976828f9c9c9c9c9c9c9c9c9c9d9e9ea1a9a7abadb3b2aca59e9691857c6f695e544a40332a200f06000000000000010d19242f3a43505a606d7a8390969fa7afb0aba39f9b979892919298979a9fa2aaafb1a9a19892867c6f685d52473e30261c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25303b46535e6974818e99a3afaea2988d8073685e52463a3024190d0100000000000000000000000000000000000000091119202830353c43474e53565e61666d70757b80858b90959c9fa6abb0b1aba49f9590857d6f6a60574d433a2f22180e00000000000000000000040b0f1c2835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d29323b454d575e676d747d838a90939a9b9d9fa2aaa29f9d9b99938f8a837d746d675e564d453b32281d140a0000000000000000000000010e1b2834414e5b6774818e9aa7a9a9a9a9a9a9a9a9aaabadb3b3b5b1aca8a19e938e847b6f6a5f574d42392e21180e000000000000000008131e28313f45525d686e7a8490959fa4acb1afaca8aaa29f9e9fa2aaa7abaeb4aea79f9791867d706a60564c41352c1e140a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2a36424d57616e7b87929fabb4aa9f92867a6d61564c4135291e130800000000000000000000000000000000000009121b232b323a41454e53575f62686d73797d82878d92979da0a7abb0b1aca79f99938d837b6f6a60584e453b31281d1006000000000000000000070f161b202835424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c262f3b444d575e696e79818990959c9fa4acaaacaeb4aeacaaaba49f9c95908880796e685e574d443a2f261b110600000000000000000000000d1a2633404d596673808c99a6b3b6b6b6b6b3aeaeaeaeb3adaba9a8a09d96918a817a6e695f584e453b30271c0f060000000000000000010c161f2935414c565e686e7a838d939aa0a7b1b9b4b3aeababacaeb4b4b8b4aaa29f9590857d706b60584e443a30231a0c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25313b46535f6974818e99a3afaea2988d8073685d52453a2f24190d010000000000000000000000000000000009121b242d353d444c52585f626a6e747a7f848a8f93999ea1a9abb1b1aca7a09d95908780796e6960584e463d332a1f160c00000000000000000007111921272c2f35424f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d38424c565e696e7b838e939da0a7acafb6b5afacacaeb4b1b5afaca7a09a938d837a6e695e564c41382d22170b02000000000000000000000b1825323e4b5865717e8b98a4b1beb6aea8a6a2a2a2a1a9a19e9c9995918b847e756d685f574e463c33291e150b00000000000000000000040d19242f3a444c565e686e7880889095a0acb8c1bebab8b7b8babfc0baaea298928b837b6f6b60594f463c32281e110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2a36424d57616e7b87929fabb4aa9f92857a6d60564c4135291e130800000000000000000000000000000007111b242d363f474f565d606a6f757b81868c91969c9fa4abadb3afaca7a09d95908a837c746d675f574e463d342b21180d040000000000000000040f19232b32383b3c434f5b6875828e9ba8b4a79b8e8174685b4e4135281b0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a545e686e7b8490959da5acb1adaba7aba39f9fa2aaa4a8acaeb1aca49f9590847b6e685d53493f33271f1409000000000000000000000a1724303d4a5763707d8a96a3b0b9aea49c9a959595959497928f8c88847e79716c615e564d453c342a21170c03000000000000000000000008131e28323b444d565e666d747d83909daab7c3cac6c5c4c5c6cac5b8ac9f92857f776e6960594f473d342b20160c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a26313b46535f6975818e99a4afaea2988c8073685d52453a2f24190d0100000000000000000000000000040e19232d363f48505960686d747c82878e92999ea1a9acafb3adaca49f9c95908a837d766f6a605d554d453d342b22190f060000000000000000000b16212b353d44484950505b6875828e9ba8b4a79b8e8174685b4e4135281b0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505b666e7a849196a0a7afaea9a29f9a969992929894979b9fa3abafafa79f9691837a6d655b50443b30251a0e020000000000000000000915222f3c4855626f7b8895aab4b5a89c928d8888888887868582807c77716d66615a524c443c332a22180f05000000000000000000000000010c162029323b444d575f696e7a828f9ca9b6c2c5c2bfbebfc1c5c5b9ac9f92877f776d665c50443f352b22190e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2b37424d57626e7b87939facb4aa9f92857a6d60554c4135291d1307000000000000000000000000020c16202b353f48505a626b707a81878e939a9fa3abadb2b1aca9a29f9a938f89837d78716c626058514b433b332b22191007000000000000000000030f1b27323d474f54565d5d5d6875828e9ba8b4a79b8e8174685b4e4135281b0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202d394653606c78828f96a0a8b1aaa29f97928e8a87868586878b8e92999ea5afb1a8a0958f82776c60574d42362a1f14080000000000000000000714212e3a4754616d7a8798a2aeb3a69a8d807c7b7b7b7a7a7876736f6a65605c545046413a322a21181006000000000000000000000000000004101c2934404b555e696e7b848f949fabb7bab8b5b2b2b2b5b8b9bbafa399928c81786d605b51463c31261b0f040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a26313c47535f6a75818e9aa4afada2978c7f73675d51453a2f24180d01000000000000000000000008131e28323d47505a626c717d858e93999fa4acaeb4b0aba8a09d97928d87827d77716c65615a544e45403a312a21191007000000000000000000000713202c38444f596063696a6a6b75828e9ba8b4a79b8e8174685b4e4135281b0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1623303d495663707c89919ba3ada7a098928c85817d7a79797a7b7e81868e939fa4acb1a89f948b7f72695e52463b3025190e0200000000000000000713202d3946525d687985929facb3a69a8d80736f6f6e6e6d676966625f5853514a423e35302820180f0600000000000000000000000000000006131f2c3845515c676e7b8491969fa6b0b4aeaca8a6a5a6a8abadb3b5aba39f938e81756d63584e43372b21160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2b37424e57626e7c87939facb3a99f92857a6d60554b4135291d130700000000000000000000010d1924303a444f59626c717e8791979fa4abafb6afaca69f9c95918b85807b75706b64605b535048433d352f281f180f0700000000000000000000000915222f3b4854606b6f7677777778818e9ba8b4a79b8e8174685b4e4135281b0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3b4854606b727f8c919ca39f9590867f7a74706e6c676d6e71757b818c939aa4afb0a69f92867b6e61564d41362a1e1105000000000000000005111d2935414c566b7784919eaab4a89b8e817568626261605d555955534e464440393029251e160e0600000000000000000000000000000005121e2a36424d57606d79839096a1a8b0afaaa29f9b9998999b9ea2a9aeb4afa59e938c7f726a5f53473d32271b0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a26313c47535f6a75828e9aa4afada2978c7f73675d51453a2f24180d0100000000000000000005111d2935414c56606b717e889299a1a9afb5b0aca49f9b948f8a847e79746e69636059535049413e383229241d160d06000000000000000000000000091623303c4956636f7c828384848486929facb4a79b8e8174685b4e4135281b0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202c38444f59626d727f8c919c9490837b736d676361605c606164696e757f88939fa5afaea2988d8074685e5246392d2014080000000000000000010d19243043505c6976838f9ca9b6a99c8f8376695c555453514b4d4847433c38342e271e19130c04000000000000000000000000000000000714212d3a46535f6973808d959fa9b2aca49f98928f8c8b8c8e92979fa2aab2afa59f92877c6f62594f44382c1d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202b37434e58626f7c87939facb3a99e92857a6d60554b4035291d12070000000000000000000713202d3946525d68707d87929aa3abb3b4aea69f9a938e88827d78726d67625f57544f46443f382f2c272118130c04000000000000000000000000000b1724313e4a5764717d8a909091919298a3aeb4a79b8e8174685b4e4135281b0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101b27323d47515b636d737f8c9290827a6e69605d555453515354575f616d727f8b939da9b3aa9f92867b6e6154473b3024190d010000000000000000081b2835424e5b6875818e9ba8b4aa9d9184776a554b47474540403c3a37312c28231c150c08020000000000000000000000000000000004111d2935404b55616e7b86929fa7b1aba39a938d86827f7f7f82858b9298a1a8b2afa3999083766b605448392e23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a26313c47535f6a75828f9ba6b0ada2978c7f72675d5145392f24180c010000000000000005111d2a36414c56616d7a859299a3acb5b2aaa29f948f87827c76706c65605d55534d48443d37332d261d1b160d070100000000000000000000000000000b1724313e4a5764717d8a979d9e9e9fa3aab4b4a79b8e8174685b4e4135281b0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353f49515b636d737f8c847a6d685f57514b47464547484d535b626d74818e97a2adaea3988c7f7265564c4135291d110400000000000000000d1a2733404d5a6673808d99a6b3ab9f928578675d51453a39352f2f2e2b261f1c18120b030000000000000000000000000000000000000613202c3945515d6774818d99a3aeafa3999288807a7573727375797f869196a1a9b3ab9f94897c6f63554b4034281c10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202b37434e58626f7c88949eaab3a99e9285796d60554b4035291d1207000000000000000713202d3946525e6874818d97a1abb5b2a8a198928b827c756f6a63605b53514b47423c38332b27221b140b0a04000000000000000000000000000000000b1724313e4a5764717d8a97a4aaabacaeb4bcb4a79b8e8174685b4e4135281b0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19232d373f49515b636d73807d6f685e564d45413b39383a3b4246515b606d7a85929fabb4aa9d908376685d5245392c20130700000000000000000c1925323f4c5865727f8b98a5b2aea298877a6d6054473a2d292422211f1b15100c0700000000000000000000000000000000000000000714202d3a4753606d7a86929fabb1a79f92877e746d68666566676d727c849197a2adb0a69b8e8175675c5145382c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000105070709090909090909090909090f1b26313c47535f6a75828f9ca6b0ada1978c7f72675d5145392f24180c010000000000000714212e3a4754616d7a86929fa9b3b3a9a19691867e766f6a62605853504945403937312c271f1b17110a020000000000000000000000000000000000000b1724313e4a5764717d8a97a4acacacacacacaca79b8e8174685b4e4135281b0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b252e374049525b636d736f6b60564c433c352f2d2c2d31363f45525d68737f8c99a8b2ab9f95877a6d6054473a2d21140700000000000000000b1724313e4a5764717d8a97a4b0b4aa95887b6e6255483b2f22181515120f0a04000000000000000000000000000000000000000000000b1724313e4a5764717d8a98a2aeab9f958b7f726c605d5658555c606a6e7c85929faab4ac9f9285796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000002080d11131416161616161616161616161616202b37434e58626f7c89949eaab3a99e9285796d60554b4035291d12070000000000000c1925323f4c5865727f8b99a3aeb9ada19791847c716c625f58544e46443f38352f2b261f1c160f0b0600000000000000000000000000000000000000000b1724313e4a5764717d8a979f9f9f9f9f9f9f9f9f9b8e8174685b4e4135281b0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131c252e374049525b63666360594f443a312924201f20262a35414c56616e7b8896a0acb1a796897d706356493d3023160a00000000000000000916232f3c4956626f7c8995abb5afa396897c706356493d302316070909090909090908070502000000000000000000000000000000010e1a2734414d5a6774808d9aaab4aa9d9083786c605a524c4c4b51575f6a727f8c98a2aeaea298897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000040c13191d2021222222222222222222222222222226323c4754606a76828f9ca6b0ada1978c7f72675d5145392f23180c000000000004101c2834404b556975828f9cabb5b3a99e92857b6f6a615a534e47433c37332d29241d1a15100b0b0a0805000000000000000000000000000000000000000b1724313e4a5764717d8a93939393939393939393938e8174685b4e4135281b0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131c252e37404952575956544f473d32281f181313141a242f3a46535f697784919eaab2a5988c7f7265594c3f3226190c00000000000000000815212e3b4854616e7b8799a3afb1a4978a7e7164574b3e31241816161616161616161514120e09020000000000000000000000000003101d2a3643505d697683909ca9b5ab978b7e71655b5045413f40454e57606d7986929facb4aa988b7e7265584b3f3225180c000000000000000000000000000000000000000000000000000000000000000000000000040e161e24292d2e2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f37434e58626f7c89949fabb3a99e9185796d60554b4034291d12070000000006131f2c3845515c677885919eabb8ada2978b7e71695f585047433c37322b27221b18120e121415181715110c0600000000000000000000000000000000000b1724313e4a5764717e868686868686868686868686868174685b4e4135281b0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131c252e3740474b4d4948443d352b20160d070609131e2a36424d576975828f9ca8b3a6998d8073665a4d4033271a0d00000000000000000713202d3a4653606d7986929facb2a5988c7f7265594c3f322622222222222222222221201e1a140d0500000000000000000000000005121e2b3845515e6b7884919eabafa399877b6e6153493f3530343c45515d6776828f9ca9b3a6998d8073665a4d4033271a0d0000000000000000000000000000000000000000000000000000000000000000000000020c1620283035393a3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3d4754606a76828f9ca6b0ada1978b7f72675c5145392e23180c000000000713202d3a4653606d798697a1adb8ab9f9285796d60574e463e37312b271f1b171112131a1e20212424211d171009000000000000000000000000000000000a1723303c4955616c7179797979797979797979797979746f64594d4034271a0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131c252e353b3f403c3b38322b23190e040000010e1a2631414e5b6874818e9ba7b4a79a8d8174675a4e4134271b0e000000000000000006121f2b3844505c667885919eabb3a79a8d8074675a4d41342f2f2f2f2f2f2f2f2f2f2e2d2a251f170f05000000000000000000000005121f2c3845525f6b7885929eabac9f9286796c605346392d242935404b556774818e9aa7b4a79a8d8174675a4e4134271b0e010000000000000000000000000000000000000000000000000000000000000000000008131e28323a414647494949494949494949494949494949494949494e58636f7c89949fabb3a99e9184796d60554b4034281c11060000000814212e3b4754616e7a8794a9b2b6a99c8f8376665c50453c342b26201b1819171b1f20252a2d2e31302d28221a12090000000000000000000000000000000814212d3945505a61646c6c6c6c6c6c6c6c6c6c6c6c6c68645d53483c3024180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131c242a2f3233302f2c2721191107000000030c152834414e5b6774818e9aa7b4a79a8e8174675b4e4134281b0e000000000000000003101c28343f4a546a7683909da9b5a89b8e8275685b4f423c3c3c3c3c3c3c3c3c3c3c3b3a36302921170d020000000000000000000005121f2c3845525f6b7885929eabac9f9386796c605346392d242834404b556774818e9aa7b4a79a8d8174675a4e4134271b0e01000000000000000000000000000000000000000000000000000000000000000000010d1924303a444c5254555555555555555555555555555555555555555555606b76828f9ca6b0ada1978b7f72675c5145382e23170c0000000815212e3b4854616e7b8794aab3b5a99c8f827669574e42372f2b262625252622272b2d30363a3b3e3d39342c241a0e05000000000000000000000000000004111c28333e48505557606060606060606060606060605b59534b41372b2014080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a12191e23252623221f1b160f07000306090c151e2a36424d576975828f9ca8b3a69a8d8073675a4d4034271a0d0000000000000000000b17232e424f5c6875828f9ba8b5a99c908376695d504949494949494949494949494846423b33291f14090000000000000000000005111e2b3844515e6b7784919eaaafa499877b6e6153493f352f323a45515c6776828f9ca9b3a6998d8073665a4d4033271a0d0000000000000000000000000000000000000000000000000000000000000000000005111d2935414c565d616262626262626262626262626262626262626262626263707d89949fabb2a99e9184796d60544a3f34281c100300000714212d3a4754606d7a8798a2aeb7aa9d9184776a5f5347413a3731333232322d3337393c4246484b49453e362c20170d0200000000000000000000000000000c17222c363e45494a535353535353535353535353534e4d4841392f251a0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d1316191a1615130f0a10060b1012131a1e27303846535f697784909daab2a5998c7f7266594c3f3326190c000000000000000000061a2734414d5a6774808d9aa7b3aa9e9184776b565555555555555555555555555554524d453b30251a0e0200000000000000000003101d293643505c6976838f9ca9b5ab988b7e71655b5045403c3d444d56606d7986929facb3a9988b7e7265584b3f3225180c000000000000000000000000000000000000000000000000000000000000000000000713202d3946525d686d6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f7683909ca9b6ada1968b7e72665c5044382c1f120600000613202c3945525d687885929fabb8aca096887b6e625b514b4742403f3f3e3f403f4446494d5254575550483e32291e1408000000000000000000000000000005101a242c33393c3e4646464646464646464646464641403c372f271d130900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c111417171d1d1d1d1d1d1d1d171c1f20252a3039424d56616e7b8895a0acb2a8978a7d7064574a3d3124170a0000000000000000000c1926333f4c5966727f8c99a5b2ac9f928579686262626262626262626262626262615e574d42362a1e1205000000000000000000010d1a2734404d5a6773808d9aa9b3aa9d9083786c605a514b494a4e565e69727e8b98a2aeada297897c6f6256493c2f231609000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7f8b98a5b2b2a89e9184796d6053463a2d201307000004111d2935414c566976828f9cabb5b2a89b8e81756d605d55534d4d4c4b4b4c4c49505355575e6164615a50443b3025190e02000000000000000000000000000008121a22282d3031393939393939393939393939393534302b251d150b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810171c212324292929292929292923282b2d31363c424a545e69727f8c99a7b1aca096877b6e6154483b2e2115080000000000000000000b1824313e4b5764717e8a97a4b1aea398877a6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6e695e52463a2d201407000000000000000000000a1724303d4a5763707d8a97a2adaca0958b7f726c605d5556565860686e7b85919eaab4ab9f9285796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e888888888888888888888888888888888888888888888888888b919ba7b3b9ada196877a6d6054473a2d2114070000010d19242f3f4c5965727f8c99a3afb6aa9e938b7f746d67625f575a5958585959535b606265696e716c61564c41362a1e11050000000000000000000000000000000810171c2123242d2d2d2d2d2d2d2d2d2d2d2d2d282724201a130b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121a22282d303136363636363636362e34383a3c42464e545c666e7b85929fabb6ac9e918477695e53463a2d2114070000000000000000000a1623303d495663707c8996a3afb4aa978a7e7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7b6e6154483b2e211508000000000000000000000713202d3a4653606d7985929faab1a79f92877e736d67646363656a6f7a839097a1adb0a69b8e8174675c5145382c1f1306000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b959595959595959595959595959595959595959595959595989ba3adb8bdb2a893877a6d6054473a2d2114070000000814212e3b4754616e7a87929faab4afa59b918b807a736e696966666565656667656c6f72767b7e71685e5246392d20140900000000000000000000000000000000050c11141717202020202020202020202020201b1a18140f090100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101a242c33393c3e4343434343434343433f4446484d53585f666d78828f98a2aeafa49a8d807367574d42362a1e12050000000000000000000815222f3b4855626e7b8895a9b3b2a69a908a8888888888888888888888888888888174675a4e4134271b0e0100000000000000000006131f2c3845515c6674808d98a2aeafa3999287807974716f7072767c8490959fa9b3aa9f94897c6f62554b4034281c1004000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a5a7adb5bfbaada093877a6d6054473a2d2114070000000714202d3946525e6874818e98a2aebaada39b928d857f7b77757372727172737476797c7f8387877a6e6154473b3025190e02000000000000000000000000000000000004080a0b131313131313131313131313130e0e0c080300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17222c363e45494a5050505050505050504a505355575e616a6e78818f949eaab3ab9f93877c6f6255483c31251a0e020000000000000000000714202d3a4753606d7a8697a2adbaaca29a9795959595959595959595959595958d8174675a4e4134271b0e0100000000000000000004101c2834404b54616e7a86929fa7b1aba399938c84807d7c7d7e828991969fa7b1aea3988f82766a605443392e23180c00000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4afafafafafafafafafafafafafafafafafafafafafafb2b3b8b9b9b9ada093877a6d6054473a2d21140700000005111e2a36414c56616e7b86929fa5afbbada49d97928c888482807f7e7e7f7f818385888c8f938b7f7265564d42362a1e11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111c28333e485055575c5c5c5c5c5c5c5c5c545c606265696e737c838f939ea6b0afa3998f82756a5f53473a2e1f14090000000000000000000006131f2c3945515d677885929fabb8b4aca6a3a2a2a2a2a2a2a2a2a2a2a2a2a29a8d8174675a4e4134271b0e01000000000000000000000c18232e3946525e68727f8c959fa8b2aba49f97918d8a89898b8f949da0a8b1afa59f92867c6e62584e4330271d120700000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4acacacacacacacacacacacacacacacacacacacacacacacacacacacacaca093877a6d6054473a2d211407000000020e1925303b46525e69727e8b939da5afb5aea9a19e9996918f8d8c8b8b8c8c8e909297989c9c908376695e52463a2d201409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212d3945505a61646969696969696969696a666d6f72757b808690959ea5afb1a79f92877c6f62584e43372b1f0d030000000000000000000004101d2935404b556a7784909daab7b9b6b2b0afafafafafafafafafafafafa79a8d8174675a4e4134271b0e010000000000000000000007121d2a36414c56606d78839096a0a8b0afa9a19e9a979696989c9fa6acb2afa59d938c7f726a5f53463d321e150b0000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b989f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f93877a6d6054473a2d2114070000000008141e2a36424d57626d74818e939fa3abb1b3adaba8a09e9c9999989898999a9c9fa2a9a99f93877b6e6154473b30251a0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303c4955616c717676767676767676767678797b7f82878d92989fa7afb3a9a0958d80736a5f53463c31261b0f0000000000000000000000000c18242f434f5c6976828f9ca9acacacacacacacacacacacacacacacacaca79a8d8174675a4e4134271b0e0100000000000000000000000e1925303b44505c666e7a8491969fa6aeb2adaba7a4a2a3a5a9abb0b1aba39f938e81746d63584e43342b210c030000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b939393939393939393939393939393939393939393939393939393939393939393877a6d6054473a2d21140700000000020e1a25303b45515b606c78818c9299a0a7acb2b8b2acaaa8a6a5a5a4a5a6a7a9abadb3afa4998b7f7265574d42362a1e12050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717e828383838383838383838586888b8f92999fa3aab1b2a9a1979083796d60584e43342a20150a000000000000000000000000071b2834414e5b6774818e9a9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9a8d8174675a4e4134271b0e01000000000000000000000008141e28343f4a545e686e7b8490949fa2aaacb2b3b0afb0b1b5afaca7a099928c81786d605b51463c3122190f000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e86868686868686868686868686868686868686868686868686868686868686868686867a6d6054473a2d211407000000000009141f29333f44505b666c787f8790959ea0a8abadb3b3b5b3b2b1b1b2b2b4b5b4b4aeaca99c908376695e52463a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d79848f8f8f8f8f8f8f8f90919299989c9fa3abaeb4b0a8a19792857b6e675d51463c3222180e030000000000000000000000000d1a2633404d596673808c9393939393939393939393939393939393939393938d8174675a4e4134271b0e010000000000000000000000020b17232e38424c565f696e7a828c92989ea1a8a7a9a9a9a8aba49f9c9590877f756d665c51493f342a201007000000000000000000000000000000000000000000000000000000000000000000000000000b1724313d4a56626c71797979797979797979797979797979797979797979797979797979797979797979797976685d5245392c2013070000000000030d172128333f4a545b666c737d838b91969b9ea1a9a6a8a9aaabababaaa9a8a7aaa29f9b9792867b6e6154483b2e21150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c666f7c87929c9c9c9c9c9c9d9e9fa3aba8acafb5b2ada69e9691857c6f695f554b40342a201006000000000000000000000000000b1825323e4b5865717e86868686868686868686868686868686868686868686868074675a4e4134271b0e0100000000000000000000000006111c26303b444d575f686e787f858c9196989b9c9d9c9c9a99938f8a837c736d605c544a40372d22180e00000000000000000000000000000000000000000000000000000000000000000000000000000915212e3a45505a62656c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c5d564c4135291d1104000000000000050f17222d38424a545b606b6f787e84898e9297989a9b9d9d9e9e9e9d9d9c9a9898928f8b85807a6d6154473a2e21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b54606a73808d95a0aba9a9a9a9abacafb5b5b6b2aca8a19e948f847c6f6a60574d43392f22180e00000000000000000000000000000b1724313d4a56626d717979797979797979797979797979797979797979797979746e64584c4033271a0d01000000000000000000000000000a141e29323c454d565e666c727a8084898c8e8f90908f8d8b86837d776f6a635b514a42392e251c0f06000000000000000000000000000000000000000000000000000000000000000000000000000005111d29343f4850565860606060606060606060606060606060606060606060606060606060606060606060605f524c443a2f24190d010000000000000006111c262f38424a505960666d71787d8285888b8d8f909091919191908f8d8c8985827e79736d685e5246392d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e39424e58606d79839199a3afb6b6b6b8b9b4aeaca9a8a09e96918a827a6f6a60584e453b31271d100700000000000000000000000000000915212e3a45505a62656c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c67645c53483c3024180b0000000000000000000000000000020c17202a333c444c545b60686d73787c7f8182838382807e7b76706c6260585144403930271c130a000000000000000000000000000000000000000000000000000000000000000000000000000000010c18222d363f454a4b53535353535353535353535353535353535353535353535353535353535353535353535345413a32281e13080000000000000000000a141d262f383f444f545c60666c7075797c7e80828384848584848382817f7c7975716d67615e564c41362a1e11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27303c45515c676f7c87929fa7b1bdc3b9b1aaa29f9d9996918b847e756d685f584e463d33291f150b00000000000000000000000000000005111d29343f4850565860606060606060606060606060606060606060606060605a58534a41362b201408000000000000000000000000000000050e18212a323b424a50565d60656c6f72747676767574716e6864615a544e4640342e271e150b010000000000000000000000000000000000000000000000000000000000000000000000000000000006111b242d343a3d3e46464646464646464646464646464646464646464646464646464646464646464646464639352f2820160c01000000000000000000020b141d262d333d424a50545b6063666c6f72737576777878787776757472706d6664605d55524c443a3025190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e2834404b55606a73808d95a0abb5bcb1a7a09892908d89847f79716c615e564e463d342b21170d03000000000000000000000000000000010c18222d363f454a4b53535353535353535353535353535353535353535353534e4c4841382f251a0f0300000000000000000000000000000000060f1820292f383f444c52535b60626568696a69696764615e56555047433c3428231c150c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b22292e31323939393939393939393939393939393939393939393939393939393939393939393939392c29241e160d040000000000000000000000020b141c222830383f444a5053545b60626567686a6a6b6b6b6a6a69676563605c5453514b46413a32291e1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c18232e39434e58606d79839199a3afb8aca095908683807c78726d67615a524c443c342b22190f06000000000000000000000000000000000006111b242d343a3d3e464646464646464646464646464646464646464646464641403c362f261d1308000000000000000000000000000000000000060e171d262d333a414549505356595b5c5d5d5c5a5854524d49443e37322b2218120b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000911181d2124252d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d201d19130c0400000000000000000000000000020a11171e262e34383f44464a505355585a5c5d5d5e5e5e5e5d5c5a595653514b4745403936302920170d020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27303d45515c676f7c87929fa7b1aa9d90837876736f6c66605d555046413a322a221910070000000000000000000000000000000000000009121b22292e313239393939393939393939393939393939393939393939393433302b251d140b0100000000000000000000000000000000000000050b141c22283035383f4446494c4e4f50504f4d4b4746413b39332b27201910070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c1115171820202020202020202020202020202020202020202020202020202020202020202020201413110d080100000000000000000000000000000000060c141c23282d3338393f4446494b4d4f505151525151504f4e4c494645403a39352f2a251e170e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e2834404b55606a73808d95a0abaca0958b7f726963605b54514b433e353028201810070000000000000000000000000000000000000000000911181d2124252d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d272724201a130b02000000000000000000000000000000000000000000020a11171e24292d3337393c3f4143434342413e3b3936302d28221b150e07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105090b0b13131313131313131313131313131313131313131313131313131313131313131313130707040100000000000000000000000000000000000000020a11171c22282b2d3338393c3f40424344454545444342413f3d3a38342e2c29241d19130d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c18232e39434e58606d79839199a3afa79f92867b6e655b504a4540393129251e160e060000000000000000000000000000000000000000000000060c1115171820202020202020202020202020202020202020202020201b1a18140f0801000000000000000000000000000000000000000000000000060b13191b22272b2d2f32353637363634312e2d2a251f1c170f0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b11171c1f22282b2d2f32343537373838383737363432302d2c28231f1d18120d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27303d45515c676f7c87929fa8aea2988f82776c60574d41382f271f19130c04000000000000000000000000000000000000000000000000000105090b0b13131313131313131313131313131313131313131313130e0d0b080300000000000000000000000000000000000000000000000000000002080d11171b1f20232628292a2a29272521201e1914100b05000000000000000000000000000000000000000000000000000000000000000000000000030607090c0e101212131312110f0d0a07060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f12171c1f20222527292a2a2b2b2b2b2a29272623201f1c1813100c07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e2934404b55606a73808d96a0abaa9f948b7f72695f53493f33271d140a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f121316191b1c1d1d1c1a181414110e0802000000000000000000000000000000000000000000000000000000000000000000000000060b10121316191b1d1e1f201f1f1e1c1a171413100d070300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060b0f121316181a1c1d1e1e1f1e1e1d1c1b19161313100c0704000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c18232f39434e58606d79849199a4afa69f92867b6e655b50443b2f261b11060000000000000000000000000000000000000000000000000000000000000004080a0b131313131211100e0c0a07060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506090c0e1010100f0e0b080705020000000000000000000000000000000000000000000000000000000000000000000000040a0f11171c1f202226282a2b2c2c2c2c2a29262420201d18120f0b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030606090c0d0f101112121211100f0e0c0a0706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27313d45515c676f7c87939fa8aea2988f82776c60574d41382d22170b0200000000000000000000000000000000000000000000000000000000050c111417172020201f1f1e1d1b19161413100c07030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b10161b1c23282b2d2f3235363839393938373533302d2c29241f1b17110a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151f2934404b55606a73808d96a0abaa9f948b7f72695f53493f33271d140a0000000000000000000000000000000000000000000000000000000810171c2123242d2d2d2c2b2b2a282523201f1c18120f0b0600000000000000000000000000000000000000000004090e1112131313131313131309080603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d161b21272c2e34383a3c3f414345454646454442403d3a39352f2b27221b140b09020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205070d18232f39434e58606d79849199a4afa69f92867b6e655b50443b2f261b11060000000000000000000000000000000000000000000000000008121a22282d3031393939393838373532302d2c29231f1c17110a02000000000000000000000000000000000000080f151a1d1f20202020202020201615130f0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c121821272c3238383f4446494c4e505152535252514f4d4a4745403937332d261d19140d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080e111414161d27313d45515c676f7c87939fa8aea2988f82776c60574d41382d22170b02000000000000000000000000000000000000000000000005101a242c33393c3e46464646454443413f3d3a38342f2b28221c140b080200000000000000000000000000000009121920262a2c2c2d2d2d2d2d2d2d22221f1b150f07000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d161d242932383d43484a505355595b5d5e5f5f5f5f5d5c595753514b46443f382f2a251f170e0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191e20212222222934404b55606a73808d96a0abaa9f948b7f72695f53493f33271d140a00000000000000000000000000000000000000000000000c17222c363e45494a535353525251504e4c494745403938332d261d19130c040000000000000000000000000008121b242b31363839393939393939392f2e2b272019100700000000000000000000000000000000000000000000000000000000000000000000000000000000050e171f282f353d44484f54545c60626568696b6c6c6c6b6a686663605d55535049413e363029201911080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171e252a2d2e2f2f2f2f2f39434e58606d79849199a4afa69f92867b6e655b50443b2f261b110600000000000000000000000000000000000000000004111c28333e485055576060605f5e5e5d5b585653514b46443f382f29251e160e070000000000000000000000040f19242d353d424546464646464646463c3b37322b22190f040000000000000000000000000000000000000000000000000000000000000000000000000000050e172029313940454f54596063666d6f7274767878797978777573706d6763605b535046423b322b231a1108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d1720293036393b3c3c3c3c3c3c3d45515d676f7c87939fa8aea2988f82776c60574d41382d22170b0300000000000000000000000000000000000000000814212d3945505a61646c6c6c6c6b6b6a686563605c5553504a423d35302820191008000000000000000000000915202b353f474e5253535353535353534947433c342b20150a00000000000000000000000000000000000000000000000000000000000000000000000000030c172029323b434b515960636b6f74797c7f818384858685858482807d7a75706c65615a524d443d352c231a1007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141e29323b41464749494949494949494b55606b74808d96a0abaa9f948b7f72695f53493f33271f140900000000000000000000000000000000000000000a1723303c4955616c71797979797877767472706d6763605b544f46413a322b221a11080000000000000000000e1a26313d4751595e5f6060606060606055544e463c32271b0f030000000000000000000000000000000000000000000000000000000000000000000000000b151e29333b444c555d606b70767c8185888c8e909192929292908f8c8a86827d78706c615e564f473e352c22190c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1925303b444c52545555555555555555555559606d79849199a4afa69f92867b6e655b50443b31261a0e02000000000000000000000000000000000000000b1724313e4a5764717e86868685858483817f7c7974706c666059524c443c342c231a11070000000000000000111d2a36424e59636a6c6c6c6c6c6c6c6c6260584e43372b1f1306000000000000000000000000000000000000000000000000000000000000000000000007121d27303b454d565e676d747d83898d9297989b9c9e9f9f9f9e9d9b9998928f8a837d766e6960594f473e342a1e150b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414c565e61626262626262626262626262676f7c87939fa9aea2988f82776c60574d42362a1e1205000000000000000000000000000000000000000b1724313e4a5764717d8a9398929191908e8b8985817d78706b615e564e463d352c23190f0600000000000000121f2c3845525e6a757979797979797979766a6054473b2e22150800000000000000000000000000000000000000000000000000000000000000000000000c18232e39434d575e686e79818990949a9ea1a9a7a9ababacacabaaa8aaa39f9b95908a827b706b61594f463c30271d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3946525e686e6f6f6f6f6f6f6f6f6f6f6f6f6f6f74808d97a2adaa9f948b7f72695f53463a2d211407000000000000000000000000000000000000000b1724313e4a5764717d8a97a29f9e9e9d9b9898928e89837d756d6860584f473d352b21180c0300000000000013202c3946535f6c7987868686868686867c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000004101c2834404b555e696e7a838d929c9fa6abadb3b4b3b1b0afb0b1b3b5b4aeaca7a09d948f857d706b61584e43392e23180c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7d85929eabb0a69f92867b6e6155483b2e221508000000000000000000000000000000000000000b1724313e4a5764717d8a97a4acabaaa9a7aaa29f9b959089827a6f6a60594f473d332a1e150b00000000000013202c3946535f6c7986929393939393887c6f6255493c2f221609000000000000000000000000000000000000000000000000000000000000000000030d17212c3845515c676e7b8490959da4abb0b6afacaaa6a4a3a2a3a4a6aaacafb6b1aca69e9792867d706a5f554b4034281d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d59667380888888888888888888888888888888899297a2adb9aea2988b7e7265584b3f3225180c000000000000000000000000000000000000000b1724313e4a5764717d8a97a4a8a9aaacaeb3aeaba7a09d938f847c706b60594f453c30271d1207000000000013202c3946535f6c7986929f9f9f9f95887c6f6255493c2f22160900000000000000000000000000000000000000000000000000000000000000000009141f2b37434e58606d79839096a0a7aeb7afaca49f9d9a9796959697999d9fa4acafb8b0a9a19892867c6f675c5145392f24180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c9595959595959595959595959595969ea2a9b3beb4aa988b7e7265584b3f3225180c000000000000000000000000000000000000000b1724313e4a5764717d8a979b9b9c9d9fa3abacaeb1aca59e9691867d706b60574e43392e23180c020000000013202c3946535f6c7986929facaca295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000020e1a25313b47535f6a74808d959fa8b1b4aea59e9a93908d8a8989898a8d90939a9ea5aeb4b3aaa2989183796d60554b4035291d10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a2a2a2a2a2a2a2a2a2a2a2a2a2a2abadb3bbbeb1a5988b7e7265584b3f3225180c000000000000000000000000000000000000000b1724313e4a5764717d8a8e8e8e8f9092999b9fa3abafafa8a19892867d706a5f554b4034281e14080000000013202c3946535f6c7986929facafa295887c6f6255493c2f221609000000000000000000000000000000000000000000000000000000000000000005121e2a36424d57626f7c87939fa7b1b4aaa29f938e8783807e7d7c7d7e8083878e939fa2aab4b4aaa0958c7f72675d5145382c1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6afafafafafafafafafafafafafb8b9beb9b9b1a5988b7e7265584b3f3225180c000000000000000000000000000000000000000916232f3c4956626f7c81828282828486898e92999ea5afb2aaa39892867c6e675c51453b3025190e0100000013202c3946535f6c7986929facafa295887c6f6255493c2f22160900000000000000000000000000000000000000000000000000000000000000000714212d3a46535e6976828f99a4afb5aba298928a817c777371706f707173777c818a9298a2abb5b1a79e9285796d6053473a2d2014090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6acacacacacacacacacacacacacacacacacacaca5988b7e7265584b3f3225180c000000000000000000000000000000000000000815222e3b4754606a6f7575757576777a7d81868e939fa3abb4aaa2989083796d60564c41362a1d120700000013202c3946535f6c7986929facafa295887c6f6255493c2f22160900000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b87939fabb5afa49992867e756f6a676463626364666a6f757e869299a3afb9ada1978a7e7164574a3e31251a0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c999f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f988b7e7265584b3f3225180c0000000000000000000000000000000000000006131f2b37434e5860626868686869676d70747b818b9299a3abb4aaa0958d8073685e5246392f24180c00000013202c3946535f6c7986929facafa295887c6f6255493c2f22160900000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c9aa4afb3a99f93877d716c625f585756565657585f626c717d87929fa8b2b3a99b8e827568574d42362a1e120500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c93939393939393939393939393939393939393939393938b7e7265584b3f3225180c00000000000000000000000000000000000000030f1b27323d464e54565b5b5b5b555d6063696e757e879299a3afb1a79f92867a6e61554b4035291d1004000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000005121e2a36424d576976838f9cacb6ada1978c80736b615a534e4b4a494a4b4e535a616b727f8c96a1adb8ab9e928578695e53463a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d59667380868686868686868686868686868686868686868686868686867f7265584b3f3225180c00000000000000000000000000000000000000000a16202b343d4347494f4f4f4f4b5153575e616d717e87929fa7b1aea2988d8074675d5145382c1f1306000013202c3946535f6c7986929facafa295887c6f6255493c2f221609000000000000000000000000000000000000000000000000000000000000000714212d3a46535e697885929fabb8ab9e9285796d60595047433e3d3c3d3e43475059606d7984919eabb7ada197877b6e6154483b2e21150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926323f4b57636e7379797979797979797979797979797979797979797979797979726d62564a3d3124180b0000000000000000000000000000000000000000040f19222b32373b3c424242424045474d525a626c73808c959fabb4aa9f9285796d6053473a2e23170c000013202c3946535f6c7986929facafa295887c6f6255493c2f221609000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8797a2adb3a6998d8073675d51473e3731302f3031373e45515c66727f8c98a9b3b3a996897c706356493d3023160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a17232f3b47525c63666c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c65625b51453a2e22150900000000000000000000000000000000000000000007101920272b2e2f3535352f35383b4246505a606d7883909da6b0ada2978a7e7164544a3f34281c10030013202c3946535f6c7986929facafa295887c6f6255493c2f221609000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8995a9b3b4aa96897d7063554b40352b26232323262b34404b54626f7b8897a2adb1a4978b7e7164584b3e3125180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2a35404a52575960606060606060606060606060606060606060606060606060585651493f34291d110500000000000000000000000000000000000000000000070f161b1f222328282824292c30363f44505c666f7c88949fabb3a99b8f8275665c5044382c1f12060013202c3946535f6c7986929facafa295887c6f6255493c2f221609000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0aea298867a6d6053473a2f201b1716171b232e3947535f6a7885929eabb1a5988b7e7265584b3f3225180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e19242e3840474b4d535353535353535353535353535353535353535353535353534b4a453f372d23180c010000000000000000000000000000000000000000000000040a0f1315161c1c1c181d1f252a343f4a54606a7683909cacb6ab9f9285796d6053463a2d2013070013202c3946535f6c7986929facafa295887c6f6255493c2f221609000000000000000000000000000000000000000000000000000000000000000a1724313d4a5764707d8a97a3b0ac9f928579675d5145392c20130a090a121d2b37434e586a7784909daab2a5988c7f7265594c3f3226190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c262e353b3f40464646464646464646464646464646464646464646464646463f3d3a342d241b11060000000000000000000000000000000000000000000000000000030608090f0f070c10141a232e38424e5864717e8a9aa4afaea298897c6f6256493c2f2316090013202c3946535f6c7986929facafa295887c6f6255493c2f221609000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0ab9e9184786b554b4035291d110400000f1b263143505c6976838f9ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a131c242a2f32333939393939393939393939393939393939393939393939393932312e29231b12090000000000000000000000000000000000000000000000000000000406080d111314161717171c26303c4754606d7a86939facb3aa988b7e7165584b3e3225180b0013202c3946535f6c7986929facafa295887c6f6255493c2f221609000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e51442f24180d0100000a1c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a12191f2326262d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2524221d1811090000000000000000000000000000000000000000000000000000070c101313191d20212223242423222c3945525d687784909daab3a79a8d8074675a4d4134271a0e0013202c3946535f6c7986929facafa295887c6f6255493c2f221609000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e07000003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e1317191a20202020202020202020202020202020202020202020202020181815110c0600000000000000000000000000000000000000000000000001080d12181c1f2024292c2d2f303131302f2d35414c566774818e9aa7b4a89b8e8275685b4f4235281c0f0013202c3946535f6c7986929facafa295887c6f6255493c2f221609000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070a0c0d131313131313131313131313131313131313131313131313130c0b090501000000000000000000000000000000000000000000000000060b13191d23282c2d2f35393a3c3d3e3d3d3b3a38404c5966737f8c99a6b2a99c8f8276695c4f4336291c100013202c3946535f6c7986929facafa295887c6f6255493c2f221609000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171e24292e34383a3d414547494a4a4a4a484745404c5865727f8b98a5b2a99c908376695d5043362a1d100013202c3946535f6c7986929facafa295887c6f6255493c2f221609030000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080a0c0e10111112131313121211100f0e0d0c0b0a0807060401000000000000000000000000000000000000050b141b22272f35394045464a4c525455565757565553514b4b5764717e8a97a4b1a99d9083766a5d5043372a1d100013202c3946535f6c7986929facafa295887c6f6255493c2f221610100706040100000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306090e11141417191b1d1e1e1f1f201f1f1e1e1d1c1b1a191716151413110d0701000000000000000000000000000000060e171d262d333a41454b515357565d60626364646362605c55545764707d8a97a3b0a99d9083766a5d5043372a1d100013202c3946535f6c7986929facafa295887c6f6255493c2f221d1d1d1413110d07010000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f1315191e20212326282a2a2b2c2c2c2c2c2b2a292928262524232220201d18130c040000000000000000000000000006101820292f383f444c52545c606368686d6f707170706e6d6766615e64707d8a97a3b0a99d9083766a5d5043372a1d100013202c3946535f6c7986929facafa295887c6f6255493c2f2929292921201d18130c0400000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b10151b1f21252a2d2e30323436373838393939383837363534333231302f2d2c29241d160d040000000000000000000000061018222a323b414950565d60666d7074777a7c7d7d7d7d7b7976726d6864707d8a97a3b0a99d9083766a5d5043372a1d100013202c3946535f6c7986929facafa295887c6f6255493c36363636362d2c29241d160d04000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f161c20262b2e30363a3b3d3f4143444445464646454544434241403f3e3d3b3a39352f281f160c01000000000000000000050f18222a343c444d535b60686d73797d81848788898a8a898886837f7a736d707d8a97a3b0a99d9083766a5d5043372a1d100013202c3946535f6c7986929facafa295887c6f6255494343434343433a39352f281f160c010000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f151b21282c32373b3c4246474a4c4e50515152525352525151504f4e4d4c4a49484745403a31281d13070000000000000000020c17212a343c464e565e656c727a7f858a8e919695969797969992908c85807a707d8a97a3b0a99d9083766a5d5043372a1d100013202c3946535f6c7986929facafa295887c6f6255505050505050504745413a31281d13070000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009101920272b33383c4347494d525456595b5d5d5e5f5f5f5f5f5e5d5c5c5b595857565553514b433a2f24180d01000000000000000a141e29333c464e585f686e777f858c92979b9ea0a8a3a4a3aba39f9d98928d847d7e8a97a3b0a99d9083766a5d5043372a1d100013202c3946535f6c7986929facafa295887c6f625c5c5c5c5c5c5c5c54514b433a2f24180d0100000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b222b32373e44484e5355565e61636567696a6b6b6c6c6c6b6b6a6968676665646362605d554b4035291d110400000000000006111c26303b454e585f6a6f7a828b92979fa2a9aaacb2b0b0b0b5aeacaaa29f969187828f9ca9b6a99d9083766a5d5043372a1d100013202c3946535f6c7986929facafa295887c6f696969696969696969605d554b4135291d110400000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b242d343d43474f55585f6266696e70727476777778797979787877767574737271706e6d675d5145392c2013060000000000000b17232e38424d575f6a6f7c848f949fa2a9adb3b5b4aeacaaabacafb5b4aea9a199938f949fabb6a99d9083766a5d5043372a1d100013202c3946535f6c7986929facafa295887c767676767676767676766d675d5145392c20140900000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101b242d363f464e545961636a6f73777b7d7f8183848485858685858484838281807f7d7c7b79756a5e473a2d201407000000000003101c28343f4a545e696f7c8591969fa6adb3afaca8aaa29f9e9e9fa4ababadb2aba49f9c9fa6b0b6a99d9083766a5d5043372a1d100013202c3946535f6c7986929facb6aa9d908383838383838383838382796d6054473b30251a0e02000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e19222d363f48515860626b70767c808387898c8e909091929292929291908f8f8e8c8b8a898887796c5f5346392c201300000000020c17202b3844505c666e7b849197a1a8b0b0aca49f9b97989291929399999ea1a9afafaca9abb0b8b6a99d9083766a5d5043372a1d100013202c3946535f6c7986929facb9aba095908f8f8f8f8f8f8f8f8f8b7e7164574d42362a1e1205000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202a343f48515b626a6f767d83888c909596989a9c9d9e9e9f9f9f9e9e9d9c9b9a999897969286796c5f5346392c20130000000008131e2a36424d57606d78839096a1a9b2aea69f9a938f8a8785848586898d92979fa3abb3b6b7bbc2b6a99d9083766a5d5043372a1d100013202c3946535f6c7986929facb9b1a7a09d9c9c9c9c9c9c9c9c9c8f8276695e52463a2d20150a000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b26323c46505a626d727c838a9095999da0a7a5a7a9aaaaabacacacababaaa9a8a7a6a5a49f9286796c5f5346392c2013000000010d1925303a46525e69727f8c959fa8b2aea49d949087827e7a797778797c80858c9299a2a9b3bcc6c3b6a99d9083766a5d5043372a1d100013202c3946535f6c7986929facb9b9b1abaaa9a9a9a9a9a9a9a99f93877b6e6154483c32261b0f030000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2b37434e58626c727f8790959d9fa7aaacb1b3adaba9a8a7a7a7a8a8aaabaeb4b4b3b2ac9f9286796c5f5346392c201300000005111d2a36414c56616e7b86929fa7b1aea49d928d827c75716d686b666d6f737a80879297a2aab4bfc3b6a99d9083766a5d5043372a1d100013202c3946535f6c7986929facb9beb7b2b0aeaeaeaeaeaeaeafa4998c7f7266584e43372b1f13060000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b47545f6a717e8b92999fa7abb1b0aba9a9a19e9c9b9a9a9a9b9c9d9fa2aaabb3b9ac9f9286796c5f5346392c20130000000713202d3946525e6874818d98a3aeb0a69d928d80786f6a64615e565c6063676d737d859298a2aebac2b6a99d9083766a5d5043372a1d100013202c3946535f6c7986929facb9b4aca6a4a2a2a2a2a2a2a2a2ab9d9084776a5f53473b2e2115080000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202c38444f59626f7c86929fa3abb1b2aca69f9c9897918f8e8e8d8e8e8f90929899a1abb9ac9f9286796c5f5346392c20130000000714212e3a4754616d7a86929faab4ab9e948d80746d665f5854524c5053555d606b707c86929fa6b0bbb6a99d9083766a5d5043372a1d100013202c3946535f6c7986929facb9aca29a979595959595959595959595887c6f6255493c2f2216090000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4855616b76839099a3aeb5b1a8a09e948f8b8785838281808181828485898f99a5b9ac9f9286796c5f5346392c2013000003101c28343f4a5465727e8b99a3aeaea3998f82786c605c544e47464144464b5159606a717e8a949fabb7b6a99d9083766a5d5043372a1d100013202c3946535f6c7986929facb9a69a908a8888888888888888888888888073675a4d4034271a0d0100000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404a5463707d89959fabb4b1a79f969189827e7a787675747474757577787d8996a3afac9f9286796c5f5346392c2013000006121f2b3844505c6676838f9cabb4ac9f92867b6e665b504a423c3935383a41454f58616c76828f9ca8b2b6a99d9083766a5d5043372a1d100013202c3946535f6c7986929facb0a4978a7e7b7b7b7b7b7b7b7b7b7b7b7b7b6e6155483b2e2215080000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844515c6675828e9ba7b1b3a99f9590847d76716e68696867676768696a6f7c8895a2afac9f9286796c5f5346392c201300000713202d3a4653606d7885929facb3aa9a8d8074695f544a3f38302d292c2f353d46505a636f7c8996a1adb6a99d9083766a5d5043372a1d100013202c3946535f6c7986929facafa295887c6f6f6f6f6f6f6f6f6f6f6f6f6e695f53463a2d2114070000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e11050003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7885929facb8ada29790837a706b65615e565b5b5a5b5b5c626f7c8895a2afac9f9286796c5f5346392c201300000915222f3c4855626f7c8898a2aeaea298897c6f63574d42382e26201d1f2429343e4854606b7884919eabb6a99d9083766a5d5043372a1d100013202c3946535f6c7986929facafa295887c6f6262626262626262626262615f574d42362a1e12050000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e07000003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8998a2aeb5ab9e92857a6d68605954524c4f4e4d4e4e55626f7c8895a2afac9f9286796c5f5346392c201300000b1724313e4a5764717d8a97aab4ab9f9285796d6053463b2f261c15111318222c38434f596774818e9aa7b4a99d9083766a5d5043372a1d100013202c3946535f6c7986929facafa295887c6f625555555555555555555555534d453b31261a0e020000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e51442e23180c000003101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98aab4afa3998b7f72685e564f474641424141414955626f7c8895a2afac9f9286796c5f5346392c201300000b1825323e4b5865717e8b98a4b1aa9d908477665c504438291d140a0507101b27323f4c5966727f8c99a5b2a99d9083766a5d5043372a1d100013202c3946535f6c7986929facafa295887c6f62554948484848484848484846423b33291f1409000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0ab9e9185786b544a4034281c10040003101d2a3643505d697683909ca9b2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3ac9f92867a6d60564c443d39363034343c4955626f7c8895a2afac9f9286796c5f5346392c201300000c1926323f4c5965727f8c98a5b2a99c8f837669544a3f3428190b0200000a1825313e4b5864717e8b97a4b1a99d9083766a5d5043372a1d100013202c3946535f6c7986929facafa295887c6f6255493c3c3c3c3c3c3c3c3b3a36312921170d03000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0ac9f928579665c5144382c1f12060004111d2935414c566a7784909daab2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2834414e5b6774818e9aa7b4a99c908376685d52443a322d2a25282f3c4955626f7c8895a2afac9f9286796c5f5346392c201300000c1925323f4c5865727f8b98a5b2a99c90837669564c41362a1b11060001081724313e4a5764717d8a97a4b0a99c8f8276695c4f4336291c100013202c3946535f6c7986929facafa295887c6f6255493c2f2f2f2f2f2f2f2e2d2a261f170f0600000000000000000000000000000000000000000a1724303d4a5763707d8a96a3b0ac9f9386796d6053463a2d201308090713202c3945525d687884919eabb2a5988b7f7265584c3f3225190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b2835424e5b6875818e9ba8b4a79b8e817468564c413228201e19222f3c4955626f7c8895a2afac9f9286796c5f5346392c201300000b1824313e4b5764717e8a97a4b1ab9e918478685e5246382d22170e080b131c28333f4a5465727e8b98a5b1a89b8e8275685b4f4235281c0f0013202c3946535f6c7986929facafa295887c6f6255493c2f22222222222222211e1a140d060000000000000000000000000000000000000000000a1623303d495663707d8996a3afafa49a887b6f6255483c2f241917161718212d3a4754606d7a8796a1adb1a4988b7e7165584b3e3225180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875818e9ba8b3a69a8d8073675a4d402f27161116222f3c4955626f7c8895a2afac9f9286796c5f5346392c201300000a1623303d495663707d8996a8b2aca196877a6d6153493f3327201916171e242b3844505b6674818e9aa7b3a79a8d8074675a4d4134271a0e0013202c3946535f6c7986929facafa295887c6f6255493c2f2216151515151514120e0908080808060503000000000000000000000000000000000915222f3c4855626f7b8895a9b3b6ac978b7e7164564c413529252323232429343f4a5463707c8996a8b2b4ab968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b3a6998c807366594d4033261a0d16222f3c4955626f7c8895a2afac9f9286796c5f5346392c201300000714212e3a4754616d7a8796a1acb2a8988b7e71655b50443b322a252322282f35404b55606c7884919eabb2a8988b7e7165584b3e3225180b0013202c3946535f6c7986929facafa295887c6f6255493c2f22161414141414141414141414141413120f0b0600000000000000000000000000000714212d3a4754606d7a8797a1adb4a89b8e8175685d52453c3530302f302f353c44505c6673808d9aa6b3aea399887c6f6255483c2f221509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b3a6998c807366594d4033261a0d16222f3c4955626f7c8895a2afac9f9286796c5f5346392c201300000713202d3946525e687884919eabb7aa9d9083786c60574d443c36302f2d333a4145515d67707d8a96a1adaca196887c6f6255483c2f2215090013202c3946535f6c7986929facafa295887c6f6255493c2f222121212121212121212121212121201f1b17110a020000000000000000000000000713202c3945525d687885919eabb8ac9f92867a6d60584e46413e3d3c3d3e40454d57606d7885919eabb8ac9f9286796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b3a6998c807366594d4033261a0d16222f3c4955626f7c8895a2afac9f9286796c5f5346392c2013000005111d2935414c566774808d9aa7b1aca0958b7e71695e564e46413d3c3d3f444c525c606d7984919da8b2ab9e9184786c605346392d2013060013202c3946535f6c7986929facafa295887c6f6255493c2f2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2d2b27221b140b02000000000000000000000004111d2935414c566975828f9ca8b5aea2988c80736a6058524c4b4a494a4b4b51575f69727f8b97a1adb6aa9d908377665c5145382c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b3a6998c807366594d4033261a191e222f3c4955626f7c8895a2afac9f9286796c5f5346392c20130000010d1925303c4956636f7c8995a0acb1a79e92857b6e685f58524c4a49494a50565d606e75818e96a0acafa4998d8073655b5044372b1f12050013202c3946535f6c7986929facafa295887c6f6255493c3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3937332d261d140a0000000000000000000000010d1924303f4c5965727f8c98a6b0b4aa9f92877c6f6a615e565756565657555d60696e7b86929fa9b3b1a7998c807366544b4034281c1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b3a6998c807366594d40332623252a2d313c4955626f7c8895a2afac9f9286796c5f5346392c20130000000813202d394653606c7883909da7b1ada29791837a6f6a615e56575656545b60686d75808c939ea8b2aa9f93877b6e6253493f33271b0f030013202c3946535f6c7986929facafa295887c6f625549474747474747474747474747474747474746443f382f261b110600000000000000000000000815222e3b4855616e7b88949fabb7aea39992857c736d6866646362636466676d737b849198a2aeb8ab9f95887c6f6255493c2e23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b3a6998c807366594d402f2f303036393c424955626f7c8895a2afac9f9286796c5f5346392c201300000005121f2b3744505b65717e8a959fabb3a9a09591847c736d686563626364666c717a818c929ca5afaea3988e8175695f5341382d22170b000013202c3946535f6c7986929facafa295887c6f625554545454545454545454545454545454545453504941382d22170b00000000000000000000000714212d3a46535f697683909ca6b0b5aba1979286807a767371706f707172767a7f859196a1aab4b0a69d9083766a5f54473b2e1d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875818e9ba8b3a79a8d807467554b403c3c3d3f4146474d5356626f7c8895a2afac9f9286796c5f5346392c2013000000030f1b27333f4953606c78839099a3aeb1a7a0969187807a7572706f707174787e848f939ca4aeb0a69f92867b6e61574d422f261b1106000013202c3946535f6c7986929facafa295887c6f6261616161616161616161616161616161616161605b53493f33271b0f030000000000000000000005121e2b37424d5764707d8a949faab4b3a9a198928d86837f7e7d7c7d7e7f82858c9297a1a8b2b4aa9f948a7d7064584e43372b1f0b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b2835424e5b6875818e9ba8b4a89b8f8275675d514a49494a4b4c5254575f62686f7c8895a2afac9f9286796c5f5346392c2013000000000b17222d3844505b656f7c86929fa4aeb1a8a099928d86827f7d7c7c7e81848a91969ea5aeb1a79f948c7f72695f53453c311d140a00000013202c3946535f6c7986929facafa295887c6f6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6c655b5044372b1f120500000000000000000000020e1a26313c4955616c76829098a2acb5b3aaa29f98928f8c8a8989898a8c8f92989fa2a9b2b6aca2989083766c6155463c32261b0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2734414e5a6774818d9aa7b4ab9f9285796d605b5756565658565e6165696e747a818e9aa7b4ac9f9286796c5f5346392c20130000000006111b27333f49535f6a727f8c929da5aeb2aba39f99928f8c8a89898b8d91969ea1a8afb0a8a0958f82786c60574d42332a200b0200000013202c3946535f6c7986929facb0a396897d7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a786c605346392d201306000000000000000000000009141f2d3944505a626e7b86929aa4abb3b4aeaaa39f9c999796959697999c9fa2aaadb3b4aca49a92867b6e615a5044342a20150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99acb6ada2978c7f736d66636262636567686e72767b80868e939da9b9ac9f9286796c5f5346392c201300000000000b17222d38414e58626d74808d939ca4adb2aeaba39f9c98969596979a9ea1a9acb2afa69f9691837a6d665b50453c3121180e0000000013202c3946535f6c7986929facb9a5998f898787878787878787878787878787878787878787877a6d6154473a2e211407000000000000000000000003101c28333e47535f69717e889399a2aab0b9b4aeaca9a6a4a3a2a3a4a5a9acaeb4b8b1aaa29a93887e71695f53483e3322190e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724313d4a5764707d8a9aa4afb3a99f93877f7773706f6f707274777a7e83888d92989da5afb9ac9f9286796c5f5346392c2013000000000006111b262f3c46515b606d78818c929ea1a8aeb4aeaca8a5a3a2a3a4a7abadb2b0aba39f9490847b6e685d544a3f332a1f0f060000000013202c3946535f6c7986929facb9aba199969494949494949494949494949494949494949494877a6d6154473a2e2114070000000000000000000000000b17222b37424d57616c727f8792989ea6acafb6b8b6b2b1b0afb0b1b2b5b8b6b1aca79f9892887f726c61574d42362c221007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a87939facb9afa499938b837f7d7c7c7d7e8183878b90959a9fa2aaafb7b8ac9f9286796c5f5246392c1f130000000000000a141d2a343f44505c666d74808991969fa2aaacb2b4b2b0afafb1b4b4aeaca69f99928c827a6e695e564c42382d21180e000000000013202c3946535f6c7986929facb9b3aba5a3a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a094877a6d6154473a2e211407000000000000000000000000050e1a26313c45505a626d727d858f949c9fa4acabadb3b0b1b2b1b1b5aeacaaa7a09d9590867e726d625a50453c31241a1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3946525e687783909da8b2b5aba49f95908c8a8989898b8d90939a9d9fa7acaeb4bcc0b8ab9f9285786c5f5245392c1f12000000000000020b182228343f4a545c606e737d848d92989ea0a8a7a9aaabaaa9a8aaa29f9b948f8780786d685e574d443a2f261c0f06000000000013202c3946535f6c7986929facb9b9b6b1b0adadadadadadadadadadadadadadadadadada094877a6d6154473a2e211407000000000000000000000000000915202a333e48515b626c707b82898f939a9c9fa2a9a4a4a5a5a4aba39f9d9995908a837c716c625b51483e332a1f1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414c5665717e8b96a0abb5b5afa7a09d9996959596989a9d9fa4acabb1aba9abb1b9b8ab9e9285786b5f5245382c1f1200000000000000061017232e38424a505c636b707a80868c9196989a9c9d9e9e9d9b9998928e89827c736d665d564d453b32281d140a00000000000013202c3946535f6c7986929facacacacacacacacacacacacacacacacacacacacacacacaca094877a6d6154473a2e21140700000000000000000000000000030e18212c363f49515961696e757d82878c8f9297969798989897969992908d89837e786e6a615a51493f362c21180e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1925303b4653606d79849199a3acb3bab1acaaa6a3a2a2a3a5a7aaacafafaca79f9d9fa7b1b7aa9e9184776b5e5144382b1e11000000000000000006111c2630383f44525961686d737a8084888b8e90909191908f8c8a85817c766f6a605c544c443b332920160b0200000000000013202c3946535f6c7986929f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f94877a6d6154473a2e2114070000000000000000000000000000060f1a242d373f474f575e616b70767b7f828587898a8b8b8b8b8a888683807c77716c655f5850483f372d241a0f060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2c3845515c67707d87929aa2aaaeb4b7b7b2b0afafb0b1b3b1acaba49f9b9590959fabb6aa9d9083776a5d5044372a1d110000000000000000000a141e262e3440474f565d60686d73777c7e818384848483827f7d79756f6a625f58514a423a322921170d040000000000000013202c3946535f6c798692939393939393939393939393939393939393939393939393939393877a6d6154473a2e21140700000000000000000000000000000008121b242d353e454d53596063696e7276787b7c7d7e7f7e7e7d7b7977736f6a64605b534e463e362d251b1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b55606b717f8892989fa3aaaaacaeb4afacaba9a7a7a09d99938f8983909da9b5a89c8f8275695c4f4236291c0f000000000000000000020c141c2328353d434c52565e61666a6f727476777877767573706d67626058534e444039302820170f05000000000000000013202c3946535f6c798786868686868686868686868686868686868686868686868686868686867a6d6154473a2e2114070000000000000000000000000000000009121b232c333b42464f54575f616569696e6f7171727271706f6d6766626058535049413c342c241b1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e39434f59626c717e858e92989b9d9fa3aba49f9e9c9a9795908c87827c7d8a97a3b0a79a8d8074675a4d4134271a0e00000000000000000000020a1117232c313a41454c5254585f626567696a6b6b6a686663605d55544e47433c342e271e160e05000000000000000000121f2c3845525e6a7579797979797979797979797979797979797979797979797979797979797976685e5246392d201307000000000000000000000000000000000009111a212931363d44484d535559575e616364656565646362605c5556544e46443f382f2a221b1209010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27303d47505a626c707a81868b8e91929994999391908d8a87837f7b75737f8c99a6b4ab988b7f7265584c3f3225190c00000000000000000000000006111a1f282f353a4146474e5355585b5d5d5e5e5d5c595753514b48433d373228231c150c0400000000000000000000111d2a36424e59636a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c5e564c41362a1d1105000000000000000000000000000000000000080f171f252a32383b4246484c4d5354565758585858575553514b4947433d37332d261d180f09000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e2b353f48505a61686e747a7e818486868787868583807e7b77726e6d7783909daaaea399897c6f6356493c3023160900000000000000000000000000080d161e24293036393c4347494b4e50515151504f4c4a4745403938322b262018120b0300000000000000000000000e1a26313d4751595e5f60606060606060606060606060606060606060606060606060606060605f524c443a3025190d0100000000000000000000000000000000000000050d141a21272c31363a3b3f424648494a4b4c4b4b4a484645403c3b37322b27221b140b060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c19232d363f4850565e61686d717577797a7a7a79787674716e69666c727f8b95a0acac9f92867a6d6053473a2d2014070000000000000000000000000000040c13191e252a2d32373b3c3f41434445444342403d3a38352f2c27211b150c07000000000000000000000000000915202b353f474e525353535353535353535353535353535353535353535353535353535353535346413a32281e130800000000000000000000000000000000000000000003090e161b1f262a2d2e31363a3b3c3e3e3f3f3e3d3c3a38342e2e2b271f1b17110a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b242d363e444c52565d616568656c6d6d6d6d6669676466696e757e86929fa7afa59b8f8275675d5145392c20130600000000000000000000000000000001080d13191e20262b2e2f323436373838373533302d2c29241d1b160f0a040000000000000000000000000000040f19242d353d4245464646464646464646464646464646464646464646464646464646464646463936302820160c020000000000000000000000000000000000000000000000040b10141a1e2122252a2d2e303132323231302f2d2c2823221f1b160f0b060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b242c323b41464c525458535b6060616064676d6e7072767b818a9298a3aea79e93897d7063554b4035291d1004000000000000000000000000000000000002080d11151b1f212225282a2a2b2b2a292624201f1d18120f0a04000000000000000000000000000000000008121b242b3136383939393939393939393939393939393939393939393939393939393939392e2d2a251e160e05000000000000000000000000000000000000000000000000000003090e1214151a1e21212324252525252422201f1c1815130f0a030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009111a202930363a4146474b49505353616c70797a7b7d7f83878e939fa3aaa7a0958e81756b605443392f24180d010000000000000000000000000000000000000001050a0f131516181b1d1e1e1e1d1c19171413100c0701000000000000000000000000000000000000000009121920262a2c2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d21201d19130c050000000000000000000000000000000000000000000000000000000000020507090e12141516171819181817151313100c07060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080e171e252a3035393a3e3f444a5764707d8786878a8c9093999ea5aca59e9590837a6d60594f4431281d12070000000000000000000000000000000000000000000000030608090c0e10111211100f0d0a070604000000000000000000000000000000000000000000000000080f151a1d1f2020202020202020202020202020202020202020202020202020202020201413110d08020000000000000000000000000000000000000000000000000000000000000000000002050708090b0b0c0c0b0a09070604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191e24292d2e2d333c4956626f7c89999496999c9fa4aba8a19e938e837a6e685d52473d321f160c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090e1112131313131313131313131313131313131313131313131313131313131313070705010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080e13191d2021222e3b4754616e7a8799a3a3a5a6a9a29e9b96918a81796e685e564c41352b210d040000000000000004090e111213131313131313131313131313131313131313131313131313131313131313130d0c0a0702000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d111314202d394653606c7986929c9b9a999797928e8a847e756d675e564c443a3023190f00000000000000080f151a1d1f20202020202020202020202020202020202020202020202020202020202020201a1917130e07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507121f2b3844505b66788490908f8e8c8a8885827d78716c605d554c443b32281e110700000000000009121920262a2c2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2626231f19120a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a54687481838382817f7e7b7975706d66615a514b433b322920160c00000000000008121b242b313638393939393939393939393939393939393939393939393939393939393939393933322f2a241c130a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d384d59646f747676757473716f6c6664605c545045403a312920170e040000000000040f19242d353d42454646464646464646464646464646464646464646464646464646464646464646403f3b352e261c120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c303c48535d64686a696867666462605b5453504a423e352f281f170e050000000000000915202b353f474e5253535353535353535353535353535353535353535353535353535353535353534d4b4740382e24190e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014202b37414b53595b5d5d5c5b59575553504a46443f383029241d160d05000000000000000e1a26313d4751595e5f606060606060606060606060606060606060606060606060606060606060605957524a40352a1f13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a252f3941484d4e50504f4e4c4b4846443f3a38342e261e18130c040000000000000000111d2a36424e59636a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c66635c52473b2f23170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131d272f373c404143434241403e3c3938332d2b28231c140c0701000000000000000000121f2c3845525e6a757979797979797979797979797979797979797979797979797979797979797979736e63574b3f3226190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151d252b3034353736353433312f2d2b28221f1c17110a02000000000000000000000013202c3946535f6c798686868686868686868686868686868686868686868686868686868686868686807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b131a202427282a2a2928262422201f1c1712100b060000000000000000000000000013202c3946535f6c79869293939393939393939393939393939393939393939393939393939393938c807366594d4033261a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001090f14181a1b1d1d1c1b19181513120f0b060300000000000000000000000000000013202c3946535f6c7986929f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f998c807366594d4033261a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080c0e0e10100f0e0d0b0906060300000000000000000000000000000000000013202c3946535f6c7986929facacacacacacacacacacacacacacacacacacacacacacacacacaca6998c807366594d4033261a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9b6aea9a7a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5998c807366594d4033261a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090e1112131313131313131313131313131313131313131313131313131313131312110f0c07010000000000000000000013202c3946535f6c7986929facb9aea49d9a999999999999999999999999999999999999999999998c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080f151a1d1f20202020202020202020202020202020202020202020202020202020201f1e1b18130c0500000000000000000013202c3946535f6c7986929facb9a99d928d8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121920262a2c2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2b2b28241e170f06000000000000000013202c3946535f6c7986929facb3a79a8d807f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7d6f6356493c30231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121b242b31363839393939393939393939393939393939393939393939393939393939393837342f2921180f050000000000000013202c3946535f6c7986929facafa295887c72727272727272727272727272727272727272727272726f6b6054483b2f22150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19242d353d424546464646464646464646464646464646464646464646464646464646464544403a332b21170c0100000000000013202c3946535f6c7986929facafa295887c6f666666666666666666666666666666666666666666666360594f44382c1f1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202b353f474e52535353535353535353535353535353535353535353535353535353535352504c453d33291e130700000000000013202c3946535f6c7986929facafa295887c6f6259595959595959595959595959595959595959595956544f473d32271b0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a26313d4751595e5f606060606060606060606060606060606060606060606060606060605e5c574f453a2f24180c00000000000013202c3946535f6c7986929facafa295887c6f62554c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4948443d352b21160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d2a36424e59636a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b6861574c4034281b0f03000000000013202c3946535f6c7986929facafa295887c6f6255493f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3c3b38322b23190f040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121f2c3845525e6a7579797979797979797979797979797979797979797979797979797979797873685c5044372b1e1105000000000013202c3946535f6c7986929facafa295887c6f6255493c333333333333333333333333333333333333302f2c272119110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c79878686868686868686868686868686868686868686868686868686868685786b5e5245382b1f1205000000000013202c3946535f6c7986929facafa295887c6f6255493c2f262626262626262626262626262626262623221f1b160f070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c79869293939393939393939393939393939393939393939393939393939185786b5e5245382b1f1205000000000013202c3946535f6c7986929facafa295887c6f6255493c2f22191919191919191919191919191919191615130f0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9e9185786b5e5245382b1f1205000000000013202c3946535f6c7986929facafa295887c6f6255493c2f22160c0c0c0c0c0c0c0c0c0c0c0c0c0c0c090907030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facacacacacacacacacacacacacacacacacacacacacacacab9e9185786b5e5245382b1f1205000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9b6ada8a6a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a49e9185786b5e5245382b1f1205000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9ada49c99979797979797979797979797979797979797979185786b5e5245382b1f1205000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9a89c928c8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b85786b5e5245382b1f1205000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb3a6998c807e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7164574a3e3124170b00000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c7171717171717171717171717171717171717171716c6155493d3023170a00000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6464646464646464646464646464646464646464615a5045392d21140800000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f62585858585858585858585858585858585858575550483e33281d110500000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f62554b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4a49453e362c22170c0000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3d39332c241a10050000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c31313131313131313131313131313131302d28221a1208000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f25252525252525252525252525252423211d17100800000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2218181818181818181818181818171714110c050000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f22160b0b0b0b0b0b0b0b0b0b0b0b0b0a080500000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f22160900000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f22160900000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f22160903020200000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f221610100f0f0c090400000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f221d1d1d1c1b19151009020000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f29292929292825211b140c0300000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c36363636363534312c261e150c00000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f62554943434343434342413d3730271e1007000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255505050505050504f4d4942393022190e040000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f625c5c5c5c5c5c5c5c5c5a544b42342a20150a0000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f69696969696969696968655d54463c32261b0f0300000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c76767676767676767676756f65584e43372b1f130600000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb6aa9d90838383838383838383838382756a5f54473b2e22150900000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9aba095908f8f8f8f8f8f8f8f8f8f887c6f6255493c31251a0e02000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9b1a7a09d9c9c9c9c9c9c9c9c9c998c807366574d42362a1e1205000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9b9b1abaaa9a9a9a9a9a9a9a9a99d908377695e53463a2d211408000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9beb7b2b0aeaeaeaeaeaeaeaeaca095877b6e6154483b2f24190d010000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9b4aca6a4a2a2a2a2a2a2a2a2a2a7988b7f7265564c4135291d11040000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9aca29a9795959595959595959595958f8276685d5245392c2013070000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9a69a908a888888888888888888888888877a6d6054473a2d2114070000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb0a4978a7e7b7b7b7b7b7b7b7b7b7b7b7b7c796d6053473a2d2014070000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6f6f6f6f6f6f6f6f6f6f6f6f6d675d5145382c1f13060000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f626262626262626262626262605d554b4035291d10040000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f62555555555555555555555553514b43392f24180c000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255494848484848484848484745403931271d1207000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c3c3c3c3c3c3c3c3c3a38352f271f150b01000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2f2f2f2f2f2f2f2d2c29241d150d0300000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f22222222222222201f1d18120b030000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f221615151515151413100c0708080806050300000000000000000000000013202c3946535f6c7986929facaca295887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f22161414141414141414141414141413120f0b060000000000000000000013202c3946535f6c7986929f9f9f9f95887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f222121212121212121212121212121201f1b17110a02000000000000000013202c3946535f6c7986929393939393887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c2f2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2d2b27221b140b020000000000000013202c3946535f6c7987868686868686867c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6255493c3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3937332d261d140a00000000000000121f2c3845525e6a757979797979797979766a6054473b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f625549474747474747474747474747474747474746443f382f261b1106000000000000111d2a36424e59636a6c6c6c6c6c6c6c6c6260584e43372b1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f625554545454545454545454545454545454545453504941382d22170b0000000000000e1a26313d4751595e5f6060606060606055544e463c32271b0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6261616161616161616161616161616161616161605b53493f33271b0f0300000000000915202b353f474e5253535353535353534947433c342b20150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facafa295887c6f6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6c655b5044372b1f12050000000000040f19242d353d424546464646464646463c3b37322b22190f04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb0a396897d7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a786c605346392d20130600000000000008121b242b31363839393939393939392f2e2b272019100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9a5998f898787878787878787878787878787878787878787877a6d6154473a2e2114070000000000000009121920262a2c2c2d2d2d2d2d2d2d22221f1b150f070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9aba199969494949494949494949494949494949494949494877a6d6154473a2e2114070000000000000000080f151a1d1f20202020202020201615130f0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9b3aba5a3a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a094877a6d6154473a2e21140700000000000000000004090e11121313131313131313090806030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9b9b6b1b0adadadadadadadadadadadadadadadadadada094877a6d6154473a2e21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facacacacacacacacacacacacacacacacacacacacacacacaca094877a6d6154473a2e21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f94877a6d6154473a2e21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798692939393939393939393939393939393939393939393939393939393877a6d6154473a2e21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798786868686868686868686868686868686868686868686868686868686867a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121f2c3845525e6a7579797979797979797979797979797979797979797979797979797979797976685e5246392d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d2a36424e59636a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c5e564c41362a1d11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a26313d4751595e5f60606060606060606060606060606060606060606060606060606060605f524c443a3025190d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202b353f474e525353535353535353535353535353535353535353535353535353535353535346413a32281e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19242d353d4245464646464646464646464646464646464646464646464646464646464646463936302820160c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121b242b3136383939393939393939393939393939393939393939393939393939393939392e2d2a251e160e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121920262a2c2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d21201d19130c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080f151a1d1f2020202020202020202020202020202020202020202020202020202020201413110d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090e111213131313131313131313131313131313131313131313131313131313131307070501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 m_StreamData: serializedVersion: 2 offset: 0 @@ -67,6 +69,7 @@ MonoBehaviour: m_SourceFontFile: {fileID: 12800000, guid: b9f47330c8d3fd443a5e4dbae17f45a7, type: 3} m_AtlasPopulationMode: 1 m_FaceInfo: + m_FaceIndex: 0 m_FamilyName: Advent Pro m_StyleName: SemiBold m_PointSize: 90 @@ -87,6 +90,20 @@ MonoBehaviour: m_StrikethroughThickness: 4.5 m_TabWidth: 25 m_GlyphTable: + - m_Index: 3 + m_Metrics: + m_Width: 0 + m_Height: 0 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 0 + m_HorizontalAdvance: 25.015625 + m_GlyphRect: + m_X: 0 + m_Y: 0 + m_Width: 0 + m_Height: 0 + m_Scale: 1 + m_AtlasIndex: 0 - m_Index: 17 m_Metrics: m_Width: 37.796875 @@ -115,34 +132,6 @@ MonoBehaviour: m_Height: 63 m_Scale: 1 m_AtlasIndex: 0 - - m_Index: 64 - m_Metrics: - m_Width: 28.796875 - m_Height: 6.125 - m_HorizontalBearingX: 6.296875 - m_HorizontalBearingY: 0 - m_HorizontalAdvance: 31.234375 - m_GlyphRect: - m_X: 70 - m_Y: 10 - m_Width: 30 - m_Height: 7 - m_Scale: 1 - m_AtlasIndex: 0 - - m_Index: 113 - m_Metrics: - m_Width: 40.40625 - m_Height: 8.015625 - m_HorizontalBearingX: 0.359375 - m_HorizontalBearingY: 8.015625 - m_HorizontalAdvance: 44.546875 - m_GlyphRect: - m_X: 10 - m_Y: 10 - m_Width: 41 - m_Height: 9 - m_Scale: 1 - m_AtlasIndex: 0 - m_Index: 19 m_Metrics: m_Width: 32.9375 @@ -157,7 +146,7 @@ MonoBehaviour: m_Height: 64 m_Scale: 1 m_AtlasIndex: 0 - - m_Index: 22 + - m_Index: 20 m_Metrics: m_Width: 35.09375 m_Height: 64.078125 @@ -165,8 +154,8 @@ MonoBehaviour: m_HorizontalBearingY: 63 m_HorizontalAdvance: 38.0625 m_GlyphRect: - m_X: 68 - m_Y: 92 + m_X: 10 + m_Y: 123 m_Width: 36 m_Height: 65 m_Scale: 1 @@ -185,7 +174,7 @@ MonoBehaviour: m_Height: 63 m_Scale: 1 m_AtlasIndex: 0 - - m_Index: 20 + - m_Index: 22 m_Metrics: m_Width: 35.09375 m_Height: 64.078125 @@ -193,8 +182,8 @@ MonoBehaviour: m_HorizontalBearingY: 63 m_HorizontalAdvance: 38.0625 m_GlyphRect: - m_X: 10 - m_Y: 123 + m_X: 68 + m_Y: 92 m_Width: 36 m_Height: 65 m_Scale: 1 @@ -255,7 +244,235 @@ MonoBehaviour: m_Height: 64 m_Scale: 1 m_AtlasIndex: 0 + - m_Index: 34 + m_Metrics: + m_Width: 44.90625 + m_Height: 63 + m_HorizontalBearingX: 1.625 + m_HorizontalBearingY: 63 + m_HorizontalAdvance: 47.4375 + m_GlyphRect: + m_X: 437 + m_Y: 10 + m_Width: 46 + m_Height: 63 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 37 + m_Metrics: + m_Width: 37.796875 + m_Height: 63.09375 + m_HorizontalBearingX: 7.015625 + m_HorizontalBearingY: 63.09375 + m_HorizontalAdvance: 51.84375 + m_GlyphRect: + m_X: 634 + m_Y: 10 + m_Width: 38 + m_Height: 64 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 38 + m_Metrics: + m_Width: 30.0625 + m_Height: 63 + m_HorizontalBearingX: 7.015625 + m_HorizontalBearingY: 63 + m_HorizontalAdvance: 41.84375 + m_GlyphRect: + m_X: 10 + m_Y: 273 + m_Width: 31 + m_Height: 63 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 39 + m_Metrics: + m_Width: 30.0625 + m_Height: 63 + m_HorizontalBearingX: 7.015625 + m_HorizontalBearingY: 63 + m_HorizontalAdvance: 40.40625 + m_GlyphRect: + m_X: 123 + m_Y: 178 + m_Width: 31 + m_Height: 63 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 42 + m_Metrics: + m_Width: 13.953125 + m_Height: 63 + m_HorizontalBearingX: 5.671875 + m_HorizontalBearingY: 63 + m_HorizontalAdvance: 26.640625 + m_GlyphRect: + m_X: 331 + m_Y: 78 + m_Width: 15 + m_Height: 63 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 45 + m_Metrics: + m_Width: 32.5 + m_Height: 63 + m_HorizontalBearingX: 7.015625 + m_HorizontalBearingY: 63 + m_HorizontalAdvance: 39.59375 + m_GlyphRect: + m_X: 64 + m_Y: 259 + m_Width: 33 + m_Height: 63 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 46 + m_Metrics: + m_Width: 48.25 + m_Height: 63 + m_HorizontalBearingX: 7.015625 + m_HorizontalBearingY: 63 + m_HorizontalAdvance: 62.453125 + m_GlyphRect: + m_X: 502 + m_Y: 10 + m_Width: 49 + m_Height: 63 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 47 + m_Metrics: + m_Width: 44.28125 + m_Height: 63 + m_HorizontalBearingX: 7.015625 + m_HorizontalBearingY: 63 + m_HorizontalAdvance: 58.5 + m_GlyphRect: + m_X: 570 + m_Y: 10 + m_Width: 45 + m_Height: 63 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 48 + m_Metrics: + m_Width: 37.796875 + m_Height: 65.421875 + m_HorizontalBearingX: 5.671875 + m_HorizontalBearingY: 64.4375 + m_HorizontalAdvance: 49.40625 + m_GlyphRect: + m_X: 181 + m_Y: 174 + m_Width: 39 + m_Height: 66 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 52 + m_Metrics: + m_Width: 42.75 + m_Height: 64.890625 + m_HorizontalBearingX: 3.328125 + m_HorizontalBearingY: 63.90625 + m_HorizontalAdvance: 50.484375 + m_GlyphRect: + m_X: 267 + m_Y: 94 + m_Width: 44 + m_Height: 65 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 64 + m_Metrics: + m_Width: 28.796875 + m_Height: 6.125 + m_HorizontalBearingX: 6.296875 + m_HorizontalBearingY: 0 + m_HorizontalAdvance: 31.234375 + m_GlyphRect: + m_X: 70 + m_Y: 10 + m_Width: 30 + m_Height: 7 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 66 + m_Metrics: + m_Width: 34.65625 + m_Height: 46.796875 + m_HorizontalBearingX: 3.328125 + m_HorizontalBearingY: 45.8125 + m_HorizontalAdvance: 41.21875 + m_GlyphRect: + m_X: 10 + m_Y: 207 + m_Width: 35 + m_Height: 47 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 69 + m_Metrics: + m_Width: 33.21875 + m_Height: 64.078125 + m_HorizontalBearingX: 7.015625 + m_HorizontalBearingY: 63 + m_HorizontalAdvance: 43.5625 + m_GlyphRect: + m_X: 384 + m_Y: 10 + m_Width: 34 + m_Height: 65 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 84 + m_Metrics: + m_Width: 32.953125 + m_Height: 47.515625 + m_HorizontalBearingX: 3.234375 + m_HorizontalBearingY: 46.171875 + m_HorizontalAdvance: 38.796875 + m_GlyphRect: + m_X: 331 + m_Y: 10 + m_Width: 34 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 113 + m_Metrics: + m_Width: 40.40625 + m_Height: 8.015625 + m_HorizontalBearingX: 0.359375 + m_HorizontalBearingY: 8.015625 + m_HorizontalAdvance: 44.546875 + m_GlyphRect: + m_X: 10 + m_Y: 10 + m_Width: 41 + m_Height: 9 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 14 + m_Metrics: + m_Width: 28.796875 + m_Height: 7.921875 + m_HorizontalBearingX: 4.046875 + m_HorizontalBearingY: 37.171875 + m_HorizontalAdvance: 36.90625 + m_GlyphRect: + m_X: 70 + m_Y: 36 + m_Width: 29 + m_Height: 9 + 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: 48 m_GlyphIndex: 17 @@ -264,29 +481,21 @@ MonoBehaviour: m_Unicode: 49 m_GlyphIndex: 18 m_Scale: 1 - - m_ElementType: 1 - m_Unicode: 95 - m_GlyphIndex: 64 - m_Scale: 1 - - m_ElementType: 1 - m_Unicode: 8230 - m_GlyphIndex: 113 - m_Scale: 1 - m_ElementType: 1 m_Unicode: 50 m_GlyphIndex: 19 m_Scale: 1 - m_ElementType: 1 - m_Unicode: 53 - m_GlyphIndex: 22 + m_Unicode: 51 + m_GlyphIndex: 20 m_Scale: 1 - m_ElementType: 1 m_Unicode: 52 m_GlyphIndex: 21 m_Scale: 1 - m_ElementType: 1 - m_Unicode: 51 - m_GlyphIndex: 20 + m_Unicode: 53 + m_GlyphIndex: 22 m_Scale: 1 - m_ElementType: 1 m_Unicode: 54 @@ -304,6 +513,70 @@ MonoBehaviour: m_Unicode: 57 m_GlyphIndex: 26 m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 65 + m_GlyphIndex: 34 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 68 + m_GlyphIndex: 37 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 69 + m_GlyphIndex: 38 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 70 + m_GlyphIndex: 39 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 73 + m_GlyphIndex: 42 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 76 + m_GlyphIndex: 45 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 77 + m_GlyphIndex: 46 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 78 + m_GlyphIndex: 47 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 79 + m_GlyphIndex: 48 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 83 + m_GlyphIndex: 52 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 95 + m_GlyphIndex: 64 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 97 + m_GlyphIndex: 66 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 100 + m_GlyphIndex: 69 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 115 + m_GlyphIndex: 84 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8230 + m_GlyphIndex: 113 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 45 + m_GlyphIndex: 14 + m_Scale: 1 m_AtlasTextures: - {fileID: -7649171784017284893} m_AtlasTextureIndex: 0 @@ -358,55 +631,159 @@ MonoBehaviour: m_Y: 166 m_Width: 58 m_Height: 83 - m_FreeGlyphRects: - - m_X: 60 - m_Y: 26 - m_Width: 49 - m_Height: 56 - - m_X: 58 - m_Y: 28 - m_Width: 51 - m_Height: 54 + - m_X: 0 + m_Y: 197 + m_Width: 54 + m_Height: 66 - m_X: 321 m_Y: 0 - m_Width: 702 - m_Height: 1023 + m_Width: 53 + m_Height: 68 + - m_X: 374 + m_Y: 0 + m_Width: 53 + m_Height: 84 + - m_X: 427 + m_Y: 0 + m_Width: 65 + m_Height: 82 + - m_X: 492 + m_Y: 0 + m_Width: 68 + m_Height: 82 + - m_X: 321 + m_Y: 68 + m_Width: 34 + m_Height: 82 - m_X: 257 m_Y: 84 - m_Width: 766 - m_Height: 939 - - m_X: 257 - m_Y: 82 - m_Width: 6 - m_Height: 941 + m_Width: 63 + m_Height: 84 + - m_X: 171 + m_Y: 164 + m_Width: 58 + m_Height: 85 + - m_X: 560 + m_Y: 0 + m_Width: 64 + m_Height: 82 + - m_X: 113 + m_Y: 168 + m_Width: 50 + m_Height: 82 + - m_X: 54 + m_Y: 249 + m_Width: 52 + m_Height: 82 + - m_X: 0 + m_Y: 263 + m_Width: 50 + m_Height: 82 + - m_X: 624 + m_Y: 0 + m_Width: 57 + m_Height: 83 + - m_X: 60 + m_Y: 26 + m_Width: 48 + m_Height: 28 + m_FreeGlyphRects: - m_X: 113 m_Y: 82 m_Width: 34 m_Height: 1 - - m_X: 171 - m_Y: 164 - m_Width: 852 - m_Height: 859 + - m_X: 55 + m_Y: 113 + m_Width: 3 + m_Height: 53 + - m_X: 355 + m_Y: 84 + m_Width: 668 + m_Height: 939 + - m_X: 355 + m_Y: 68 + m_Width: 19 + m_Height: 955 + - m_X: 257 + m_Y: 82 + m_Width: 6 + m_Height: 2 + - m_X: 320 + m_Y: 150 + m_Width: 703 + m_Height: 873 + - m_X: 320 + m_Y: 84 + m_Width: 1 + m_Height: 939 - m_X: 171 m_Y: 83 m_Width: 29 - m_Height: 940 - - m_X: 0 + m_Height: 81 + - m_X: 229 + m_Y: 168 + m_Width: 794 + m_Height: 855 + - m_X: 229 + m_Y: 164 + m_Width: 28 + m_Height: 859 + - m_X: 163 m_Y: 249 - m_Width: 1023 + m_Width: 860 m_Height: 774 - - m_X: 0 - m_Y: 197 - m_Width: 55 - m_Height: 826 - - m_X: 55 - m_Y: 113 - m_Width: 3 - m_Height: 53 - - m_X: 113 + - m_X: 163 m_Y: 168 - m_Width: 910 + m_Width: 8 m_Height: 855 + - m_X: 54 + m_Y: 197 + m_Width: 1 + m_Height: 52 + - m_X: 106 + m_Y: 250 + m_Width: 917 + m_Height: 773 + - m_X: 106 + m_Y: 249 + m_Width: 7 + m_Height: 774 + - m_X: 0 + m_Y: 345 + m_Width: 1023 + m_Height: 678 + - m_X: 50 + m_Y: 331 + m_Width: 973 + m_Height: 692 + - m_X: 50 + m_Y: 263 + m_Width: 4 + m_Height: 760 + - m_X: 427 + m_Y: 83 + m_Width: 596 + m_Height: 940 + - m_X: 427 + m_Y: 82 + m_Width: 197 + m_Height: 941 + - m_X: 681 + m_Y: 0 + m_Width: 342 + m_Height: 1023 + - m_X: 108 + m_Y: 26 + m_Width: 1 + m_Height: 56 + - m_X: 58 + m_Y: 54 + m_Width: 51 + m_Height: 28 + - m_X: 58 + m_Y: 28 + m_Width: 2 + m_Height: 54 m_fontInfo: Name: PointSize: 0 @@ -495,7 +872,7 @@ Material: m_PrefabAsset: {fileID: 0} m_Name: AdventPro-SemiBold Atlas Material m_Shader: {fileID: 4800000, guid: 68e6db2ebdc24f95958faec2be5558d6, type: 3} - m_ShaderKeywords: UNDERLAY_ON + m_ShaderKeywords: ETC1_EXTERNAL_ALPHA UNDERLAY_ON m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 @@ -525,6 +902,7 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + m_Ints: [] m_Floats: - _Ambient: 0.5 - _Bevel: 0.5 diff --git a/Assets/Project/Graphics/UI/Fonts/CascadiaMono SDF.asset b/Assets/Project/Graphics/UI/Fonts/CascadiaMono SDF.asset index e500de84..3158e04f 100644 --- a/Assets/Project/Graphics/UI/Fonts/CascadiaMono SDF.asset +++ b/Assets/Project/Graphics/UI/Fonts/CascadiaMono SDF.asset @@ -9,7 +9,7 @@ Material: m_PrefabAsset: {fileID: 0} m_Name: CascadiaMono Atlas Material m_Shader: {fileID: 4800000, guid: 68e6db2ebdc24f95958faec2be5558d6, type: 3} - m_ShaderKeywords: + m_ShaderKeywords: ETC1_EXTERNAL_ALPHA m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 @@ -67,9 +67,9 @@ Material: - _OutlineWidth: 0 - _PerspectiveFilter: 0.875 - _Reflectivity: 10 - - _ScaleRatioA: 1 - - _ScaleRatioB: 1 - - _ScaleRatioC: 1 + - _ScaleRatioA: 0.9 + - _ScaleRatioB: 0.73125 + - _ScaleRatioC: 0.73125 - _ScaleX: 1 - _ScaleY: 1 - _ShaderFlags: 0 @@ -114,9 +114,9 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 71c1514a6bd24e1e882cebbe1904ce04, type: 3} m_Name: CascadiaMono SDF m_EditorClassIdentifier: - hashCode: 0 + hashCode: -777862707 material: {fileID: -4474616200050864021} - materialHashCode: 0 + materialHashCode: -583796019 m_Version: 1.1.0 m_SourceFontFileGUID: e58ca1af91bfa2e44a621cdd32863aa0 m_SourceFontFile_EditorRef: {fileID: 12800000, guid: e58ca1af91bfa2e44a621cdd32863aa0, @@ -247,10 +247,11 @@ Texture2D: Hash: 00000000000000000000000000000000 m_ForcedFallbackFormat: 4 m_DownscaleFallback: 0 + m_IsAlphaChannelOptional: 0 serializedVersion: 2 - m_Width: 0 - m_Height: 0 - m_CompleteImageSize: 0 + m_Width: 1024 + m_Height: 1024 + m_CompleteImageSize: 1048576 m_MipsStripped: 0 m_TextureFormat: 1 m_MipCount: 1 @@ -273,8 +274,9 @@ Texture2D: m_WrapW: 0 m_LightmapFormat: 0 m_ColorSpace: 0 - image data: 0 - _typelessdata: + m_PlatformBlob: + image data: 1048576 + _typelessdata: 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030608090e1111100d0807050200000000030608090e1111100d0807050200000000030608090e1111100d080705020000000000000000000000000000000106090b0c101010101010101010101010101010101010101010101010101010101010101010101010101010101010100a0907040000000000000000000000000005080a0b131313131313131307070401000000000000000000000000000000000004080a0b1313131313131313080705020000000000000000000000000000000000000000000000000000000000000406070a0c0e1011111111100f0e0c09060603000000000000000000000000000000000000000000000000000000000001060b0f111213131313131313130b0a08050000000000000000000000000000000000000000000003080b0d0e13131313131313130e0d0b080300000000000000000000050a0f121313131313131313131313131313131313131313131313131313131313131313131313131313131313130b0a0805000000000000000000000003090d101213131313131313131313131313131313131212100f0e0c0907060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f1315161b1d1e1d1a1414110e0902040a0f1315161b1d1e1d1a1414110e0902040a0f1315161b1d1e1d1a1414110e0902000000000000000000000000070d121618191d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d161613100b04000000000000000000060c1115171820202020202020201413110d080100000000000000000000000000050c1114171720202020202020201514120e09020000000000000000000000000000000000000000000000000004070c10131416191b1c1d1e1e1e1d1c1a181613120f0b060300000000000000000000000000000000000000000000000000040c12171b1d1e2020202020202020171714110c0500000000000000000000000000000000000001080f14181a1b20202020202020201b1a18140f0801000000000000010910161b1e202020202020202020202020202020202020202020202020202020202020202020202020202020202020181714110c060000000000000000070e14191d1f202020202020202020202020202020201f1f1e1d1c1a18161313100c0706020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c151b1f2222272a2b2a2621201e1a140d0c151b1f2222272a2b2a2621201e1a140d0c151b1f2222272a2b2a2621201e1a140d05000000000000000000010911181e222526292929292929292929292929292929292929292929292929292929292929292929292929292929292929292322201b160f07000000000000000911171d2124252d2d2d2d2d2d2d2d2d201d19130c0400000000000000000000000810171c2123242d2d2d2d2d2d2d2d21201e1a140d0500000002000000000000000000000000000000000001070c1013181d1f20232628292a2b2b2a2a29272522201f1c17120f0b0600000000000000000000000000000000000000000000060e161d23272a2b2d2d2d2d2d2d2d2d2423211c17100800000000000000000000000000000000020b131a202427282d2d2d2d2d2d2d2d282724201a130b0200000000010a131b21272b2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2423211d1710080000000000000811191f25292b2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2c2b2a29272523201f1c1814120e090400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a111720262b2e2f34373836332e2d2a251f171720262b2e2f34373836332e2d2a251f171720262b2e2f34373836332e2d2a251f170e09000000000000000009131b23292e313236363636363636363636363636363636363636363636363636363636363636363636363636363636363636302f2c2721191107000000000009121b22292d30313939393939393939392c29241e160d0400000000000000000008121a22282d303139393939393939392e2d2a251f170f0500000c00000000000000000000000000000001070c12181d1f24292c2d3032343637373837373634322f2d2b28221f1b17110a0200000000000000000000000000000000000000040e1820282e333738393939393939393931302d28221a12080000000000000000000000000000010b141d252b30333439393939393939393433302b251d140b0100000009131c252c333739393939393939393939393939393939393939393939393939393939393939393939393939393939393931302d28221a12080000000007111a232a31353839393939393939393939393939393939393838373534322f2d2c2823211e1a15100c0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151c232832373b3c41444443403b3a36302920232832373b3c41444443403b3a36302920232832373b3c41444443403b3a363029201b120900000000000007111b252d353a3e3f434343434343434343434343434343434343434343434343434343434343434343434343434343434343433d3b38322b23190f0400000006111b242d34393d3e46464646464646464639352f2820160c010000000000000005101a242c33393c3e46464646464646463b3a36302921170d0200140000000000000000000000000000030b12181d24292c2f35383a3d3f4143444444444342413f3c3938332d2b27221b140b090300000000000000000000000000000000010c16202a323a3f434546464646464646463e3c39332c241a10050000000000000000000000000008131d262f363c4041464646464646464641403c362f261d1308000005101b252e373e434646464646464646464646464646464646464646464646464646464646464646464646464646464646463e3d39332c241a10060000030e19232c353c4145464646464646464646464646464646464645454342413f3c3a38342e2d2b261f1c18120b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151e262e343c4347494e5051504d4746423b332d2e343c4347494e5051504d4746423b332d2e343c4347494e5051504d4746423b332d241b120900000000010d18232d373f464a4c505050505050505050505050505050505050505050505050505050505050505050505050505050505050504948443d352b21160b0000000c17222d363e45494b53535353535353535345413a32281e1308000000000000000c17222c363e45494a53535353535353534846423b33291f1409001c00000000000000000000000000060d151d24292f35383a404547494c4e4f50515151504f4d4b4946443f3937332d261d1a140d0600000000000000000000000000000006121d28323c444b505153535353535353534a49453e362c22170c000000000000000000000000030f1a252f3841484c4e53535353535353534e4c4841382f251a0f03000a16212c3740494f5353535353535353535353535353535353535353535353535353535353535353535353535353535353534b49453e362c22170c000009141f2a353e474d5153535353535353535353535353535353525251504f4d4b494645403b3a37312c28231c150c0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2630383f444e54555a5d5e5d5954524d453e36383f444e54555a5d5e5d5954524d453e36383f444e54555a5d5e5d5954524d453e362d241b0e0500000006121e29353f495157595c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c56544f473d32271b10040005111d29343e4850565860606060606060605f524c443a2f24190d01000000000004111c28333e4850555760606060606060605f524d453b30251a0e02230000000000000000000000020a11171f272f35394045474b515356595b5c5d5e5e5d5d5c5a585553504a46443f382f2a261f170f0800000000000000000000000000000b17232e3a444e565c5e6060606060606060575550483e33281c110500000000000000000000000814202b36414a53585b60606060606060605b58534a41362b201408000f1b27333e49525a5f6060606060606060606060606060606060606060606060606060606060606060606060606060606060575550483e33281d1105000d1925313c4750585e5f6060606060606060606060606060605f5f5e5d5c5a585653514b4847423c38342e271e1a140d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e38424a50585f62676a6b6966615e5750483e424a50585f62676a6b6966615e5750483e424a50585f62676a6b6966615e5750483e362d20170d0200000916222e3a46515b6265696969696969696969696969696969696969696969696969696969696969696969696969696969696969696360594f44382c201307000815212d3945505a62646c6c6c6c6c6c6c6c6c5d564c4135291d110400000000000814212d3945505a61646c6c6c6c6c6c6c6c6c5e574d42362a1e12052800000000000000000000030b141b2227313940454b5153555d60636567696a6a6b6a6a69676562605b54535049413e363129211a1209000000000000000000000000020f1b27333f4b5660686b6c6c6c6c6c6c6c6c64615a5045392d21140800000000000000000000000b1824303c48535c64676c6c6c6c6c6c6c6c67645c53483c3024180b00121e2b37434f5a646c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c64615a5045392d21140800101d2935414d58626a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b6b6a68676562605c5555534d46444039302a251f170f08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a545c606a6f74777776736e69625a50484a545c606a6f74777776736e69625a50484a545c606a6f74777776736e69625a50483e32291f140800000b1825313e4a57626d7276767676767676767676767676767676767676767676767676767676767676767676767676767676767676706b6054483b2f221609000a1724303d4956626c71797979797979797976685d5245392c20130700000000000a1723303c4955616c71797979797979797976695e52463a2d2014072b000000000000000000030c151d262d333d434b51555d6064676d7072747677777777767574726f6c6663605b535046423b332c241b1209000000000000000000000004111d2a3743505c6872787979797979797979716c6155493c3023170900000000000000000000010d1a2733404c58646e747979797979797979746f64584c4033271a0d0013202d3946535f6c767979797979797979797979797979797979797979797979797979797979797979797979797979797979716c6155493d3023170a00121f2b3845515e6a7479797979797979797979797979797979797878767574726f6d6765615f5753514a423e363129211a12090100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844505c666d747c81838483807b716c625a50505c666d747c81838483807b716c625a50505c666d747c81838483807b716c625a50443b3025190e02000c1926323f4c5965727f828383838383838383838383838383838383838383838383838383838383838383838383838383838383827d706356493d3023160a000b1825313e4b5864717e86868686868686867a6d6054473a2d21140700000000000b1724313e4a5764717e86868686868686867b6e6154483b2e2115082d0000000000000000000a151e262f383f444f555d60676d7176797d7f8182838484848382807e7c7975706c65615a534d453e362d241b12090000000000000000000005121e2b3845515e6b788486868686868686867e7164574a3e31261a0e0200000000000000000006121e2b37424d5767748086868686868686868174675b4e4134281b0e0013202d394653606c7986868686868686868686868686868686868686868686868686868686868686868686868686868686867e7164574b3e3124180b0013202c3946535f6c79868686868686868686868686868686868585848382807e7c7976726e6964605c545046423b332c241b130a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202d3944505a606d7880878d9091908c867e716c62565a606d7880878d9091908c867e716c62565a606d7880878d9091908c867e716c62564d41362a1e1105000e1b2834414e5b6774818e8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8a7e7164574b3e3124180b000b1825313e4b5864717e8b939393939393877a6d6054473a2d21140700000000000b1724313e4a5764717d8a939393939393877b6e6154483b2e21150838000000000000000006111c2630384149505960676d72797e8286898c8e8f90919190908f8d8b8885817d78716c615f5750483f362d241b1007000000000000000000010e1b2734414e5a6774818d9393939393938e817467574d42372b1e12050000000000000000000814212d3a47535f697884919393939393998a7d7064574a3d3124170a0013202d394653606c79869393939393939393939393939393939393939393939393939393939393939393939393939393938a7e7164574b3e3124180b0013202c3946535f6c7986929393939393939393939393939993929291908f8d8b8986837f7b76716d66615a534d453e362d251c130a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1623303c4955616c74818d939a9d9e9c98928b7e71685e616c74818d939a9d9e9c98928b7e71685e616c74818d939a9d9e9c98928b7e71685e5246392d201407000e1b2834414e5b6774818e9a9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c978a7e7164574b3e3124180b000b1825313e4b5864717e8b979f9f9f9f93877a6d6054473a2d21140700000000000b1724313e4a5764717d8a979f9f9f9f94877b6e6154483b2e2115083800000000000000071017232e38424a535b606b70797f858b8f9299989a9c9d9d9e9d9d9c9a9897928e89847e766e69615a50483f362d22190d040000000000000000000a1724303d4a5763707d8a98a39f9f9f9e918478695f53463a2d2114060000000000000000000815222e3b4855616e7b8896a19f9f9f9f92867a6d6054473a2d2114070013202d394653606c7986939f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f978a7e7164574b3e3124180b0013202c3946535f6c7986929f9f9f9f9f9f9f9f9f9f9f9fa49f9f9e9e9d9b9a9899928f8c88837e79716c615e5750483f372e251c1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2935404b5564707d8a939fa4acaaaaa29f92867b6e6164707d8a939fa4acaaaaa29f92867b6e6164707d8a939fa4acaaaaa29f92867b6e6154473b2e211408000e1b2834414e5b6774818e9aa7a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a4978a7e7164574b3e3124180b000b1825313e4b5864717e8b97a4acaca093877a6d6054473a2d21140700000000000b1724313e4a5764717d8a97a4acaca194877b6e6154483b2e21150838000000000000030c192228343f4a545c656c737d848c92979c9fa3aba7a9aaaaaaaaa9a8a7a9a29f9b96918a837b706c625a50483e342b1f160c0100000000000000000714202d3a4753606d7a86929facacaca196887b6e6155483b2e23170b000000000000000003101c28343f4a5465727e8b98a8b2aca99c8f8276675d5145392c2013060013202d394653606c7986939facacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaca4978a7e7164574b3e3124180b0013202c3946535f6c7986929facacacacacacacacacacb5afacacababa9a8a7aba39f9c9894908a847e766e69615a51493f372e241a10070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515d677683909ca5afb6b7b4aea2988c807366677683909ca5afb6b7b4aea2988c807366677683909ca5afb6b7b4aea2988c807366594d4033261a0d000e1b2834414e5b6774818e9aa7acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaca4978a7e7164574b3e3124180b000b1825313e4b5864717e8b97a4b1ada093877a6d6054473a2d21140700000000000b1724313e4a5764717d8a97a4b0aea194877b6e6154483b2e211508380000000000000b151e2b343d44505c666d77808891969fa2a9acaeb4b4b3b0afafafb1b3b3b3adaba8a09d9490857e716c625a50463d31281d1307000000000000000006131f2c3945515d6776828f9ca9b5b2a8988b7e7265544a3f34281c10030000000000000006121f2b3844505c6675828f9ba8b5b2a8988c7f7265554b4135291d11040013202d394653606c7986939facb9b9b9b7b2b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1a4978a7e7164574b3e3124180b0013202c3946535f6c7986929facb9b9b9b7b2b1b1b1b1b1b1b1b1b2b3b5b5b3b5aeaca9a69f9c96918a827b716c625b51493f362c22180c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7986939facb9c0c4bfb4aa9c908376696d7a86939facb9c0c4bfb4aa9c908376696d7a86939facb9c0c4bfb4aa9c908376695d5043362a1d10000e1b2834414e5b6774818e9a9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f978a7e7164574b3e3124180b000b1825313e4b5864717e8b97a4b1ada093877a6d6054473a2d21140700000000000b1724313e4a5764717d8a97a4b0aea194877b6e6154483b2e21150838000000000007121c27303d46515b606d78818d939aa1a8adb3b5afaca9a6a4a3a2a3a4a7aaacb2b8b2aca69f9892877f716c61584e433a2f24180d030000000000000004101d2935404b5565727f8b98a8b2b5a89b8f8275665c5044382b1f1206040404040404040713202d3a4653606d7985929fabb8aca196887b6e6255483b2f24180d010013202d394653606c7986939facb9beb4aca6a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4978a7e7164574b3e3124180b0013202c3946535f6c7986929facb9beb4aca6a4a4a4a4a4a4a4a4a5a6a8aaacb2b5b9b6b0aba8a09e948f857e726d635b51483e342a1e150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8799a4afbbc7d0c4b7aa9d9184776a6e7b8799a4afbbc7d0c4b7aa9d9184776a6e7b8799a4afbbc7d0c4b7aa9d9184776a5e5144372b1e11000e1b2834414e5b6774818e93939393939393939393939393939393939393939393939393939393939393939393939393939393938a7e7164574b3e3124180b000b1825313e4b5864717e8b97a4b1ada093877a6d6054473a2d21140700000000000b1724313e4a5764717d8a97a4b0aea194877b6e6154483b2e2115083800000000000c18232e39424e58636d74818e939fa4acb2b5afaba49f9c9997969596979a9da0a8abb0b8b0aaa299938b7e716a60554b41352920150a00000000000000000c18242f3b4855616e7b8896a0acb8ab9f9285796d6053463a2d201307111111111111111116232f3c4956626f7c8997a2adb7ab9e9184786a5f53473a2e1d1307000013202d394653606c7986939facb9b9aca29a979797979797979797979797979797979797979797979797979797979797978a7e7164574b3e3124180b0013202c3946535f6c7986929facb9b9aca29a9797979797979798989a9b9ea0a8a8acafb5b7b2aca69f9792887f726d635a50463c30261c110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a8796a0acb8c3c7c0b6ac9d9083776a6d7a8796a0acb8c3c7c0b6ac9d9083776a6d7a8796a0acb8c3c7c0b6ac9d9083776a5d5044372a1d11000e1b2834414e5b677481868686868686868686868686868686868686868686868686868686868686868686868686868686868686867e7164574b3e3124180b000b1825313e4b5864717e8b97a4b1ada093877a6d6054473a2d21140700000000000b1724313e4a5764717d8a97a4b0aea194877b6e6154483b2e211508380000000004101c2834404a54606a727f8c939ea5afb6b2aba49f9993908c8a8989898b8d91969c9fa6afb5b3aba49f92867c6f675d51453c31261b0f03000000000000000714212d3a46535f697784919eaab7ada297897c6f6256493c2f24181d1d1d1d1d1d1d1d1d1d2935404b5566737f8c99a9b3b4aa9a8d817467584e43372b1f0c01000013202d394653606c7986939fb4bcb1a79a908a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a7e7164574b3e3124180b0013202c3946535f6c7986929facb9b1a79a908a8a8a8a8a8a8a8b8b8d8e9196979c9fa4abafb5b9b0a9a29a938b7f726c61584e42382e23170c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202c3945525d687784919ea7b1b8bbb9afa49a8d817467687784919ea7b1b8bbb9afa49a8d817467687784919ea7b1b8bbb9afa49a8d8174675a4e4134271b0e000d1a2733404c59646f7479797979797979797979797979797979797979797979797979797979797979797979797979797979797979716c6155493d3023170a000b1825313e4b5864717e8b97a4b1ada093877a6d6054473a2d21140700000000000b1724313e4a5764717d8a97a4b0aea194877b6e6154483b2e211508330000000006121f2c3844515c666f7c87929fa5afbbb2a9a199938e8783807d7c7c7c7e8084898f949fa3abb5b5aea3989184796d60584e43372b2015090000000000000005121e2a36424d576774808d9aaab4b3a9998c7f7366554b4035292a2a2a2a2a2a2a2a2a2a2a2c3945515d677683909ca9b6aea3988a7d7063574a3d31261a0f00000013202d394653606c798698a3aeb8aca0958a7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7b6e6154483b2e2115080013202c3946535f6c7986929facb9aca0958a7e7e7e7e7e7e7e7e7f808284878b8f93999fa4abb2bab3aca49f918a7e716a5f544a3f34281e13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c5666727f8c959fa7acafaca59f93877c6f6266727f8c959fa7acafaca59f93877c6f6266727f8c959fa7acafaca59f93877c6f6255493c2f221609000b1824303c48535d64676c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c64615a5045392d211408000b1825313e4b5864717e8b97a4b1ada093877a6d6054473a2d21140700000000000b1724313e4a5764717d8a97a4b0aea194877b6e6154483b2e2115083100000004101c2934404b55606d78839099a3afb7b2a8a1979187817b767371706f707174777c828b9299a3abb5b4aaa1968d80746a5f53473c31261a0e00000000000000020e1a26313d4a5663707d8998a2aeb6a99c908376675d514539373737373737373737373737373a4753606d7a86929facb8ac9f9286796d6053473a2d20140900000013202c3946535f6c7986929facb7aa9d908477717171717171717171717171717171717171717171717171717171717171716e695e53463a2d2114070013202c3946535f6c7986929facb7aa9d90847771717171717171727375777a7e82878e9399a0a8b0b8b6afa39f92867c6f665c50443a3024190d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d19242f3a4753606d798390959da0a39f9c938d80746a60606d798390959da0a39f9c938d80746a60606d798390959da0a39f9c938d80746a6054473b2e221508000814202b36414a53595b60606060606060606060606060606060606060606060606060606060606060606060606060606060606060575550483e33281d1105000b1825313e4b5864717e8b97a4b1ada093877a6d6054473a2d21140700000000000b1724313e4a5764717d8a97a4b0aea194877b6e6154483b2e2115082e00000006131f2c3845515c67727f8b95a0abb5b4aaa19691857d746e69666463626364676b6f767f879299a3aebbb2a89f93877c6f62574d42372b1c1106000000000000000913202d3a4653606d7985929facb8ac9f92867a6d6053474444444444444444444444444444444a5763707d8a99a3aeb5a99c8f8276675d5145382c1f130600000013202c3946535f6c7986929facb7aa9d9084776a646464646464646464646464646464646464646464646464646464646464615e574d42362a1e12050013202c3946535f6c7986929facb7aa9d9084776a646464646465656768686d71757b818791969ea6b0b8baaea2989083786d60564c4135291d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2c3845515c676e7a838c91959992908a81786d60585c676e7a838c91959992908a81786d60585c676e7a838c91959992908a81786d60584e43372b1f130600030f1a252f3841484c4e535353535353535353535353535353535353535353535353535353535353535353535353535353535353534b49453e362c22170c00000b1825313e4b5864717e8b97a4b1ada093877a6d6054473a2d21140700000000000b1724313e4a5764717d8a97a4b0aea194877b6e6154483b2e2115082a0000000714202d3a4753606d7984919ea7b1baaea29891847b6f6b615f5757565656585960636d727d87929fa5afbbafa4998e8175695f5347382e23170c0000000000000006131f2c3845515c6775828f9ca8b5aea3998a7d706357505050505050505050505050505050504d576774808d9aabb5b2a8988b7f7265554b4035291d100400000013202c3946535f6c7986929facb7aa9d9084776a5d575757575757575757575757575757575757575757575757575757575754534d453b31251a0e020013202c3946535f6c7986929facb7aa9d9084776a5d5757575758585a565e6164696e747c848f949ea6b0b9b4aaa0958c7f72685d5246392f24180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2934404b555e686e797f84868786837d746d665c50555e686e797f84868786837d746d665c50555e686e797f84868786837d746d665c50463c32271b0f03000008131d262f363c4041464646464646464646464646464646464646464646464646464646464646464646464646464646464646463e3d39332c241a100600000b1825313e4b5864717e8b97a4b1ada093877a6d6054473a2d21140700000000000b1724313e4a5764717d8a97a4b0aea194877b6e6154483b2e21150823000006131f2b37434e5865727e8b97a1adb9b1a79f92867c6f696059534d4a4949494b4f545b626b717e8b939eaab4b5ab9f93877b6e62544a3f34281c100300000000000004101c2834404b5565727e8b98a7b1b5ab9a8d807467575d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5e697784919daab7aca096887b6e6155483b2f24180c0000000013202c3946535f6c7986929facb7aa9d9084776a5d514b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4846423b33291f1409000013202c3946535f6c7986929facb7aa9d9084776a5d514b4b4b4b4c4d4c5254575f616a6f79828f949ea7b1bcb1a79f92857a6d61554b4035291d1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232f39434d565e676d72777a7a7976706c605c544a4d565e676d72777a7a7976706c605c544a4d565e676d72777a7a7976706c605c544a3f342b20150a000000010b141d252b3033343939393939393939393939393939393939393939393939393939393939393939393939393939393939393931302d28221a12080000000b1825313e4b5864717e8b97a4b1ada093877a6d6054473a2d21140700000000000b1724313e4a5764717d8a97a4b0aea194877b6e6154483b2e2115081c00000815212e3b47535f6a7783909da9b2b8ab9f958b7e726a5f574f46423e3d3c3d3e43485159626c75818e98a3aebaafa49a8d8073665c5044382c1f1206000000000000000c18232e3b4854616e7b8795a0acb7aa9d918477696a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6e7b8795a0acb7aa9e918477695f53463a2d1d12070000000013202c3946535f6c7986929facb7aa9d9084776a5d51443e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3b3a36312921170d03000013202c3946535f6c7986929facb7aa9d9084776a5d51443e3e3e3f404146474d535860676d78828f95a0aab4baaea2988c8073675d5145392c1f13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27313b444d555c6065676d6e6d6664615a504a42444d555c6065676d6e6d6664615a504a42444d555c6065676d6e6d6664615a504a42382e22190f0400000000020b131a202427282d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2423211d171008000000000b1825313e4b5864717e8b97a4b1ada093877a6d6054473a2d21140700000000000b1724313e4a5764717d8a97a4b0aea194877b6e6154483b2e2115081300000916222f3c4955626f7c8895a0acbbb2a89d9083786c60584e453d3631302f3032383f47505a616e7b86929facb6b6ac9e9185796d6053463a2d201308000000000000000714212d3a46535e697784919daab7aca095877b7777777777777777777777777777777777777777777e8b97a7b1b4aa9a8d807467574d42372b1e0b010000000013202c3946535f6c7986929facb7aa9d9084776a5d51443731313131313131313131313131313131313131313131313131312e2d2a251f170f0500000013202c3946535f6c7986929facb7aa9d9084776a5d5144373132323036393b42464e555d666d79839098a3aebab4aa9f9285796d6053473a2f24190d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151f29323b434b5153555d6061605c545550443f383b434b5153555d6061605c545550443f383b434b5153555d6061605c545550443f3830261c100700000000000001080f14181a1b20202020202020202020202020202020202020202020202020202020202020202020202020202020202020181714110c0600000000000b1825313e4b5864717e8b97a4b1ada093877a6d6054473a2d21140701060602000b1724313e4a5764717d8a97a4b0aea194877b6e6154483b2e2115080a0005111e2a36424d566673808d99a7b1b9aca0968a7d70655b50463c332a26232323272c353f46525e6974808d9aa4afb9ada197897d706356493d3024190d0100000000000005121e2a36424d576773808d9aaab3b1a7978d878383838383838383838383838383838383838383838b909ba6baaea298897d7063564a3d31261a0e000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a2424242424242424242424242424242424242424242424242421211e1a140d050000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a2525252a2d31363d434c545d676e7b86929fa9b3baada2978a7e7164564c4135291d110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d17202930394045464b51535453514b49443e342e30394045464b51535453514b49443e342e30394045464b51535453514b49443e342e261e150a00000000000000000003080b0d0e131313131313131313131313131313131313131313131313131313131313131313131313131313131313130b0a0805000000000000000b1825313e4b5864717e8b97a4b1ada093877a6d6054473a2d21140d0e13130e0d0d1724313e4a5764717d8a97a4b0aea194877b6e6154483b2e21150800000714202d3a46525e697783909daab7b7aa9e9184786c6053493f342a211a1616161b232a36424d56616e7b87939facb9b3a99a8d807367564c4135291d1104000000000000020e1a25313d495663707c8998a2aebaa99f9795909090909090909090909090909090909090909090959ba2acb8ac9f9285796d6053463a2d201309000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e1818181818181818181818181818181818181818181818181514120e0903000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e19191d20262a313a424b555f6973808c97a2adbab3a99c8f8276685d5245392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171e272e34383a404547474645403939332823272e34383a404547474645403939332823272e34383a4045474746454039393328231c150c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1ada093877a6d6054473a2d21181a1a20201b1a1a1724313e4a5764717d8a97a4b0aea194877b6e6154483b2e21150800000814212e3b4754616e7b8795a0acb8b2a8998c7f73655b5041382d22180f09090a111925303b46535f6976838f9ca9b6b7aa9d908477685d5245392c201307000000000000000913202d3a4653606d7985929fabb8b1a9a79f9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9fa7acb4b5a89c8f8275675c5145382c1f1306000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b080705020000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e080d11141a1f283039434d57606d7a85929fabb8b9ac9f92867a6d6054473a2d211406000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c151d23282c2f35393a3b3a38342e2d2822171d23282c2f35393a3b3a38342e2d2822171d23282c2f35393a3b3a38342e2d282217110a030000000000000000000003080b0d0e131313131313131313131313131313131313131313131313131313131313131313131313130b0a0805000000000000000000000000000b1825313e4b5864717e8b97a4b1ada093877a6d6054473a2d212526272d2d2826262324313e4a5764717d8a97a4b0aea194877b6e6154483b2e21150800000b1724313e4a5764717e8a97a7b1b9aca196887b6e6253493f2f261b100600000009141f2a36424d5765727f8b98a9b3b8aca095877a6d6054473a2d2114070000000000000006121f2c3844515c6675828f9ba8b5bab9b1abaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabb1b9bcb1a7988b7e7265554b4034281c1004000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e121212121212121212121212121212120c0b090501000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110105090d161e27313c45515d6773808d99a7b1bbafa3998a7d7064574a3d2d22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181c1f24292c2d2e2d2c28231d1c170c12181c1f24292c2d2e2d2c28231d1c170c12181c1f24292c2d2e2d2c28231d1c170c060000000000000000000001080f14181a1b20202020202020202020202020202020202020202020202020202020202020202020202020181715110c0600000000000000000000000b1825313e4b5864717e8b97a4b1ada093877a6d6054473a2d303233343939353333302f313e4a5764717d8a97a4b0aea194877b6e6154483b2e21150800010d1a2734404d5a6773808d9aa6b3b7ab9e9184786a5f5341382d1d140a00000000020e1a26313b4855616e7b8897a1adb9b1a796897d7063564a3d3023170a0000000000000004101c2834404a5465717e8b98a7b1bcc3bcb8b6b6b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b6b6b8bcc3b8aca095877b6e6154483b2e23180c00000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f181715110c060000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e11040000040c151f2935414b55626e7b8895a0acb8b5ab9a8d807467544a3f33281c0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c1013181d202021201f1c1812100b05070c1013181d202021201f1c1812100b05070c1013181d202021201f1c1812100b0500000000000000000000020b131a202427282d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2424211d171009000000000000000000000b1825313e4b5864717e8b97a4b1ada093877a6d6054473a393d3e404146464140403c3b383e4a5764717d8a97a4b0aea194877b6e6154483b2e2115080004111d2935404b556976838f9ca9b6b4a89b8e817568584e432f261b0b0200000000000914212d3a47535f697885919eabb8b2a5998c7f7266594c3f3326190700000000000000000c18232e3b4754616e7a8795a0acb8c4c0b6aea9a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a9aeb6c0c3b7aa9d908477695e53463a2d1d120700000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2524221d18110900000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e1104000000030d18242f3a47535f697783909daab6b6aa9d908377665b5044382b1f12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004070d101314141313100c07000000000004070d101314141313100c07000000000004070d101314141313100c07000000000000000000000000010b141d252b3033343939393939393939393939393939393939393939393939393939393939393939393939393931302d28221b12090000000000000000000b1825313e4b5864717e8b97a4b1ada093877a6d6054473f45494b4d4d53534e4d4d4948443e4a5764717d8a97a4b0aea194877b6e6154483b2e211508000613202c3945515d677885929eabb8b2a5988b7f7265584c3f3125140a00000000000006121e2b37424d576875828f9ba8b5b4a89b8e8175685b4e422f24180c00000000000000000714202d3946525e687783909daab7c3b9aea49d9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9da4aebdbeb3aa9a8d807367574d42362a1e0b0000000000000013202c3946535f6c7986929facb7aa9d9084776a5d51443838383838383838383838383838383838383832312e29231b1209000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e11040000000007131d2b37424d576773808d9aa6b3b8ac9f9285786c605346392d201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070807060400000000000000000001040607080706040000000000000000000104060708070604000000000000000000000000000008131d262f363c4041464646464646464646464646464646464646464646464646464646464646464646464646463e3d39342c241b100600000000000000000b1825313e4b5864717e8b97a4b1ada093877a6d60544748505658595a60605b595956544f474a5764717d8a97a4b0aea194877b6e6154483b2e211508000714202d3a4753606d7a8697a1adb9b4aa96897c706356493d3023160a000000000000020e1a2631404d5a6673808d99a6b3b6a99d9083766a554b4035291d10040000000000000005111e2a36414d566673808d99a9b3bcb1a79d928d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d929dabb5baaea298897c706356493d31251a0e0000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5145454545454545454545454545454545454545453f3d3a342d241b11060000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000010e1a26313d4a5763707d8a96a9b3baaea298887b6e6155483b2e22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a252f3841484c4e535353535353535353535353535353535353535353535353535353535353535353535353534b49453e362c22170c00000000000000000b1825313e4b5864717e8b97a4b1ada093877a6d605447505a626566676c6c6866666360594f4a5764717d8a97a4b0aea194877b6e6154483b2e211508000915222f3c4855626f7c8895a9b3baaea298877a6d6154473a2e21140700000000000000091824313e4b5764717e8a97a4b1b8ab9e928578675d5145382c1f130600000000000000020e1925303c4956636f7c8997a2adb8ab9f958d80808080808080808080808080808080808d99a4afb8ab9f9285796d6053463a2d2013090000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5252525252525252525252525252525252525252524b4a453f362d23180c0100000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000914212e3b4754616e7a8797a2adbab4aa968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040707090b0c0e0f10101111111111100f0e0c0b080705020000000000000000000000000000000000000000000000000000000814202b36414a53595b60606060606060606060606060606060606060606060606060606060606060606060606060575550483e34281d1105000000000000000b1825313e4b5864717e8b97a4b1ada093877a6d60544a54626c71737479797473736f6b60544a5764717d8a97a4b0aea194877b6e6154483b2e211508000a1724313d4a5764707d8a97a3b0b8ac9f928579685e5246392d20130700000000000000091623303c4956636f7c8996a2afb9ada197867a6d6053473a2d20140700000000000000000813202d3a4653606d7985929fabb6aa9d9083777474747474747474747474747474747a86939facb5a89b8f8275665c5144382c1f12060000000000000013202c3946535f6c7986929facb7aa9d9084776a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f585651483f34291d110500000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000714202d3946525e687885929fabb8b1a4988b7e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080d1113141617191b1c1c1d1d1e1e1e1e1d1c1b19171514120e0907040100000000000000000000000000000000000000000000000b1824303c48535d64676c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c64615a5045392d211508000000000000000b1825313e4b5864717e8b97a4b1ada093877a6d6054505c66717e808086868180807d6f63544a5764717d8a97a4b0aea194877b6e6154483b2e211508000b1825323e4b5865717e8b98a4b1b7aa9e9184776b564c41362a1e1105000000000000000815222e3b4855616e7b8894aab4beb3a994877b6e6154483b2e211508000000000000000006121f2b3844505c6675818e9bacb6ac9f93867a6d67676767676767676767676767717d8a99a4afb1a7988b7e7165544a4034281c10040000000000000013202c3946535f6c7986929facb7aa9d9084776b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b65625b51453a2e22150900000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e1104000000000005111e2a36414d566a7683909da9b6b2a6998c7f7366594c403326190d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205090e121415191d20212224262729292a2a2b2b2b2a2a2928262422211e1a1413110d08010000000000000000000000000000000000000000000d1a2733404c59646f7479797979797979797979797979797979797979797979797979797979797979797979797979716c6155493d3024170a000000000000000b1825313e4b5864717e8b97a4b1ada093877a6d605453606d78858c8d92938e8c8c8275665c505764717d8a97a4b0aea194877b6e6154483b2e211508000c1926333f4c5966727f8c99a5b2b6a99c908376695d50433025190d01000000000000000714202d3a4753606d7a8698a3aebaafa295887c6f6255493c2f221609000000000000000003101c28343f4a5464717e8b9aa4afafa4998a7d71645a5a5a5a5a5a5a5a5a5a576774818e9aabb5aca095877b6e6154473b2e23180c000000000000000013202c3946535f6c7986929facb7aa9d9083787878787878787878787878787878787878787878787878726d62564a3d3124170b00000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e11040000000000020e192530424f5c6975828f9ca8b5b4a79a8d8074675a4e4134271b0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e12141a1e212224292c2d2f313334353636373738373736353433312e2d2a2621201d19130e0903000000000000000000000000000000000000000e1b2834414e5b677481868686868686868686868686868686868686868686868686868686868686868686868686867e7164574b3e3124180b000000000000000b1825313e4b5864717e8b97a4b1ada093877a6d605456636f7c89979a9d9e9b999285796d60535764717d8a97a4b0aea194877b6e6154483b2e211508000d1a2733404d5a6673808d99a6b3b5a89c8f8275695c4f4236291c08000000000000000006131f2c3845515c677986929facb9afa396897d706356493d3023160a0000000000000000000b17232e3a4754616d7a87939facb5ab9a8e817467574d4d4d4d4d4d4d4d535f697884919eabb6aa9d908377695e52463a2d1c1207000000000000000013202d394653606c798698a3aeb8aca095898585858585858585858585858585858585858585858585857e7265584b3f3225180c00000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e1104000000000000081b2834414e5b6774818e9aa7b4b4a79b8e8174685b4e4135281b0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e141a1e21262a2d2e2f35393a3c3e3f4142434344444444444342413f3e3b3a36312d2c29241e1a150d080100000000000000000000000000000000000e1b2834414e5b6774818e93939393939393939393939393939393939393939393939393939393939393939393938a7e7164574b3e3124180b000000000000000b1825313e4b5864717e8b97a4b1ada093877a6d6054566673808c99a9a9a9a7a298897c6f63565764717d8a97a4b0aea194877b6e6154483b2e211508000e1b2734414e5a6774818d9aa7b4b4a89b8e8175685b4e4235281b0f020000000000000004101c2934404b556b7885919eabb8b0a3978a7d7064574a3d3124170a0000000000000000000613202d3946525e687683909da9b6ab9e918478695f534641414141414855616e7b8896a1acb3a9998d807366564d42362a1e0b00000000000000000013202d394653606c7986939fb4bcb1a7a09792929292929292929292929292929292929292929292928b7f7265584c3f3225190c00000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e11040000000000010e1a2734414d5a6774808d9aa7b3b5a89b8e8175685b4f4235281c0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151a1f252a2d31363a3b3e414547494a4c4e4f4f505051515151504f4e4c4a4846423e3a39352f2b262019130c04000000000000000000000000000000000e1b2834414e5b6774818e9a9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f978a7e7164574b3e3124180b000000000000000b1825313e4b5864717e8b97a4b1ada093877a6d60545d687683909da9b6b6b3aa998c807366565764717d8a97a4b0aea194877b6e6154483b2e211508000e1b2834414e5b6774818e9aa7b4b4a79a8e8174675b4e4134281b0e0100000000000000000c18232f45515e6b7884919eabb7b0a4978a7d7164574a3e3124170b00000000000000000005111d2a36414c566673808c99a9b3aca196887b6e6155483b2e34343f4a5465727e8b98a8b2ada297897c6f6356493c3025190e00000000000000000013202d394653606c7986939facb9b9b1a9a19e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e988b7f7265584c3f3225190c00000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e11040000000000010d1a2734404d5a6773808d9aa6b3b5a89b8f8275685c4f4235291c0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f1820262b31363a3b4246484b4c52545557595a5c5c5d5d5e5e5e5d5d5c5b595755534d4b4745413a373129241e160d070000000000000000000000000000000e1b2834414e5b6774818e9aa7acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaca4978a7e7164574b3e3124180b000000000000000b1825313e4b5864717e8b97a4b1ada093877a6d6054606d7a86929facb9c3b6a99d908376685d5764717d8a97a4b0aea194877b6e6154483b2e211508000e1b2835414e5b6874818e9ba7b4b4a79a8d8174675a4e4134271b0e010000000000000000071e2b3844515e6b7784919eaab7b1a4978a7e7164574b3e3124180b000000000000000000010d1925303c4956626f7c8997a1adb2a8988b7e7265544a3f342b3844505c6675828f9ba8b5ab9f9285796d6053463a2d20130900000000000000000013202d394653606c7986939facb9c3bbb3adabababababababababababababababababababababa5988b7f7265584c3f3225190c00000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e11040000000000000d1a2733404d5a6673808d99a6b3b5a89c8f8275695c4f4236291c0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e18212a31373b4246484d535558565d60626466676869696a6a6b6a6a6968676664615f575854524c47423c352f281f19100700000000000000000000000000000e1b2834414e5b6774818e9aa7b1b1b1b1b1b1b1b1b1b1b2b3b8b9b9b9b9b9b7b2b1b1b1b1b1b1b1b1b1b1b1a4978a7e7164574b3e3124180b000000000000000b1825313e4b5864717e8b97a4b1ada093877a6d605764717d8a99a3afb9b7b9ac9f93867a6d615764717d8a97a4b0aea194877b6e6154483b2e211508000f1b2835424e5b6875818e9ba8b4b3a79a8d8074675a4d4134271a0e010000000000000004111e2b3744515e6a7784919daab7b1a4978b7e7164584b3e3125180b000000000000000000000813202d394653606c7985929eabb5a89b8f8275665c5044382d3a4653606d7985929fabb6ac9b8e8175665c5044382b1f120600000000000000000013202d394653606c7986939facb9c7beb8b3b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2a5988b7f7265584c3f3225190c00000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e11040000000000010d1a2734404d5a6773808d9aa6b3b5a89b8f8175685c4f4235291c0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202a333c42474d5354575f616467686d6f717274757676777777777776757472716e696864605d56534e45413a312a22191107000000000000000000000000000e1b2834414e5b6774818e9aa4a4a4a4a4a4a4a4a4a4a4a5a7adb5becabeb4aca6a4a4a4a4a4a4a4a4a4a4a4a4978a7e7164574b3e3124180b000000000000000b1825313e4b5864717e8b97a4b1ada093877a6d60586774818e9aabafacaaacafa4998a7d71645764717d8a97a4b0aea194877b6e6154483b2e211508000f1b2835424e5b6875818e9ba8b4b3a79a8d8074675a4d4134271a0e010000000000000004111e2b3744515e6a7784919daab7b1a4978b7e7164584b3e3125180b0000000000000000000006121f2b3844505b6675818e9babb5ab9f9285796d6053463a2f3c4956626f7c8997a2adafa49a8b7e7164544a3f34281c100300000000000000000013202d394653606c7986939facb9beb5ada7a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5988b7f7265584c3f3225190c00000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e11040000000000010e1a2734414d5a6774808d9aa7b3b4a89b8e8175685b4e4235281b0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a26313c454d53575e6166696e7174777a7c7d7f8182828383848484848382817f7d7b7875716d68625f57514c433c342b231910060000000000000000000000000e1b2834414e5b6774818e979797979797979797979797989ba3adb8c2b8aca29a979797979797979797979797978a7e7164574b3e3124180b020000000000000b1825313e4b5864717e8b97a4b1ada093877a6d605f6a7884919eaba39f9da0a7ab9a8e8174675864717d8a97a4b0aea194877b6e6154483b2e211508000e1b2835414e5b6874818e9ba7b4b4a79a8d8174675a4e4134271b0e010000000000000005111e2b3844515e6b7784919eaab7b1a4978a7e7164574b3e3124180b00000000000000000000030f1c28333f4a5464717e8a99a3afada297897c6f6256493c35404b5566737f8c99a9b3ac9f93877a6d6154473a2e23170b0000000000000000000013202d394653606c7986939facb9b9ada39b98989898989898989898989898989898989898989898988b7f7265584c3f3225190c00000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e11040000000000020e1b2835414e5b6874818e9ba7b4b4a79b8e8174685b4e4135281b0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2b37424d575f62696e73777b7e818487888a8c8d8f8f909091919190908f8e8c8a8885827e7a746e6a605d554e463d352b22180c0300000000000000000000000e1b2834414e5b6774818a8a8a8a8a8a8a8a8a8a8a8a8a8b919ba7b3bbb0a69a908a8a8a8a8a8a8a8a8a8a8a8a8a8a7e7164574b3e3124180b050000000000000b1825313e4b5864717e8b97a4b1ada093877a6d60626e7b8896a1a399929195a0ab9e9184786a5f64717d8a97a4b0aea194877b6e6154483b2e211508000e1b2734414e5a6774818d9aa7b4b4a79a8e8174675b4e4134281b0e010000000000000005121e2b3845515e6b7884919eabb7b0a4978a7d7164574a3e3124170b00000000000000000000000b17222d3a4754606d7a86929facb3a9998c7f7366554b403945515d677683909ca9b6a99d908376685e5246392d1c11060000000000000000000013202d394653606c7986939fb4bcb1a79b918b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b7f7265584c3f3225190c00000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e11040000000000030f1c2936424f5c6975828f9ca8b5b3a79a8d8074675a4d4134271a0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3a47535f696e767b7f84888b8e91969597999a9b9c9c9d9d9e9d9d9c9b9a999797928e8b86817b746d675f584f473d342a1e150b00000000000000000000000916232f3c4956626f7c7e7e7e7e7e7e7e7e7e7e7e7e7e7f8b98a5b2b7aa9f948a7e7e7e7e7e7e7e7e7e7e7e7e7e7e7b6e6154483b2e211508070000000000000b1825313e4b5864717e8b97a4b1ada093877a6d6065727f8b98a89f9287849199a3a196887b6e6264717d8a97a4b0aea194877b6e6154483b2e211508000e1a2734414d5a6774808d9aa7b3b5a89b8e8275685b4f4235281c06000000000000000004111d2935414b556c7885929fabb8b0a3968a7d7063574a3d3024170a00000000000000000000000613202c3945525d687683909ca9b6a99c908376675d51453a4753606d7a86929facb3a9998c807366564c41362a1e0a000000000000000000000013202d394653606c798698a3aeb8aca0958b7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7c6f6255483c2f22150900000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e1104000000000004111d2935414c566a7683909da9b6b2a6998c7f7366594c403326190d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b82878c9196979a9ea0a8a4a5a7a8a9a9aaaaaaaaaaa9a8a7a5a9a19e9b98928e87817a6f6a60594f463c30271d1207000000000000000000000815222e3b4754606a6f717171717171717171717171717a8794a0adb5a99c8f8276717171717171717171717171716e695e53463a2d211407080000000000000b1825313e4b5864717e8b97a4b1ada093877a6d606775828f9ca89d90837a87929fa8988c7f726564717d8a97a4b0aea194877b6e6154483b2e211508000d1a2633404d596673808c99a6b3b5a99c8f8276695c4f432d22170b00000000000000000613202c3945515d677986929facb9afa296897c6f6356493c30231609000000000000000000000004111d2935414c5666737f8c99a9b2ac9f92867a6d6053473d4a5763707d8a99a3aeada197897c6f6256493c3025190d000000000000000000000013202c3946535f6c7986929facb7aa9d90847772727272727272727272727272727272727272727272726f6a5f53473b2e21150800000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000713202c3945525d687885929eabb8b1a4988b7e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c89939a9da0a8a7aaacb2b0b2b4b4b2b1b0afafafb0b0b2b4b2b3adabaaa29f99928e847c706b60584e43392e23180c0100000000000000000006131f2b37434e5860626464646464646464646464646d7a8794a0adb5a99c8f827669646464646464646464646464615e574d42362a1e12050c0000000000000b1825313e4b5864717e8b97a4b1ada093877a6d606d7985929faa998c807683909da99c8f82766764717d8a97a4b0aea194877b6e6154483b2e211508000c1925323f4c5865727f8b98a5b2b6a99d9083766a53493f33271b0f03000000000000000714212d3a4754606d7a8799a3afbbb5ab95887b6e6255483b2f2215080000000000000000000000010d1924303c4955626f7c8896a1adaea3998a7d7063574a424d576774808d9aabb5ab9e9285786c605346392d201308000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a65656565656565656565656565656565656565656565625f584e43372b1f120600000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000714212d3a4754606d7a8797a1adb9b4ab968a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a8798a2acacb2b4b7b6b4aeacaaa8a6a4a3a3a2a2a3a3a5a7aaacb1b8b4aeaba39f9691867d706a5f554b4034281d1307000000000000000000030f1b27323d464e54565757575757575757575757616d7a8794a0adb5a99c8f8276695c575757575757575757575754534d453b31251a0e020e0000000000000b1825313e4b5864717e8b97a4b1ada093877a6d63707d8998a2a298897c73808c99aa9f9286796d64717d8a97a4b0aea194877b6e6154483b2e211508000b1825313e4b5864717e8b97a4b1b7ab9e918478655b5044372b1f1205000000000000000815222f3b4855626e7b8895abb5bbafa499877a6e6154473b2e2114080000000000000000000000000815212e3b47535f6a7884919eabb5ab9a8d807467574d46525e697784919daab5ab9b8e8174655b5044372b1f1205000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d58585858585858585858585858585858585858585855534e463c32261b0f0300000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e11040000000000091623303c4956636f7c8996a9b3baaea399887b6e6255483b2f2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3946525e687885929fabb8b5afaca9aaa39f9d9b9998969695969697989a9da0a7acaeb4b5afa8a19892867c6f675c51453a2f24180d010000000000000000000a15202b343d4347494b4b4b4b4b4b4b4b4b4b54616d7a8794a0adb5a99c8f8276695c4f4b4b4b4b4b4b4b4b4b4b4846423b33291f140900100000000000000b1825313e4b5864717e8b97a4b1ada093877a6d6673808d99aa9f928579707c8998a2a298897d7064717d8a97a4b0aea194877b6e6154483b2e211508000a1723303d4a5663707d8996acb6b9ac9f9286796c605346392d201306000000000000000a1623303d495663707c8996a3afb9ac9f9386796d6053463a2d20130700000000000000000000000006131f2b37434e586774818e9aabb5aa9d918477695e524754616e7b8795a0acafa3998a7e716453493f33271b0f03000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d514c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4847433c342a20150a0000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e11040000000004101c2834404b5565727f8c98a5b2b9ac9f9286796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d2a36414c566a7784909daaacaba39f9c999892908e8c8b8a898989898a8c8e9095999fa2aab0bbb2aaa2989083796d60554b4135291d1104000000000000000000040f19222b32373b3c3e3e3e3e3e3e3e3e3e4754616d7a8794a0adb5a99c8f8276695c4f433e3e3e3e3e3e3e3e3e3b3a36312921170d0300110000000000000b1825313e4b5864717e8b97a4b1ada093877a6d687783909da89c8f82756d7985929faa9a8d807367717d8a97a4b0aea194877b6e6154483b2e211508000815222f3b4855626e7b889aa4afbbaea399877b6e6154483b2e211508000000000000000b1825323e4b5865717e8b98a4b1b7ab9e918478665c5044382c1f1206000000000000000000000000030f1b26323e4a5764717d8a99a3aeaca095877b6e6154495364717e8b97a7b1ac9f92867a6d6054473a2d22170b00000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d51443f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3c3b37322a22180e040000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e11040000000006131f2c3845515c6775828f9ba8b5b7aa9d908477665c5044382c1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d192530424f5c6875828f9ba29f9b9992908c888683817f7e7d7c7c7c7d7d7f8184888c92989fa6b0b8b3aaa0958c7f72675d5145392c2013060000000000000000000007101920272b2e2f31313131313131313a4754616d7a8794a0adb5a99c8f8276695c4f433631313131313131312e2d2a251f170f050000110000000000000b1825313e4b5864717e8b97a4b1ada093877a6d6e7a87939fa9988c7f726676828f9ca99d90847768717d8a97a4b0aea194877b6e6154483b2e211508000713202d3a4653606d7986939facb9b5ab96897d7063564a3d30231709000000000000010d1a2734404d5a6773808d9aa6b3b6a99c8f837669544a3f34281c1003000000000000000000000000000a14212d3a4754606d7a86929facb1a7978b7e716453505b6575818e9ba8b4a99c908376685d5245392c1b110600000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144373232323232323232323232323232323232322f2e2b2620181006000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e1104000000040d16202d3a4653606d7985929fabb8b4a89b8e817568544a3f34281c100300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081a2734414d5a6774808d9a98928e8a86837f7c797775737170706f6f70707274777b80868f949fa6b0bcb1a79f92857a6d6054473a2e23170b0000000000000000000000070f151b1f2223242424242424242e3a4754616d7a8794a0adb5a99c8f8276695c4f4336292424242424242421211e1a140d05000000100000000000000b1825313e4b5864717e8b97a4b1ada093877a6d717e8b9aa4a197887c6f65727f8c98a9a095877a6e717d8a97a4b0aea194877b6e6154483b2e2115080006131f2c3845515c677884919eabb7b2a5988b7f7265584c3f31261a0f02000000000006121e2b37424d576975828f9ca8b5b4a79b8e8174685b4e412e23170c00000000000000000000000000000613202c3945515d6776838f9ca9b4a89b8e8175655b53606c7885919eabb2a9998c7f7366564c4135291d0a0000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a252525252525252525252525252525252522211f1b150e0600000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e11040000030c161f2a36424d5763707d8a98a2aebab2a8988b7e7165584b3e2e23170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b908b85817d7a76726f6d666866656363626363646567696e737b828f949faab4baada2978b7e7164544a3f34281c10030000000000000000000000040a0f131516181818181818212e3a4754616d7a8794a0adb5a99c8f8276695c4f4336291c1818181818181514120e0903000000000f0000000000000b1825313e4b5864717e8b97a4b1ada093877a6d75818e9bac9e9185786c626f7c8897a1a7978b7e71717d8a97a4b0aea194877b6e6154483b2e2115080004101c2834404b556975828f9ca8b5b4a89b8e817568584e43372b1f120600000000000814212e3a47535f697885929eabb8b6ac988b7f7265584c3f32251906000000000000000000000000000004111d2935414c5566727f8c99a8b2ab9e9185786c6055626f7c8897a1adada197887c6f6255493c3024190d0000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e191919191919191919191919191919191515120f0a040000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110000060c151e28313a46535f6975828f9baab4b9aca196887b6e6155483b2e22150600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724313d4a5764707d88837e7a74716d686662605c54595857565656565759575f61686e79828f98a2aebab3a99c8f8275665c5044382b1f120600000000000000000000000000030608090b0b0b0b0b14212e3a4754616d7a8794a0adb5a99c8f8276695c4f4336291c100b0b0b0b0b080705020000000000000d0000000000000b1825313e4b5864717e8b97a4b1ada093877a6d7885919ea89b8e817565606c7885929ea89b8e8175717d8a97a4b0aea194877b6e6154483b2e21150800000c18232e404d596673808c99acb6b7ab9e9184786a5f53473a2e21160a00000000000815222f3b4855626e7b8897a1adb9afa49a897c6f6356493c302316090000000000000000000000000000010d19242f3c4855626f7b8896a1acada197887c6f625565727f8c98a9b3ab9e9185786a5f53473b2e1e13080000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0908060300060606000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e11080d11171e27303a434e58616e7b87939facb9b7ab9e918478695f53473a2d21140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a7b76716d6764605d565553514a4c4b4a4949494a4a4c4d53565e676e7b86929facb8b8ab9f9285796d6053463a2d2013070000000000000000000000000000000000000000000714212e3a4754616d7a8794a0adb5a99c8f8276695c4f4336291c100300000000000000000000000000000a0000000000000b1825313e4b5864717e8b97a4b1ada093877a6f7c8897a1a8988b7e71655b6575818e9ba89e928578717d8a97a4b0aea194877b6e6154483b2e2115080000071724313d4a5764707d8a9aa4afb9aca196887b6e6255483d32271b0d0400000007121e2a36424d5765727f8b98a9b3b9ac9f93867a6d6054473a2d2114070000000000000000000000000000000815212e3a47535f6a7884919eabb3a9988c7f72655c6776828f9ca9b5ab9a8e817467584e43372b1f13060000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e1313131313131313131313131313131313131313131313130b0a08040000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e1415191c23283039424b55606a75818e99a4afbbb1a7998d807366574d42372b1e120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3946525e686d6e6a65605d5554524c49464440403e3d3d3c3c3d3d3f42464d555e6974808d9aa7b3baaea298887b6e6255483b2f2215080000000000000000000000000000000000000000000714212e3a4754616d7a8794a0adb5a99c8f8276695c4f4336291c10030000000000000000000000000000070000000000000b1825313e4b5864717e8b97a4b1ada093877a727f8c99a9a096877b6e615365717e8b98a8a197887c717d8a97a4b0aea194877b6e6154483b2e21150800000714212e3a4754616d7a87939facb9b2a8998c7f7266594f43382c20160c0503060f19222d3a46525e6976828f9ca9b5b6aa9d908377675d5145392c20130600000000000000000000000000000006121f2b37434e586774818d9aaab4a99c8f827667606d7985929facaea3998a7d7164574a3e32261b0f030000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f171614100b05000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a202122252a2e343b424b545d676f7c88939fabb5b8ab9f95887c6f6255483c31261a0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d2a36414c565e61625f5754514b4745413c3a38342e3230302f30303131363b434d5763707c8996abb5beb4aa968a7d7063574a3d3024170a0000000000000000000000000000000000000000000714212e3a4754616d7a8794a0adb5a99c8f8276695c4f4336291c10030000000000000000000000000000060000000000000b1825313e4b5864717e8b97a4b1ada093877a76838f9ca99e918477695e54616e7b8796a0a9998c7f727d8a97a4b0aea194877b6e6154483b2e21150800000713202d3946525e687783909daab6b7aa9d9083776b6054483d32281e1612101217212935414c55616e7b87939facb9b3a9998d807366554b4135291d1104000000000000000000000000000000030f1b26313d4a5764707d8a98a3aeac9f9286796d63707c8998a2aeac9f92867a6d6054473a2d21140a000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2423211c1710080000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372b2d2d2f3036383f444c545c666d7984919aa4afbdb2a89d9083776a5f53473a2e1f1509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1925303a444c525455534e4745413a39352f2d2c282325242323232324262a303b4754616d7a8799a3afbbb1a4978b7e7164584b3e3125180b0000000000000000000000000000000000000000000714212e3a4754616d7a8794a0adb5a99c8f8276695c4f4336291c10030000000000000000000000000000040000000000000b1825313e4b5864717e8b97a4b1ada093877a7a86929fab9a8d81746757535e697784919ea99c8f83767d8a97a4b0aea194877b6e6154483b2e211508000005111d2a36414c566673808d99a7b1b8aca095897c6f63594f443a3028201e1c1f2328333b45515d6773808c99a4afb9ada197897c706356493d2f24180d01000000000000000000000000000000000a14202d3a4753606d7a86929facaea298897c706673808d99aab4a99c8f8376675d5145392c201306000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d514439393939393939393939393939393939393939393939393939393931302d28221a120800000013202c3946535f6c7986929facb7aa9d9084776a5d51443338393a3c3d41464a50565e666d78828f96a0acb6b9aca0968a7e7164584e43372b1f0e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e29323a4146474847423c39352f2c2924201f1c18181716161617171a202d394653606c7986929facb9b2a5988b7f7265584c3f3225190c0000000000000000000000000000000000000000000714212e3a4754616d7a8794a0adb5a99c8f8276695c4f4336291c10030000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1ada093877a7d8a99a3a3998a7d7064574d576774818d9aab9f92867a7d8a97a4b0aea194877b6e6154483b2e2115080000010d1925303c4955626f7c8895a0acb8b1a79c8f82766b60564c4239312d2a282b2e343c454e58606d7a85929fabb5b8ab9e9185796d6053463a2d20130700000000000000000000000000000000000613202c3945515d6776828f9ca9b4aa998d8073687783909daab2a8988c7f7265554c4135291d1104000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d51464646464646464646464646464646464646464646464646464646463e3c39332c241a1005000013202c3946535f6c7986929facb7aa9d9084776a5d51463f444647484a4c52545c60686e78818e949ea8b2bbb0a69e9184786c6053463c31261b0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c1720293036393a3b3a37312c2924201d191312100c070a0a09090e1319202d394653606c7986929facb9b1a5988b7e7265584b3f3225180c0000000000000000000000000000000000000000000714212e3a4754616d7a8794a0adb5a99c8f8276695c4f4336291c10030000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1ada093877a808d9aab9f92867a6d60544a5764707d8a99a4a3998a7d7e8a97a4b0aea194877b6e6154483b2e2115080000000815212e3b47535f6a7783909da9b3b7aa9e94897d70685d544b433d3a3634383a3f444d57606a73808d97a2adbdb0a69a8d8073665c5044382b1f1206000000000000000000000000000000000004101d2935404b5565727f8b98a8b2aa9d9083776d7a86939facaca196887b6f6255483c2f24190d01000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d52525252525252525252525252525252525252525252525252525252524a49443e362c22170b000013202c3946535f6c7986929facb7aa9d9084776a5d52524a5053545557565e61666d717a828e939ea6b0bab3a99e948a7d70665b5044382a20150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171e252a2d2e2f2e2b26201d1813110d0806040000040a0f141a1e2429333b4754616e7a8799a3afbbb1a4978a7e7164574b3e3124180b0000000000000000000000000000000000000000000714212e3a4754616d7a8794a0adb5a99c8f8276695c4f4336291c10030000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1b6a99c8f8285929ea99d908376685d524754606d7a86939fab9d90838a909aa6b2aea194877b6e6154483b2e21150800000006131f2b37434e5865727f8b97a2adb9b0a69e91847a6d665d554f4846423f44464a50575f696f7c87929fa9b3b7aa9e94887c6f62544a3f34281c10030000000000000000000000000000000000010d18242f3b4855626e7b8896a0acac9f93867a717d8a99a4afab9e9184786a5f53473a2e1e130800000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f575550483e33281c10040013202c3946535f6c7986929facb7aa9d9084776a5f5f5f5f5b6060626466686d72787e8590949ea5afb8b5aba2978f82756c61544a3f3328180e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c13191d202122211e1a15110d070401000000030b10151b1f252a30353c454f5964707d8a97abb5bdb2a996897d7063564a3d3023170a0000000000000000000000000000000000000000000714212e3a4754616d7a8794a0adb5a99c8f8276695c4f4336291c10030000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1b7ab9f948f9297a1aa998d807366564c45525d687683909da9a09590959aa2acb7aea194877b6e6154483b2e211508000000030f1b26323c4753606d7a85929ea8b2b9aca1968f82786d67605954524d4a5053545c60696e7b849199a3afbbafa59c8f82756a5f5342382e23170b000000000000000000000000000000000000000714212e3a47535f697784919eaaafa4998a7d74818e9aabb4aa9a8d817467584e43372b1f0c0100000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c64615a5044392d2114080013202c3946535f6c7986929facb7aa9d9084776c6c6c6c6c666c6d6f7073767a7e848b92979fa6afb7baafa49992857b6e615a5042382d22170600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d1113141514120e09040100000000060c10161c20262b30363a41454e57606b75828f9ba8b5b9ada196887b6e6155483b2e2215080000000000000000000000000000000000000000000714212e3a4754616d7a8794a0adb5a99c8f8276695c4f4336291c10030000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1bbb0a69f9c9ea1a9a298897c70635649414c566673808d99aaa7a09da0a7acb4baaea194877b6e6154483b2e211508000000000a15202c3945515d67737f8c96a1adb9b2a89f948f8279706b65615e57545c6062666d727b849196a1abb5b3aa9e93897c6f62584e4330261c11060000000000000000000000000000000000000006121e2b37424d576774808d9aaab4ab9a8e817884919eabaea3988a7d7064574a3d31261a0f0000000000000000000000000000000013202c3946535f6c7986929facb7aa9d90837979797979797979797979797979797979797979797979797979797979797979716c6155493c3023160a0013202c3946535f6c7986929facb7aa9d908379797979797979797a7b7d8083868b91969fa2a9b0b8b4aea39f93877d70695e53483e2f261c1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001050707080806020000000001070d11171c1f272c31373b42464c52585f696f7c88939facb9b8ab9e918478695f53463a2d2114070000000000000000000000000000000000000000000714212e3a4754616d7a8794a0adb5a99c8f8276695c4f4336291c10030000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1beb8b0aba9abadac9f9286796d6053463d495663707c8998a2aeacaaacb1b9bdbaaea194877b6e6154483b2e2115080000000004111d2935404b55606d7984919ea5afb9b0a69e948f847d76716e696a6a666d6f72797e869196a1a9b2baaea2988e81756a6054463c311e140a0000000000000000000000000000000000000000020e1a26313d4a5763707d8a98a2aeab9e91847d8996a1acac9f92867a6d6053473a2d20140a0000000000000000000000000000000013202d394653606c798698a3aeb8aca0958986858585858585858585858585858585858585858585858585858585858585867e7164574a3e3124170b0013202c3946535f6c7986929facb9aca09589868585858585858687888a8c8f92999ea0a8adb3bab2aaa39f918c7f726b61574d42362c1d140a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d13181c23282c33383c43474d52565d606a6f7b84919aa4afbbb1a79b8e817568574d42362a1e12050000000000000000000000000000000000000000000714212e3a4754616d7a8794a0adb5a99c8f8276695c4f4336291c10030000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1bec2bbb7b6b8b5a99c8f8276675c51453a4653606d7986929facb8b7b8bcc3cbbaaea194877b6e6154483b2e21150800000000010d18242f3a45515d67707d8a939da7b1b8b0a69e969189837e7b78777777797b7f848b9298a1a8b2b7aea49f92857b6e61584e43342a200c020000000000000000000000000000000000000000000914202d3a4753606d7986929facaca19691898f99a8b2a99c8f8276675d5145392c2013060000000000000000000000000000000013202d394653606c7986939fb4bcb1a7a098929292929292929292929292929292929292929292929292929292929292928a7e7164574b3e3124180b0013202c3946535f6c7986929facb9b1a7a0989292929292929298939597999c9fa3abacb2bab4aea8a098928b7f726d62594f453b31231a0b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c13181d24292e34383d44484e53575e61686d737c849196a1acb6b8aca095897d7063564a3d31261a0e020000000000000000000000000000000000000000000714212e3a4754616d7a8794a0adb5a99c8f8276695c4f4336291c10030000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1beccc7c3c2beb3a9988c7f7265554b403845515c6776828f9ca9b5c2c5c8cec7baaea194877b6e6154483b2e211508000000000007131d2935404b55616c74818e959fa7b1b8b0a8a09e94908b878584848485888c91969fa2aab2baaea59d928a7e71685e52463d3222180e0000000000000000000000000000000000000000000006131f2c3845515c6775828f9ca8b2a8a19e9699a1abb2a8988b7f7265554b4035291d10040000000000000000000000000000000013202d394653606c7986939facb9b9b1aaa29f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f978a7e7164574b3e3124180b0013202c3946535f6c7986929facb9b9b1aaa29f9f9f9f9f9f9fa3aaa2a3a6a9acafb5b9b4aeaaa39f9691867e726d625b51473d33291f11080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a11171d24292f35383f44464f54585f62696e737a80879196a1a8b2b9afa59d9083776b6155483c2f1f1409000000000000000000000000000000000000000000000714212e3a4754616d7a8794a0adb5a99c8f8276695c4f4336291c10030000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1bebec0c3beb9ada197887c6f6255493c34404b5566727f8c99a9b3bec0c3bebebaaea194877b6e6154483b2e2115080000000000010d18242f3a434f59606d798390959fa7aeb8b2aca69f9c9897929190919298999ea0a8aeb4b4aea49d938d80736c61564d41342b2010060000000000000000000000000000000000000000000004101c2934404b5565727f8b98a8b1b2acaba3a5abb9aca096887b6e6255483b2f24180d010000000000000000000000000000000013202d394653606c7986939facb9c3bcb4aeacacacacacacacacacacacacacacacacacacacacacacacacacacacacaca4978a7e7164574b3e3124180b0013202c3946535f6c7986929facb9bebcb4aeacacacacacacacaeb4aeb0b3b6b6b5afacaaa29f98928c847c716c625b51493f352c21170d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c151c23282f353a41454a50535960636a6f757b80858d9299a1a8b2b9b1a79d938a7d7064594f44382c200d03000000000000000000000000000000000000000000000714212e3a4754616d7a8794a0adb5a99c8f8276695c4f4336291c10030000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1b1b1b3b7b2b1ab9e9285786c605346392e3c4955626f7c8897a1adb1b3b7b2b1b1aea194877b6e6154483b2e21150800000000000007131d28313e45515c676d7a8390959da4abb1b9b0aba9a9a29f9d9d9e9fa3aaaaacb2b8afaaa29f928d81786c605a50443b3022190f0000000000000000000000000000000000000000000000000c18232f3b4854616e7b8795a0acb1b1b1afb1b1b1aa9e918477695f53473a2e1d1207000000000000000000000000000000000013202d394653606c7986939facb7b7b7b7b6b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1a4978a7e7164574b3e3124180b0013202c3946535f6c7986929facb1b1b1b5b6b1b1b1b1b1b1b1b1b0b0b3adaba9aba49f9c98928d8680796f6a625a51493f372d231a0f05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171e262e343a41454b51545c60646b70767c81868d92989fa3abb2b9b1a7a0958e81746c6155473d33271c1000000000000000000000000000000000000000000000000714212e3a4754616d7a8794a0adb5a99c8f8276695c4f4336291c10030000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4a5a5a5a6aaa5a5a59b8e8275655b5044372d394653606c7885929ea5a5a6aaa5a5a5a5a194877b6e6154483b2e211508000000000000010c161f2834404b555e686d7a838d929d9fa7acafb5b6b3adabaaaaaaacaeb4b6b4aeaca59e98928b80776c665b50483e32291f10070000000000000000000000000000000000000000000000000714212d3a46535e697784919da5a5a5a5a5a5a5a5aa9a8d807467574d42372b1e0c01000000000000000000000000000000000013202d394653606c7986939faaaaaaaaaaa9a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a4978a7e7164574b3e3124180b0013202c3946535f6c7986929fa5a5a5a5a8a9a5a5a5a5a5a5a4a4a3a3a9a29f9c9a9993908b86807b736d675f5850483f372d251b1108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b141b222730383f444b51555d60666d71777d82888e92999fa2aaaeb5baafa79f959083796d605a5044352c21160b00000000000000000000000000000000000000000000000714212e3a4754616d7a8794a0adb5a99c8f8276695c4f4336291c10030000000000000000000000000000000000000000000b1825313e4b5864717e8b97989898989a9d989898988b7e716553493f332b3744505b6575828e9898989a9d989898989894877b6e6154483b2e21150800000000000000040d18232e39434c565e686d78808990959c9fa4abaaacaeb5afb0afb4aeacaaaaa29f9a938e867e746c655b544a3f362c20170d0000000000000000000000000000000000000000000000000005121e2a36424d576773808d9898989898989898989898897d7063564a3d31261a0e00000000000000000000000000000000000013202d394653606c7986939d9d9d9d9d9d9c989898989898989898989898989898989898989898989898989898989898978a7e7164574b3e3124180b0013202c3946535f6c79869298989898989b9c98989898989898979796959792908d8a86837f7a746e69605d554e463f362d251b1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161d262d333c424a50555d60676d72797e83898f949b9fa3abaeb3bbb3ada59d9590837a6d675d51483e33231a100500000000000000000000000000000000000000000000000714212e3a4754616d7a8794a0adb5a99c8f8276695c4f4336291c10030000000000000000000000000000000000000000000b1825313e4b5864717e8b8b8b8b8b8b8d908b8b8b8b887b6e6155483b2d27333f495365717e8b8b8b8b8d908b8b8b8b8b8b877b6e6154483b2e211508000000000000000007121d27303a444c565e666d747d838a8f93999b9d9fa3aba2a3a2aaa29f9d9a98928e88817b716c605b534a42382d241a0e0500000000000000000000000000000000000000000000000000020e1a25313d495663707d898b8b8b8b8b8b8b8b8b8b8b86796d6053473a2d20140900000000000000000000000000000000000013202d394653606c7986909090909090908f8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8a7e7164574b3e3124180b0013202c3946535f6c79868b8b8b8b8b8b8e8f8b8b8b8b8b8b8b8a8a8988878583807e7a76726d68615e57514b433c342d241b1309010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161f282f383f444e545c60676d737a7f848a90959c9fa6acaeb5bab8afa9a29f938e837a6d685e554b40362c2211080000000000000000000000000000000000000000000000000714212e3a4754616d7a8794a0adb5a99c8f8276695c4f4336291c10030000000000000000000000000000000000000000000815222f3b4855626e7b7e7e7e7e7e7e80847f7e7e7e7e71695f53463a2d222d3a4754616d7a7e7e7e7e80847f7e7e7e7e7e7e796d6053473a2d2014070000000000000000000b151e29323a444c545c606b70787d82878b8e91929995969696959892908d8a85817c756e69615a504941382f261c12080000000000000000000000000000000000000000000000000000000913202d3a4653606d787e7e7e7e7e7e7e7e7e7e7e7e7e70675c5145382c1f1306000000000000000000000000000000000000101d2a3743505d6a768384848484848484837e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7b6e6155483b2e221508000b1825323e4b5865717e7e7e7e7e7e7e82837e7e7e7e7e7e7e7e7d7d7b7a787673716d6865605d56534d454039312a221b1209010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d161f28313a4149505860666d727a7f858c91969da0a7abb0b9bbb8b1aba59e97928b81796d685e564c43392f241a10000000000000000000000000000000000000000000000000000714212e3a4754616d7a8794a0adb5a99c8f8276695c4f4336291c10030000000000000000000000000000000000000000000814212e3a47535f696e727272727272737772727272716c62574d42362a202d3946525e686d727272727377727272727272726d675d5145392c201306000000000000000000030c172029323a424b515960656c70767b7e818486888889898988878583807d7a746f6a615f5750443f382f261d140a0000000000000000000000000000000000000000000000000000000006131f2c3845515c666d727272727272727272727272706c61554b4034291c1004000000000000000000000000000000000000101c2936424e5b667176777777777777777672727272727272727272727272727272727272727272727272727272727272726e695f53463a2d211407000b1724313d4a56626c717272727272727576727272727272717170706f6d67696764615e5654524c46423b352f271f191009000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151f28313a434b535b606a6f787f858c92979ea1a8acb1b7bbb7b1aca79f9d938e857e746d675e564c443a31281d1208000000000000000000000000000000000000000000000000000714212e3a4754616d7a8794a0adb5a99c8f8276695c4f4336291c100300000000000000000000000000000000000000000006121e2b37424d575f62656565656565676a6565656565625a50453b31261d2a36414c565e6165656565676a65656565656565605d554b4035291d100400000000000000000000050e172028303940454f535b6064696e717577797b7c7c7d7c7b7a797774706d67626058534d453e332d261d140b020000000000000000000000000000000000000000000000000000000004101c2834404b545c6065656565656565656565656564615a5043392f23180c000000000000000000000000000000000000000e1a26323e4a555f666a6a6a6a6a6a6a6a696565656565656565656565656565656565656565656565656565656565656565615f574d42362a1e1205000915212e3a45505a626565656565656568696565656565656564646362605d555a5754524c4745413a363129241d150d070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27313a434b555d656c737c838c92979fa2a9adb2b8bbb7b0aba7a09d959089817a716c605c554c443a32291f160c00000000000000000000000000000000000000000000000000000714212e3a4754616d7a8794a0adb5a99c8f8276695c4f4336291c1003000000000000000000000000000000000000000000020e1a26313c454d53555858585858585a5d58585858585650483f33291f1925303a444c5254585858585a5d5858585858585853514b43392f24180d010000000000000000000000050e161e272e343d41495053575e616468666d6e6f6f706f6f6e686a6764605d55544e46423b3327221b140b020000000000000000000000000000000000000000000000000000000000000c18232e39424b5153585858585858585858585858575550483e31271d1207000000000000000000000000000000000000000a16222d38434d555b5d5d5d5d5d5d5d5d5c585858585858585858585858585858585858585858585858585858585858585855534d453b31261a0e020005111d29343f485056585858585858585b5c585858585858585757565554514c4d4b4746413a3935302a251f18120b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c18242f39434b555d676d777f8790959ea1a9adb3b9bbb9b0aaa69f9c95908a837d756e68625a514b433a322920170d0400000000000000000000000000000000000000000000000000000714212e3a4754616d7a8794a0adb5a99c8f8276695c4f4336291c1003000000000000000000000000000000000000000000000915202a333c4247484b4b4b4b4b4b4d514c4b4b4b4b49453f362d2117131e29323a4146474b4b4b4b4d514c4b4b4b4b4b4b4745403931281d120700000000000000000000000000040c151d23282f383f44464d525458545c60616263636362615e565a5754514b47433c3631292117110a020000000000000000000000000000000000000000000000000000000000000007121d2730394045464b4b4b4b4b4b4b4b4b4b4b4b4a49443e362c1f150b010000000000000000000000000000000000000005111c27313b434a4e5051515151515151504b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4846423b332a1f14090000010c18222d363f454a4b4b4b4b4b4b4b4f504b4b4b4b4b4b4b4b4a4a48474541403e3a3936302c29241e1a140c070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e2935404b555d676d79818c9299a0a7adb3babab5afaca69e9c94908a837d76706b615e5650454039302920170e050000000000000000000000000000000000000000000000000000000714212e3a4754616d7a8794a0adb5a99c8f8276695c4f4336291c100300000000000000000000000000000000000000000000030e18212a31373a3b3f3f3f3f3f3f40443f3f3f3f3e3d39342d241b0f0c1720293036393a3f3f3f3f40443f3f3f3f3f3f3f3a39352f281f160c010000000000000000000000000000030b12181d262d33373b4246484b4a505355555656565554524d4d4a4745413a37322a261f170f06000000000000000000000000000000000000000000000000000000000000000000000b151e272e34383a3f3f3f3f3f3f3f3f3f3f3f3f3d3c39332c241a0d030000000000000000000000000000000000000000000a151f2831383e424344444444444444433f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3b3a36312a21180e0300000006111b242d343a3d3e3f3f3f3f3f3f42433f3f3f3f3f3f3e3e3d3d3c3a39352f312e2d2a25201d19130e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26303845515d676d79838e939fa3abb1b9bab4aeaba39f9b948f89837d77706b636059524c443e342e271e170e05000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a8794a0adb5a99c8f8276695c4f4336291c10030000000000000000000000000000000000000000000000060f1820262b2e2f32323232323234373232323232302d29221b1209050e171e252a2d2e323232323437323232323232322d2c29241d160d040000000000000000000000000000000000070b141b22272b30363a3b3e3f44464849494a4948474641413d3a39352f2b27201a140d060000000000000000000000000000000000000000000000000000000000000000000000030c151d23282c2d32323232323232323232323231302d28221a120800000000000000000000000000000000000000000000030d161f272d323637373737373737373632323232323232323232323232323232323232323232323232323232323232322e2d2a261f180f06000000000009121b22292e31323232323232323536323232323232323131302f2d2c29242421201d1913110d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e38424f59606d79828f959ea5afb5bdb4aeaaa39f99928e88827c76706b636159544f46413b3228231d150c0500000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a8794a0adb5a99c8f8276695c4f4336291c1003000000000000000000000000000000000000000000000000060e151a1e2122252525252525272a252525252524211d1711090000050c13191d202125252525272a2525252525252520201d18120c0400000000000000000000000000000000000000020a11171b1f252a2d2e2e34383a3b3c3c3d3c3c3b393630312d2c29241d1b150e090300000000000000000000000000000000000000000000000000000000000000000000000000030b12181c1f202525252525252525252525252423201c171008000000000000000000000000000000000000000000000000040d151c2226292a2a2a2a2a2a2a2a29252525252525252525252525252525252525252525252525252525252525252522211e1a140e06000000000000000911181d2124252525252525252829252525252525252424232221201d19181413110d08040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54616b74818e949fa7afbbb8b0aba39f98928e87817c756f6b636159554f48443d3630292018120b030000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a8794a0adb5a99c8f8276695c4f4336291c10030000000000000000000000000000000000000000000000000003090e1214151818181818181a1e19181818181715110c060000000002080d111314181818181a1e191818181818181413100d070100000000000000000000000000000000000000000000060b0f141a1e202123282b2d2e2f3030302f2e2d2a252421201d18130f0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000070c101313181818181818181818181818171614100b050000000000000000000000000000000000000000000000000000030a11161a1c1d1e1e1e1e1e1e1e1d18181818181818181818181818181818181818181818181818181818181818181514120e0903000000000000000000060c111517181818181818181c1d18181818181818181717151413110d080707050100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505c66707d8a939da6b0b9b6aea69f99928d86817b756f6a636059554f48443e38332a251e170e0700000000000000000000000000000000000000000000000000000001060606060714212e3a4754616d7a8794a0adb5a99c8f8276695c4f4336291c1006060606060000000000000000000000000000000000000000000000020608080c0c0c0c0c0c0d110c0c0c0c0b0b09050100000000000000010507070c0c0c0c0d110c0c0c0c0c0c0c07060401000000000000000000000000000000000000000000000000000003090e121415171c1f2022222323232221201e19171413110d07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070c0c0c0c0c0c0c0c0c0c0c0c0a0a0804000000000000000000000000000000000000000000000000000000000000050a0e101011111111111111100c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c080705020000000000000000000000000105090b0b0c0c0c0c0c0c0f100c0c0c0c0c0c0b0b0a0a090706040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7884919ea5afb8b6aea49d949086807b746e69625f58544f48443e38332c272119140d0500000000000000000000000000000000000000000000000003080b0d0e131313131314212e3a4754616d7a8794a0adb5a99c8f8276695c4f4336291c1313131313130b0a0805000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507060b1012131516161716151414110e080706040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935404b5564717e8a96a1acb7b9aea49c928d827b746e68615f57534e48443d38332c28211c160d0802000000000000000000000000000000000000000000000001080e14171a1b1f1f1f1f1f1f212e3a4754616d7a8794a0adb5a99c8f8276695c4f4336291f1f1f1f1f1f1f171714110c050000000000000000000002070a0c0d131313131313131212100c080200000000000000000000000105070713131313131313131313130909070300000000000000000000000000000000000000000000000000000000000000000000000000000000000306070809090a09090807050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d677683909ca8b2bcb1a79c928d80786e69615e56534d47433c38322c28211c17100b0e070604000000000000000000000000000000000000000000020b131a1f2426272c2c2c2c2c2c2c2e3a4754616d7a8794a0adb5a99c8f8276695c4f43362c2c2c2c2c2c2c2c2423211d1710080000000000000000070d1316191a202020202020201f1e1c18130d06000000000000000002080d11131420202020202020202020201615130f0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a86929facb9b8ab9f958d80736d665f57524d46423b37322c27211c16101214151b1413100c07010000000000000000000000000000000000010b141d242b30333439393939393939393a4754616d7a8794a0adb5a99c8f8276695c4f4339393939393939393931302d28221a12080000000000010a12191e2325262d2d2d2d2d2d2d2c2b28241f181007000000000000050c13191d20212c2d2d2d2d2d2d2d2d2d2d23221f1b160f0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8999a3afbbb4aa9d9083786c605c544d46413b36312b26201b1610141a1e212228201f1d18120b030000000000000000000000000000000008131d262f363c3f414646464646464646464754616d7a8794a0adb5a99c8f8276695c4f464646464646464646463e3d39332c241a1005000000000a131c242a2f32333939393939393939383530292219100600000000050e161e252a2d2e3939393939393939393939302f2c2721191007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99abb5baaea3988a7d70665b504a423c36302a261f1b150f0f181f262a2d2e342d2c29241d150d030000000000000000000000000000030e1a242f3841474c4e5252525252525252525254616d7a8794a0adb5a99c8f8276695c52525252525252525252524a49453e362c22170c00000007121c252e353b3f40464646464646464544413b342b22180d020000020c1620283036393a46464646464646464646463c3b38322b23190f040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3b9ac9f9286796d60544a3f38302a251f1a140f0b1319212a31363a3b413a39352f271f150d030000000000000000000000000008141f2b36414a52585a5f5f5f5f5f5f5f5f5f5f5f616d7a8794a0adb5a99c8f8276695f5f5f5f5f5f5f5f5f5f5f5f575550483e33281d110500020d19242e3740474b4d5353535353535352514c463d34291f1308000008131e28323a41464753535353535353535353534948433d352b21160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2834414e5b6774818e9aa7b4b7aa9d908477675c5142382e261e19140e0c11171e2429333b4246484e4745403931271f150d030000000000000000000000000b1724303c47525c64676c6c6c6c6c6c6c6c6c6c6c6c6d7a8794a0adb5a99c8f82766c6c6c6c6c6c6c6c6c6c6c6c6c64615a5045392d2114080007131e2a354049525759606060606060605f5d574f463b3024180c00010d1925303a444c52545f6060606060606060606056544f473d32271b0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1b2835424e5b6875818e9ba8b4b6a99c90837669554b402f261c140c1214181b22272f353e454d53555b53514b433931271f150c0300000000000000000000000d1a26333f4c58646e74797979797979797979797979797a8794a0adb5a99c8f827979797979797979797979797979716c6155493d3023170a000a16232f3b47525b63666c6c6c6c6c6c6c6c6961574c4135281c100305111d2a36414c565e616c6c6c6c6c6c6c6c6c6c6c6360594f43382c1f130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2834414e5b6774818e9aa7b4b7aa9d9084776a574d42372b201d1a1e2023282d333a414550575f6167605d554b433931271e150c03000000000000000000000e1b2734414e5a67748085858585858585858585858585878c97a3afb7aa9f948f85858585858585858585858585867e7164574a3e3124170b000c1925323f4b57636d73797979797979797873695d5144382b1e12050713202d3946525e686d79797979797979797979796f6b6054483b2f22150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3b8ab9e928578695f53473a302c29252a2d2e34383f444c515a61696e746d675d554b433930271e150c030000000000000000000e1b2834414e5b6774818e92929292929292929292929298979ea8b3bbb0a69f98929292929292929292929292928a7e7164574b3e3124180b000d1a2633404d596673808686868686868685786c5f5245392c1f12030f1b27333f4953616d7a86868686868686868686867d6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98abb5b9ada197887b6e61564c423b393530363a3b40454950555d606c707b81796d675d554b433930271e150b0000000000000000000e1b2834414e5b6774818e9a9f9f9f9f9f9f9f9f9f9f9fa2aaa8b0bac2b8b0aaa29f9f9f9f9f9f9f9f9f9f9f9f978a7e7164574b3e3124180b000d1a2633404d596673808c93939393939285786c5f5245392c1f1205121f2b3744505b65727f8c989393939393939393897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c8999a3aebbb3a9998c7f72685d544d474541444246484b51535b60676d747d858e82796d675c554b423930271c120700000000000000000e1b2834414e5b6774818e9aa7acacacacacacacacacacaeb4bcbac3c3c2bcb4aeacacacacacacacacacacaca4978a7e7164574b3e3124180b000d1a2633404d596673808c999f9f9f9f9285786c5f5245392c1f120613202d394653606c7884919e9f9f9f9f9f9f9f96897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a86929facb9b8ab9e92857a6d665f5754524c514d5254555c60656c717a818a92948f82796d675c544b42392e23180c00000000000000000e1b2834414e5b6774818e9aa7b1b1b1b1b1b1b1b1b1b1b2b7b7b7b7b7b7b7b7b5b1b1b1b1b1b1b1b1b1b1b1a4978a7e7164574b3e3124180b000d1a2633404d596673808c99a6acab9f9285786c5f5245392c1f12111e2a36424d5663707d8996a0acacacacacaca296897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3945515d6776828f9ca9b2b9ada1978f82786e6963605d565d575e6164676d71787e858e939f9f948f82796d665c544a4034281c1004000000000000000e1b2834414e5b6774818e9aa5a5a5a5a5a5a5a5a5a5a5a5aaaaaaaaaaaaaaaaa8a5a5a5a5a5a5a5a5a5a5a5a4978a7e7164574b3e3124180b000d1a2633404d596673808c99a6b3ab9f9285786c5f5245392c1f1214202d3a46525e6975828f9ba8b2bdb9b9b9afa296897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2935404b5564717e8b97a1adb9b3a99f948f837b75706d686a6a6b696e7174797e838b91979da5a69f948f82786d665c5144382c1f1206000000000000000e1b2834414e5b6774818e989898989898989898989898989d9d9d9d9d9d9d9d9c989898989898989898989898978a7e7164574b3e3124180b000d1a2633404d596673808c99a6b3ab9f9285786c5f5245392c1f101c28343f4a54616e7b86929facb9c3cec6bcafa296897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18242f3a4653606d7984919ea6b0bab0a69f959086817d7a78777777797b7d81858a90959ea1a9afb0a69e948f82786d6053463a2d201307000000000000000e1b2834414e5b6774818b8b8b8b8b8b8b8b8b8b8b8b8b8b90909090909090908f8b8b8b8b8b8b8b8b8b8b8b8b8b8a7e7164574b3e3124180b000d1a2633404d596673808c99a6b3ab9f9285786c5f5245392c1f121f2b3844505c66737f8c99a3afbbc7d5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2c3845515c66717e8b949fa8b2b8b0a79f99928e8a868584848485878a8e92979da0a7adb3b9afa9a199928a7d7164574a3e3124170b000000000000000a1623303d495663707d7e7e7e7e7e7e7e7e7e7e7e7e7e7f8384848484848484827e7e7e7e7e7e7e7e7e7e7e7e7e7e7b6e6155483b2e221508000d1a2633404d596673808c99a6b3ab9f9285786c5f5245392c1f13202d3a4653606d7884919eabb5c0cbd7c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b54606c77828f96a1a8b0bab1aba39f9b9a93919190919298979a9fa2a9acb1b9b2aca59e9691877e716c6155493d3023170a000000000000000916222f3b4854606b70727272727272727272727272727277777777777777777572727272727272727272727272726e695f53473a2d211408000d1a2633404d596673808c99a6b3ab9f9285786c5f5245392c1f1e2a36424d5764707d8a96a1adbdc7d1dcc9bcafa296897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3944505b656d7a8491969fa6aeb4b4aeacaca49f9e9d9d9e9fa2aaa7abadb3b8b2aca8a09e938f847d716c625a5045392d211408000000000000000713202c38444f59606365656565656565656565656565656a6a6a6a6a6a6a6a696565656565656565656565656565615f574d42372b1e1206000d1a2633404d596673808c99a6b3ab9f9285786c5f5245392c1f212d3a46535e6976828f9ca8b2bdc8ccd2c9bcafa296897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27333f49535e686e7b8490949fa2aaadb2b6b6afacabaaaaaaacaeb4b4b5b4aeaca8a19e96918a827a706b625a50483e33281d11050000000000000003101b27323d474f545658585858585858585858585858585d5d5d5d5d5d5d5d5c585858585858585858585858585855534d453c31261a0e02000d1a2633404d596673808c99a6b3ab9f9285786c5f5245392c1c2834404b54616e7b87939facb9b9bbc0c7d0bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d38414c565f696e7a828c92989ea1a8a9abadb3afafb0afb5afacaba9aaa39f9b96918c847e756d68605950483f362c22170c0000000000000000000b16212b353d4448494b4b4b4b4b4b4b4b4b4b4b4b4b4c51515151515151514f4b4b4b4b4b4b4b4b4b4b4b4b4b4b4847423c332a1f150900000d1a2633404d596673808c99a6b3ab9f9285786c5f5245392c1f2c3845515c6673808d99a4afafacafb6bebcbcafa296897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b262f3a444d575f686e787f858c9196999c9ea1a9a2a3a3a2aba49f9e9c9998928f8a847f79716c615e564f473f362d241a1005000000000000000000040f19232b32383b3d3f3f3f3f3f3f3f3f3f3f3f3f3f3f4444444444444444423f3f3f3f3f3f3f3f3f3f3f3f3f3f3b3a37312a21180e0300000d1a2633404d596673808c99a6b3ab9f9285786c5f5245392c202d3a4653606d7985929eabaca49fa4acaab2bcafa296897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d29323b454d565e666d727a7f84898c8f92979596969696959993918f8c8a86827e79726d67615a524c443d352d241b1208000000000000000000000007111921272c2f30323232323232323232323232323237373737373737373632323232323232323232323232322e2d2b261f180f060000000d1a2633404d596673808c99a6b3ab9f9285786c5f5245392c2b37424e5764717e8a97a1ada49a939a99a0aab5afa296897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b172029333b444c545c60686d73787c8082858788898989898888868482807d7a75716d66605c555046413a322b231b120900000000000000000000000000070f161b20222325252525252525252525252525252a2a2a2a2a2a2a2a29252525252525252525252525252522211e1a150e06000000000d1a2633404d596673808c99a6b3ab9f9285786c5f5245392c2e3a47535f6a76838f9ca9ac9f9388888e99a4b0afa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e182129323b424a50565d60666c6f7376787a7b7c7c7d7c7c7b79787673706d6764605c54514b433e35302820191109000000000000000000000000000000040b1013161618181818181818181818181818191e1e1e1e1e1e1e1e1c18181818181818181818181818181514120e090300000000000d1a2633404d596673808c99a6b3ab9f9285786c5f5245392935404b55626e7b88949faba89b8f817c8895a2afafa296897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18202930383f444c52545b60636669676d6e6f70706f6f6e6d66696663605d5553504a4540393129251e160e070000000000000000000000000000000000000307090a0c0c0c0c0c0c0c0c0c0c0c0c0c0c11111111111111110f0c0c0c0c0c0c0c0c0c0c0c0c0c0c08080602000000000000000d1a2633404d596673808c99a6b3ab9f9285786c5f5245392c3845515d6774808d9aa6aca096897d7c8895a2afafa296897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e171e262e343a41454a50535659555d6062636363636261605c54595753514b46443f38342f271f19130c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3ab9f9285786c5f5245392d3a4753606d7985929fabab9e9184787c8895a2afafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c141c23283035383f4446494d4c51545556565656555553514a4d4a4745403a38342e29231d150d080200000000000000000000000003090d1012131313131313131311100e0b060000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3ab9f9285786c5f52453937434e5864717e8b97a2ada3998c7f727c8895a2afafa296897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171e24292d3338393c404145474849494a494948464440403d3a39352f2c28231c18120b0300000000000000000000000000070e14191d1f20202020202020201e1d1a17110b04000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3ab9f9285786c5f5245393b47535f6a7683909da9ac9f92867a6f7c8895a2afafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b13191c22282b2d302f35393a3b3c3d3d3c3c3b3a38342e302d2c29241f1c17110c0701000000000000000000000000000811191f25292b2c2d2d2d2d2d2d2d2a2a27221d160e050000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3ab9f9285786c5f524535414b55626f7c88959faba79b8e81756f7c8895a2afafa296897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d11171c1f202324292c2d2f303030302f2e2d2c28232420201d1812100c0600000000000000000000000000000007111a232a31353839393939393939393736332e2720170e0400000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3ab9f9285786c5f52453945515d6774818e9aa7aca095897c706f7c8895a2afafa296897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f121316191d202122232323232222201f1c18171413100d070300000000000000000000000000000000030e19232c353c4145464646464646464644433f39322920160b00000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3ab9f9285786c5f52453a4754606d7a85929facaa9d9184776b6f7c8895a2afafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030606080d111314151616171616151312100c070706040100000000000000000000000000000000000009141f2a353e474d515353535353535353514f4a443b32271d1106000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3ab9f9285786c5f5245434f5965727e8b98a2aea2988b7f72656f7c8895a2afafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104060708090a0a0909080706040000000000000000000000000000000000000000000000000d1925313c4750585e5f606060606060605d5b554d44392e22170b000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3ab9f9285786c5f52454854606b7783909daaac9f92867a6d626f7c8895a2afafa296897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c12171b1e1f1f1f1f1f1f1f1f1f171714110c050000000000101d2935414d58626a6c6c6c6c6c6c6c6c6a675f554a3f33271a0e020000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3ab9f9285786c5f52414c56636f7c8995a0aca79a8e817468626f7c8895a2afafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0f121313131313131313131313131313131313131313131313131313131313131313131313131313131313130b0a080500000000000000121f2b3845515e6a7479797979797979797771675b4f43362a1d10040000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3ab9f9285786c5f5246525d6875818e9ba7aba095897c6f62626f7c8895a2afafa296897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010910161b1e202020202020202020202020202020202020202020202020202020202020202020202020202020202020181714110c06000000000013202c3946535f6c79868686868686868683776a5d5144372a1e11040000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3ab9f9285786c5f524953616d7a86929facaa9d9083776a60626f7c8895a2afafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131b21272b2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2423211d1710080000000013202c3946535f6c79869293939393939084776a5d5144372a1e11040000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3ab9f9285786c5f52505b65727f8c98a3aea2988b7e716558626f7c8895a2afafa296897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131c252c333739393939393939393939393939393939393939393939393939393939393939393939393939393939393931302d28221a120800000013202c3946535f6c7986929f9f9f9f9d9084776a5d5144372a1e11040000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3ab9f9285786c5f5253606c7884919eaaab9f9285796d6055626f7c8895a2afafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b252e373e434646464646464646464646464646464646464646464646464646464646464646464646464646464646463e3d39332c241a1006000013202c3946535f6c7986929facacaa9d9084776a5d5144372a1e11040000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3ab9f9285786c5f4c5663707d8996a0aca69a8d8074675d55626f7c8895a2afafa296897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212c3740494f5353535353535353535353535353535353535353535353535353535353535353535353535353535353534b49453e362c22170c000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e11040000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3ab9f9285786c5f525e6875828e9ba8ab9f94887c6f625555626f7c8895a2afafa296897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b27333e49525a5f6060606060606060606060606060606060606060606060606060606060606060606060606060606060575550483e33281d11050013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e11040000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3ab9f9285786c5f54616e7a86929faca99c9083766a5f5355626f7c8895a2afafa296897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b37434f5a646c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c64615a5045392d2114080013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e11040000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3ab9f9285786c5f5b66737f8c99a3ada1978a7e7164584e55626f7c8895a2afafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202d3946535f6c767979797979797979797979797979797979797979797979797979797979797979797979797979797979716c6155493d3023170a0013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e11040000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3ab9f9285786c5f606c7884919eabac9e9285796d60534955626f7c8895a2afafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202d394653606c7986868686868686868686868686868686868686868686868686868686868686868686868686868686867e7164574b3e3124180b0013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e11040000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3ab9f9285786c5763707d8a96a1aca49a8d8073675c514955626f7c8895a2afafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202d394653606c79869393939393939393939393939393939393939393939393939393939393939393939393939393938a7e7164574b3e3124180b0013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e11040000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3ab9f9285786c5e6975828f9ca8ac9f93877b6e61554b4955626f7c8895a2afafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202d394653606c7986939f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f978a7e7164574b3e3124180b0013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e11040000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3ab9f9285786c616e7b87939faca99c8f8276695f53434955626f7c8895a2afafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202d394653606c7986939facacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaca4978a7e7164574b3e3124180b0013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e11040000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3ab9f9285786c6673808d99a4ada1968a7d7064574d424955626f7c8895a2afafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202d394653606c7986939facb9b9b9b7b2b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1a4978a7e7164574b3e3124180b0013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e11040000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3ab9f9285786c6d7985919eabab9e9184796d6053463c4955626f7c8895a2afafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202d394653606c7986939facb9beb4aca6a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4978a7e7164574b3e3124180b0013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e11040000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3ab9f9285786c717e8a97a1ada3998c8073665c50443c4955626f7c8895a2afafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202d394653606c7986939facb9b9aca29a979797979797979797979797979797979797979797979797979797979797978a7e7164574b3e3124180b0013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e11040101010101010101010101010101000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3ab9f9285786976828f9ca9ac9f92877b6e61544a3f3c4955626f7c8895a2afafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202d394653606c7986939fb4bcb1a79a908a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a7e7164574b3e3124180b0013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0a0907030000000000000000000000000000000000000d1a2633404d596673808c99a6b3ab9f9285786e7b88949faba89b8f8275695e5242383c4955626f7c8895a2afafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202d394653606c798698a3aeb8aca0958a7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7b6e6154483b2e2115080013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a161613100b04000000000000000000000000000000000d1a2633404d596673808c99a6b3ab9f92857874808d9aa6aca096897d7063574d42303c4955626f7c8895a2afafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d908477717171717171717171717171717171717171717171717171717171717171716e695e53463a2d2114070013202c3946535f6c7986929facb7aa9d9084776a5d5144372a27272727272727272727272727272727272322201b160f070000000000000000000000000000000d1a2633404d596673808c99a6b3ab9f9285787985929fabab9e9184786c6053463b303c4955626f7c8895a2afafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a646464646464646464646464646464646464646464646464646464646464615e574d42362a1e12050013202c3946535f6c7986929facb7aa9d9084776a5d514437343434343434343434343434343434343434302f2c272119110700000000000000000000000000000d1a2633404d596673808c99a6b3ab9f9285787e8b97a2ada3998c7f72655b5044372f3c4955626f7c8895a2afafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d575757575757575757575757575757575757575757575757575757575754534d453b31251a0e020013202c3946535f6c7986929facb7aa9d9084776a5d5144414141414141414141414141414141414141413d3b38322b23190f04000000000000000000000000000d1a2633404d596673808c99a6b3ab9f92857883909da9ac9f92867a6d6153493f332f3c4955626f7c8895a2afafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d514b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4846423b33291f1409000013202c3946535f6c7986929facb7aa9d9084776a5d514d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4948443d352b21160b000000000000000000000000000d1a2633404d596673808c99a6b3ada2978d808d959faba79b8e8175685e5241382d2f3c4955626f7c8895a2afafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d51443e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3b3a36312921170d03000013202c3946535f6c7986929facb7aa9d9084776a5d5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a56544f473d32271b10030000000000000000000000000d1a2633404d596673808c99a6b3b3a99d928d929da7aca095897c6f63564c412f262f3c4955626f7c8895a2afafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d51443731313131313131313131313131313131313131313131313131312e2d2a251f170f0500000013202c3946535f6c7986929facb7aa9d9084776a676767676767676767676767676767676767676767676360594f44382c2013070000000000000000000000000d1a2633404d596673808c99a6b3bcaea49d9a9da4aeaa9d9184776b6054443a30222f3c4955626f7c8895a2afafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a2424242424242424242424242424242424242424242424242421211e1a140d050000000013202c3946535f6c7986929facb7aa9d9084777474747474747474747474747474747474747474747474706b6054483b2f2216090000000000000000000000000d1a2633404d596673808c99a6b3bfb6aea9a7a9aeaea2988b7f7265594f443229222f3c4955626f7c8895a2afafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e1818181818181818181818181818181818181818181818181514120e0903000000000013202d394653606c798698a3aeb8aca0958d8080808080808080808080808080808080808080808080807d706356493d3023160a0000000000000000000000000d1a2633404d596673808c99a6b3bfc0b9b5b3b5b8ac9f92867a6d6054473d3221222f3c4955626f7c8895a2afafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b080705020000000000000013202d394653606c7986939fb4bcb1a79d928d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8b7f7265584c3f3225190c0000000000000000000000000d1a2633404d596673808c99a6b3bfcbc5c1c0bcb1a79a8e8174685d5245392c20222f3c4955626f7c8895a2afafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000013202d394653606c7986939facb9b9aea49d9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a988b7f7265584c3f3225190c0000000000000000000000000d1a2633404d596673808c99a6b3bfccd1cec4b8ab9f95887c6f62564c4135291d222f3c4955626f7c8895a2afafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000013202d394653606c7986939facb9c0b6aea9a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a5988b7f7265584c3f3225190c0000000000000000000000000d1a2633404d596673808c99a6b3bfccd6cabeb3a99d9083776a6054433a2f2419222f3c4955626f7c8895a2afafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000013202d394653606c7986939facb9c8c0b9b5b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b2a5988b7f7265584c3f3225190c0000000000000000000000000d1a2633404d596673808c99a6b3bfccd3c6baada2978b7e7165584e4331281e16222f3c4955626f7c8895a2afafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000013202d394653606c7986939facb9c2b9b1aba9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a5988b7f7265584c3f3225190c0000000000000000000000000d1a2633404d596673808c99a6b3bfccd0c5b8ab9f9285796d6053473c32201616222f3c4955626f7c8895a2afafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000013202d394653606c7986939facb9b9b1a79f9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d988b7f7265584c3f3225190c0000000000000000000000000d1a2633404d596673808c99a6b3bfc3c3bbb0a69a8d8074675d5145392c201316222f3c4955626f7c8895a2afafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000013202d394653606c7986939fb4bcb1a79f9590909090909090909090909090909090909090909090908b7f7265584c3f3225190c0000000000000000000000000d1a2633404d596673808c99a6b1b2b7b7b6ab9f94887b6f62554b4035291d1016222f3c4955626f7c8895a2afafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000013202d394653606c798698a3aeb8aca095908383838383838383838383838383838383838383838383837e7164574a3e3124170b0000000000000000000000000d1a2633404d596673808c99a5a5a6aaaaa9a99c9083766a5f5343392f24180d16222f3c4955626f7c8895a2a5a5a296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9083777676767676767676767676767676767676767676767676716c6155493d3023170a0000000000000000000000000d1a2633404d596673808c989898999d9d9d98978a7e7164584e4331281d120716222f3c4955626f7c88959898989896897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a64615a5045392d2114080000000000000000000000000d1a2633404d596673808b8b8b8b8c9090908b8b85796d6053463c3120160c0916222f3c4955626f7c888b8b8b8b8b8b897d6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d575550483e33281d11050000000000000000000000000916222f3c4955626f7c7e7e7e7e7f8384837e7e7d70665c5145382c1f13040714212e3a4754616d7a7e7e7e7e7e7e7e7e7a6e6154473b2e21140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5150505050505050505050505050505050505050504a49453e362c22170c000000000000000000000000000815222e3b4754606a6f72727272737777767272706b60544b4034281c10040713202d3946525e686d72727272727272726e685e5246392d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144434343434343434343434343434343434343433e3d39332c241a10050000000000000000000000000006131f2b37434e58606265656565666a6a6a65656360594f42392e23180c0005111d2a36414c565e616565656565656565615e564c41362a1e110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d51443737373737373737373737373737373737373731302d28221a12080000000000000000000000000000030f1b27323c464e545558585858595d5d5d585856544f473d30271d120700010d1925303a444c5254585858585858585854524c443b3025190e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2423211d171008000000000000000000000000000000000a15202b343c4347494b4b4b4b4c5151504b4b4a48443d352b1e150b00000008131e29323a4146474b4b4b4b4b4b4b4b4746413b32291e14080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d171714110c050000000000000000000000000000000000040f19222b32373b3c3f3f3f3f404444433f3f3d3c38332b23190c03000000020c1720293036393a3f3f3f3f3f3f3f3f3b3936302920170d020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e111010101010101010101010101010100b0a0805000000000000000000000000000000000000000007101920272b2e2f32323232333737373232302f2c27211911080000000000050e171e252a2d2e32323232323232322e2d2a251e170e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e1104040404040404040404040404040400000000000000000000000000000000000000000000000000070f151b1f222225252525262a2a2a25252322201c160f0800000000000000050c13191d2021252525252525252521201e19140d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f13151618181818191e1e1d1818171613100b0500000000000000000002080d11131418181818181818181414110e08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e1106060606060606060606060606060606060606060606060000000000000000000000000000000000000000030608090c0c0c0c0d1111100c0c0a09070400000000000000000000000000010507070c0c0c0c0c0c0c0c0807050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e1313131313131313131313131313131313131313131313130b0a080400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f171614100b050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2423211c17100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d514439393939393939393939393939393939393939393939393939393931302d28221a1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d51464646464646464646464646464646464646464646464646464646463e3c39332c241a10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d52525252525252525252525252525252525252525252525252525252524a49443e362c22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f575550483e33281c100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c64615a5044392d21140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d90837979797979797979797979797979797979797979797979797979797979797979716c6155493c3023160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000013202d394653606c798698a3aeb8aca0958986858585858585858585858585858585858585858585858585858585858585867e7164574a3e3124170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000013202d394653606c7986939fb4bcb1a7a098929292929292929292929292929292929292929292929292929292929292928a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000013202d394653606c7986939facb9b9b1aaa29f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000013202d394653606c7986939facb9c3bcb4aeacacacacacacacacacacacacacacacacacacacacacacacacacacacacaca4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000013202d394653606c7986939facb7b7b7b7b6b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000013202d394653606c7986939faaaaaaaaaaa9a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000013202d394653606c7986939d9d9d9d9d9d9c989898989898989898989898989898989898989898989898989898989898978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000013202d394653606c7986909090909090908f8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e1104000000000000000000000000000000000000000000000000000000000000000000101d2a3743505d6a768384848484848484837e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7b6e6155483b2e22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e1104000000000000000000000000000000000000000000000000000000000000000000101c2936424e5b667176777777777777777672727272727272727272727272727272727272727272727272727272727272726e695f53463a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e11040000000000000000000000000000000000000000000000000000000000000000000e1a26323e4a555f666a6a6a6a6a6a6a6a696565656565656565656565656565656565656565656565656565656565656565615f574d42362a1e120500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb7aa9d9084776a5d5144372a1e11040000000000000000000000000000000000000000000000000000000000000000000a16222d38434d555b5d5d5d5d5d5d5d5d5c585858585858585858585858585858585858585858585858585858585858585855534d453b31261a0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb1aa9d9084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000005111c27313b434a4e5051515151515151504b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4846423b332a1f14090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929fa5a5a59d9084776a5d5144372a1e1104000000000000000000000000000000000000000000000000000000000000000000000a151f2831383e424344444444444444433f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3b3a36312a21180e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c79869298989898989084776a5d5144372a1e110400000000000000000000000000000000000000000000000000000000000000000000030d161f272d323637373737373737373632323232323232323232323232323232323232323232323232323232323232322e2d2a261f180f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c79868b8b8b8b8b8b8b83776a5d5144372a1e11040000000000000000000000000000000000000000000000000000000000000000000000040d151c2226292a2a2a2a2a2a2a2a29252525252525252525252525252525252525252525252525252525252525252522211e1a140e060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e7e7e7e7e7e7e7e7e7164574a3e3124170b00000000000000000000000000000000000000000000000000000000000000000000000000030a11161a1c1d1e1e1e1e1e1e1e1d18181818181818181818181818181818181818181818181818181818181818181514120e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313d4a56626c7172727272727272716c6155493c3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e101011111111111111100c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212e3a45505a62656565656565656564615a5045392d2114080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d29343f4850565858585858585858575550483e33281c110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18222d363f454a4b4b4b4b4b4b4b4b4a49453e362c22170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b242d343a3d3e3f3f3f3f3f3f3f3e3c39332c241a10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b22292e31323232323232323231302d28221a12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000911181d212425252525252525252423211c1710080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c1115171818181818181818171714110c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105090b0b0c0c0c0c0c0c0c0b0a0805000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 m_StreamData: serializedVersion: 2 offset: 0 diff --git a/Assets/Project/Graphics/UI/Icons/Cursor/cursor-info-vertical.ai b/Assets/Project/Graphics/UI/Icons/Cursor/cursor-info-vertical.ai new file mode 100644 index 00000000..96c91ab6 --- /dev/null +++ b/Assets/Project/Graphics/UI/Icons/Cursor/cursor-info-vertical.ai @@ -0,0 +1,396 @@ +%PDF-1.5 % +1 0 obj <>/OCGs[5 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream + + + + + application/pdf + + + cursor-info-vertical + + + Adobe Illustrator CC 2015 (Windows) + 2021-09-05T10:40:34+02:00 + 2021-09-05T10:40:34+02:00 + 2021-09-05T10:40:34+02:00 + + + + 212 + 256 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAADUAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYql9reV1a8tGPThJH8uChhiqYYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FXYq7FXYq7FXYq7FWKajdNa+Y3nHRCnIeKlFB/DFWVKysoZTVSKg+xxVvFXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWGeYf+Oxcf7D/AIguKp95cvPX sBGxq8B4H/V/Z/piqa4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7 FXYqwzzD/wAdi4/2H/EFxVd5fvPq+oIrGkc37tvmfsn78VZjirsVdirsVdirsVdirsVdirsVdirs VdirsVdirsVdirsVdirsVdirsVdirsVdirDPMP8Ax2Lj/Yf8QXFUvBINRsR0OKs50y7F3YxTftEU f/WGxxVFYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWGeYf+Oxc f7D/AIguKpdiqf8AlW84zSWjHaQc4/8AWHX8P1YqyXFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq 7FXYq7FXYq7FXYq7FXYq7FXYqwzzD/x2Lj/Yf8QXFUuxVVtp3t7iOdPtRsGHvTtirPYpUliSVDVH AZT7HfFV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KsM8w/8AHYuP 9h/xBcVS7FXYqyryveeraNbsfjhPw/6rb/rxVOsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd irsVdirsVdirsVdirsVYZ5h/47Fx/sP+ILiqXYq7FUdo159U1CNyaRt8En+q39DvirNsVdirsVdi rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVYZ5h/wCOxcf7D/iC4ql2KuxV2Ks2 0W8+tafG5NZE+CT5r/UYqjsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdi rDPMP/HYuP8AYf8AEFxVLsVdirsVTryxeeleNbsfgnG3+su4/DFWVYq7FXYq7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWGeYf+Oxcf7D/AIguKpdirsVdiq+KR4pFkQ0dCGU+43xV nlrcJcW8c6fZkUNTw8R9GKquKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ks M8w/8di4/wBh/wAQXFUuxV2KuxV2Ksl8q3nKKS0Y7p8cfyPX8cVT/FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FWGeYf+Oxcf7D/iC4ql2KuxV2KuxVFabdm0vYp/2VNH/1TscV Z0CCARuD0OKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KsM8w/8AHYuP9h/x BcVS7FXYq7FXYq7FWY+Xrz6xp6qxrJD8DfIfZ/DFUzxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2K uxV2KuxV2KuxV2KsM8w/8di4/wBh/wAQXFUuxV2KuxV2KuxVNfLl59X1ARsf3c44H/W/Z/pirL8V dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirDPMP/HYuP9h/xBcVS7FXYq7FXYq7 FW1JUhgaEbg++Ks70+7F3ZxTjqw+IeDDY/jiqIxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2 KuxV2KuxVhnmH/jsXH+w/wCILiqXYq7FXYq7FXYq7FWQ+VbyjyWjHZv3kfzGzDFWR4q7FXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqwzzD/wAdi4/2H/EFxVLsVdirsVdirsVdiqtZ3LW1 1HOvWNgaeI7j6RirPY3WRFdDVXAZT4g7jFW8VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirs VdirDPMP/HYuP9h/xBcVS7FXYq7FXYq7FXYq7FWWeWbz1rIwMfjgNB/qncYqnGKuxV2KuxV2KuxV 2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVhnmH/jsXH+w/4guKpdirsVdirsVdirsVdiqYaHefVdQjJN I5P3b/I9D9BxVmmKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVhnmH/AI7Fx/sP+ILi qXYq7FXYq7FXYq7FXYq7FWcaRefW7CKUmrgcJP8AWX+vXFUZirsVdirsVdirsVdirsVdirsVdirs VdirsVdirsVdirDPMP8Ax2Lj/Yf8QXFUuxV2KuxV2KuxV2KuxV2Kp55XvPTuXtmPwzCqf6y/1GKs oxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVhnmH/AI7Fx/sP+ILiqXYq7FXYq7FXYq7F XYq7FVSCZ4ZklQ0eNgy/MYqzy3nSeCOZPsyKGH04qqYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FWGeYf8AjsXH+w/4guKpdirsVdirsVdirsVdirsVdirJ/K15zt3tWPxRHkn+q3X7j+vFU9xV 2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KsM8w/8AHYuP9h/xBcVS7FXYq7FXYq7FXYq7FXYq 7FUXpV59UvopiaJXjJ/qnY/1xVnOKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVjmuaJezXc l1ABIr0+AGjCigd+vTFUgkjkjcpIpRx1VgQfxxVbirsVdirsVdirsVdirsVdirM9BvPrOnJU1ki/ dv8AR0P3YqmOKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVSuLS2uU4TxrIvao3HyPUYqkt5 5VjarWknA/77fcfeN8VSO7069tD+/iKr2fqv3jbFUNirsVdirsVdirsVdiqb+Wrz0L70WNEnHH/Z Ddf6Yqy3FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq4gEEEVB6g4qll55d0+4qyL6E h7p0/wCB6fdiqRXnl3ULerIvrxjunX/gev3YqlhBBIIoR1BxVrFXYq7FXYquRmRg6mjKQVPgRirP LK6W6tIp1/bWpHgehH34qrYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUPd6d ZXY/fxBj/P0b7xviqR3nlVxVrSTkP99vsf8AghtiqS3Fpc2z8Z42jPao2PyPQ4qo4q7FXYqyPype bS2jH/iyP9TD9WKshxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KrZI45 FKSKHU9VYVH44qlN55YspatATA/gPiX7jiqR3mh6ha1LR+pGP24/iH0jqMVS/FURY3TWt3FOP2Gq R4g7EfdirOvUj9P1eQ9Pjy5dqUrXFV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2 KuxV2KuxV2KuxVBXmj6fd1MkYVz/ALsT4W/t+nFUjvPK91HVrZxMv8p+Fv6HFV/1y7/Q/wCj/Tf6 5y9L06Hl6fWtPD9nFX//2Q== + + + + uuid:9E3E5C9A8C81DB118734DB58FDDE4BA7 + xmp.did:f468314c-223a-ff44-83cf-fcad3f99834c + uuid:e0419a7e-e8df-4ccf-b431-ee198e30f2da + proof:pdf + + uuid:bd2735e2-e702-411e-bfd0-7bc7e49d5aca + xmp.did:eac240c7-3df0-8e47-83ce-dd8c3630bffa + uuid:9E3E5C9A8C81DB118734DB58FDDE4BA7 + proof:pdf + + + + + saved + xmp.iid:69916471-648b-5b4d-96c2-a5356bd5789a + 2020-08-06T15:33:12+02:00 + Adobe Illustrator 24.0 (Windows) + / + + + saved + xmp.iid:f468314c-223a-ff44-83cf-fcad3f99834c + 2021-09-05T10:40:32+02:00 + Adobe Illustrator CC 2015 (Windows) + / + + + + Basic RGB + Document + AIRobin + Adobe PDF library 15.00 + 1 + False + False + + 512.000000 + 512.000000 + Points + + + + Cyan + Magenta + Yellow + + + + + + Default Swatch Group + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3 0 obj <> endobj 7 0 obj <>/Resources<>/ExtGState<>/Properties<>>>/Thumb 12 0 R/TrimBox[0.0 0.0 512.0 512.0]/Type/Page>> endobj 8 0 obj <>stream +HtA +@ E9ſd2iuX\0. spl'x/q̂)b JEZ =*}#ek P3E!!5;]IzsƝVq/nƶ+"!* +endstream endobj 12 0 obj <>stream +8;Z]!Ymg[U%)`)EKn&q/.ru[uOQ,(;&8F:*9"Dq;h1l%!Z[fk^JHVSJ/3X>Mpj0a: +b5ms5#%Ds7i:F?AO=pd-^(R[H:L8SO_;SmS%oU,6L0kUjP`n61d_\@d~> +endstream endobj 13 0 obj [/Indexed/DeviceRGB 255 14 0 R] endobj 14 0 obj <>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> +endstream endobj 5 0 obj <> endobj 15 0 obj [/View/Design] endobj 16 0 obj <>>> endobj 11 0 obj <> endobj 10 0 obj [/ICCBased 17 0 R] endobj 17 0 obj <>stream +HyTSwoɞc [5laQIBHADED2mtFOE.c}08׎8GNg9w߽'0 ֠Jb  + 2y.-;!KZ ^i"L0- @8(r;q7Ly&Qq4j|9 +V)gB0iW8#8wթ8_٥ʨQQj@&A)/g>'Kt;\ ӥ$պFZUn(4T%)뫔0C&Zi8bxEB;Pӓ̹A om?W= +x-[0}y)7ta>jT7@tܛ`q2ʀ&6ZLĄ?_yxg)˔zçLU*uSkSeO4?׸c. R ߁-25 S>ӣVd`rn~Y&+`;A4 A9=-tl`;~p Gp| [`L`< "A YA+Cb(R,*T2B- +ꇆnQt}MA0alSx k&^>0|>_',G!"F$H:R!zFQd?r 9\A&G rQ hE]a4zBgE#H *B=0HIpp0MxJ$D1D, VĭKĻYdE"EI2EBGt4MzNr!YK ?%_&#(0J:EAiQ(()ӔWT6U@P+!~mD eԴ!hӦh/']B/ҏӿ?a0nhF!X8܌kc&5S6lIa2cKMA!E#ƒdV(kel }}Cq9 +N')].uJr + wG xR^[oƜchg`>b$*~ :Eb~,m,-ݖ,Y¬*6X[ݱF=3뭷Y~dó ti zf6~`{v.Ng#{}}jc1X6fm;'_9 r:8q:˜O:ϸ8uJqnv=MmR 4 +n3ܣkGݯz=[==<=GTB(/S,]6*-W:#7*e^YDY}UjAyT`#D="b{ų+ʯ:!kJ4Gmt}uC%K7YVfFY .=b?SƕƩȺy چ k5%4m7lqlioZlG+Zz͹mzy]?uuw|"űNwW&e֥ﺱ*|j5kyݭǯg^ykEklD_p߶7Dmo꿻1ml{Mś nLl<9O[$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! +zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Km +endstream endobj 9 0 obj <> endobj 18 0 obj <> endobj 19 0 obj <>stream +%!PS-Adobe-3.0 +%%Creator: Adobe Illustrator(R) 17.0 +%%AI8_CreatorVersion: 19.0.0 +%%For: (Manuel Jager) () +%%Title: (cursor-info.ai) +%%CreationDate: 9/5/2021 10:40 AM +%%Canvassize: 16383 +%%BoundingBox: 133 108 379 404 +%%HiResBoundingBox: 133.976707049249 108.704404442835 378.023292950749 403.295595557165 +%%DocumentProcessColors: Cyan Magenta Yellow +%AI5_FileFormat 13.0 +%AI12_BuildNumber: 44 +%AI3_ColorUsage: Color +%AI7_ImageSettings: 0 +%%RGBProcessColor: 0 0 0 ([Registration]) +%AI3_Cropmarks: 0 0 512 512 +%AI3_TemplateBox: 255.5 256.5 255.5 256.5 +%AI3_TileBox: -33.200005531311 -156.500030517578 545.199981689453 668.49999332428 +%AI3_DocumentPreview: None +%AI5_ArtSize: 14400 14400 +%AI5_RulerUnits: 2 +%AI9_ColorModel: 1 +%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 +%AI5_TargetResolution: 800 +%AI5_NumLayers: 1 +%AI17_Begin_Content_if_version_gt:17 1 +%AI9_OpenToView: -655 846 1 1817 911 26 0 0 87 161 0 0 0 1 1 0 1 1 0 1 +%AI17_Alternate_Content +%AI9_OpenToView: -655 846 1 1817 911 26 0 0 87 161 0 0 0 1 1 0 1 1 0 1 +%AI17_End_Versioned_Content +%AI5_OpenViewLayers: 7 +%%PageOrigin:-50 -140 +%AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 +%AI9_Flatten: 1 +%AI12_CMSettings: 00.MS +%%EndComments + +endstream endobj 20 0 obj <>stream +%%BoundingBox: 133 108 379 404 +%%HiResBoundingBox: 133.976707049249 108.704404442835 378.023292950749 403.295595557165 +%AI7_Thumbnail: 108 128 8 +%%BeginData: 3242 Hex Bytes +%0000330000660000990000CC0033000033330033660033990033CC0033FF +%0066000066330066660066990066CC0066FF009900009933009966009999 +%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 +%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 +%3333663333993333CC3333FF3366003366333366663366993366CC3366FF +%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 +%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 +%6600666600996600CC6600FF6633006633336633666633996633CC6633FF +%6666006666336666666666996666CC6666FF669900669933669966669999 +%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 +%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF +%9933009933339933669933999933CC9933FF996600996633996666996699 +%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 +%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF +%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 +%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 +%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF +%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC +%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 +%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 +%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 +%000011111111220000002200000022222222440000004400000044444444 +%550000005500000055555555770000007700000077777777880000008800 +%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB +%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF +%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF +%524C45FDA2FFA8FD6BFFA8FD6BFF7DFD6BFFA8A8FD6AFFA8A8A8FD69FFA8 +%A8FD6AFFA8A87DFD69FFFD04A8FD68FFFD04A8FD68FFFD04A8FD68FFFD05 +%A8FD68FFFD04A8FD67FFFD06A8FD66FFFD06A8FD66FFFD07A8FD65FFFD06 +%A8FD66FFFD07A8FD65FFFD08A8FD64FFFD09A8FD64FFFD07A8FD64FFFD09 +%A8FD63FFFD0AA8FD62FFFD0BA8FD61FFFD0AA8FD62FFFD0BA8FD61FFFD0C +%A8FD60FFFD0CA8FD61FFFD0BA8FD60FFFD0DA8FD5FFFFD0DA8FD5FFFFD0D +%A8FD5FFFFD0EA8FD5EFFFD0FA8FD5DFFFD0EA8FD5EFFFD0FA8FD5EFFFD0F +%A8FD5CFFFD10A8FD5CFFFD10A8FD5CFFFD11A8FD5BFFFD11A8FD5BFFFD12 +%A8FD5AFFFD12A8FD5AFFFD13A8FD5AFFFD11A8FD5AFFFD13A8FD59FFFD14 +%A8FD58FFFD12A87DA8A8FD57FFFD14A8FD58FFFD15A8FD57FFFD15A8FD57 +%FFFD14A87DA8FD57FFFD15A8FD56FFFD17A8FD55FFFD17A8FD55FFFD16A8 +%7DFD55FFFD18A8FD54FFFD19A8FD53FFFD18A8FD54FFFD18A87DFD54FFFD +%19A8FD52FFFD1AA8FD52FFFD1AA8FD52FFFD1BA8FD51FFFD1BA8FD51FFFD +%1BA8FD51FFFD1CA8FD50FFFD1DA8FD50FFFD1BA8FD50FFFD1DA8FD4FFFFD +%1EA8FD4EFFFD1FA8FD4DFFFD1EA8FD4EFFFD1FA8FD4DFFFD20A8FD4CFFFD +%21A8FD4CFFFD1FA8FD4CFFFD21A8FD4BFFFD21A8FD4BFFFD22A8FD4AFFFD +%22A8FD4AFFFD23A8FD49FFFD23A8FD49FFFD23A8FD4AFFFD23A8FD48FFFD +%25A8FD47FFFD24A8FD48FFFD25A8FD47FFFD26A8FD46FFFD26A8FD46FFFD +%26A8FD46FFFD27A8FD46FFFD26A8FD45FFFD27A8FD45FFFD28A8FD44FFFD +%29A8FD43FFFD28A8FD44FFFD29A8FD43FFFD2AA8FD42FFFD28A87DA8FD43 +%FFFD29A8FD42FFFD2BA8FD41FFFD2BA8FD41FFFD2AA87DA8FD40FFFD2CA8 +%FD40FFFD2DA8FD40FFFD2CA8FD41FFFD2AA87DFD46FFFD27A8FD46FFFD27 +%A8FD48FFFD23A8FD4AFFFD22A87DFD4EFFFD1FA8FD4EFFFD1EA8FD51FFFD +%1BA8FD52FFFD1BA8FD54FFFD18A8FD57FFFD15A8FD5AFFFD13A8FD5AFFA8 +%A87DFD10A8FD5CFFFD0FA8FD60FFFD0DA8FD62FFFD0BA8FD62FFA8A87DFD +%08A8FD64FFFD07A8FD68FFFD05A8FD6AFFA8A8A8FD6AFFA8A8 +%%EndData + +endstream endobj 21 0 obj <>stream +%AI12_CompressedDataxv0zg-L&`06d0g.g?ݭ,$!|g:3{+uU-l{ӓ|,CS57Mb1'Gi"">JCef*n"b>}Z;jO/Lf&>v <V_k5s +-bID nJQj' p ?fdά~ QS 3 |^譲/ G|>A2ף> 12#A+CAxW&mvX3۸)72W;ԧ_uf fI@efqрj 90D[ay ~jӻ *fo-{fu!3͒b[] , B/_3 5z8' +0y CD$BbQ"CS8@4@$MQ/̃ٿܣ~A3l$ү </עC10z! +Xըi8,@"2z8ɮ.NDvacC:7 +0KDA F=7„9BK/v46j2V4=! !$O&`3d{C8 qjMDF(EqAH,3?0A/X#ٺdz?^B"{*~A el>=xXdM?|c C_OL$%ZC ]hDy 'Cا]#/ D՟bf\P+1OtA†L@Qi ydUm:~_kf'lBSp7=w,%nj,d+Ђ*Ҟ,X̾j3Mf:B\$}7  +Ɗ!V!;؄0Of@Di,E6(3^֋v)@+g6^;ڐljQh$$Љ$*X}VhqmhSjC# +-"h14v/h,fN AڴgFaz/- @Gh  P#pX$Ph$0/1q`Ǣd@0v^o>nz xL@Yuw?I~Mjl lst)-}D͗,(], I>$ L"p!!S4Vpy~!y(ozL,+ V)3w4ж80(+aOC+io(NcmI1;[Oj[+ %v\oI^*-9=1D&b +F xxOh4*m~M(>QbFad?gӅBOb`x8~[/ ߿ʢ-m7C:4Ωt迭?w-_@o=b }x02[4_njh2`;0cKGƂP ` pttSz=5$N<;6п Zo<!5kK5hKzGM-v.eT 5rq~&ŀ;ٶ-+Wm Ư4#!0 dbhP[OafQ j5>X@wƋ4^C?&z{ CoiOڴf60Ŀ/m@F!SIv&.mrA H$v +z#sVG(& +3f{;mz^H,$/#hv^,ى GHDtVp>'Dh0 #QcPJkfhn}bfxO{/-J +n$Jf` LM~w~vouz2/Mb fc y@ h@`*ؙ$q."$t9f۩֗^ Wf;.ԃըf%4mǿ,hz +1Q)`Q45NiK D/on J$%3H$+vSps18(Cm[O0oJʉ:vB__#8cDAJd196d"+ +7;'Oz|wImyW#jtٔJx4\ַiP^j=/E3m XEr$M +3jP &l )90wD4}2HvRyH%+ӓZR"?# k[hp(Qn*[B9=j<j73UHmU)ǚ RIPo 5=Og`4x+TA1 Mf5[Т!-i|5刞 T$eSK|s;f=*Tkjl6) ^qI)O5Q*֫4l m+ kNTkKM\ 5iƢ +=2LAҥ>-j\\GJ E#ZEme2_@2{H6ɽ4qy-I_ XX3;Qxk4esF %nHO}̄X2&z'.!JmC//A{h6 %E`sj5h]˙} %{Œ9ޒ"LftdklL2|,4~KC&ZtRQ fa%^ZԶI>5눊@fb4[BWBY#f`2ʀmC :NYvʍ>F[AⲍSWNBc'_ ##"X֦@C7L* +⿕ƥ-aQe+e46sv>ی̝wC=hˣ$#b G+4A*(;-C%#vK +‰h79B=Q:hFp9BJ$dQC` S# ^č,x6I>No*@# 0$ T% _ƀ# Ǵޑm@F}Ad"S0 (:ݚWhP/iW  )Xxd4۔cY.CTc%[(l-Vt)0j"6G$ξWj1U<uaȿ5Ґڲ2Ѹ*O#M` 6Ƽ͙UTt/ f.OF|"dQl 2 <2x#FVn<5F lAm k7)Q&eԞ b% +v& i@@S!tczs `v(^YQAOۨ+w=Rd@k'K{V;dqD"6z+a~$Ҁlmp:}MF3h@}0O=wXO[G-&{KrmaV:bo}k@f_XF\dk0p^V+aCS#G͎:9,st}mkj,wG|w$K`8JKy(I]Po'%uH,iMiƭvH!t*&*!6']lӊHϱS5Vwٝ>i8WéUۆvD- mzi9{^P(kz[tuG+"~9eJӞȗ86M: pQ$B8h4ނY28 +&[ x +2P̏.Q&04t<⣯oD)ԭm 4$c7yg͞n)J-z<2в%G~ K{}T,`j"'@ojȂhm  ` )z&xpLigkJL[O Jzb _?sg! +B2,j{7mo˔f +MV0yAcȄWW`fL51M3@0qPic[SyC'" +Ln%mM3,/ls\_]x[ )YY jt"m ~e DJ5 +A^[1ʼn&@gfngh(G@O1 cJf@( +-i-#18f Zx# +~ZkÜ9 s樘ho#`dy*_;{>>?h1llS ~ݎ? +zfѻ$`w^quO 0Ch |r>h= 2y糳mrw >x _ z_@?PM -Z +ٯ?fups>O+{ϸH@o ?r_m| !zsm lJʁ:ʤ;_<˄:?4p +_쏒VPbvяu{ ^g|csNQc[b#i2Od4#k+ݚ$mD=r?ܹ!o[gfxRYFQ"7YBm^BWǽw5"GZ1W;c"VxI Lƌ,> W!?/w0|#R#?=toxcOol2"YnGH32p*wmnﱩ;'iSY(̹/{ ʉf`',3OJ?{e`O܄9]3||\ 1;; zRp?g:29f̶AxrtXŶ<"H.0g\;~2g0Oy?oub/OXb}7l,|`b`T= +bx {=GDo,"X&a7+Vh+76ݧu;n'ִ(=z/]1c/kO{>L!nxZcZmlb_D 6%lb놯,27[6ٖ̎K&qw{iԝ9@ԗ9v.z7'Խ9im.|T0K scR[u}zO/aGKLg]`i ̛f ݰf[098gg.Y@?j nKtIm-w_TՒ{4,6^ԞSyZ2mI1Ʋje-m57_V'muVc aݥ5>&̚vk)Z琵>X}kZUN޺}8o_o޽~,濷Ygټ|6lBm-7`|g77[jv4bW_+[y>G6 +mtͶ=l{n>{^b>ݻ=S]F{bo'ccOpm_CnJBihO<`W㎇Α/ܽ8@F::NʦXdc =v3R%ɏYmM||dk%:w nsnfq_WJ+z)WMF 5 \t~dt=tߕ#wr?zr sqSw<Z2P~{o04[?h<@޳͟Ug&Hܛ uךz߯ϝy¶—n _xjVU|j7W~o5G'?/}]ڭ|;͏p@2Ǔ!WvM =㣧@_mQh')Q:]GHbDdĪ쑷4I>db_G|q$#ob8sU t~nT5}G<#;e-XumpnCk=G̡b6{~=H$Q.dpG ""`8sN +P?/^G&N7&ZfctVM,#j36>I[ʏ{Y)/1 xnCV`XۻNnPCG|hqv2%v+m?m붋֨pn:݉vf|F]׸gfުk;e:w^էz˖yvfvW5zk~fpip;^qis?x#5zOk׎'~]杵7kz?&ĻagogMb |6fp O`YD>T^>fWwvò /S3XfWm7;LTMͧ]&qZЌ[mI3yd{s +zk}Jk +|@Ѷ 56 1O%y:?eO-d3DQ\._⦅u9OħxiHgHQڳym"Z֯^ys~~tdtםHlegO~bO{=h ta>YӥfbhWON)/:%9+< ~jf}d?qQ2L07/ z .X6F,P:,{W+7ennLkgˊ*׌<B4HB퇑!7QX<BXI{Qisy?62}9Pykut+ƊdfDY.=̶ V$T7S`Q05IT +?ր5ʱZ~ b\9\&My6`Jig8'5aM J#T>qEiXNax| +׍+i4`sg9#(1{GOWS <DQ~:>슧-i:|^%IםSaJ %[龻e~c׻0ǕOGJ J^۟*OoG~L{.x*#GĪϮ)i>̓Sf9/$>N<݅4V`Ex5jtflw|>5VȤ!Z#θp;Oݝm{+4Ϣ+`&ySYi5Ր> zZS>^W߲ y@!YgżXx?+`\+ <אtYa!Z^2frʁ*%`G~& M<͗=rX7^p- 9!LtK' aYl)`U+PI?&V +767؟HV c-:,"֭eJ2"'~KaŅ P +Y"bpk񡁵? m9bZhbT=ĊLBͮ9\dhbFJG6tǏ>q3dic\m~_v|0E44帏0[.Wc Ԓ=[;KhMǤÅtMlHJԉDBCQFqt!xk2y bw6lY Jn?-BDS +Jt ڠźwb=N8Khش+edRnoșRAOXYO {H{/E43Up}g]'PҎ!stfDLQF0BM՟ChqƨzF2?cЌW$=oٜ_+5#%+H^d5V9^r)TH!+~8wFeFJCpnddH|y=|lVuyB[(:ry +3r^~Ū-FE7}6x>hpN_$DB|:m/9u9lj/&aX5i㟮< Gd&@&_C3*h>$NYe;%<ϛ[بCrbґ*L>d0B(y;ZI薤o`4jVk)u֙δeRWzh4耵ѭoJ*ݠ=qvJuUY4))[2lTMr}BS:%+ڳ⺣'`m ghcV<ds5:b5zˋ9SZ{u- +FJ=Z_9hG 6dF4t;h)}FvPGZ;r.-dZeъW_z3k5Nm (ITk';}@ VACCh,Fzoz=9"h tFnuDc@ẻ5w ƼGvwT D`;IS2~^?E@&DDv7Gy} ݭsZKWO#`3 @C@(W)mg#dݚӘh<Ø`; \^+ a^Z]#u/_bWucQ*KE ey ˊܸpj ,S׬I\S+%b!~K1t@ў$ZVs_0 +v6Ǣ +V'$P$BA٩=2n FV[7B/j $q0hrxD; +TvgzSU³uvtPW$3E(?u7suOpˎB$)9)4aom-!U_ʭ̳KRtLk "1šWWA{ņ)рRt>xDQuVY]pKݐ<,6],X }1itga Y1B 'l H%87p9Sp gU(% @s47uu%q/e~~#t+#k`#eniw +_g?)GUN3OrAHԾi+fGs1 ZCNth*Gv $ՕU3DC- +H#Y^bj0QYgZ԰kEsur~x1΍qD4C +fӧi=10 F2L>/r<*InyuTSRA@TMd#{?TzW]%1XOЈXlaOu+*DRuZE||p\OW(;l'=,S$@+Tz&3Y +αӮDBNTz(*([O +HI7$sJ(EKgJR!H7oUFi(CUY^ReP ?(.]ɯX9]G֍~=iDe +3ψ=;In6 6nΟ_}夠:K.ݝ_FK#[Pί@"0/;li ψ=FUTL()@{uH@fK'@MhD,0nzj8S0h|IQ?Y5]S?8O)Xd1.9R +/u<ԢէRFMS&EySŤ6<&G<1%Q:Ў호 +I?a vp$;AcBʈPy{yT%f.7BרL;Vq||j.r.Wt5r9P1A@"lKǎrԒ=iF5M)Ic$t|Om+Q0+^5)!oEFNkHGJƂeY`'ieOYm+4c:%0eа>P(nD+;)z_uKFo +iDo*DoDaCT׉qrT`8PGow؍ޠWwqXu `|흒r#%&;;\nHW5o3ɮۢ?j$Ƽt ?J .xp%Is5ٽՎE)%*ki'CJЕgO<isI1̍FN)s Yv4g[O2O$?2Ou7 +]2RN3XgyhC8dXٳN2GW^L*] +w*ٌofUxB{+A Qɋt +7O_~q.[K{lUwįHTu2~&rJ ~_`U^woʲ;x;pᣢ +&VR/l~7^ߺ +jtUG6>hc?E7ZW֧Ï>qWcw@kݠ۱M)UT~ ; .%M5xρ{uߴ y^eO*'ftwa,:z ٴcʘ٤4g3pۊԿ D,Ss.ZA#̍^ܮpO-;5iSOj3M>r"_7W,SԸRa%.+SݠޯZ'W'[VaZV.)SDra +|9C_WuҪ>Q +\OmG)lPا]#v>]UU L6fs>֌ _اLφU}7G:O˅]ا67ʃ// E}jnz,FaZU5vX>ZRaZUA>5򊕫UU\XاfWkg}ThW+S%K +Ԫ1\QabH'T'1FHV#O:sJǍ*pEد2O-O19 g讈%->#UnwPs -O7ոWoTVI]ؔu3N6.Sl.S(tlɗMy)Rx?CQŗ!`Mѽ/OѥsR)c-_=z6˫<]VoNs-nE^O">8/Mo4ݍj.kJo 'Q;HzG>$5KH CE8KJ +]Oƻ1,>GˈPUQRBMJQ޿=OehS҄3gT?Ըe~Ntǭb˯Sxz\؜MYw^:jgSFdƏkU*|ožj_|AXXBK,k)Nʝyۃ~}A0ECsBvډs7©꫶gZ6qU#jk5^g4qKn#ɠJ-켬!TxJz}:؍VR'u)s{p j%]Ħٹ)w|juZIzJT=O,ITz#S,;$,{'b ؜ HvODi;gsP{QN!ÐK}ga|{UBU;&.iNFqۚ 3= :]9w,& +=l0q&ARJZ5 +ܤU=f8e8r~! !޷1(@yaDרDZ&:A:CR^Tsq™nFYCS!D>RJY7+bU5y"]t7yUKY2^)9OOpKw #(J5 +f +V$΀L q|AH Q83`N$ ϭ(sJ}?%݉֞iRoƜ1= ! Wc>ʘooa' >mct L0O9ƃyO;{Rg>{W0.K<zV?ݹqo +s>Y &/BzX_~S/ =%K}_KwrAki-6*0dcq#yܗmcx1^1d;t!/f;{wE}WؿA VF35(BSQQ߈cKss ;i|nџ1]&:@?~׫Q[1ej :U@I +<Fsv_a$U 0š9D'GzՇra`pcjxٟ/l'$vQr0d&(:h{{qLk9ֳNZvF@s7 }F)ր"jR].>~zm/m\ɲBD;UlZµfh.Yxw؍3lP]ihpuv"SiFgEvuv"CNl4gMZ$ >bWG +s/3TW; `nX @aϯ(ܒæ[,W3yѮѸ>lBw\O9Oڐy{m?9r{x}e'* QKqڥƿ=߱43i S$/_)˨92l龌ݑaoNJ +!}? ?s)#/ ǖӻ42En寛 -:6ysIM8r;ݟCTbӝ & SMCӅ|*ԏu>({yԯOQo;`M>zξpƿ;sy)/>oC˳w5gwI _집%q%%18e +H_\(ALK k!!fhs?hۤn>lg~u~XW" {/˪5#4}iZ07FHl;6o0e&XA;7~~0/$dN<(8jtp+o>6-!\^|ħnْ]īE @9dsy6߄9uw2'c(ߚ'X1훍__ΫE6GR.k'O_$\rB19%Bnۖ^.!Aq G&'#l(4: +&C:($*[n dUe r1瘁R"u-f Q:Crz0K.DlY06 N +rYaYgܺQXcs%M6fs 7uȕ1 +Rg&`%bK Ћ"xElƳUdVeny[˹џ*(J)**똛r-Z%4!a +zA%pzPL Tt||5y-|?RQd +Ŵb 4n)UdCl!fe +b|!_Jc`5jźV_ONq] ٻ+t]#?D#~?HyЃnm@ړ_]&j@Q*)H>؋ аˀj~j[%`.x8YJ..>ѬP+t¡L% "xLl1 +e4MN> wJ8pYD-QI oYOzKv`pիz$}g]gvnҝw̼>X~u_jN@Z)Q#Lo ~k51'2P p~ʼJ( 8羌>DfBkλ>( 0KQ;z'ʚ}3H;#|ِt4# +%>{[{e Q;%Ý#Dܷ{sj W~ʿW'Iw_*NuYZn}%pwɁ8rmvkClxHc# M`0j i0Ld]`hCg[Kz3Mt;[.GC9z& NHbI٢W8/YZT 'M&d@&_e +D1;ve݉9&Jkʞ4ڝqJ\=nb~y)L a} Kr0-;L.O)0#搰D6^^rXxP)lP3#!l)Y4<#:|@Dkahu~li> +ᷰROi-<[䌪 O쬪OK ^ky*A\, (=yx Rj5~RǭͶm| +>lro(C)ՇpQcm!V2 gsM~AA݌$|ƲND(M<%p/ jgW:7`{ qr` <2Q#r 8#o +f+dm¬%lӈN8(>hHf k㾎yG‰Jܞ̼xs e}-g榍#po˛,>6RMpD'k .x< ^C#GrR>;-V&v_QԲr b7\ƚ88OxhTM";sFIA;A}P|p#N2k]xY~Nr @[@5a{T\FNђ#W Z=ԑQs6mvF{[)K)lY^Ý&&]`9,kbxk.$p49Wxyi3@6 +ػ9%LdKac4ɨ~[r=#hlWF7`epl߳{4؋7wGN]oL`DȾN>x"R:@G\Vl2n婶(67`/%B~zNh\MO#0x2G t]H y{ۤC㿷ԟZ zz[3i;]/ /(M +endstream endobj 6 0 obj [5 0 R] endobj 22 0 obj <> endobj xref +0 23 +0000000000 65535 f +0000000016 00000 n +0000000144 00000 n +0000012029 00000 n +0000000000 00000 f +0000013469 00000 n +0000044657 00000 n +0000012080 00000 n +0000012440 00000 n +0000016452 00000 n +0000013768 00000 n +0000013655 00000 n +0000012642 00000 n +0000012907 00000 n +0000012955 00000 n +0000013539 00000 n +0000013570 00000 n +0000013803 00000 n +0000016525 00000 n +0000016699 00000 n +0000018062 00000 n +0000021544 00000 n +0000044680 00000 n +trailer +<<4616BCBF0B20BE409F5E0DC2B57048B9>]>> +startxref +44881 +%%EOF diff --git a/Assets/Project/Graphics/UI/Icons/Cursor/cursor-info-vertical.ai.meta b/Assets/Project/Graphics/UI/Icons/Cursor/cursor-info-vertical.ai.meta new file mode 100644 index 00000000..4bfb09e8 --- /dev/null +++ b/Assets/Project/Graphics/UI/Icons/Cursor/cursor-info-vertical.ai.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 65b313ef428189844af72abe1e1282ec +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/UI/Icons/Cursor/cursor-info-vertical.png b/Assets/Project/Graphics/UI/Icons/Cursor/cursor-info-vertical.png new file mode 100644 index 00000000..e0c5f10d Binary files /dev/null and b/Assets/Project/Graphics/UI/Icons/Cursor/cursor-info-vertical.png differ diff --git a/Assets/Project/Graphics/UI/Icons/Cursor/cursor-info-vertical.png.meta b/Assets/Project/Graphics/UI/Icons/Cursor/cursor-info-vertical.png.meta new file mode 100644 index 00000000..27184163 --- /dev/null +++ b/Assets/Project/Graphics/UI/Icons/Cursor/cursor-info-vertical.png.meta @@ -0,0 +1,96 @@ +fileFormatVersion: 2 +guid: 9096fb611017e694e8ef82e47b1789a5 +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: 0 + 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/Project/Graphics/UI/Icons/Gameplay/bottom-alpha-gradient.ai b/Assets/Project/Graphics/UI/Icons/Gameplay/bottom-alpha-gradient.ai new file mode 100644 index 00000000..8c58a7e8 --- /dev/null +++ b/Assets/Project/Graphics/UI/Icons/Gameplay/bottom-alpha-gradient.ai @@ -0,0 +1,1170 @@ +%PDF-1.5 % +1 0 obj <>/OCGs[5 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream + + + + + application/pdf + + + bottom-alpha-gradient + + + Adobe Illustrator CC 23.0 (Windows) + 2021-03-28T14:45:44+02:00 + 2021-03-28T14:45:44+02:00 + 2021-03-28T14:45:44+02:00 + + + + 256 + 256 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq 7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq 7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq 7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq 7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq 7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq 7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX//2Q== + + + + uuid:C1BCCE1871B8DB11993190FCD52B4E9F + xmp.did:0303a1db-ea59-e047-ba74-0a94cd60278d + uuid:b193ee34-1b23-4956-be0f-34cc04dde1b2 + proof:pdf + + uuid:38cfaa44-519b-40df-9822-9670e046a9ef + xmp.did:9c235442-4d53-8043-85e3-45a644da0db9 + uuid:C1BCCE1871B8DB11993190FCD52B4E9F + proof:pdf + + + + + saved + xmp.iid:0303a1db-ea59-e047-ba74-0a94cd60278d + 2021-03-28T14:45:43+02:00 + Adobe Illustrator CC 23.0 (Windows) + / + + + + Document + Mobile + 1 + True + False + + 512.000000 + 512.000000 + Pixels + + + + + Standaardstaalgroep + 0 + + + + Wit + RGB + PROCESS + 255 + 255 + 255 + + + Zwart + RGB + PROCESS + 0 + 0 + 0 + + + RGB-rood + RGB + PROCESS + 255 + 0 + 0 + + + RGB-geel + RGB + PROCESS + 255 + 255 + 0 + + + RGB-groen + RGB + PROCESS + 0 + 255 + 0 + + + RGB-cyaan + RGB + PROCESS + 0 + 255 + 255 + + + RGB-blauw + RGB + PROCESS + 0 + 0 + 255 + + + RGB-magenta + RGB + PROCESS + 255 + 0 + 255 + + + R=193 G=39 B=45 + RGB + PROCESS + 193 + 39 + 45 + + + R=237 G=28 B=36 + RGB + PROCESS + 237 + 28 + 36 + + + R=241 G=90 B=36 + RGB + PROCESS + 241 + 90 + 36 + + + R=247 G=147 B=30 + RGB + PROCESS + 247 + 147 + 30 + + + R=251 G=176 B=59 + RGB + PROCESS + 251 + 176 + 59 + + + R=252 G=238 B=33 + RGB + PROCESS + 252 + 238 + 33 + + + R=217 G=224 B=33 + RGB + PROCESS + 217 + 224 + 33 + + + R=140 G=198 B=63 + RGB + PROCESS + 140 + 198 + 63 + + + R=57 G=181 B=74 + RGB + PROCESS + 57 + 181 + 74 + + + R=0 G=146 B=69 + RGB + PROCESS + 0 + 146 + 69 + + + R=0 G=104 B=55 + RGB + PROCESS + 0 + 104 + 55 + + + R=34 G=181 B=115 + RGB + PROCESS + 34 + 181 + 115 + + + R=0 G=169 B=157 + RGB + PROCESS + 0 + 169 + 157 + + + R=41 G=171 B=226 + RGB + PROCESS + 41 + 171 + 226 + + + R=0 G=113 B=188 + RGB + PROCESS + 0 + 113 + 188 + + + R=46 G=49 B=146 + RGB + PROCESS + 46 + 49 + 146 + + + R=27 G=20 B=100 + RGB + PROCESS + 27 + 20 + 100 + + + R=102 G=45 B=145 + RGB + PROCESS + 102 + 45 + 145 + + + R=147 G=39 B=143 + RGB + PROCESS + 147 + 39 + 143 + + + R=158 G=0 B=93 + RGB + PROCESS + 158 + 0 + 93 + + + R=212 G=20 B=90 + RGB + PROCESS + 212 + 20 + 90 + + + R=237 G=30 B=121 + RGB + PROCESS + 237 + 30 + 121 + + + R=199 G=178 B=153 + RGB + PROCESS + 199 + 178 + 153 + + + R=153 G=134 B=117 + RGB + PROCESS + 153 + 134 + 117 + + + R=115 G=99 B=87 + RGB + PROCESS + 115 + 99 + 87 + + + R=83 G=71 B=65 + RGB + PROCESS + 83 + 71 + 65 + + + R=198 G=156 B=109 + RGB + PROCESS + 198 + 156 + 109 + + + R=166 G=124 B=82 + RGB + PROCESS + 166 + 124 + 82 + + + R=140 G=98 B=57 + RGB + PROCESS + 140 + 98 + 57 + + + R=117 G=76 B=36 + RGB + PROCESS + 117 + 76 + 36 + + + R=96 G=56 B=19 + RGB + PROCESS + 96 + 56 + 19 + + + R=66 G=33 B=11 + RGB + PROCESS + 66 + 33 + 11 + + + + + + Grijswaarden + 1 + + + + R=0 G=0 B=0 + RGB + PROCESS + 0 + 0 + 0 + + + R=26 G=26 B=26 + RGB + PROCESS + 26 + 26 + 26 + + + R=51 G=51 B=51 + RGB + PROCESS + 51 + 51 + 51 + + + R=77 G=77 B=77 + RGB + PROCESS + 77 + 77 + 77 + + + R=102 G=102 B=102 + RGB + PROCESS + 102 + 102 + 102 + + + R=128 G=128 B=128 + RGB + PROCESS + 128 + 128 + 128 + + + R=153 G=153 B=153 + RGB + PROCESS + 153 + 153 + 153 + + + R=179 G=179 B=179 + RGB + PROCESS + 179 + 179 + 179 + + + R=204 G=204 B=204 + RGB + PROCESS + 204 + 204 + 204 + + + R=230 G=230 B=230 + RGB + PROCESS + 230 + 230 + 230 + + + R=242 G=242 B=242 + RGB + PROCESS + 242 + 242 + 242 + + + + + + Kleurgroep voor mobiele apparaten + 1 + + + + R=136 G=168 B=13 + RGB + PROCESS + 136 + 168 + 13 + + + R=127 G=71 B=221 + RGB + PROCESS + 127 + 71 + 221 + + + R=251 G=174 B=23 + RGB + PROCESS + 251 + 174 + 23 + + + + + + + Adobe PDF library 15.00 + 21.0.0 + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3 0 obj <> endobj 7 0 obj <>/Resources<>/ExtGState<>/Properties<>/Shading<>>>/Thumb 14 0 R/TrimBox[0.0 0.0 512.0 512.0]/Type/Page>> endobj 8 0 obj <>stream +HT1 +0{~@DJ$^D 6Sl1jP'\!^e™#%)"%IT?ck|rN݌ ݐ#Ai +endstream endobj 9 0 obj <> endobj 14 0 obj <>stream +8;Z]L!=]#/!5bE.$"(^o%O_;W!8uZ9(]Y: +endstream endobj 16 0 obj [/Indexed/DeviceRGB 255 17 0 R] endobj 17 0 obj <>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> +endstream endobj 13 0 obj <> endobj 11 0 obj [/ICCBased 19 0 R] endobj 18 0 obj <> endobj 20 0 obj <> endobj 19 0 obj <>stream +HyTSwoɞc [5laQIBHADED2mtFOE.c}08׎8GNg9w߽'0 ֠Jb  + 2y.-;!KZ ^i"L0- @8(r;q7Ly&Qq4j|9 +V)gB0iW8#8wթ8_٥ʨQQj@&A)/g>'Kt;\ ӥ$պFZUn(4T%)뫔0C&Zi8bxEB;Pӓ̹A om?W= +x-[0}y)7ta>jT7@tܛ`q2ʀ&6ZLĄ?_yxg)˔zçLU*uSkSeO4?׸c. R ߁-25 S>ӣVd`rn~Y&+`;A4 A9=-tl`;~p Gp| [`L`< "A YA+Cb(R,*T2B- +ꇆnQt}MA0alSx k&^>0|>_',G!"F$H:R!zFQd?r 9\A&G rQ hE]a4zBgE#H *B=0HIpp0MxJ$D1D, VĭKĻYdE"EI2EBGt4MzNr!YK ?%_&#(0J:EAiQ(()ӔWT6U@P+!~mD eԴ!hӦh/']B/ҏӿ?a0nhF!X8܌kc&5S6lIa2cKMA!E#ƒdV(kel }}Cq9 +N')].uJr + wG xR^[oƜchg`>b$*~ :Eb~,m,-ݖ,Y¬*6X[ݱF=3뭷Y~dó ti zf6~`{v.Ng#{}}jc1X6fm;'_9 r:8q:˜O:ϸ8uJqnv=MmR 4 +n3ܣkGݯz=[==<=GTB(/S,]6*-W:#7*e^YDY}UjAyT`#D="b{ų+ʯ:!kJ4Gmt}uC%K7YVfFY .=b?SƕƩȺy چ k5%4m7lqlioZlG+Zz͹mzy]?uuw|"űNwW&e֥ﺱ*|j5kyݭǯg^ykEklD_p߶7Dmo꿻1ml{Mś nLl<9O[$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! +zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Km +endstream endobj 5 0 obj <> endobj 21 0 obj [/View/Design] endobj 22 0 obj <>>> endobj 12 0 obj <> endobj 23 0 obj <> endobj 24 0 obj <>/Shading<>>>/Subtype/Form>>stream +q +0 g +/GS0 gs +-0 -512.0001831 -512.0001831 0 256 512.000061 cm +BX /Sh0 sh EX Q + +endstream endobj 25 0 obj <> endobj 27 0 obj <> endobj 28 0 obj <> endobj 29 0 obj <> endobj 26 0 obj <> endobj 10 0 obj <> endobj 30 0 obj <> endobj 31 0 obj <>stream +%!PS-Adobe-3.0 +%%Creator: Adobe Illustrator(R) 17.0 +%%AI8_CreatorVersion: 23.0.1 +%%For: (Manuel Jager) () +%%Title: (Naamloos-2) +%%CreationDate: 3/28/2021 2:45 PM +%%Canvassize: 16383 +%%BoundingBox: -1 -513 513 1 +%%HiResBoundingBox: -0.00008365947906 -512.000083659479 512.000083659479 0.000083659479969 +%%DocumentProcessColors: +%AI5_FileFormat 13.0 +%AI12_BuildNumber: 540 +%AI3_ColorUsage: Color +%AI7_ImageSettings: 0 +%%RGBProcessColor: 0 0 0 ([Registratie]) +%AI3_Cropmarks: 0 -512 512 0 +%AI3_TemplateBox: 256.5 -256.5 256.5 -256.5 +%AI3_TileBox: -41.5999994277954 -643.600036621094 553.600036621094 131.599999427795 +%AI3_DocumentPreview: None +%AI5_ArtSize: 14400 14400 +%AI5_RulerUnits: 6 +%AI9_ColorModel: 1 +%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 +%AI5_TargetResolution: 800 +%AI5_NumLayers: 1 +%AI9_OpenToView: -409.064516129032 127.258064516129 1.29166666666667 1616 948 18 0 0 46 87 0 0 0 1 1 0 1 1 0 1 +%AI5_OpenViewLayers: 7 +%%PageOrigin:168 -360 +%AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 +%AI9_Flatten: 1 +%AI12_CMSettings: 00.MS +%%EndComments + +endstream endobj 32 0 obj <>stream +%%BoundingBox: -1 -513 513 1 +%%HiResBoundingBox: -0.00008365947906 -512.000083659479 512.000083659479 0.000083659479969 +%AI7_Thumbnail: 128 128 8 +%%BeginData: 2039 Hex Bytes +%0000330000660000990000CC0033000033330033660033990033CC0033FF +%0066000066330066660066990066CC0066FF009900009933009966009999 +%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 +%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 +%3333663333993333CC3333FF3366003366333366663366993366CC3366FF +%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 +%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 +%6600666600996600CC6600FF6633006633336633666633996633CC6633FF +%6666006666336666666666996666CC6666FF669900669933669966669999 +%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 +%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF +%9933009933339933669933999933CC9933FF996600996633996666996699 +%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 +%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF +%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 +%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 +%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF +%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC +%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 +%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 +%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 +%000011111111220000002200000022222222440000004400000044444444 +%550000005500000055555555770000007700000077777777880000008800 +%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB +%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF +%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF +%524C45FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFF +%FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFF +%FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFF +%FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFF +%FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFF +%FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFF +%FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFFFFFFFF +%%EndData + +endstream endobj 33 0 obj <>stream +%AI12_CompressedDataxk%u> Hqˈ98@]}4cYd{lM7fSϯ?FdܻE;DRwDXwgׯ~ot1>wo?ꛯ߽壟P/&f]}>fۯ_yC%.o_ݿ'?囿yս/zןşn7En^ӷ/b8p?_xʋx/&9ćWoy׿z~v,>+!ǏקSIZ˒2"|vxoy7o~_}՛_L\|~ս!y.W߼|_?kyJۿZ?+}w_u_^O=~򏿾KooEyzۿ^Xrguި`eO.%>sBic|(샐N4.z\?ןou=7^?[͗~{K3ݿy;p}&^/|߿7G,O4)C"}vq l|Xr;Gw[BQ߽|0giۗ_ɥC_BX幟xז:Bd,ݻ#un_y+khkQ7to~?|.ۗu}W˿|o|O:?/ijDY_~OSg?߿Iܿ>wo__mŋW~{b 7_ꟿyj\W^~/xas'Bo5_ܿg]\{?/zM}[.g\YԺ_o|~w^ի_~/xe} 9Krի{o߼y]oco_~Z"\9Ϳ}Oo^ɛW_.//޾{ūy$ x +~47o$^sW߾-^'$+ss~/s?}}Koy I^})6$}ٿ9^|.麗}'pz/]/_J8Tv$C*УKሇ/??d/ˇ?m~I>Q}{']}Uu-\an+u^_x??yD>}{\yeqM!GKH5JM'.M_e +Gs%P\_NONxѫkK]իUW^t5nY˥-z%-ݵvZBJK-ԻzqY\5Pn5y<9Ip(w7Z-AE[B˷:_%kj9MָJI!P7IGȉ?CFxq/QQ4G #܅[pq.iP4pP#Lw"FZjX1k)k?~zwzl覾Нƭƍֿo}4&ԫ@wr<xo/?l:Q§,7*f#Xܵ[S˵.xED&C+`Q&]ոѸ?֥ +[jտ Z+5k$\ @yf>N2<Y1!10.vݝ{+FQLF݊JXDu7$Z]!7Vud)Y7NuM{( +\i]bExպ'-K.ݴ%h7EAZE;}+B,hNTESE D;Ql%kv\P?DG1r3ksK뛛[mHVy[zNݙAы@H"1 k⍮#je^9gL/MKCdq/QK¢pHfn]e]1dQ0{኏j-fWf7>w}4]g-j,X,?k>,Xh/vK/cYpVn,kܡ+>{+>(6L&)uML,P7nrgn"lh-MOVf6&s9J:1*Wj&役|cV.4h>$q;Gsatw>tsԹq 'y~Ë;4㘟).w>Z5Ow|+~k?t#!"k /lՀ(-GWڎsKO +]2Uk>VAvk@Z7+\Ѓ̹zȵZ- +NexTwu7\ ]E]WNrp ?Nu;v̱h1t;+tK vXDJZ;Usc{񺛝nQr҄#?G׷vLp|݄]s3]q(www7"Eܥp{w{#w.2^͍,%%|#<\Uq1SFLzY;'Ni]qv'>ջ:{;|˷;}*0Fpw'pvBCnMeD{nkyDG[|ԡdֽEoF^c},$#mĹ5>{#F:q[t'{޷ gGt9R;tgsŻ#GQ>r9G|(GYAE'GZRb3T3Ǩؖ. 2yr:u)a*m1x'O@ +͋Iv{G~q1EПCsء93 +U.Q6]$cW8rBϿ;"<'0rJX?9:6׵!_'W9x\s?%#1K0Eg`0:!rsӒR/W ?np4p@@c\TOv~ Ox:tF:Ͼxo#8C1&ۇ @H9dkx4›=y$cȸ\E<eu`f.֌Ŏ2=8fsi/d,@*]ܠRG0YԱD8zw (z} +$Z!A>|!8brsG~5oCW|Ƭo3c_qMCog婳FRgr왞;fάǜg̈;sf1stUG.gX9*cϞgsS=f(Ig4_.H91';[1dsAGS3w~ص< Ǧ+}ڳG}l@+>ͿwGYXZ"͝Mҕm N8쾞Gf_|X5oI +sE&ߧ<۸I6ߚϷfzK+ľ};{p;"7c k%Ҿc·yFܭ|jZt>z[4Mofp>QV ;ڴFݍl>0̱;wCW|Ƭo3#_`xmP/KtHgs:Y,q[鷶͍.OT!AQH <W7TtEr89Xwc1GHK D,$˷Ύn +tär|&NgW]8 6hMqSir'>mNF=')s ȏGǃj9m퇆97u|&0hRp,Ko%5uIi3Od12f$;~tGYx4"G H'jdǒfi226>Uj,0-{OOR{Ŀ|WN9V*臾bV{5]!kImKPe:jk2Ӎ=]v]jMIwXGs +QHֺt֑($*7~n%E|qe7o]ȋ^܊m*~<{TRLu3Cl>'y@a0MEލۡތPWupS]iUJE|R8{u05aS +(kW7D%mڪ]m5kV6?}_L\[iۮ2$_C'ŢvE DmFa( +Gp_}9,x5 +AmQi}%C]{"4J%"#KeJa^Eǟ#`e;I$l,U?N$tc޵8@-qWQ +H**M PTt݇cǏx'<P;v2!AZ-č,"B5s96GtvbzlvE;GEz-''$dٜ֌Ѿg}h"?nN]v/!}:x+]cv<ؒ+sɏ^=u~JYdE{mʇV>rn}il[! Yi1?(kgˤ=>@R k1]IA9+/h)/c獝xOa_qg:P]SZKvtȻi' Uƕ_)eݏ~3i01hs4x6mlAr+V}}ٍI0$\vj;C{<xt+>7OyP0|芏@@7W; x pJ Q+KV}[!7 +Ӿ*PLm4ZxP ¡oq.Ǿ +0oW@vB٧=fQ@j+c m<=zqWh{aCXh~ڦY?ZOOǣGކP~ 0zfac0}Pl_ng<3 ?xWm}hΟfθߍͼߏU78qk<xEp6>\%yzTcsJOG|ų+yi펩#kh`NzSuʰ? H|9)B;Rd}y +}XTeV_m_ka=ՆsR)/Bzc޵9YZWQL߼F}]|GR#'5ǼkO+Ls7c.~u0/==$;warw9>>ب(v:G_ʮ(CveB72vy!īȾOS_va)VXpb7|U8Ӭ=Bv4`GӽHN] Ϯ_\-CFIv {Z!k'vm78 j_Uy#0b9|>֣+}!#M.rض͉F/_T*!umvԲ@7i~s:9fE4ݻw7 wF={Vx?h]u<蔚.GYdrTݵ[uC\;ZҮSy3ݭI\{$>;*:$n+vZX?P`b҉zmŵUIěLs9o-{rcU}<^rظGchH~yߌ#j,:c7\]t HƮX6o}aJ&܀͏czs1z\A[t=:FBGuN7;zu >?L֩l:v19*vVĵ\ۋ^Qoq^* +)lu=Gia[Wñ[}]sFѩ&x=ꯆd4rc57ƦPϋ9I)[|FFwZt˨s[soubSs}knj͹ܢܜnlgOwv\۹ح3۝\8ߙB0v|OiجS÷T= ^)ˆoKM~^w3[Ywt{ՓSmg%nwv}=gikɞux.'ۮÕ [i`OOK`GhA4q}B{8iXed)^mgFTVttk)Xbi?-[b +RʧEr_jCݻ[+(ړ;0wC@7n [-$9B?t,jyx|ֆm>Gss +h<ܲ% Q rpJ=6m}5o\5lmU](s*鑷) "#{SH"ѳ';>w|3>jtē<{l}n^3|HϹg k1""@:avF>%k/.u,ZXܞZvst <*Rd"hȦyjwQ P!6p?="yx,'Dy4y8^e;|i }—XN>+x씣 y潟Jܿ=^姬)kv~"5Hn`7=.<^ݎ|cb"gчA Ӛ<#iĞ*]2D4ӨxQƋFۓDHdbZKˮHi:~X>:%QOꅮ#z^<ѧ03':Ο;ͽeLӫze,oQ惦s3&Y ;Zw}y:z!PLMv]GG<4&>h?g?޹ߛ8,xr[ ߋzbdyLeJˉ2==dsیѸ?m~7yAok*2]k q,IYq&kuiT弐 d͹gO>y'@ߒ]?/zM |Ӆ6:H5YdMyZ@vTmfxn9u=#?߼߽ۗ|>ۛo>RW/޽g\y߽=ށO! b?Erd<&fɇ49Ow +?j8_~_ڍϟ;գ_=zgN{_\}ww/߼~?M+͛W\|l_|W/m翾O/oȢoUo_4qeQTE&.K,z'ERlgUt4C1rst1cJ<"pXEV.n~ei .u9,gB uaIÁ/ZJ-ﲦm3/c)aiNMV/M޻ZU䄶и@Ercү,_iceJs3d@ӎ/s {'Q}U_6F7M|K~.sIzrz#G +%xU0M49[*jcB2&5&0aixZ>c:yS!'*XLyarZ/&^VQDz6oEpo'e{~N'ZVI6Eا'(EAR^!BchkATQȢNyAe?X f6I^蝵&z5m\|:yhdvKgRUEH%d=/׫THs!Lq=SmrվhEE8AVBx!5-^Ȥf~jeLd|BaYFV3 +-8'4 lNpUB@"%n%22-^ċ DÀ ABh%/V3Z7$^҉Y{*]A%Z=L_Z; +!p_2hZ,Ot9st( +{,4IPnx)މfLJ#U4TG\H}B(-LZĶlX*--5ICGMBH[՝自=ۡi"M޳M[HKWYPYzP_a . @۸Q\: zEQ9ye<RlvA ?[CŀeMfOx \hIAu!.h&>l̘CcqA }FErR}~ :UMw\=zG +W<] !wUE:ދMUu*![2B3HfP=r)E"J2ǭfX>Ja+[/pF/HAuS 4)=0+G5_IyFӾkF@c\0wqhT~ oHF`w +1hS +3GՏVҴdCBAiDzt(DxHNQ~*OEC4\wi F""TeM7{Sm![ )~g4B"ukRbToRCv#K,^ 5JaC*sN/aRϮ7S2`o䗍,4-! KpX@KͶȳ dAF<#Ng"[o%~y9$/Մ~ u)0RɥKRu1. 8U.-H3P?ƺm*X̤.(uE"s7㺘xO/2K*/4nId)P'6Ox ,Q$GM&F'XZEn@דMZaD]"rAM#ub?k-҄y],>! &F YZ T9)4N2Ir/*4~tmݸ`@g LfRSi :',cqbCwS+;XP3ety!V#W̠6e ;u`fOѴ+9cFoKו #Y/*j7PƪDtXqEn'U^Ô} AD=׷ΙYi 㰡SNSTmlYp/(1+kaB34j,*P|'RHi^:3EBELzW ~wŕ _nêm_h`+j;x$zBhÑ-_OE~HJOwo_'WW_|W~n@(cEZ,Zh;A5X~I Kb-ȞF/|#z pmxkp4SĨl~/,%oZq[T lRZÍmj3B:vBqwzɜ3/.0 P^(4~X2LJz  V&]:iٺiٺKr oW?~аD{ TN>P5JoA5 X('o8!80ԁ@Mçl'[[mDRۍƴϰ'WZ=+\60&)f)>G8"V$aLܗN=k7a'4qUא%# .%@Tx( !E)"Υ7iCEԢ sc +S Q/EkUNN* 䋮&ƃ|bj =;Tz!~5>,o+6\p Sާ"v.ICK+`Ze-g ?8]^L%ɍv͡?>݈Fq'!x_)tj:Nia٤!Hvg"eN4#O=i|Gf,m/>Mi-VӉv#KRdb Vq"fM>@tbDHfz_jJ'ņJ:"uLڸO/lGT_!gsy n3:c/$Ʊ\kPn}\[mI՘FMft@oQ䨨lCYAnk%Ǒ M;K7ӤOKy%nP*! $1Cg勂oQi}Է +x9Mn(Y6 f+6P& .!64<`"+ b(C-1~VDΗ&Xe54bwCT<Ⱥt@n7 +;)Q Id/Mپ $%U/*OWZ. 2N׊x=yѤ),qGIlJ1,m6 8k-% +-LaAۏ=UQzLOWIYBSSP uŗHNMV0A’=VYɹkI1&X=܉ +֧}+f82QfLq"ah4S`TԷij9[K %r0H<1meW/V@ xZ7:QJ`rТ4d%cmLGc0*!(8^ Dt<L14 ɧDRva֩6O+czQdiⶖޗdCW:֎"I!Iâ`̷_@wXPSV?^pRq,M( ,ь,ީ󌑞9I3~ƅ&ec_RP=+0'3BT3f7t W(& V4]5aÉP"EQCDTH+d6ŭul`HK3Z@Dx1Ҩh֜~e]e5Q䵲R"d=Na庢H 7,0NB^!oڬ$_鄝H%TO&va{8n9<~ۀrzX%"#Xψ"0`p(fpct.F!PbQlTtO}Gd4>.B3jtl/eD5T D)*IkbDć2uU&VA?g|m0 &Tާy(}ArוI0  @`WmBWir9áٛqɫ'C%D0Co;̠ SgQYeP +y ny}>;-L]3pɄ:##ӂbrʼn)>ۿ/5ʖG+È  g}RpiKkX`]!!pn*T"RBi Dy"h0 N4@U&v%@Bm1˯`4clf#ÕH.we +ko=IO[>G˄M:W00ܮ\],tu}أqi^*!^{ms  +i^ T``RS"+q1C4EϰR! ؊qN}V-Ak uPj= S\E3ҘaMM%B̀ qUx$^62تZ-$+I#ptX] Z:ʆ:QE-5|Ⱦ~10h^b~<*e u_Gpjm@;fծW4Z~O96Qm @.NN9.C^ AҞʊ tlb3F+.H50C РqAgD@)@jjU[j\eP]DF:16p8cIIh6EûsF`&3fsa "=Q;mb6>6 VYkefj % +$;&,{B™8gk-3g3qqeߊA881& $2b"V a)9B͗3>!E +hm^ 8|xs1peJhaȟvUI(+: :¥w  +=ߎ3DÝQ8(n?BhDv#V+ hހ" V 5F,.bRAuvԎ8J{0Ew90E8Z0LulST"m):K,gѦ/HovزDDGI_:NT2LŶhc[ Df -dYcH|#JA!F'">Y^Xցe\v/4H]f}|:ѐZ;NfDdV$MAfH$8gDӛr ^.6car3geAތOZ +2ݮ (0L2;i?3~gh[$1kri7 0~ -1#Xbz?W?/!G2>}-Tg7v풬wm*Zuy[ɘ~ +XLs웅7b2@vs+HO$#_ %slfgg&IQtU4Q#C`ũFxJzTOkSAÄ36e@j;+O[r8[Ȣ+/#ӥXA=6SWcۋ %ʅ;z'(e,a3TzҸtpIzT]VO: +o,װЙfd,wy/9 +^X?t[UM-f@aĆ$3G [OvLi|^ۇ'!nkiO +HSYWƑIGvZVƒ)f*k(K䳊If3(Wi35HVlv:-Şq^):*5 +l.a6دџS9jR=NرS@m p's\A3m'm.1WS9*ٹ;Aá. /JwK;#h[8]q3nE2O`9J|ѫ=ʷroq `L0}۟ fRqckfwC `q·BD8 ?őv R geh`bFg΂_Z#f=NTPJf2wo&u%S_.8 6RI}fi 3"x +g Emax< b"fv(#Ń+(l!^>w2o. +%4>[Ă5ׯxCq 5_Co<,3`U#IhAizFc8ֳteZM k:Cۂ@d&v͟%3p,)$VC;'P5]Zz:4%52c @UhEeOda& cbp$.c +H FT5"ܨ)wj4A(5qU @-g@(a782+3|M%ǯ,uXl%iIp .c2;ѝY7AFf7'2s9%0-L5k'8J8HѣVGe\ nDbLby=}7n]9-(]7aE6O` lsJJiZGf4|ǩ[>v5=t$Tk)ٶsu<ʳ<1Lxgh'2~6Ag@.3)MHIoHpșO$Io0vÈE +kșPH& NMV#= ֣ LYqE>/a}Ҙʔ!yDy{1(t XLLq +fla=K`% z\KReNzˡ+PAgu[E˅t= f$̫F!$#WǪ`NDwV*ļ GǘENdVx8莽M|%S +㝌ak SH^UYP:K +yGLhQ㍔5EpS7jvmGҕ"Ǵ.7Ɇ r=#, 2W q94@58;DicRеHa$qckYi&bY_{OC; &1-e' X 8&.hدLُh0HG=I?p.sX`4mIVbo %8b<=7AnLH ;kѦD_bWǩ +U%). 4aH,1]O!-\Haz ozQ\@@ +'_k/g4nĩ +&5X'hAPnEs4N@u :qc Edf`FD.D^A*&q8+Y^E{jh09zM..$K#]bO(AQb]%zބi^ [|5xDhEϘBa;!w3{F2}~ d APPMι^~ RjgGd[Qm]FaFi &]̰ 1#G>MdYj 8@E\5`NflL!̫WlMЁBBLߪ_Ӿ"S + Zliψ<鼤ly0}W~UG+a)'s^URV_D.CG081[2HB)߸3?XA8 )OfKmqܖ+J"iҺ잙g?AI'p.k"ęf\pw3#ӈnWld<4\D%VpAgӶ +BHeUѴ ?A":lO*RP؇B32[GF/r5KsA_,xZwZXlD 9(vTfIQQזuyxN8@uf*6!Ŋ? +3xQvc4Eofyȋ1^;T36*fŮap;LE?!O:m '+"-3܁=*8wب4J?[x_0C_N(Gxd8qq>P M^Էr鶛!d=:VTY\?V1;ZH Yzh wE`\iYjcR*/NmOT-.{BgArQ51啍*RO"ǖLei֤/Mؖa\`ǻ!R9])ҨCv^=s'ت\6osdqAHe==YqZGW~f ӖIiNJ Hඣse0-}<hNEDI0u>t 1ԫFfc(glbH9@Ќ2NH:H*wq1{+(OzF''Jl8N:IfH`*v1yvRHSAN%q3o:+t3OeX3)dAi@ӧJwu0k=OFx!(tN*n,[W@YEԳҾĞdJ3H/ +tCEbNg:H$_U23eU` ^CAurKɤ Q^|*p뭢K. +M)zEE eΤC&xpoqa5EGUaF5ϥg$yjPJ$Gc=M6M4J J?ggF\'d}1cנKzqFMN6'awwpmvOD+zZ4HfrQC ^ApiGb1Xm"AFHJcP%h7RCb6R.`7WAͅ>tZ N8)IbVيɣ##xzW^\Ѿ⸌ pΤ ̰$\љv^\BCG\x7iJB[PRةt:'oڬ tSe=sƢPƨ<S[% fS2TJz+8ƞSRP2z9|d򐪗Qʉi3!rMz~f[`Y&:% V3u3䜝u, $vؐО67/Pl҇\ 9,n>XQcCf\,NBH= kH+/)Ġgg .3܈l:l@2.jL#C ݚn;3\ ~M/Jlsgd\*d Dh#Ө؆Gdo,(r +bh:އ[:!c%h8JHpmp\DRx~Bј׬ZW[zYɧr> XF;gw7O=8j [ԟPh$Z{__z!quG9_AP _P8UbR ap%1;pB2 RpNtNeLee+-BqIڜҹƅH==GD±oryghj]3PLr]Ը:٘З."㦍j a5 hSRZ0Bt0CrU5EOJbH[ZG{MQ=JXg`Vf =MK@7OO˅Euk**^U@rU=7bm+(j" N0X6 `c=pONż@9~⽪=~6SM8a +%Y[pIݱRRރHk J!0kutdGDdRaL3\Dܮ*KIjh]uUtָF;ŽLD 7}!I1wW/H%g11upjĊN辐άx5*y +1F?vBL1Rg f?6βlS)4G%kN$htn +h |Lsa$F?Z<|f:*͸C(`FAGCd~ݐ1`Mt[RH4}vbēm )& .< j-`lf3#w] +q2>Ff< Q9냳Qr%‰S~ari tΔޔު5zLf`u?T 6lgVB7@S9U[#gЬŲEC S؂i⠳+٢C̿'P@W8k_WL4N>f$;b Y"cg6 + gX8p>ibq +c(`x5 HVok* +L4WF:C&q%=i D/{;0Z]))\!{F ޢP4-zJ3` qQѩvԻE]%b݇"HϲyPׄI LɽZ)G隫K>Qطvh@њN[W&DUsF*X,\lQ?h*CpR%'v5=-7O !9b4#4mBP9F7!P' .itu뱆aDP*dE#؋ +/\!ژ$W{bןן_}n/o|q߿xwݗO~zƿPh>@!uh/aU6ٵ^B-Vjz) +p %Pݍ +c %pOǂk=F'We"(7a^QQq-F]RgLP[ٟQ.1}f rEt~`NG|17>C5S3l`U8/  bdEۈ7ѥ^{6 n VSqM?ҵ0)WA*OLS# tHKl1s/gSt!6j!1A.DP0T/LSR0'*hp6Β@Zi$L#@we `$uζ.!9 ^GgK0 @%tO ױӃT)xJ} #ǭxe%z{~5f)H=ۊˋI!{M#B_^:Z]ƢjaIV1]ҀYJْEAY%ؕRj,Aǵ`D#xd*o+X =`妀upՆU"Z/N2ObK}#iN! |lFO -vXL  E*eiF^[)N[2}0ߊ^l@ >r!00HAǴ>2Ɖ8vm cUX,ҤQ,;'^O v4?lj +wfՅ˭)</=}s1#a\oMn1:TuhThf߽ƀ{Zw[J#ܥg8 2StljA< ЏH7DT[7NpbRfw^hۣ us&T|4WSl!P܍t 4o/~RWC.VϞmR[wk*wMO!zHMzF43𧢇9T2@3zz_Bd@m5$XVeS>Rz+*ON×:v vع8XWf]o}q+ph(\Sapdz=sOr?G{.n?*U-.2GRDoQFf lkaKZ9"v\IǢ]l:=D/}gJ&-$]ui<͝Yl2:iOK?R LdF'E kɮ LC0"z0l!wJ{z94DFiNH(l1=j A:^^pJ*%8eZM3Z8NT@eץZтj$p8f:o$&g)ڷ&̽-F,!v,,:s ݴՍmBq Dŷe+}0]sy%ñ%g8` R6fRN ex\.9R. P6 P0'BSڒUMJ%U\b[iX%+M +%~S\aJrs? .ѯR} 3h|"Ag^_c\zs)A\0xj9`$C5KV\*"˟l-J.^0Y0u#\xѮ+{sHnęNrVi|띝?SyhVs#!R +HGnӖy`қ_z3]dAP:@5Fb=xtz~p/غrS0?tc]z&,tM_G-h֙=_tH{Bp_מ Q_Іy8J|21ͪ^zyKS MmuL8+Ȓi٧(Ѱƅ_*Zl &:*@Qr^AxC#oU&AWoj3Tw1'wxl\ +kbbx70h0Tߛ.z!}C +iY$b %ND}1lu֜gMEc֯}ӳMvͤʎ'- 3+b)?{g$r]٭ +RoXcT=??B*VPHnnfڼ6 مw8'#cd:%jOi. Bd'bϏIc@vSyB }/u;;G<\q89sX]*hinXP 8-h|mH+.R%3楿 JVqo߿KyaLCVƵcЮ䱾+:Y4] CuA%?C[jT|$J j>% ImC#dvB旰ޗiE1tC*'1D<+ d׳Uˌ"ڷ:%6lBpKXPwG׫EAAVW}".ٹN@ysbߑ=S} \GvD .@0xS8װw.吸(9U>lWToP-M&vLݸs#)jє*Y-jsViNe2D(rE x#[H;+Đq α9!~t$&(C(qH!V2ī?(&:vCNEW0[btRC KBg-^A}G|,Ţ ဪ+X)"`v<=;0?,ðj/Ne`\+~70_oOH)!RG4 +xbR|jVaI 6 qW1bJ IUNeሁ9Ž3JThAA)UNI}jjWzƧ^)pmC5`B.bWNc2\g2H|U)=N/򤈹B8mH>&~}gpr@L_ ^v +|Dj魠TB^A'̩I:`K5flF@ B6U+Y^aϠ7*g?Fn +Sm"tjjS|Eb>zFKuGԬ5RqƉ(jay(4=-!#@ f:x{M !+؀a?oYׂ4FAqQ|iyQ ESP4D"ZCQ/2nGQ 1CJR+w9'}uS:C(HcY T6*`) TaڨYK"D *8{Tzw_Xm3W7;.vt */^iJa1:LIM?-急Z &8bd:"Zf/*A#wy4iيKp9Fspk RKKsYH@JDr|zw +cޜal MyմTT,ٝ^2iӣZ0@̷uB^eᥢIrb͐5S:‹TLˆ6aNHJY/Fn!h| ~"Fۈaϥ<^ L 㰸s\(:[2Qԙ\6lnkV@ÆvnI +x[ܻ6@vM.\E6z/ݼz*yBG ]$:LR nMZ-6o䗇2UDc;%x3%-́RMxR a6-P+|gWb'4i#x)'ŦI &#M)` +B|kpոu_9KE2(:֐w2vۉ5 Ŵӕ8`Zb>PҼMS K2+ ڷwJvyw5-8i>(J6+Oq'{(B*|=r%qד]n%~Vo"p +Y,i>Wz\aڳnuv: %B^|nsd9mtk73 ǡo uyuy+B'Q 7\ό&~79fX4zz# Yhb8$ bMSi1Wfꊲf+l?`87J6Ƶz]U,:$$7W 9ƒK< +de1&yCM)\5燆#t֐bxunĘ +Pݼ&.+ Q:u!+*]:z1owDkԑYPќW:IAC藝9P'{Iz,W*Ϟj%Ξ{vHW= etAplZR;L0?qC16 F)qǔy&X!°)@Jv+-#5 &=]Ԁ,Pni2ssQm-ٔ.sc&`Dr$BqK!Ÿ17i2PDlTe.maB@Ah#W^hhx+_|=jwڒ*U@`icBiO3_~njy?>TTJZ'| 45FH}IpTvZ/ViGp4͏fNduЭ7Kϕ4bb('d98B$ԣ~3A?i0ʲk"h,Y(=9o.+ oDwOE|7Hn]8N7D`-TW ` j`"duݣJ3!:Ep`#O;dPcg!˱5aŷƸDN8B8.gU60]Q~3Siŭ_j$/s쇓+@,l&>QP]3aV*:AId_5Z]S{ cv黪{tPH"Fcukb*{EL95ĘqAĔևakqtxkPOI%脰'@́ + N1`(4pRe4bT^h9:<t 63P`18x4=ƾx 1\J1Jnv@ !(I s"9%W[ۡqDMg+`rz\v ܳEGBh +M-8ԑF,z5OKQe!TJ,CUKZ'jRbcoiV&h F!kOR.28"x%hQMS񌘀D7gCxJ\rx4 yf-GHs[x09?b~t X|>sR +L_FU%ސP $z1FIVTB_>b辕fL'|EWro;V&̍A5@nYw!sv9yk4Rb-( +d*y+D+~|''im=~} La9& ccp\:N`Igc_S& ~QGRbyz!yGtO?* =s/j44.LA?`٩3:hQ$?~ ) +~Qe+?d(!ߗP2FG>L㡰{i|9gT# U瀔7CEywvtN5f0cag&u?XēYM?^ ԩ pNs=75s^Y+? -+Нq92?&Rp*J)@IJ /\P7ŋYϗlB SGSx/$%~ +rpz][8v 3+3°Nm`~Hޡs AOS`veiac3H(mi?i= p0蔳JX2E& ڏLdJH(NՖ3ȼA|1T!卌ҮobD +7_Fˑľũ10}4x:E` !<>Ő'i/i):tn8w`4l3)£2uwyrph3C=V +\z'aICtXbJtr\ Sb]}YDJ;ymg(,䘮Wb|:Bl!UPCݾ@^ձ =~hP(p$e`WW#3BTTM m +j 1ʮ7NUh !"-кp6{e񒧕F{KA 3L%Ep6-> ב +!ksXW\A^ѽ,B +:ctO#%ƾǘ&ft{H-^(EG'YD2k>#EF,nѱ/8rX0|h܄Z=*=.V{ڍ>,,ʒ3J%fX X!KdA:f8mbL$5(X@8LTNZzn&I<42px)SISwVPuȧ7ygcQքB?Jē1=fg)cZQ1&CFOOhxqXGtL: 0UhDW0_U;[ޥ;g)M;MptИ1iMgUuH-69[C8 +:+|zRn2~F,!(\9BIތmFJx\:#mt 6!Bzl֥f[(1BJthWkK Mc +ąj#΋foIdQ urRȳcKQ +ރx o 4Qspj 2@2J_kA{|\:9nM+`UXRfcY=qlM z%4F+g0D7QapZ.@+n+dUd#ЁS(\KZ +U|xEN]! yM-- dԜI͗(?D=֨53B5 +NӅB NvBL҉,p:t ȹ0L +g@g% ,C3TE@`+8Jo!)?L2L/B6'ĵi(8^#>bEGY ̆Jq"T #$Z omhd}˰[m=?9:[?B#o3ۊK,8XgHаԸ[>r + +m6x$[`mJ$Bĉ-/!BQrTfpct鬣r0[*4GO &E 'HrUG +e-fIy a5 f/m&@y=1Cp!cȷuTj)$O 鈓Χ).^Y[;kfT̛_Y} /N7ճJ[<'!6}>J' 1je 'ʾ~=XY;Hl?z1AQ;5?``%>CC_OL# 襖@˧][<Ւ4[WEU72)d7= # j~xfIE? {S7́Jn-(C[%jwO#FvNV,u k:z!@-޽SF qAYǾ9'"7}=Bj3B[Z0Gi7QUbk#<3#4-cn Cm#5rN)Ad`I`M勈R`Ԧ:;Zc´ЀDwˊj9B ¢Q#Erx)\"Q0q2M gZOqHm A?Te,jW&6FS]cˣRdy@Fv@9tK,۹H»jtVP"FE5>(~lCdOJ ͒ڈ;"ɁvVPƒƒq?Gu*`xFw^.ȵ0r؁l3+J{ +Ash3 +zmG|Jtڜ^MFp4TO2JߛEwDv+vѲU] o+f9 0xݡPO@'qaw@80Kao?e$'VY:z \vS E~im46`Cw!@Kk/POQjETǂmvi ]n+@'9ϊZO[1I2*!^_s #)XbXd6-Gv[ V4wA%+O#κ]ۤufB=hr@2{AZ ʂt; ȪQ + <7eKdֲPҔ^M 4H:t[#k-9:u2HR ~)J7FQo?Ȥd\eBF,{IϮ4^vj*"-0V@_ }&fKeQ9A]闒 #͔ᦉp IUHhræ#K5= )t!PDϾbh’ |}Sj!2I!L|CspQuU<%!7Mi7ЭZ?/rg,|Ɯ$`Q0:اA\I0ã*#SS[WGn鰮B嘲dwRT*Iɾ. +FUœDv~ +˥jUVH:;Gk[|qR:n$ /i4tW!8 k󎲏a6Hg+u!QPò43ʅ-I7CN,@%%R'</-[>Y)˜3쥔uqqܝChU\i-UՎ.ގ[k. b-PY̡ +`J +IpY(<YY) :+ @; }K ۳ ݠ;]WǾdG;Gf~oV٠T!:}uEG^V,stL}[LD ngva(wu2Cjv '!h +qOZemrw[ +Szz{]?o1Uσ>^|NFkQ |J#"~o< ,Nx'`{&h^2;v$m&2> M.z.fynX$:O4Q3 ^{wa1n6 +LfpSr&)>m]Rni3 15a@n!uM5!j,RSu˖7=E&-%UT⃄ Jr4x "@ +o>씗ij`6鋥FaYoy1{y29:J#mF.W(ZېW, &`w`IKY& +n3X)*1f6jSRC!c<>Kr??y7g%ד3vJy=Ixt`Z^(0iĨ&tKYja4_O0+f E>%>[[pMo{H˯t| % E'$ݬݬσq(uuJIO'!%H>gb6kӬ1>>aqҧfOQ@lU9O^Jh!h +*`MDu_}yu@aDhpY Ȑd4^b  +& %-l4 EJTw`ǍC]-tA, e& +SJ4b`ǯi)~2<1R%R1)-ؠNJ@j6ȊXטتT -p:˃W@Wa_5G*GphN{4N!gf|̏ܝj{́Mj<^ClaSePxJatZ"љP2ިؐ̐)\|T2W@gRɧġh7 o3Bd!?/^]\b=`8tӊk4GҐOݍjS].i^Ѻsf,ExOֳ'˸ƣA{24 ްIp?3ipY' 4PAѣ#9 5]D;ua+ǚӎpbUeg.؂a9Z'asBȳr6ڠ~XoZ:L@;Q Cx`X5(UH&V(Q~uQv,b*R0 BPC2pʴ^nlv Q?^8@|Aq]ֈ N&q hB]w}8(3/PlQ"WBmGo +i„fڿ~ǿHXALYR8hi +4XC0)iwna)hTcP7g&+oL~:KF/L"`{-ĝ$T*3hb0XhqьhKWn +MǨܾǎR 0FO I$]b|63ά/}a=S,:)h]RŌrEu=ZZz O^´% + X{qZiv RmV Dy1U/ZIM${@_@$ b9NڧhоIp7v jQיj ὡPpjZ*RJRxƁKu +NHqx2;?pH!d]l~ܕHCzT+VW+ AtbP޿+/ň(P4 ߑime2F@|7VC&s"Q'8u/zP/XCXܜ;$FLdUG =vmԣZOak^j Z$Qꮑ}b/~];&^<ur#ػEl!2X:(P06;e!eRR$u=o'iZ G,ac;PQܪ";ckx!:4QULu;)[nEJJնYH$k<E%>j`Y$TW#aL'XԐS80Ttk+lOΧ&.wPr88E*,g;X㞀Юa)@͟5`iGxQܛ ikA{tNk5?$[-yHz a~[܄]d=P/WBtͮ|PlXop䖬:ʭoY:5&á\(-JYhPo M('o:&@'S뙌-=ujŔJ  v+VDh 0c3U+ؙQsi;MRfC]bD0Qdٚw}D0ԍ81'GtxT DmB4;gړ"ÞYgB+fg~ꁢIZNMȭEU++|U+^,1l:v%9]t-Ofh:i!Ǚc(h{=3.v@}:UD +(vkM]<9P+՝滒 1Mf j 5%MqIXuwQI1kFԳ~_ܧ}` ĺ2e:w)8[#D͗ȧ6FΛ]af@gQ|M. H5 lC @;+T`W{]ʼ`R 奠+gnfn}~lt62=:xrsnTs@VL +zd 5|%~Tr'<"Ǐ[#NiyqV61+m3A؂LDAg Ga|l"pzv;@w֫S +o21iFER t)8F6|X^acсca 2FiflF%HmMYbcg]S|w#QƀDLVa:jyu˜gv@p*\-I(|}s?..2똅N˔~߬ٳl$,8rVL"ϱ)rM2~Fy- 8峟p,,3b=RHA(DFB"Dgc[4?_KYVK`W4gӄFP0:#¥tRy{nS9a~&!@@ D8ha/JQ`zftxR -O҈L3t ;U z8?ߌ$>ކ{[%s_L:E[>@ѷL.drDE`"{sͩP[ n`]Fd-a}Cr +v*MkڧzWZ?bwKk_e%E^`! 6;Mm+tͱ,@q3xI֊ٞ*-&rU 5lPbYKh7o"`cyW^FyrYM%}bOȄy@A!7)C8xfˡb999xvj> vT{S]póp\ӈRCXs$)o4hF9_ ÈKU +(ŜQ&foļ{5( ~Q0P2A,1Dbb D 2"Cٷ@ao}R :W LdE#ЗrZ2'Uj]XZS)|JX i 6)LRQJNS@5 j%bja[Z "#fIt{ Q:v>̆4!lͮ,t؅Y苧6eQT%x,ծ#t +d ,ɟlõ*WKB; jy~-@%%ˢJ Aexoa}BDzv}G GyZAV +BȒJjom z@V)wD.|GMǂl<SJo '>F,f(Dƪ0$Bg7Tgc/vzm>Y%!rTO*, óZWCDTqdzaSNyL6U=tEX(}yU&XVEbc)g]2z@LJ7}@gor)O3fԏ5&Ϝ3 7`0QBjdF .v6!i*O\dE;ԨHBZf5zw5!K[:M 9rp q*,6Ξ$fP31߾q#WfkԠ'v>? +ٜfҧn (8)eu+ v5-=R@y3vg7{Vѥݾ|>vVlIЧQ +tL?҈ nxF5P6~ǰcc-NW1PB|$siv) \L,W%' qڌӬOxמ wEDqR$lO!!HK@E0&1 9 ׅca;Aus3D?姴 5r`uWKov3';28IPipjv%r ~^󫘍C'#I)IHT~i/=䉅H"₯#2xI[SXt%afM3x;Cἄȿ 2a3rz|_Z ۸@{QHY*s -+3Gƅi`(_a5>YA6L[Ժ 49l[+;֏dB70 X/[5"âp#P}䡠\Vg L mA|aW3= V<ѳα{IE9nRtu"/?V;$>&Yۗ5AhRM,yc L${"ڛ[s;&u\G"Z +'G)mS+瞯˹_-ˀ0eGKk<دQcrHRRֹTfZBzZ:0 +/ GOe@ܤjlHff + ~Thsj!v o.)Г4p"!_C0ef>"_%rzs9qr#Tn, Fss2J=R' qkP /Oz/bcCN8Yq"9T4eO< z tZv#^nQ~]tFu F:.v<mE'ˇєYYw>2uPX|P8wN*ѵ7{I %&/^`QĒ%K1荱V%]čuMU7۶,Q} \8λ[fT;3jzC-0\sSA L $ug؄N5 )_2è,(xsOJ mΎ$P:aڡ[nMF " 0+OLjnIkh<͜ƟA=_^lI484N8SP20 ƣ[~}d / +u +?e#Ra: 4g, 1qH=fַDT&Z+d*VB- |>@j9['}hb%(H7[Q[_Dp>Xt=)9Gh`ޱ OE $()pfՇk^_=H=nzPv+Fƙ vF4Ac6_ |)0XS_ѵss#Okdg_DƩqp\$ƊYHA ;Gz1TCE +SN@nW h8#Qzݍ$@٠ۘ_*C\wuK/ٍUn1;€,4š2gz)lײaq= B*ͤP"[4hsB75;ƵA8;40S:$N|DIvIIv'-PTڃk)(̐4dw?tLAP@|_r$(˂X8h ^ w)ZuiڌFVwX lj)r ̣_,UDh=< -IQ"MoܰQ#DTBSB##o3XZ'o5CLz@Ǜ=N +_xi7%Vd0pjgbltxN$]@2@@ 2#ZEky%}3|=L¦_s SG@- TT@uB#CxW}!K36D`taH:iI{2XBg .~7I@}S TU +mAAUZH xo!{bض _8,"> }yQ@6'$.Fr(mK dPt6 N9/;Z +"οiQ.:ö,IEj$ݮ&biD:R?7[zjģ--_!Q}tdӦԊh9Uqae׊CzꝃLQX8lg]QT(D.Kݝ5l@^^K1qaÚPX?)~j? +6KGEۅP눬 <7~*sn^c)vfVnݴ8u_}{Id` ߑ\S!e + A+UI98(2/VU UW9rtҒ}C(xBdF + EŬC4|vxH-7b>TF3G!h#"ȕDh9ߥA۠Q˙`rnu !zW4 έ4ȁ]e& +V 'D)$vD&(\~W/wA|NxCmx`ܮ aa2s"x<#JoSL;q5O +LܠSIKܩS4v=*?_45H|(ԯP@4 *#RBvRSC)5h*uEˇniفs67{2PҊi'\`)V#T9l@I﹩=L9S/=S0=Q)R@.5򻳔Ev9j7t),l`n4vD3"RA,s#Ꙉ$Ӛ& G%)nKxLF2rKUuHSA=ŵf)ꀓG!'<1yIy,Y!(ҹbW/b5Ǻ~־=dEFmԫdYړ2K1<'xBoB6JSE3MMAS/PJːAxGuE+z*J3_J_[\Ǹ Qc#1n ۆZ_/=؈923:;j^+H kۦe)*\TT(%,rm(kI7th4XbvG`1~i?)h=¥]Vh);d.DQ Ha?@1tDE)rIR^ h4#C~Dx˼i4S6:t7Ld0q)$ RڄRWj5fPhfIJàL `ACQ$Gkdǩa~X=;SSlV3|L (kt)-qTb0_聱(k ֫ ,W증 a`y(R4At2"KkRYgd̴L1t@(ȬWh7M;*Va؊1pS/ GdsQ2Ed 4`ſҠZ&GοuVϭ5.tk4(,^|R\\O:3R< VO] +JP + uXҌNBXtmDf"cYݽ_=9dX}O<^c'E +nr^SvB҃vR0$[\>!2LbEܡ]*V5{@9q<(_ױ QmI@X/o{PA  >Dxy,'dDKgo }}y0B>*Pv9? w'J$ei: 0ctp^4P[<&,Z@@jKa:ڽJ2Ťyu<"Ae=3?gh7EΤo7=uVN`I^&0|] p鏁8 ._dF d@ J<#ޣ6|8>|H^oiS\%ˈ{m{=H@DPqa$hIH:&{y_y|+J)nF %y]\hWn3+AGlۤzԆp,ieV\cOAKC|jFz@v]-{o -|yI(]}">EW[*" ଘZ@9F0˼O$([#TO l=B*F(nɆ +22܋יb7#N (:_])^u'xłu)g̐=Y?֍R0xBxPV:tVn( *=}gl ה\a@x,c28h)$\x("uzɁ +Xδ-ձcqw^ 0iqzatU. L5QhYogFBn,-X< Hw|.Q'\4FN"Rgv'q%GTL#V !3,SyB>Gva%Y } +C)NX]-RUBZD ԕV,-!>0Zפfg4Ls*DI° g5ǀT+25JTEW' qhDʒ-)C0w5֡aD&P3BMXj؋0BWc:Cfs 8ej>RhV>Eԃm3N҈h}ueO!2Z hG/7K\G +,)hW Nٳl5l}ȓZ|y &z~DQ3>cKT>ExVw8"sb񰄄v/"ڻj'KJx r4U[R%qU x_'j)@k!G'{ ĽQQA[5 "->GZQaF}ͼ}R˦=a4Ag;5vV fi}+^4D?m7Oh?{RŊV}l +5i;9zlĚryhDɊAD3wwV;#pyT%~ĿHqw\ hSEhH>v"g`}a+F1Dkj KU$5 +#.eu&Sch|]^9:Q>6Rl#Lhk4\hHv: +]D>6u=3\s~H6"%3.,E5N#> ^ %π-ȥA1gc.^Xs~_42:gq2(_hf#Pt(' 'e q4HU"#,8#L CVwlFf]*Gũ"R6K)T$ml|9ߦsQ6^/`Ud\eiʇ3q)sBXh4O y ppzM}{\h}B3H'y<Av~|㋶#u}Z3H\fSgT;s*"w(Db[2~ A + d4?0xVx3 Mة(\0w ЬYx8.\Zh[`pk?+`Ǹ ^; Elb(F| +d'ň3kCwz!A6HUR6}؉e^ >籠Ir(?N !Gwh]x)6OyjDϯ LDPsn8'Ŧav֜%#uwbC)64ަ|aAؒ_H]4yG%#uJBIMf bOp(: +xo#|vnOudw ʎ*tTp8ip&;poxUvk-螧@xtѹu 2fzW1e;ǻ )?=JgH cDC*/Xc_N ܱFEjkyóYog-ƭ}?cUEo;!/|O +jP Lk疢k{+80EdKAWpC0c³@d;FLx]Q:ؑF6fƠC7h~&jTA5vFkqqQ"uvf<## xff-Kzq\aRe6"0Ē48sZbC Q!Ǭ]$: ,* ,w:fSoWP^ WbMbx> +]Ac^=Gpp;P3~'"Sd + /6zZ/et9ێ,bKV'-,nlƫKeo3B#3Q?2X8h{ǎ"~;ΰD:/Fٲ5$g`6QS 3pt p8y=ͨ:S3Mp_ ,gV Rt}F[Sr0bKK7!U;2Fޯ ]Wֵ`rg<#I1-;M{+9(1`>h|V)m:Ø0sy\`v8XEod=g84=FvPT 4!)@?޼[n*U^RP"`޲j 7a#}8h^&_~QqJOͳ͢lCJcDHdVx=s % |`~޾I}Ũ w4c@l2px-QGA(1qe*T:lM5x"'̷B|QBH***sOi+ÂF0N]Wxhc={9:J'}. `]/4܊^UVЙ bVj]=F(czFD#@8X@D~ٰ; +uot}Sl+ Kh `SI1U9oKYP+֕)>L[*$MX,ku,!H8NF/3?ɯ/^ ̙cȝ&w[MӀLbx@ S.Lt-IХ{K+\^K{k帊ZUTAzfD'bT.FZLiUH p`;3/*Q[3كrՀ@8\=D+D+C%#åJ X:?TLU8/S̨\ +U N7OA^-ԨNNӾB hv/4CɮoQ^1yv4$ICUՙ&PԹ hxg7܏jQ^xT qKh4:U0DtRIE6:d^ݦ tVtfwZVϋ'iRÈ/ϳxnѪN-Ӟ1;%{ܭ'2( ƺn{x#ķ{?1B&L~Oa&JsP1]_cg1-\֥h$M0VЗ}D_ 3_8OIZ%w}ZPuXs~ fbu_';T--r#W.QG,dlBx5g=8Og}(`kۤa8!5mvXpUo6͛ܢCmʒ'IC +7e +"] !ϵ-陫f R Ul# rǖuLI:j4LZNlcjO +W O+{Xl MЛS}F'Qr]TXBe4Eq*l34 sD"x13 +f=GCe-(5Eh,1N胟4-FUA/ vZl +N{WQdL;HqNx`u{]bQ_ZQ4+-_#D '#TW>8*-lf&,?7Ep-$B!5FiMW&Uu-,qZiG.խgf,]㳥Q҇W2 ߿'AOO {J;w~V8iF6rHɏhMmOZ9_t={VP1^v3BY`*{0$wV@Z E gс'vsv&Q U% +}EXs"!ʰT܂1c . +Ul~4T1BCQBi -!d[eX%%/,_?ax+P/1:U%g)pp!-(ɏKhNAC Z@ ?ZcvJazWvߥHSgx8 ?;C!}@{1=@2={qk+BoYu]aޔϲgرM ceyWVu7D7Eh@2+3WQrE/[ľ! 0P*j!> kdm}GsB %8SU/G>#ZRRqI'6At(Nْbp -t!͘rE*2<1')HWu0ࢄ@XqNVE8J)<ucm9HA*6cNQ("([( %x3i8 +FpGGѕmG:\U*P&ذ Tޓթ%auHFwn(*DQ׳Pm!Nr`sd<{# {f/sըMbXh!z%@IDݤu vY/__zaU2^デ$ KmSAR)5Γ3g@'Yz`Z+DEOJBp >3\ֶU٩"}?M`٤B迪|3+@Lt{:H cRЀ喻"k$x2Ǩ-yLhHE:!Ir +[RMVҾʟ18FY#W!bY)3fnBxT.'e0`!3K5\:gAl\Y RIHEe$q5\* +P>9t +#A_n]O$qOJ<[qFT<$pTٔUĠ= +b^1l[Z65"Fڭ~(tBQjQ3a ypѢ=A9ւ|5hP +-si*SP IY/t)-K=ʅ=n֛_ZwP0HZأ =DرI~//@U4ȷʗz"BZz899} E஥`d{ima,hzw?=uJ@\+&BlsCMCX۞E6_74<޷ +msU1ʒ%:&- uJbeid{O2P 5дq.1F˵zG$cG3AHekm6?Fh6@Q礞.vYڠ;a;M0%f(UʠD#+ &j +y[YUVJpN֩:ɫ`ZPDBQ<}u#D}#ڗ Qq1+_΂@%gYrJ1Q=-AoZ(Iʣ2 RЊQsp:UJ1IdT3M+2(T M`*k2 Tȫ{/TEJ *T*r[Qk/@2TyyY,2?&(,w)lUE+iMŶ:9b苲tZrRGF-8Lv%P|_yFw-'1z91mpN"xij[;6eIPC%GԔP/{RZd=ip7+wZVlGK̬HPEGk"VĆY*{8ߑ7ށ43NSO0w=\mR fՊ2S-bYX}Jjkn;J ϐ`9(hfݪM( {-J\iPL( 0jo,8@EQ HNY/V7@10;L 1P׻I*ěk*ZJ%tVtQq 4!I2LxH@0Ҹǡ&ךK%!^CbPS,6l/-$42 g@$^ ŀd'[c9JOƚ?A +)q0rb5rt~l +Q"$i%E (B# ,ց`wz8:ur.P$K&Nk'CKSH"^9V1W> +cA"J07DU(+s\TF!ƯF^]1CʲmC6hc* iF8 SQʒj{JV#O ȋS oIųnIB"vc) f'*j+A$ZON?O.5e!tU}EU(@)N)Hf!CI ¸I)/L`b6*cV)aUBm[134 D:"]BjU2|sy2xU ḬJY jL<_ 3ȚWs* +طT>c½MVh)j"j-^ ,؀ ~Ȁ-Ღ,vJ o L4;Jk-N.EW՝b^,{@F`<(@Q3:ЇaZ &HrJHH.Eq]VkF!|M|X9V/R1T뎄F*upj$H V;bK U@v(NX0NIpJw4IBtr2R +(}-dN"Ţf`e9 `&M\5 4@ +-p]F*r'n +; 99`Ju pdk:C G6 l(*4-FP!AHWi'eOJUHpT +9 +k#)8=s'Ryj8s0m{u~,‘*PUwb›)އ ( Im|E^j$Tdri\N.FU?x5=d,Ȋ D?&!4.'e2C[~Ǯ( ^E$iLfܔeH_c eZ}HQ;f}%zK>Mj(HY1QznA9t@c5|@@y/-h3 dE%DXbXɉ0g'̩_S6u7d,ݑbB6 K/!AB,S24B/*(*3 \A=^W^`b^i  iTbU GDiU:=RM8_GX@:Ud& +|~B?%j=lTl#>G/i,Zʂ$k~aoS N~+<"ial,+`>\7t;0q | 6HX+ˁ + ׵  +\xI:Ŏ۪/4Yd!N6`j&V +:84$-ܔ͉>D Jdl+aD`'# ggxK_{NY {B樰@%Q4TH$Ex}ɩ0*Tm'DiO }Aaa@Ef0|.P!颦\&6o@*,t셀 <P3="0ZgUIlgR r4e3%&Cd a(EO@٤yEtbD5PW[Iyi$|^l$ v(ԍzrCyZ@t0z4AoExAU\pn+@1T!xEY2-/-^<@8N84IS*OV;wTh'8@Ǯaƚrl T/I +<""7̪$UpS +1y H:6-lEmy LDH7 6vK&S FP8udmC8c8,^FV)a VF-I@MiKĜ;5mjlWI+:9IwJUΑNɨPpڬV`K2.lTy(ŧcgר+%JeCŨ X7)5E tr0eUKk^hjnPwv|DQ'rF ȷ/"vұV(`*9J(U]*'Qwzr#mKQs\0|):MJŘ)" +wY%+` TORM'tW3 V_}. V]V`p#$#x~MθͲ)>ؔ8 bD)3MpjJ}TFn)A7c5AGYe$dr'Y]k&% +}ѓ@ήsR1 Rja3T,loj&Pس4Zm?GLɜbc Bnrv]:գzR+ l*"8xd."EPHL)X?YZQWk9\PiC A㚔8#%NhCe"Ga[ 5 lH"+=Sq6djA^#LT*0P9gs= [Q<QIȽ~5V ~'VĭyՃ>ı~izÚV= 5T@M /5Ɂ9cR(s8m# ğH h&I R@cPx|;I7W90־`b'|Ծ-8i ਄3r21ڽn9[eED+lJ\iO(By 8ky^>stream + oFpl^t7,{~[PW@b$"!j**9ф9޻QWo*-[O4'oHʥRb/lf7t#idj8XSRq`}uw{ͤ!y*XG:C 8U]pr(91ʬܲ?Lv@Ip +قD~^H hr0֮r\/QKJm$C$Ѣo( RVu}?c@N!Q[SQ+Ǥ "8o[On3-;'*w̜Jyr6)e, Tt389.+첦 >ӡ֢m{7qUO/"G %EUS*/"9,4iog( +^;+m-K(#Jp$q%iKEh m(܉${0s>ִIJ%pY6rѤpIv]8Q~SSpEU$oJy +p"O,HH$/ZFK1գ9;4}p( +ߘ,2Fx#`C*PΖ?A_K"j0BMU͆PAҔ'FQKg*)(@z%ehC$}&r.ADN5A}tl1WSx VUzE.ڀHlh"xR}'ںh6ITi[׉Zv~#@e)*ZtJoN9YdQTt)Z{6L?3wWה6ь7Z\NrM{8tJԂ^R2irɢA]~iʓ^^:O/WT[AHlv(~$rdP8k(\ +ڤxh,"4M*.,ǡ 4/x`׍+>Rұ+#D:6Ui $HN+(K+qz5oJIn]y?;P!9EM8:RQxevlEY]E +[։7$KGA%F{Wdqby,alQPU$p'Ft]dGQb%̀@:e3։P9\'Ia3vjYSTO<@ێ 郯% +XKZ؆T0eojѫ"oj3;2)b-A0-fRf,9H]i9Ÿd;8(->&Y ݻ"f,+ -4&5fɛq˱I JȑdÓޯj{AgͬTQ2ɄGxXmMZbc +NZ^\RyHYrvZ]ܯx{ FOZ_9ikTkGW8[ϴ̉C 'd TMh2W,cvnUpVUt[h ~Z7-J!#5  lDզ ׎b1MKpQSB wJZH,*®1ML2%~ Z4$]>"Kdsc\5Tûӏ&}K5sp8x߸-5 zhi#DqPAPhqK4[:{;#=gT>(cjG.P;)zbS' +NH0h~uAE%s6^/#hb5GB,'t|*zCQ:nq4.bOW8[{bFdv5w۩{Xd ,-T p6"^ )YxT%{HBc@SHB\BxkiuƔ'TIS3 Cfmq׊Mc6}Vnx5DmV<6 ԰:ZgW*9ڌrYV:US QvBd1!lIpܓ2g48B3 IMIT>:X(`l#p|ۡfG +Į$"CfsQ`Ɋն"fm@&vŨ *J$h/Hq!?S9wbkK&CZ*\(zv_r_ RՈ! }"@dq< (Ȕ c  hEkO٩T DxրS! +ؿH^(d6X+:^豈+MvQT/ma$<*ԆL<ឋI * o3Iɫ#Kڣb-+T9%_I%ቦI{T[~Q` T*VR+RFZ2vJA7dj]D-7*QTp4뎠IT-H'&xQps`TZǶ=$Pg.:ElC5j͝Wm2^דR{L- +AvəTƨ5gG7i)uB7ܬ>B1V Pb Q: *P Ն28B$\4x+$ۅxayトvw>9Fta,h_""2KK(BqѶ&[ل]\ 5V + AH<+q#A6FRG"r A^T%X/ te(FFa V/-:ὖb򘼶eSq0d*7VJR>ƪ):'iQ +JZcTVѲT/:8FW&x9(n*ZHR@I&10à~'K&Sr_!(²wk% *_z49hHD `py/Qš3(ROsͯW/eE~.FPڕ#͒ J' Lz4hTlj-yzQ)Kd/(h"@&)9Cu?q#wh5{* +tG/;Jx A I:nH ѽ[ڪadƮ':hQ􌲊Ɏ+uӱ`Fa.ac.]AM/BķQ86at-EXvh°"@{~#aBĵ_l0$ :'Etr܃y 9<&BJH!haknTй*(u4HSƟ"蜬M:NQ_fZ`swɣB #V6A51U`fпFe +-b6 L-yf{rCtiS 7LpqZ"Pzj#tv|7Ҫhzf;|'|s3Tj;utI<4^ P3YF‘ +Kę٪ҹ: -j= B0ZZ J0z<[ ~k# 0TC{% /2E(F@p쓀5%F ֒Z$raJ?/RӶ{#o +qʖE}PZ/W&}dǨj"xS`=:6#Jl0C )*dzM 29Ȋc,g'3^ ] +& sܺRXqFKBa)=0QsSҟbW0HLhZ^7rA.GWm-~.cWZ /<;%2Q!@h` YнM;#nb'n;/p^`RFHPGzf#ȥL]pH^V9GcIOsnOkHpS -T +ww7Љ4(PwۆmD"wJWPtLN!AE䂌X^+Ѣ(Mδ55A, 4Ȑ[SP2sѴWN, p}pF̶¿/E;΄79x*mQ<Tˉ\ 5(V~Ԣ~pZq dU$rciU%w)ܸW6ȕP;pH*$X8% +*%L^Xj9E ,0 +滉MA bU +*ML-}%\l:]YF,taǾ*9_I%ZIA&l(I&Ճk68TBvzx+;Y|XѺL#C5]W]w%V9"\aI\QhE)SQ҄ 8ݝE8d6o;.=8HxSZS0*5Y8ND9G4koFR(PmKAX_C=BB?U6SJ.Ac*a} K-n#SO`Itt2pa5}MeB[ۃ PhaOLԬDppJl) Fڽ F{Xf2}G$-ZAI +I ԔXã/6%y@¶^ 4U28͐VMWB)-Eԭ /ՅQ\%8BeL&@ $r*A"ː4,^M09/$AqB'E:Ⱦ yCy{9)R ܎ 0<%Ń +xjI&Wa_G'V<jq79l uQ9J& B g'Y:o- +PU4>[XZyV[Òp 8QaiUuQdPU' 6Oը8N;s$5%));{"J)}zOp—3XcGj޻85ȪAC2q,#ҽEAbu͂{8`` +<:..b$M a O@kHAIb"? żbc@mEd[jU @јL7c*C zB8m؊wXNȉA&}iPp[tfd<(E9ܷB_ձqf\wUhc>1p4jPd0y* ,f`*f4ZJ+˖BLj3ȡHyX{_;)&^؄C*U m:Fxhp +NnvS!t\i +Liԧ,LD +6.!;$̬; 8ye- kWwA3B49ޠd(o}7.|7< +WȲ /ʞ?H}, +MZq6J2qFͨaLIr|A ٭H֞0׊@*7EjzgjbvNޑ6&(7`ڐ]96(IW$ڡ)I\Ķnj΁E& {0|/)g*ױ/ldô>  +" ȭB iIyAE1HqO"eHIOZGV-Nk)h!vFmsq{ݥnVt4)}/$]Dw %E 5U2@1A$ֻjٯL6a>pmnby5+!׽CFl# NQE (Ia%+RP"W\$_./V(n~Laq:XI ^N#ȃ+\X~UG$aJEݔPx.r֊1\MQV"x`7!KIc +_O-2 BlS&0SOLLA\eLE. $.}&6:Q+;{ܤDj|B`Gs^xnK|<\>fyK)a?.6n˓/o˳ggS{^?.oh;]osݿ,.|H?_mȋs/蟗O +L٩T_񉚦ۿn>W==XQ_eC< + Zj!1I6hZj#j~&o$,aί1/_2:fx+%P#^2~?]0v+)ݡεoz +QtS~ɟ²Ÿ[nq߾ܬ,' XUDt ?Znr[@aOp}Pwu79}oP_)MkIJ!Ɗ_p >>PNk{:.t2y&_ +EP1}6;:#:S!28KҘUgY}Zuf;efKBAAtL_L\؍Ͳ~ӫ+OK4>LZ*<|vvr|#f rQ]gU(3~]e~Sl*σ%&\?:)"lE!ێ{\>FfxOZ,Wo1@(]iNF[s7'2mCsjofFf ]ic~GNVӆ-k:o-?/&.a&ރ=J[F:Tד*!nwխ<Rͭn`Qw,wW[;aB ޱ[zwՍq]sk"klύFO7_ܸVлX1~{rj_Mc/_?޴_x`8_}yqqt'/HVь7ٗ/Yg'6YGo'\+m8zB!~h~tm0l?\PBێ뇕Oۏw<|ruklm|/$Gqѿm7&_a([^/{7˳Vĕku\n^,_9a/kpi둝yˣ/wXο<<0\k57H7.ϕvrێrzC|nV%O[ro{byZ]B1.^prv޽o_:}r@u?~b6m>Wm:ۦgnMkn<Φ7M_\>8=8w`q''w/{eGkGgGl2<}ӣ=W\GR u}ɛƶl3au|u/^p~z48?8K}׭ca#l=?w0ߣm?$wN<1?/^^n?P627{:~jAY3}&#kڇ{fMv|tòaM$mah '^}@Ζ.O;9_y_w+XWG˗˳˯^.7zJ~dоxyd>Wv7c|u~z~3^ non_p_};  K_\,St|Ћ;JkTeovrr~# +Ow@s5!N}P\v_C>:ˣNExt>~ry]frxv~AswR׮A-k<>:=ھ~+H::;yۇȋ޼~}rttkMǛ̟K͞O.-sҜt1v➝q#wi{xrvYw{Ǜܥ9wi]K]Eˉ1.0.=lai. E>ܥgB1k };~3ayz>|PڙБG Z?[w.=hgݫ|~'Y.\lg8G!_ɳ\-rzN^Gߛ0t(!ɉ>yo71ym˳ŋ'X/.L={gl.50gѵٗCw*!{̇.Dp?Ǔ8촏D򝫶s|cپ-ʈW$wGb_::>.O;՗yZxnoY98s6&MD_=fANMXÝX)Ikp\ת,݊7.zc|~ś׶^_ \]x_c>G'tNkA{'/.Io/_ڧ'ku?Z̢_<{S>d$CVi3EϜK^Z9=Û=8r#"ItYA{RfgMG5t.yeVnTυzvG% ƈh9#CecDy/FP=^./wNǃyg?ʏ;򛣓LL~g'؞;L~n>ҙn侜;\}t,}"2g&vfW˻9tXe@4 fŷ|jlyX=j87oM ^]~G{)=Nc{,9>`{o_s>^{UO3 wt=qyGncl?-\}w]JP'oΎR[żJ^8Dz<!grxnw;>$veʔ>C~qI?3#T.Wc\ShOIcͻg>mϟٙБ9;W+39Gh͟s4LZ}K%s?4~xWǭg.1q}{7W/zc_|ֆw{Y?\0M| ݼj?}Y3]9ځ3{W^=*ͮٵ8Z] f_p?9?]^~q|] o>7wnlZ[ڧkܳ'2ܟt&9/'׾3܎g>Y>3c?}{7?DgI=0 05qcÈ\OCvmdV#ڞUmb?틐8s|S6V~Ɣ +VCػ˽/v[Ǔ绤i5X=a~X8ߋAG{{tޛF4{ofه)|mfylޛ7'g0G1pC.w>]kg>j=Gg4Uf(s6ϸgǘyi>(7vR|}N#DySuw<Խy0?[nyqeL8;M? AV vV/uϻ%̷Hf ȻYr`n3Ўwp +Fm>MҜ aG'ȆڧLhWvA:>o/fyvwe5+qqx?_}kkg^\ _NNwE5GO~F_8=b23Xުi .'鋋;Kk\^ XoL;gk:{ cہ^ӛޜ4k/1]Lr~Sj9s)xі ?]j +?d[8 JҎGk<喆Ϗܧ=yzNGlZl3:.f>}`'qO}13f uPg uP/#g9{>Yճߟ}cwA_>>ߝb_xji_>/?,,#~77O|w?.bX|/,G~la ,^~AvHwosRNW&_kUm^WL¿}d\`ʃn8XwȚ0+t/i1n_]8l O߯ƞ=?Ͼ /e_GS?X[_hMCӟțgCSL="ul4[alܰMq\ʶyT%VMv1>&ԚuI[+MgO;N7H'{D.b9,Me](=h}vZ9RӇK +l"'n(ٺSI]`R>$ w];$/OKLmC7 {q0&\ۓ9'sl&웮¡dgLMYƩ|MRܴ۝ve_xLaoIܵL"%բkV(/_ns(]u7)#簵ٕ:M-oVXG`C;*TױK²_]\Ҹ>Bau]Nc 5un tmoTGn#l5a#IRlf=?.Қb;MQlڦ۞!"aYӔb{xI: ]vK*%0]臜mlz5mLl=̦1eTzwHR}=yc U5&C1 ۳+l Agf]n.nUa,ޜ=_r&г[Ut(msV; ĺ(y;Fۆ8v&;}De(S&TE?>pmgS=q܌+y˖0 -mau^&xsml uyh'OUe8lnۘ1ɤ{|I޺3j-bG{lN;:yNу^OXڎò;cϹ~RC*C8YodOlD˜^K`֔%;7m/L!i{m17ddݰj򱰓9TNjmz8XK;u{bO,a1ݱio:MZգ]֝`k26射s-mڮ l![}LENViJc'z4Vgk?R1铭 i]*GW[!-M]UOMO2a&O7.pEYynO{WV_nSWOO!oN8 7n3|{z\'gY4nmj^O^_^|jLrcR|ÿ>a|ᕷ:w&8]plQO]o~rn{{տ])t+sTOu{8qx[[k>y뾤m6gVm_6;|!u_m&ݚ߶$H4QJ`m귍nԷlm?ОϡUm 5r]cD~ݶw o3vͦo:fo97d߾wއO6[v6}},mƻ|>Yؚ1؏~KPbNy+%r$.b24KT>o>dͽmb['6.=S䓵f$A}YiYK>ُ1'uldMHںg'$S܆osWFC~6v#3'Kb\!l乴me'Nh»hrߌK;득n.YMMk1]|edO%kkLC&lk#&?%pY`#{"-ڰQb#k}e8~kGwm|켷ٸu~upjϏH1:G>o>zҞLB Ke6j~0_=뫆2(̎<^ߟ]87m3&bŒ$Uk24.λ|A?{q'97Xۓ2[)jїBS3'U"݊imnXc-o3mbo-Ԉ&x~Y;Skۓ93E7FQ??B ݺRc.ŘK1RK1{aP1~[!zY udҡ +z\, +lLѩ4]"6D||K)huiFP|#Yr5z`pW`>(|%@dчlGsS&S+HL M{l}´a1W >6(Jd !+5_hh1}H ]&,hLmp2}L7⢝ޒ3$j"# +%mfuc6`z`3pG)qdOW0~52N+ʈװ0F=l4֙x&cǯlQm*srAr`٥cӃohTDzd|2~^=hveӫ9^-q+MMlsj}%姮o=FOL9%*q`S7q}cR#Y%nZ rt68F!+B0P2~} hׇ۩)ô7(㥨oɞ.ͽ_Ma-Gbwkgm([E䐂AEpvTp[Peaɓnc4tݡ߹;mrCc,^r6(C,*Izq`vS>i@&X_!ƸgrY)Bf'(9R jҖ4JtvsTeW>vmC ' ~z1h>=Lov\ЧD6,.6^j/֌G} ;SwF"N,ݫ~>5)")y=w5kz;|tE'لM_Y?{QhwsLnTHkM 푥^eOg0tk_Tm񻃆_6Di=< +# VFkO{4dqquSVK[%5mFAZRkIUMWS~ltlrްyEiτ)S^I%ddm\\kR؄~zJ9 +ڔf機統_MGE(ʧCԭ~kkwOWQKĿ~ϓsTDŇz>+ѽa=*>|jXku5l1mZ{dSX-4]MZvm ͪʃi Z-8 y +wf1ԭ?؞ϱ( +qVL8w98oQjmtC}K#O7ȇ1tW|} Fn`ۤG[dO;OOG{ꛡi +c9Pe:) e@ک0)4;vSۯ~=y#xȝ}k#ɔΈo WBxt9@>o7@~KD٦@6S 4u@(:vMTG +6Du&AFdu _uEyTyJ} ǂI&H1=uYhJlq"q+hӡYLQǢUB2u&"͎;vleYW\lzHkaWO;T7CC6s\/V"zmT}T!Pl1!yVjhcjpɉ6/v[LyoqdZ}{c)%޴=ƁUHȃ y=s6zȃkZ41̇Gaf=h5 e fqO\FڧZud3 :{~׾61M_;ĆbGɫq%m6{ꆭ8V^I+G۟6Z wy>TẉBLM][uԎ)ce-Z` +0f*+g<3}5CQ"Ryv'"'=̓gM͆|N6 ,?'sd5tfZkG$ۘl:VJ; o-hnn둵;7*̶{끶._ 5q3V<Jh+a1=e:1FF\yfj׃mkܗh*>-HUs5l +l͒CRMxR+P׃mɆ +hpRi5fv*G!Hm{Z6BȎ60"g-mzH%Z\`KkJ|݌|-D$֣Dws؀.|[=fvPL!ʼnO-1[kkFf(zO+7jUg&*^:5Feo#bolXhN*c Xe +h +WWLa%~v-^ۮFoqwUDn=w-"ծ 6qU-*l\Ԫ1e1$a& I""\DGlɸ +Mm >}|+Bݹ%]wtJ@S.)Юii16@ϝ+ݹiZmr,G%FZ3y^]/[+?7ӌU>JQO{=W0s\3Brƅq!g\rƅq!yˌ 9e/3.…Y, 6*YF$nG)R}ryy9Ʒ5iJ*~zp[W]im_DSB7o//Nξ_ɓ/߼|p +$S M_bX-.qh67غ'p?.#a,?UX9qy3Rծُ?OWL=@׽cQ!|{y\0 5s \0 5s \0 5s \WaAkQpk@*r%4#*)۬qm;?oY嶶m(E_e0x9;έaޚCwna|ٮ;5ɽ{[gN?*Pm3s#?O{sz>ϩ3L0/ 3L0/ ;/Ysg ̷y]~T,PƏ:J{JvzycHս zhɡ y~G{b6;@1Hc^ǝ|}uw +ܾ6 +XsʵA m^y\C[oCڼT{n3֋ykb9H-LdGӭ\+)gDS Ək|Y~Y?%q6sN851ԥCYd`@>V{>.8Ȁ_}nz٦>1 3]~Pp̶u(fq5p4rDHv6f5Rá!B/$e(+[WޡԴz_|P4Eq2MIpj&b_ |}g7ҮΕfGt2 4NFMƘ1`8" Lo?{$t HU; eh<|ȦtG<@ w' Ry3 +ަW >@Ti)])`"Uׇ +aVQTE"<y%@ .d\% Snq{a,뀔bz|pxߠA +&/o5/+ϲq|ȗЕ}@H$F"a2HP" m),b<'"1;s[_?LpC,(YzeGKx +כ@$+V=Pc +o + v +P*V3yr,?I!hcJdJ\E,J,Fp ͠@X< 3-o[>}kys疷-o[>}ny|h55-o l^ +.q$˯edi +@[G|R? I0bi^$9hh +E`HQ7Yy~#E<#?aH0czOd= d\M:"{4&GC`jS߶%bC$[`VGlg=0x)g: +5$ORau|T#Y,fy aoO\#QB=V:xcXc߸vo0z92\c2L6u lbR:8R%pQ!Ц2FXh,fj +z +nFH ~dmp%`@HQu_B!F9קXqI#^($[r*UO/`H&"KGRx,Z-d]/IQ?3EU 8yA"Xs{ V)%Bm(BR;&:^FKBlLL9#:C=N`SD:2n3:pq{%d(zdt"p(qQCQA?E""%6 d  5˰)$\Ү({TIz@Qjn(J~g9RX͕xe=MJ} +) hK෼Zb|Iou5JnFE} lpNjP;hfJuW^0 Wwqz( &39=oQDA` WT+] }9QRDa#1NQd!+-O.aȢĂ +i4WHK}7;..Ysc\ Mʍ#E<)/~0*"-1;бK*ak"NCB!i0 +t X(  +ɃX|H2-`'Dɫ4QKZ(V}*Qt gѽ4mnmXL1 իӂ)gZSN)t3z3F8oZD& |Ós&ɠ3g`tï @E d9'dqM41\t+ jɈ@uk+E$ _vfdn$`mcQ_C~ؾ AxS`J eGAU5}ð2ZOD8|?e#EzCކo^c¾JA^h"d%>ԧ2猶ۻkoT06l3=`accWae96Ѷ[DϿ߿[' e[YkLL<rpW#[8FL꫓?McmED-K8&wu~?43n<(ݡMo_6h@6\N`H:LF{;$IaA'ee:zjMԩ. }m2s_|Fn}?jO3i>ܧuWc4s[]O94rF}_ȑXf(Ӱ׊DӴ}Oi~i 2PFgjSgJw_]^&>F‡ӼѼiÉ˂_4L_n +aTԜ-rdce OU5rO^~PWb zdb}ҰutvyteP諡݆TvE"+KLQVYVdIf!bVVQ)^gȪ"."w"KTAO|!ji5G2o~|_ªP!';eWLvl +GE + +1Yt7_܋ijOalGYo-ҴcuhUĻǙ5w^< #r$֚LBF4J%Ciӈ Fo1"ǥsiΓW*Hd_dI3P^\0dḛ,Pxb62՗xߙ'"YO#s:Xa8>XD6' vİxFHs ,/!"+HZAoWnFo+hO}S,WV` 3,G IGDH^f(P#ˌ|ob d,r$i_)]wxţT]*E䭸ek1&v۟Mc l҈hNķk'Y#q+w`?`Zf/RJjs/Z@5g- *lg<řrˀ3Ss?֒)Ϧ8_,~LIөOTѳ<,j>y 2o Rc=7ݩyKC2'rȊ;Pc"k JCqʸj6q y "P$0H"\PYZ2؈XW8aA*2òIde2[ zUp&&/IOijl,9 k],-ϜC9 +J>E`k|]0KDH ֒-+"By_'"7 Cå,MP0b8rX`dIyR󤁱B`E86am,Q#5,`Q`}X# b-҈d P DRI q*,-CqP< +a"hZ]_ Gl`i ˀrsBд29PlV8e@?':q Lz "ӭІŽ ́|ޣ@Ё|c(-02 .1<`D Q]{ +7чs]90<_a2$^uvX'L8aIZw#C.Pv8A?$| XqWcU +) 0`3g#%QࠀatN)}`C<b'`Wy]]|o(>кa6~fmE +]Gp&Q$V9lMG!lsHi H q8U!j|fɐt~%*W4ms6U4 @ PgBfeVdݥ^>(d^ȈmxhˀE`?e @jEC&Qɡxr^ŀ]U!iŚob ͭcrl4дusNEnV<\j}Wc腽D :3"8BY=lahP JFBXRYNa$WLtDt)HPW'8Loٵpds];lqI`@Ӹ  BC:GS)K.= N$D A" FxL$DHD('Ip^䘲FvoaFrgM;.Gm֡2RRgQ5HƠ#LvJ>)g("V'tJ}/cXXi(tͅ;kNjw̎؆2 &||| P L6m =z^nw-,>c68SVjܟ+e`-#rLQ cgFOI8()Hw0 W18AsQ(}w$]iY"Mw@M0)`ό1.Ѭ D@)h 2AC0mb.6E%vmWqDabHXa0dE(cC(Y @yjj $.oMO4b [( `n_7A[ˁuʇˆD *Q=6珯cu%9AZ 】)ޛp):CgczA +DA +~Ϯ +'j"W7KTdex!D\sdF80s`n\b u)XL6ALWӊknM7+ ZХ7Adu*R}=/}f_1<6_|Oi-֟ T[_Qږ3i 43pR@×yKR'n ZSrsB2T{Cx (vNDM m5Rp;xǖWXgxc!.3,ףj }=̦_b $LE^1Qkߏz7RCEtdC^)Z<T鱗D%_hCAԿCn*_k<-Q_'w8O3X֥8T2o&n݃F_B +X)y"[!:jKΛ 3Ù$E7_u>um +ȅښ]}CAiEj~_bu4!{0ΦUً,|kWħT7OZ~B{n׎_tynv}K)Kmxӹv݃`2*X2vm8ɼϼTKe/l6XKf2fh餌0%1q傿ÐwCkm֣ôfS V`#r*f؝t@c%kb;VZJ3tǓ}panYS +h7ܶ;ed^Ytm㐜@+4F -F oJg!alަ4| +i)dLunUӦΚ8Q W ,fL`Pd z?|:c§H!ac}K?Muo#ruPJ?>тa:MWM"^ +BۺCb60d'Ѹ$ R^2.m,^wTv5A!:aKYZzaNֲ"2iͨޝxU͕=꘧Z^2ʸ7Yk'MTw$+|/=4zw?OhpIƦFф8gR`AupP\E42zbCdnƖ(}͓K4dUNwUqĕl|!(g:*v_:wh dFTڴ)WOz-km;o`PU[)(i˽Yskum'h=r6a˥M_2 E5Nc|]zӐI33L#yHeٰ1>eOkVc3 ŭfHysmXXMvA%-Z4-0l6s+-!SM]#Jzz"V.PftqϏ[,?yMwνxL[$ocqġ;1m 1Q| 8 P.v.!C}-ɷfnѤ17ڥHp-Mh/U/ HWFOct=v>DJR8QeLUg|6l/FNV7`HQ# #|ukkK>p+z +s,&x?[ \Ս]vku+;NUѭ߯5h4niÝMf`7t3Xh7<0Pm+D[Z5*[A~[nZzmᤣ@8Z"3e[Ґ"]q-VR~'MM؍BK97[,-@@H)>ͺdע?ݞɥċ.eS|Q'J`/ ewqgQ16x7d\ًї/_vknvJEe2U/cYO>|9MԬ>"Wӻg;ǟgOgQo\o|8H\*VL[9% x:ٝT O | n&5 _'N}L~곑al?X4$[O'_{aI׫#I!&R>9̤>yJR-a*?c >YPw;L*Z_F wB5xwϤD3MK>|!F^ zE݃1`@\_E|Tg뚍GH ɕ $*xrڳL$+ +BQKvOΎ{?mER`f/_½EKx%&&c4R'bIĎ.z|ωze<䬘SY<l=|5sn.яD?bxbF'9╙OV6NX]K# +>D]%A/؝^:hw;gov{')a{rؽvߑ#̮Sy_ΌG/MMm o.tdwR_ Ů"R>viMW4/ {\oP=赇;5(]鉨Yή;ۅ./c+v9ÝُFd?q݈hh?!'|){bOL=f?;=sőӞ ~yK.!gǻJٯk{mj夃`oEUZz\7oGV3zahsQgݻ]+ͻ}`2s8GÕpß<᫃*(. ;:wHnh舺#6{w$;#\qxVtQ_ ZqGAGR8:15t0pC0StTNwqzg"9iNr.y=n9c{g8c?(&'7cV:PBs{Fl~<;0ˋCxH_*CaF.]ժf;WB{XC;{?lu÷Ms{+W58q:*X70P˻ + +uBu9W[\M5 zoܮMT÷nr_?ys犕=ut=#Sp;{p{qO{SԆjɷA<'oԓz +#=ay|TOPg;WzO'!o=5BsW د8&Oe;sxvS^PӒS7T!s Cӗ0}RvBkMd:Yw s3Q-g;2zS!+pW6ɿ^%1q>1-q"`4N";;[S&܄=o7&u6ſ|%N~=2pE+/B K=r({pX2=9|⤉ƦP"gg#)Lp}RcocdF͗䄫6ҝK{wutqA}f[=I|_;q*WSO͛sTn"Gbɷni"荼_Owɓ=T:Adtγ@6?O˼/}/ DGݑ4LNtdHcb6;VcAo??ЍwMs+;{KWA"?ƉD֙~ ]d&+yURfJ,^NRP(tӉFJ:v M_?opq߼M2᎜T{יzq:ڏ'Y>(=gsK}:l~ɳTi;g_ T\}]?479;>ΘWNM=ŇIpEٝ^x g\TqEVZ!M$ .SxK/bs7ryLCq1L1,P|O%8KYe~CRT9,p5DTE=4ּ'g!V"?F0x&&;rf"ƷM:Oүzoh:N'FG7'3|_1`U|>hI[n 9^xkī7ο}Wr:^L&JV{:jc|U_t %x1zyIv߄qkp$[>p}rS[*|xgRf^ǎk]ЕS +;Nt>Z0avl7m5r21A5I&?kV gcEE6rNGǯO+S==x#Yƈ0+jyK/BiDTMdHszNz"7qYC_[ܑMuyY䞚Ox􃲉ʩ]oxISKI3 +3-eq&3hO[L he)^Lb}V ȗx6ū#w0JK& +rǞ\ 1TsW*1]=35:@?UL}r5U:7d+^>~0B. E휊$zQ7/+ZXT7MgiEL6 P5^ǹI w'Y!^y=Owk,r A W+*KN+ظqIfWa>b^qRS*eW2kAn<`(`M\D Xa4щ|{XsF,8w_`M&<φL(FMD}s>h[xcQ+-5P^ZM7pJcUF9 + ӈ/P-Ws;g/BF2+⹁G-暁_%E Fu0Kc3`t%6 J |K :Қ#j'B|^C[9c19W1؟p/lgmA@[dCu0ogc.Kâ7,ܷ ū0sU4[f!x k(c:Z?L'x\q^X{wTҒsY/ͦ 5zOu'>.RJ9c5|=aREb@d^*F !-4S/}fq33y}Z])1E: ^j<…cFkdrz&a)%[lR?4>3p}*ޞ'W*wGZ+lb= U:|؀:Us$m(~+?=>[S z etu2ṽTuT2/N](K@,\ýh-dqZ>wlsv01rnۅEૡ =d#Fs{KمV*gRwg-Yj]Mj>q\\ir>{{$`.t@AMtgύMteK ؖBGwHNl2Y;]a3?/c +oF`!Լ d" B>;VSɮa4m%Zc$Za:^g)/ ^,9BiF^I^^s8_֠W&dB92t`Ȼ"fy5.V +])[kҦ>8UTgV]Q-K?/TPS0N1+W*ݸb=zPٻX\?9? lS/HaT,ňQƒ(yD?z] x=]"nmt)7}E"[,^.@i:P| {C }IKU|AM 1K,3 + +ӡm4;7i>وcgB +XZUҷ{2-&:Ls2uE _lyPB?&޶q);ʁ`s&I_&k/{:0>0<ӆ:gq>j[,ѽW8uܚ;P/<4ix%+jc6HdL0!P(0D +*xpGӍE_~d`j5B&ɳdA+9GZŕ?];*^)&3}fI%+֑ʟim5>lM'6/8"cW&3Lȹ(S=-tĈ9J.ILt SR4Hvt fz(R!fX$&Yi397 @[95U  Pۓ[hY[y8;w5[z^^f>YJs"_o`I\K_ wuÍH.Kvo%J4/Kh!2a]9\ʍ +߀Ud~\ mh*\ esy\H[nNtC+z +|B \}pIw-,}',E@,B/w;9NRO;l`[ <2'%1unoQ=s{+:F#0:Ω6^hM GΧi a_@t#z]Fu@nߌalg=ǫGѺpBǵ/;go9=;'Pr817]֝5w0O_9R꣑X<1ޱm3r6#O6n875EbBՃ?fٲe.>()m58b 82d8PyBGG%Gsޞ[wxNGEcL/Թrбx]0XQ*Ir1d*aP`Qs''e,؃?qoX4O1awnKn/L[pfAAM7$.Vn9kޙ%ViO}>~{<6?:.w0." C;~^!:zrP>܃sQ*9bzt80gj=(룩o~EN9f,w5/{2PY?/RDhV#65OJҒ]6YVW[0,a|1NcV &l -WN#)C1SzWMP~Cw 6&'oo+l8|~_DZkqIH~ISBKbp7ݗ(*Ok0Δo :b7ȍc:MZrw,(Xˌ2б{ٳ{0v{/e{Ӆ{?;۔=H*|r!y{{MIFq(XIdqI-Rg/*.P'x`ty˓t e{?S]5s?iо8E{bR9Ia~VN:.Po x1#-Ջgo+C؟)uV)˜:ϞgO5]w)xR?<*:~#;c~-xIz).0=~Jb!BYk9ʕ6?t* KPO^w߈Y/mz 4 aݕ6C:qG盠\d T Sy-|Pp RMjic,8Kx|W*뼿 5s&H7E0Ҳ~@άI{7~b/wTW1s$*/:۠*gamTg-*IP#-*%+}>p`t/s꛽lTwB+P )6C-#hP_[Vg_X7LPkSdb~iԣU45jO/@1 +l ޒHj`]dbP\ӗ#\bW!u 4=:_VWT:}Auxhwff*^< ott>Q=ꊂ=BeC;6*6`nS>"y5zJGneA\5}Q|ml[ Ԁ;m[޶߭dyqwiTNlZ֊[ƴrٻMv- W%woJ; + 648뤶߽>< H{pn?[F75FsPz݄q^FYmֻGOݗ:hlP_UvJ Vb48y2è* EƷypvRMd"|~rԩRv eKԝ>f:p-f&;ݓhH?-/)±qOqeQ'Dbt䧅 +2Y+ *(#z+Tm*A =n +^e^Pۄ[F^+Tr`pg,P.s %|cfi;TGF -iˀIl*nz*Ƒ=N[ jyp|m2C[|'5ҔMR{tIۙ8a Ձ)'Nh=&Zpr6ɸO"]͏Ei=?A_r_Wx*+'ɥ>C^Q?]zD0tـ`Q52TbL(@?<\|DGfI/K(hC뭖2dЉpGMs ߦT!E+9KjMiXKcLvI~<1V ԓFܦ $كbgDCKdDA<f~WLl"#v٨G~d7qh ZAi ZМ_+Z(-kB ͵_Ix /ᐰ@)ҝu1Y_ oc-A44K7'6L.4u`rGWe"Ɋ ¶k^ټ` <~LWdF|VvlڛufNS-qYApYe۝sR3@{K[+TYfV݀m҇,֙nĭ>aCRXY a/zSՒ7_c̚>\І4Q:6:ȷlfOi;ȢKd~-i!Çި}3KoN܋J.4m 2i m2Sf_өʮju|جmf=c5&t[by +>0&#K|4\)zGt7Hqa+z~(4"N`zt>n%;h#ϙI67*MV6=}or]9==pTv7sZvz=ۻҮTvf}'ffQQq'a[d8=_oIzJBN~zY TJR'Fuc Ƀ%4 qD&mg=`'Lt:]Y#Rhs~.{V% :g0$w" UOӷ-0 >BiYf~ H`@,Ulf5Fݹ>7izr,#t9B" + Ri9|p@f'bPZ3݀jxnvTsr,"]A*v|x +rDl-hyٶh|oJre3c/m3-̪L@Rtܕ/`t!1S{Y}?IJarA-Rѕ=!YL "$u; u3WOǟ9SzS)?1N#дT/Ʊ;`"˂]ZiF} p{ +nzViL:^|b,|z;O p>1/@BX>Ќ?p>1/]t c'|b,'QI 8};J^p||X;yHle*4-ʾ0%l7צ$޲i >m'Ū+q*^B1k tGx5"^V]6B Ċ';BrxOB*"xGXnx&5s.G4JǩҳԂvz  ZnkKlqbƒ$ ;;O<{ډD ~B|Ja.}~&ęL-aYtkvGw)EQN,gIihNR6d8@\s[8j9ģ11 l1 +.,ϒ F̧3@a}C^=a3"(Vj8А'[L"v3MIq4J9&/mh|zvfRk { ;E[0=i4[*c+*!h bA1a!_ddXydaC CB?Pbd:yԼ" ;M'˼8ۦ @Rqm̮qkR/iJ۞HָfwicPTq DH«<\`o !ɀGc +yu{()̴9yt%aĤ֟ThD +5<޲R.ۄwwyT(atu9e5DFר 30c4kؘFe.Hds:g[ pq۵ P^ɤ(Ouڟ=gOAyL<}$F{Phݐl:6ߓVh5W1P l\4JB/w c(l +'lYPIN]-1uZ4rfJ/:A(}%K|jP5uJ_VXsbNcUghNp%PRLm.J襒T1of.8//ߌx{oT#>ⶺw^y$؏UV)Ґ4mg/ms[LZI9㴪)<pB4o0rkXS8yu +SVanPn7!pCOkbj%}Jh>Ͽ$חZ˿Ϻ(+ՈEogբXHezطs> ^Ld']|pigtQ^e(m3jvgbJq1;hS ϷzlmT/n֓Y!3WWSIfDƦlVadP!9Gwl}Sy4},WU Brρ AJ.P}6n}8:]S>_NeFqX>.b=:{ c0 B-"<X>M +c͡&7 (},R`k`TS`L514},T_@% cH'7i}Ċ> ?쳻N'`k,7`#Owlw4K MfnfyFTnwMnt A1;HSz\T Z= Nڸ.y92x{jb r ̿vbcB~Sm">ymjj2k:xjqyjoQS e4G H/=̴x' K[ /ߑc/n0ßr2qbBl4: nץvO0FYs}K)RkIύZy5x@G Ct@gWW4Kv=m<@F$b*l瘷ɘdoKW$Ɩm\W] +[ʁ +I .?=&M+=Pk;dl"Nk76j]"~Q[HWאDYNXPCCFƮv#p[JsSO<S )Z׬SGC1, +zy,x(Σ q^P|cdw+xm!~"TPM, 8śو!‚q~A.j|aCOZ@7LH|߈&XABBC:Rࡸڡ<`5U;$SF8vi. +:JKp_O^vH5࡫#|*P%5w߈ /r[P|추ǂ& o!lVCuPP\лwP/xW{C +,QP(x(kn +r6s!W9-x(v=<9sࡸڡ_'4ɄKY+BmCf3:ňW;Ӝ8JAf 1J|pB(w.'1и!o.4V+"krK_I#st꿸At!zvs6Um6\Rc5ƛLtgw6ݹ]VRoQRv&JںkɋƖI5WO787W󕏃~n0ת9/0yg5uN\/wIEd|6ཎwn8櫜F`{dޔ{|K y0ztźrSRҟh59W+E%uz(Ew7hV5nֆ膙Y)e]C>?;}RW{o9,gu4Gvu?^jE4JzW:\ T@vT+J;~`E< ߁w +(nz߫g/Ы^}=u0y.?W^NOG/>@*{9VP #6f9t3nhgp\J?kٕLQ">}v +\p  +iMS9*ꄦ̽I!z4)(ZWL!C5}4|WԐV՞LWJҔv^}g*7;m(JwtagL9 #ڊ:U{]:kO?aM'kPriTX_A@oM4)5[W}:+y\s'厾^r揞"N /hr{&[c+zjC7Nj7qQ" e,W 0k+ tD+%}>՟ubϥ8Fv lZ9K:[g եrFd4(}]0th^`t,w2L`!ɹdU K<2`ncf1-\u +?"U1087"0)b>dw/"ݝs@WL[ B0!$T'&O?7lNć\z~[ f}{kAq Ȫ}E)" E_rL10-ٜk:( $ψӥ"4dI 0NshЈQ"b1C XK\_kvWp w\Wo?Qd}Ju땆Mi`+}W+ gە3Í"ಿJ,ՉXXܺ&qFpiPM5#,ٷ:.1FR8wT<D@t?xJLrt(xLkbuaY˓ q'X4Yf}ɥ,OѾMy'o{4+[o+ v0jv/ͪDϩ6ޒe3jm&co͎:N-N-N-Av,Av,u it<2Pt=7[%Σ 䮀ϾqO-Xgj)?-yUKiuϭZOUKiA3UKihMoj)zХ7\᪥ڂUKi UKiӂf]F_;t<{֎tD4sL +Vgf0 j-x/зzTw^Dp =!Vr`]m$,y??8 urpY7B%Ol{+tv5 ا$bPquzXp j<C=o9ȴ?)йt:o2h21B)?`r>xhzHUoQm2\g?z`9޻QkU$%;XiߥVwަ BX3 +<kcc c_H^E dO]JH (FA3uYo%49)㗵) +n;>WT2\C +*q1c"@rueXPMvIX 70/sN9`kVZW?+ p\7Bo]k"]:FظS@ftN-Ӫ*óȏ?Me@3N CNߔwK~mj Դ~2̍Z2F4'rn*(Z#:;l,2ɇ8LvكY-[?m#mD]7$j$S~H0sܤuDRI {jle$:Ӣyx-¢ FGMwFØ0 &Um |VRDm܏ɇg< +{:q&i<}RX(>p`O=v 2$a=u*(H ?&5knhǁϩ i3|;_ҥf#lTx[hTFQȾLn؀dɠh(+V\mlɂ. +j} fh, +y_iC+=ބEEpf܋J{v/䐡 LH)ֺң|z\1@&D~̗u~yYbL-7דMGoc NcR}J'qUgo8U%mC 3!vmx] v8%̈9kDg+!GB#Ks7Aor+7 \3[/Ȱ:`k)`po^f^'͵0|S(ƫgk2ƶޝ~9h/?{=b1xy_WEw@Jp|,٫^fϊz°hWEhfU16zT}nkF6tZ{9]-![v3-(LJ<׮ȖX4JG=KՅԑ/.(Y{4`/d4{\Caׂǫ`6;ǰw0 R +-jM>m"n-Fa܃Nzo2x}ɿ2z:mAF0t'Q-v)ؑ1|}h WU%x|xR|Rbv=_+Eu=LՌ0TGz0I炍J)R.H^ҾE\]Ckk{q0"5E5D[1yj\;yʛLi쏺^ȪҺ +cO b0AUGRJP7"6H0UԅUR@ R (/k o0Yj6ǍW\w=%tbQ-$UgK//rwџdI}>  ?fݯy?/R5-JA-Ib71215z^hO?d8\ Bq|?Wxs?S=UTuSǍ=xiQO74뭧YG=5I{!9F*W`x\f]=X$>@Fo~v m0R;:r{4>Af~ :VhD ڮq+[Vo^F]W[` CW6oI do?`w8G`:M? `ޝ +endstream endobj 15 0 obj [/ICCBased 19 0 R] endobj 6 0 obj [5 0 R] endobj 35 0 obj <> endobj xref +0 36 +0000000000 65535 f +0000000016 00000 n +0000000144 00000 n +0000034854 00000 n +0000000000 00000 f +0000039309 00000 n +0000164238 00000 n +0000034905 00000 n +0000035318 00000 n +0000035489 00000 n +0000040461 00000 n +0000036436 00000 n +0000039494 00000 n +0000036293 00000 n +0000035550 00000 n +0000164203 00000 n +0000035731 00000 n +0000035779 00000 n +0000036471 00000 n +0000036660 00000 n +0000036566 00000 n +0000039378 00000 n +0000039409 00000 n +0000039609 00000 n +0000039662 00000 n +0000039951 00000 n +0000040348 00000 n +0000040028 00000 n +0000040175 00000 n +0000040270 00000 n +0000040535 00000 n +0000040731 00000 n +0000041950 00000 n +0000044230 00000 n +0000109819 00000 n +0000164261 00000 n +trailer +<]>> +startxref +164486 +%%EOF diff --git a/Assets/Project/Graphics/UI/Icons/Gameplay/bottom-alpha-gradient.ai.meta b/Assets/Project/Graphics/UI/Icons/Gameplay/bottom-alpha-gradient.ai.meta new file mode 100644 index 00000000..59ef9cf4 --- /dev/null +++ b/Assets/Project/Graphics/UI/Icons/Gameplay/bottom-alpha-gradient.ai.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f378fedb3573aaa49911ab25120741af +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/UI/Icons/Gameplay/bottom-alpha-gradient.png b/Assets/Project/Graphics/UI/Icons/Gameplay/bottom-alpha-gradient.png new file mode 100644 index 00000000..dc064d81 Binary files /dev/null and b/Assets/Project/Graphics/UI/Icons/Gameplay/bottom-alpha-gradient.png differ diff --git a/Assets/Project/Graphics/UI/Icons/Gameplay/bottom-alpha-gradient.png.meta b/Assets/Project/Graphics/UI/Icons/Gameplay/bottom-alpha-gradient.png.meta new file mode 100644 index 00000000..1c633502 --- /dev/null +++ b/Assets/Project/Graphics/UI/Icons/Gameplay/bottom-alpha-gradient.png.meta @@ -0,0 +1,96 @@ +fileFormatVersion: 2 +guid: 08fcb01393113a14bad0223dd5df3fa8 +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/Project/Graphics/UI/Icons/Gameplay/credit.ai b/Assets/Project/Graphics/UI/Icons/Gameplay/credit.ai new file mode 100644 index 00000000..1b96bfc2 --- /dev/null +++ b/Assets/Project/Graphics/UI/Icons/Gameplay/credit.ai @@ -0,0 +1,1179 @@ +%PDF-1.5 % +1 0 obj <>/OCGs[5 0 R 24 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream + + + + + application/pdf + + + credit + + + Adobe Illustrator CC 23.0 (Windows) + 2021-03-27T20:26:19+02:00 + 2021-03-27T21:13:48+01:00 + 2021-03-27T21:13:48+01:00 + + + + 184 + 256 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAC4AwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq 7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq 7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq 7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq 7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX// 2Q== + + + + uuid:C1BCCE1871B8DB11993190FCD52B4E9F + xmp.did:b8c6be31-5b8e-f946-992d-65017ef396b7 + uuid:9bbd8a31-3d1c-4ed6-8ca8-87325e6441c1 + proof:pdf + + uuid:38cfaa44-519b-40df-9822-9670e046a9ef + xmp.did:9c235442-4d53-8043-85e3-45a644da0db9 + uuid:C1BCCE1871B8DB11993190FCD52B4E9F + proof:pdf + + + + + saved + xmp.iid:b8c6be31-5b8e-f946-992d-65017ef396b7 + 2021-03-27T20:26:17+01:00 + Adobe Illustrator CC 23.0 (Windows) + / + + + + Document + Mobile + 1 + False + False + + 512.000000 + 512.000000 + Pixels + + + + Cyan + Magenta + Yellow + Black + + + + + + Standaardstaalgroep + 0 + + + + Wit + RGB + PROCESS + 255 + 255 + 255 + + + Zwart + RGB + PROCESS + 0 + 0 + 0 + + + RGB-rood + RGB + PROCESS + 255 + 0 + 0 + + + RGB-geel + RGB + PROCESS + 255 + 255 + 0 + + + RGB-groen + RGB + PROCESS + 0 + 255 + 0 + + + RGB-cyaan + RGB + PROCESS + 0 + 255 + 255 + + + RGB-blauw + RGB + PROCESS + 0 + 0 + 255 + + + RGB-magenta + RGB + PROCESS + 255 + 0 + 255 + + + R=193 G=39 B=45 + RGB + PROCESS + 193 + 39 + 45 + + + R=237 G=28 B=36 + RGB + PROCESS + 237 + 28 + 36 + + + R=241 G=90 B=36 + RGB + PROCESS + 241 + 90 + 36 + + + R=247 G=147 B=30 + RGB + PROCESS + 247 + 147 + 30 + + + R=251 G=176 B=59 + RGB + PROCESS + 251 + 176 + 59 + + + R=252 G=238 B=33 + RGB + PROCESS + 252 + 238 + 33 + + + R=217 G=224 B=33 + RGB + PROCESS + 217 + 224 + 33 + + + R=140 G=198 B=63 + RGB + PROCESS + 140 + 198 + 63 + + + R=57 G=181 B=74 + RGB + PROCESS + 57 + 181 + 74 + + + R=0 G=146 B=69 + RGB + PROCESS + 0 + 146 + 69 + + + R=0 G=104 B=55 + RGB + PROCESS + 0 + 104 + 55 + + + R=34 G=181 B=115 + RGB + PROCESS + 34 + 181 + 115 + + + R=0 G=169 B=157 + RGB + PROCESS + 0 + 169 + 157 + + + R=41 G=171 B=226 + RGB + PROCESS + 41 + 171 + 226 + + + R=0 G=113 B=188 + RGB + PROCESS + 0 + 113 + 188 + + + R=46 G=49 B=146 + RGB + PROCESS + 46 + 49 + 146 + + + R=27 G=20 B=100 + RGB + PROCESS + 27 + 20 + 100 + + + R=102 G=45 B=145 + RGB + PROCESS + 102 + 45 + 145 + + + R=147 G=39 B=143 + RGB + PROCESS + 147 + 39 + 143 + + + R=158 G=0 B=93 + RGB + PROCESS + 158 + 0 + 93 + + + R=212 G=20 B=90 + RGB + PROCESS + 212 + 20 + 90 + + + R=237 G=30 B=121 + RGB + PROCESS + 237 + 30 + 121 + + + R=199 G=178 B=153 + RGB + PROCESS + 199 + 178 + 153 + + + R=153 G=134 B=117 + RGB + PROCESS + 153 + 134 + 117 + + + R=115 G=99 B=87 + RGB + PROCESS + 115 + 99 + 87 + + + R=83 G=71 B=65 + RGB + PROCESS + 83 + 71 + 65 + + + R=198 G=156 B=109 + RGB + PROCESS + 198 + 156 + 109 + + + R=166 G=124 B=82 + RGB + PROCESS + 166 + 124 + 82 + + + R=140 G=98 B=57 + RGB + PROCESS + 140 + 98 + 57 + + + R=117 G=76 B=36 + RGB + PROCESS + 117 + 76 + 36 + + + R=96 G=56 B=19 + RGB + PROCESS + 96 + 56 + 19 + + + R=66 G=33 B=11 + RGB + PROCESS + 66 + 33 + 11 + + + + + + Grijswaarden + 1 + + + + R=0 G=0 B=0 + RGB + PROCESS + 0 + 0 + 0 + + + R=26 G=26 B=26 + RGB + PROCESS + 26 + 26 + 26 + + + R=51 G=51 B=51 + RGB + PROCESS + 51 + 51 + 51 + + + R=77 G=77 B=77 + RGB + PROCESS + 77 + 77 + 77 + + + R=102 G=102 B=102 + RGB + PROCESS + 102 + 102 + 102 + + + R=128 G=128 B=128 + RGB + PROCESS + 128 + 128 + 128 + + + R=153 G=153 B=153 + RGB + PROCESS + 153 + 153 + 153 + + + R=179 G=179 B=179 + RGB + PROCESS + 179 + 179 + 179 + + + R=204 G=204 B=204 + RGB + PROCESS + 204 + 204 + 204 + + + R=230 G=230 B=230 + RGB + PROCESS + 230 + 230 + 230 + + + R=242 G=242 B=242 + RGB + PROCESS + 242 + 242 + 242 + + + + + + Kleurgroep voor mobiele apparaten + 1 + + + + R=136 G=168 B=13 + RGB + PROCESS + 136 + 168 + 13 + + + R=127 G=71 B=221 + RGB + PROCESS + 127 + 71 + 221 + + + R=251 G=174 B=23 + RGB + PROCESS + 251 + 174 + 23 + + + + + + + Adobe PDF library 15.00 + 21.0.0 + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3 0 obj <> endobj 7 0 obj <>/Resources<>/ExtGState<>/Properties<>>>/Thumb 30 0 R/TrimBox[0.0 0.0 512.0 512.0]/Type/Page>> endobj 26 0 obj <>stream +HLPIn0 $mjSZ>FC 5/N@HfȡFkA+:#;Hme1.9υNs$w.s@:xXиpKh +d)I;n5:F۔܅uV!h7/xH.PnvBCWgXNgX%kE1i߻?.I +endstream endobj 30 0 obj <>stream +8;Z]L!=]#/!5bE.$"(^o%O_;W!8uZ9(]Y: +endstream endobj 31 0 obj [/Indexed/DeviceRGB 255 32 0 R] endobj 32 0 obj <>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> +endstream endobj 24 0 obj <> endobj 33 0 obj [/View/Design] endobj 34 0 obj <>>> endobj 29 0 obj <> endobj 28 0 obj [/ICCBased 35 0 R] endobj 35 0 obj <>stream +HyTSwoɞc [5laQIBHADED2mtFOE.c}08׎8GNg9w߽'0 ֠Jb  + 2y.-;!KZ ^i"L0- @8(r;q7Ly&Qq4j|9 +V)gB0iW8#8wթ8_٥ʨQQj@&A)/g>'Kt;\ ӥ$պFZUn(4T%)뫔0C&Zi8bxEB;Pӓ̹A om?W= +x-[0}y)7ta>jT7@tܛ`q2ʀ&6ZLĄ?_yxg)˔zçLU*uSkSeO4?׸c. R ߁-25 S>ӣVd`rn~Y&+`;A4 A9=-tl`;~p Gp| [`L`< "A YA+Cb(R,*T2B- +ꇆnQt}MA0alSx k&^>0|>_',G!"F$H:R!zFQd?r 9\A&G rQ hE]a4zBgE#H *B=0HIpp0MxJ$D1D, VĭKĻYdE"EI2EBGt4MzNr!YK ?%_&#(0J:EAiQ(()ӔWT6U@P+!~mD eԴ!hӦh/']B/ҏӿ?a0nhF!X8܌kc&5S6lIa2cKMA!E#ƒdV(kel }}Cq9 +N')].uJr + wG xR^[oƜchg`>b$*~ :Eb~,m,-ݖ,Y¬*6X[ݱF=3뭷Y~dó ti zf6~`{v.Ng#{}}jc1X6fm;'_9 r:8q:˜O:ϸ8uJqnv=MmR 4 +n3ܣkGݯz=[==<=GTB(/S,]6*-W:#7*e^YDY}UjAyT`#D="b{ų+ʯ:!kJ4Gmt}uC%K7YVfFY .=b?SƕƩȺy چ k5%4m7lqlioZlG+Zz͹mzy]?uuw|"űNwW&e֥ﺱ*|j5kyݭǯg^ykEklD_p߶7Dmo꿻1ml{Mś nLl<9O[$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! +zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Km +endstream endobj 27 0 obj <> endobj 36 0 obj <> endobj 37 0 obj <>stream +%!PS-Adobe-3.0 +%%Creator: Adobe Illustrator(R) 17.0 +%%AI8_CreatorVersion: 23.0.1 +%%For: (Manuel Jager) () +%%Title: (credit.ai) +%%CreationDate: 3/27/2021 9:13 PM +%%Canvassize: 16383 +%%BoundingBox: 71 -484 397 -28 +%%HiResBoundingBox: 71 -483.504408893397 396.994607095989 -28.9955911066027 +%%DocumentProcessColors: Cyan Magenta Yellow Black +%AI5_FileFormat 13.0 +%AI12_BuildNumber: 540 +%AI3_ColorUsage: Color +%AI7_ImageSettings: 0 +%%RGBProcessColor: 0 0 0 ([Registratie]) +%AI3_Cropmarks: 0 -512 512 0 +%AI3_TemplateBox: 256.5 -256.5 256.5 -256.5 +%AI3_TileBox: -41.5999994277954 -643.600036621094 553.600036621094 131.599999427795 +%AI3_DocumentPreview: None +%AI5_ArtSize: 14400 14400 +%AI5_RulerUnits: 6 +%AI9_ColorModel: 1 +%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 +%AI5_TargetResolution: 800 +%AI5_NumLayers: 1 +%AI9_OpenToView: -557 310 0.861111111111111 1616 948 18 1 0 46 87 0 0 0 1 1 0 1 1 0 1 +%AI5_OpenViewLayers: 7 +%%PageOrigin:168 -360 +%AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 +%AI9_Flatten: 1 +%AI12_CMSettings: 00.MS +%%EndComments + +endstream endobj 38 0 obj <>stream +%%BoundingBox: 71 -484 397 -28 +%%HiResBoundingBox: 71 -483.504408893397 396.994607095989 -28.9955911066027 +%AI7_Thumbnail: 92 128 8 +%%BeginData: 1919 Hex Bytes +%0000330000660000990000CC0033000033330033660033990033CC0033FF +%0066000066330066660066990066CC0066FF009900009933009966009999 +%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 +%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 +%3333663333993333CC3333FF3366003366333366663366993366CC3366FF +%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 +%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 +%6600666600996600CC6600FF6633006633336633666633996633CC6633FF +%6666006666336666666666996666CC6666FF669900669933669966669999 +%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 +%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF +%9933009933339933669933999933CC9933FF996600996633996666996699 +%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 +%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF +%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 +%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 +%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF +%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC +%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 +%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 +%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 +%000011111111220000002200000022222222440000004400000044444444 +%550000005500000055555555770000007700000077777777880000008800 +%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB +%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF +%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF +%524C45FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFF +%FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFF +%FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFF +%FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFF +%FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDB7FFFF +%%EndData + +endstream endobj 39 0 obj <>stream +%AI12_CompressedDataxk%u> Hqˈ98@]}4cقd{lM5fSϯ?FdܻE;DRwDXwg/ot1>wo?ꛯ߽壟꧇P/&f]}>fۯ_yC%.o_޿'?囿}ս/]xힺ͋w2EB:^| aN-՛o^oj8|[>>IL9O-i/%SRybb7o~_}՛_po/^~w|_z󯇫W/~sWZ^;Ży_}՗W|*>Uk]NWϿGN/z~Wgѧ?_zo~ՋLJJYo_k|Q/d'~EYcKɇ.i<0-P!h\xy?;c /߾uxm=7^?[͗%^ynj}D/o^}ܶhſݳao~oRDDA׺hsvwN\3R{7o_럅>K4/߾H5Z_B/8-qy'ޜΡs>k~H_hvůy_^ڇXZoǷǿ;]ߏ6~k.'ݿk7/߾?7~ )З]__k}MwO?pmCV_>7o8^篿~w|)>WͫCd}?ʿ| ɿ<?)?<"k^a}o^~p >*^ew_ҿ|_$_5ë7/;ŝ_Y^_~͛WOkע|_Ϲ~_moO޼Rwy}~/^4#Y^L޾yFbu8w~rq_ez>:~'A=[o> ;B<^>[𛗯 ؚ_^՗bHѧoe璮{g!^_wx??y'} $+EZMK9>ZBTjJV=qi_,SXf>[L%.9:Nr}́|ϯ/?~rusuq\zU4U +w7]r.ƴ-7r)_%vݮZkRZizW5.R[4ͷ|9/sӘ29I N\%(qKw6_,C#CK7Z*]&= $E#'D6|Iz藊GӨq(#E­ƍuҸ 4j(z8n0MӍƵt|RhȸE5v>M};[s_ahMWop|c5x;^^k54tO?Yn5nLW]5U,Yܵ[S˵.xED&C+ Y͛MzqqxKԪWVjHL{wF}@y65"bBc`];WmnDIhCn/$JyE ho;d-"rҺiŊR{uOZ]iwKnvVDY4D!P˝(.Mw(J.f z˹աb7f.7W7777wzn =Pǻ3yDTEc6g1Az]G$*Rʚ$r61Й^s&vT_ E>.btuQczɢa[̠̔o|8f,hZ5{YYX"Y~r%"_]}X,u_쪗^ƒ,Xx^ KO~bP?wwF0w˜9ήί$%ւb<7\?E䌳`9x9=o >c]|9z7f<G0TY\N3 ]YRFy{˃ͦN+ip=&FShrO7Eir=]\wGp-%^kֲfQOM[˵RmzYK-ӭM@4TkŬ,*BjbEcI(ѓArhd1Y\ *R-"rSD?d"0|PF. +IA%5InQ&hsNBtVRҬtdՐK+ՊGW9P5q)RzY7m@YLU<<C<|(A 'x˫7,AKrfH۪Ou<[z6 ")v񎻍ǻ]0zXׯe}yJfzs]SȂim]‹ͥ#u6IGh/5[I+lq(H,z:+ M Tӆ5Yh$y)]H WKV(."!c + e( XD8~{AqUdtq35]9VsPumjgѶai+.'r7Oٸ=][kյ+>kɡ+>{+l0%UGRuce:ZZ4,!2EF|6ͭ(SqP +ܕ_TUVvWEjޙ&b{Ԣn*M:UYs)2{Sfðʇ:ku4NU6'{⮣uۭNfąagCWh].gOn$nRw$bu&w&ֲ̆Xĸ۸Ida)m3hB?c 2ʞ|f8Xޛ˧t:>^ǺC1b)V 8rtKh;D0@إATk>VAvk@Z7+\Ѓ̹zȵZ- +NexTwu7\ ]E]WNrp ?Nu;v̱h1t;+tK vXDJZ;Usc{񺛝nQr҄#?G׷vLp|݄]s3]q(www7"Eܥp{w{#w.2^͍,%%|#<\Uq1SFLzY;'Ni]qv'>ջ:{;|˷;}*0Fpw'~vBCnMeD{nkyDG[|ԡdֽEoF^c},$#mĹ+p]w t:d ǡ+nz߂ȟHz=?>r#GQ+~(9G|WeULr|,i)%9A4smkm|0>1Y!Sb vg}B>̏9 +@O7!1\_\E¹d)_axϔ+T]D=t]| +c,?X"wP*1Jc`_׆|i _|×}syvf Oȏ$. J<W}T99C`cZr^ +pG9qpԟ# HQ$EǮͭ̋t39%Tis:Ɯ!郟ljrrJJ5VOa({`Y!?βz5wVu¥ wzXH~9`R H9y7@[!pv \90y7py[lj Ý!P_qG xN]we\<ߗtEw8lNkcq wy3;{^1G +}3>P~ .|~#hn#I}OHCW|wma?vu(d0[! :7G#0c oFx8/d+l67v0lŚpa[;̃}> m5𹂬HT: :VݓGN aEãODS#$TW|?(=AO:?GLN{1xϘm+ihqVL=sg̙53q}s2f\;1Ge3[cnʣg %f㫓EI;'8&?d撬c;"w.H]z|xN|btųOB{ 1?>t'W< \KIMV7sy}Kӷf|>I}.߷|wW<[֌?]o`@uE״o'}ugSfby,{ 5[tL6OY\u֜Z U^G` x76}܌q#JaGݨ1r6##>99sTxb~xϘm+p o js)lY' ـ%n+VѥI*:~A1H0 +'ƞ_Gu3n>I=pi!d;{7Mnt@dJK}=]#_p6f31n*M6'ɨ'$eκa9(xX=#͸?8|8`񽎏W6f Z +Ζasr୤&.I?k9zw2%dΓem}LXNaW[:`_$K$ݯ$=L[s +T}`:1jC֒D!- eʶq+ u2Pex%z{~՚=@}~CGGحu^#QHU:n${ J-2%,^oiߺ%S!Tx'ghF}0N ]1ࡁa`(ؽ#3B5C  ӪZ%>qT `k¦vPP.7nȉ(4?DhJD$F̹->4¼d ȋ?GB&,]wߵH>1VOB?];zTۢך|%Ey( ;ߔ|=EUA}h=>{7z(c+3XžBX"2_-Sv0‘V[U+g:6]u<ىubl{|xir2QXr/8{5ˮEn lbWOcuT;mC|x$q?UO?4m+Xs4՜[>H2 Zٍ#D>bĮFAYZDbKdOi/=B[ASZc8#nCzpNqDgnG,G_pfWTsT:y2xk@Biq{և?^+Z0-R[mWN#e?f'σ-r;E?(zSG4%`KVdI,|8o.GZk=}-̶ҐvZXÉ}ZZ0vLX d9+ٕ1o_AQr l9rt< +~tlm9 W«g(^}6=H >vq3}ÌwևIj xXEqswS'\gU۫G?6~U [Zفė"#EݗڇE?\Vaa Xu@v^m8'o.B?O"ǜ?]O>Eۙ|dIkd}w$={R̻47q#zN9RW7~a ҃A~&x 3|^0ms12aWp-Dx,xcMm-m'Ba'GyϘCWOF}r<.Fǡ+xrqL/9 k{qt✚;-9bғ7:+6]vsl3z)PomWXy:MnODOnrF)awNs7+iTq+x>I.c؊,,CzSmhvn +Ebi23=뇼jY]1 2I3-hy~,ܩC,ۡno9G2x.k ~GJM|{K[ɟi/#u']*BZ(ĬViz;nN}n@ ^v+-qGwձGU {T>2a퇰:gC uN;:ʅ\oiDsΈcp_:d"V~.[ӵqlv6uAW׮-wC}X{A떓#<^wF#1Azԝb>diE19Q=ֈ॑ҁQ%ߎZzh=4F#ͯxN'Ҭ(F^{N.ڨgJm'zR7۽;6]^ʳcyԶnk]Kc QYu +:o=>kgGe[M}Nt uq +XL:Q^vځr*Ùx3q`.?uߝqtO}ljy=kxU\2w3h \Mpw0};pq]X['wb;ۢ>4󀫣QkNM!l]؄>tl]Or.]=HzGH胘loX]X=$=yt)SXplV̛Ցm[s0lȡf^xGi:m7[N?<'PNj[~{+-.u\%S!G=ʹs3Uw74j`|8vOkS?:GՐ F[n̲y1::'I=erK/#U>NSNwUCs}kNwjνo^m߹9АМ{ߚ[ts .k;wufs9 ;Y΀:-~j0 +GzD+Em){=~;nfk2~Owzrdu~wx],p-ٳ~/4BEv>dw~_va+ )|ɞ-&OaOG8tt ?l:A߈*ݚwM4 T,EwKLAJHKmȹ{wbkV{ry!nx8yRz古3S臣㡛S6Oڰ3נMۙG3vnCAguT[dPٽ@>*b]࣓\Iڦ ӱ>Ѽjue8ޛ:Ce =T#%O$PqDu|o +P@$:zdg;>Ox|G@Qxx-xT:}ӝ>YݫFA>9Oza-fPD$U'vDۜreN~ESk Qu’SO}.snyGEʟ#Y <!OM">*3&^'^33O~D(8B;G+l~۝/0~ORIg^r4;!Ӽ3~Xcbߠǒ˜5;e tݏUкޅU!tX3xsB:z>z8/gA?B4t|7[ 5Mٮ{oգ}tb[js|H/˚@VD@$XUU<޽tUg\ˇѫۑ/y@\,0haZGy1z8@|;Sŷ QhTb5/;:xhr{HL_k t ;͞YyG?D>^udv=;_U=U=˙'qFr{_~|)#rz5Z/m6:wt|tsFU$ oG+W;tPGs5ɸ.˵yy4&>GxM<;wp{ǓӓOW`W.y+C^{1ZOLa,Ci9QY1g}ÓCtzC!&?mV|~T%_tk-A N%i]:"d.DSLY`9i~'Oo$[˿}xW/R37~_@tF`v^=˞)O Hcuߞ O2gě?w><Gǽo_x p|??€H-__}{ccccccccc{#M|41 '׿|g{ͧ]Żwo_7~_;p!rAQ5\L砕6"<rY.LǤ,p1ݝ?Q_>W-O_3>`ztڃ7Goi5˷n^~/gi_\y˟m˗޼f~/_/_,j_7k"UzLѵ>4JWԓ +#?w8ĜEr %RR(2\YCأTu4jfh"RbNғLЌ\"h&x? 5sE/&mSK'MAOO6e=T7IvUӴ!-5]S"U|QD%%-$,>$ߒ.T/N8{֭rz1_4fTzݜ.7f [g_b#pKh/>mޥ.%]<\Hn>,"b8EKPE]ԡ-ze,>,-IyCis{Y˕Jaжcy\(Tnl]U]+mL)}nhb.!a$yƴ/|)ïe.I[BB"5[$>$7D3?dK$m TO`?vZ ViҴ"[\htݰm^(ܨwR;$:N3W}RT% + IAHS@$-ʓ3d/Ff;MZ ++'Q$B' +r@Rn*z=PM'kmСP_PN2'Dw +:^k46ipكV"/ANKK*sXu.!vo0D ɦS^W H+D(bl\r`-*Yԩ?`P5O3( &E.CvO+D 3g[uQ;UFM.gEaf;" +-/;Q s^bҌA r}OIk֛-8Xq&v[5bP};4M4=x{4Bbi**C^+"Dq7KAU#J^">g=C B.hg+rv萳 )/ 2 i0=.Ԅ sh#.A=hHQV:""$u@0Y]4Q]i렇T([*K!JH{qt4ɺNE#Dhwh.΂4,NS!mJY`&ʕt6UVlC((4͛H3Pei 6Ow^w(0#BƜ3hZDJҐiqb3D<} C!/WF[YZ-wBJͳ, Elz@wviL|/nԟC : %vAݤ4#pM=&x8[U= ?UD+ J= J/ehW[.Nct=m'E+P<-U'hDBd5zu*ZiFE,dy7XՒekY̴&)Odϗ Vb%RaDFq|HYq]3RQg2#75>D:tleJ# zhD1XRYdsRˑ,$r҈;ԤzHx"ŭOe2qtHkxGGjnd?"Vqcŋu|F2l1}HeΉ>[2fjX 1St"z=E#p<Rx t(0by6L؁:(gi BdįPQqNXgEp41/t#D7@b0K*'3y9% 21viT|r)}e~9툫G%^j?v|l&ԸNg|NC4b?l9ℜ +<. 7Urͩ3h`4C +-CtZ89Eܹ(usFʘ*Z3nZ3WM4IAf! 5,6uG.# M3.t9M{HjsN~6,H8:c}t0}t5ֵ&4VomOdْ*LS;УWr1?!ϴm۴t^w_(r"l/*>.?ghu5CމGC;_`Z%+CXƃ1DlaUS/.-ufqӣ0&-f7qsc]fXT)g{@O(mPc:|8 O>IvB/~׿=/Wo޽`M_y%qUke@ zg=/ {I0BQ6ӈe{o~S/ v fͯűM >{ MJ[k vUyf]HgN(A/sw?|y&8 +  []f^1ف)[IWoB4$YK'W2[?M@6[vInZw/1=h/Нjv gxF-(tf E# 5:x^L$gVЛJ/ーFrܑ%meFvAq +y@%whiL߸L%gы7iRt$N9Y(>d7+%@MG45L4=nL0QdL f䉷'/C%%ާI0j:.qdI@A*[r# ߽NB[L\ \MRZ=X0"T[G. C8#p{Pxcm㈙kT53/ c{['{l8t{K>xJtحs -i}3 H7*taw(6+HmM$38r1bigIbԸi 5OӴ<[3$fh} |Q-1V6_/'-@%ˆl&JĀ4!V3$}恆̞4R}eA eHew^Ct5Ϫ6( l16V#FnJ YZ@~'% +$) 1ĵ<@ jRe][Z3=/=1eԗ%n( M)%q@<ưp!0|D^"U!C6,(b*J^)84K4Zhjn) ުF|=[Xg*897`M?"$V;Q!<4OS3b S7 +Œ="qѝ)S;Lf` +x6'ZbѻaD!='u*u(6oVU'J)WQZU&Qdlm\9q±0{,ٝFE63ǫҢQ@)9f24XR.:"ieLW3j,MֲR=lhjX1Q$)$i|X`Cٚ+hKjJKNߖz`#x=r1%s %;u13'i#׼Ըؤ cK] + +v``yge2fp7yFj2؃]ۊ8&l8q`ׁB21`Za vҦԹ iw`XKwH/{\͚ӏ~rCZ&V6CB)d6ϰybz &j/5Zo2JC[@Fp LZĺzjrBXKKRLi̻=#:t"v sVRyq)DuK' +mjt%o5[.qL?KeIX7ZFZ|Y 7ЬG0 [ W [@ygM ]JhfI">9-„S0D;_-&*<<%2p`9?qWi$qLbx#`n/'r*ГCRLh:8\sȪ!Yߣ k+bVG$tW5a4@Y&ٚ0;ufDk"M\UwiȆjRh!osHy-I),8업X&x'͛|UֺK +n 1bd<< )tE \\Sɧ\WiI #Dm\Uu 0 +D5l-GoPSO1+1ѓrDuD[FR;b7 n.ե(bJB3SfEu9<|1Q-Pe2u(j(e^5)cM ȘPBẊB@ؠ66/ 4B /@7PeR/B2C! f$b3,T*1 [4g89{31ysp(fcmtu, +? C!o`-/ݺ~knZ\9\wdpdZPLα8;gtpefTҲheA"a@ /R +.mi ̵B2$dwms2AJDJ>:O IH3dqGMJ0 96fCSWgR\-f̚&vLl$b %La ^g:ihI +5EN.{q537M \%ĵkw.#~UR!˟LLjj=W }E?#.fP9[1nUש܊e2P| !basxF3IC`!2n*71ī9c&@ܲ[XCz6Iw.v+PKGP' +Q巆78@3A@׫R PŹ dqNM2pǬ5js5PFB ?6DZ&-zA;ۼ)@"gۅ`H‹_6!QP3XY-S 0}(@u~&vh<.7b"1́(EH] @*xKMKLJH'Ɔy'v, 9 #MPf(qxwBQDl=p@4' +A#aMxf=*պsl,P4DdA\2Ğ%~OȱqvRS8L@qseuLb{&n_0n[1h''$DFLʰ!":;%#PHSr|g;SHͼM1 so.Lɱ-LS.* E|Eg!`z@.k%f,P}F l4›1VKUA۵>If'mgïm$fP6p=/]?F{=KL'=DhZ|G6.H}.O^yah ]A(;WQ,ց2 ټf%.FȂ +0Ij^ Nʨ[2Y`2NwE8eT2GgOC"KDʘ†Zb Nctجm° +j$^]caX*؝/N)N 9K B gb 8毙<@MZCzj ۖ$,L6T%ZBjlqM~L$rI@ݡ)P$ԗka&ITt]uiNTmp>C!BB@r柱.ze_r" ψeb޼H*ٓ62%%{>-nHzJGL:lVQq3Df`t-t7˼{ьCWDz G.s]tBE./؝xK9]oAi}ULF(2_z{əD`䫡s,,p$)P:jʝf"jdH8OIi>w=i82oCgyHӸU荶_dEL1=LI)O> uQDzvU+/IqQTv/U))TrL*a?s̹XNqh?Yg8RSYюAjl UY0ԟPk J8ZJiL0 vWڤC{e]&A*! ѽ, pR$O컡- o;S,^Lp2xxe]@<1REgXo(k%vfl]sj$ #7-#BO1hzN V3rIt Z'rH`[0ÀԮSdΔ%DJ pcD֢#rKkUX籔&PSFfl + p"lސwzC e2\F$u şN͔^1!ߕj!3GueF2|ٸdK 4-inAeLf'>f8HDu9dcfG Gi1>zJ#+m9Z|V,q2b[́Tk gX+&HfI $]mNI)6BWȔԡь/8u F'DUtqr #%vnTy'ԓt l-dYX[F& e16 `" .9s: n1^am93 +{5!©ɊsGz<9+Բԇ"@?O_RQ#W5$o)Dş ),qTMP/(zQdk-b8UZÄK5Dm2h߭hFIž@Qx_b\'`̀!ٸ(L ȅKr5Ȗ^=Gr%? ^µHpoSMtY &]idIqKɳ%Z#J̐KDO֛0-+7cdSWS3l;䎵\p[y2P`Hr! +9TO=_VM~vA^ w+֗3H 6 Qsa$ v0V7w=zȧu;+RmH2`FI _wҡ)Ay:PCȡ|[ avWD?~JcR-'4 8J:opb 9D~pZP +*ez&'b!BIC(rPy:+~=bl-ÓRzÜ7 W V>MZ3l'(bD %Q~-Sx8LX vfdm*:SĪ8 RpVAI*~A'C\@vIeQ +C> +Pp\<3eTfI~n?WU+^H!0ŎU I !< 4Le&XxXp/1*vnLF9ۢ=Ϙyq3k][zF>\l5^= bgwљ(5'dIm$yTQe&;PӣGUfxXoO &{B OLW'.*˃a^=v3D= P'T݊*NJX;fգ{qV!+RO:ᮾ6#>K c,_JERis>P܅~T "H.&&~V[P$ؒI٢,ۚ􅲉۲ x70?9Tj;+\5`+g$[-c,N18)Lg6W8+N1b?_]?3VC" +]98la2I"I = Cqvar ~ 4<5H2fRg{#cB!z5ȌqlQ-Y")'ѣ`wC3iWRgoPeS..fwűIY$Y gI! ib3 SE.:#NJi`7$nW|^gnvIkp&:=L2x07XC0s4@qYI~N.2{^2ymoz)/d垎Щ^mr%u +(kR]zVڗ𛛂L[i&ҁS!w_z(=Ha) K8a$Z@D mHL]^J |B'Hf5Fj:DZ^Rp*j`>-?'8cfd3f-DL2,NNN^N|B&8pE*<"P =E-4ˣ,.رbGH7Қ!ӵv]H<_Hb0#up򭈫`IQR'JjX:6<_1qQ2(`c!Q!ș93rp&Q+#XoET7%W\YllI07J~I=DgkN!:Ro u-+4-fZn!9w΀(Đgn΍K.YQXR=,'-C̤!fH5$0. N4.n #xe+|TDz@HRp%bFx01r.Eaf|K3HtQq;iɈY@iKx`h- br(3ץr 2@ۺ`\trg|yѤ"9XÎ&G\9cdL Jf*L}k(HNw 6Y<ۋoRnUt}q)E!):]пȽЙt2N^M:.,"jܜ:LߨXܗ$?6o]-JQc 4ɦ FI_a1]ɕl6ՈW4fvIo3NШ $lVTS ɒ³U>wrEO\" R<3\XtڣDw68< (Rl<Y$H"Iz DSj(X F6%Fu4ʕ1އnW~@k %I*[b3yc/Yoj`+WtΙ+::3R>΋KBhH OFHɋKmr7$ccl'sW1#MZ4u/u,K/(` 2${Tc'cS(h$zɟNOn\*!?Rc54NdʆI#cLgXa0y`jD3|vJ_2^os#Z +J@Y/|LRR=*^90^>دi@<1e tZ-{ " փKELq=m$vȃlW]|BEECaT S'0z~CbK7d 6٠RN ːHoY(U cjKZ/9 +#Z.'!K]Hb 1gC;Um!"Bq+ $B+q/a\8"N6+_ +JLj! Ρ$ܑ-3 AEzQE  |f S!nTQ'hG=5G{}p¸9Jd@8xj_7P[Qg(N˹\X2܃,k f/4}Xh@JC7lۍ_=[2Ee$:u "P(ʡN=htS%S'.}wiR6͌`~Й +s)IӞ 4.kL +% xqjҞg4w@2Sq%`rTzc o ~wT%Òe1q #:\-҂+~Ì`AO|@:V=^1VFuDW]v䬁dg&kTu&:mj*NGf9*RIvj}5&}lJ.w6Vb@0d0&Ŕ +>RɡsW&DŴuΦYbH+m@]}iH0P265ـХ $"LYb {¹4s:>uzJ:O"apD5Г2qϯ !%g[ryqx 8)=dOiSȒ܋B`T+XQ66L#Ɋ0fC0Ki:[0Ȓ6R*S%h`CXE{%+ֿػڰ +W$TIt<{iX`}6v5)$HU4)$`V9>"yKx+%sK&f[  G.F)ևY`V?8q.QmaJ3X4jTeDb 8\nm\CaqbWڬ}s40g'oNb5f`$3ɍ0F +V"Ը. +컗|ϽX.`kQi=G3rAf}!`3u_-5'_2{BRsFT2 Nq\0:bBJLB -ã{twAnēRV|*-tOjȅm=#P{nM6ԡ6DISHfT0 +PHybF^[KȔ ABDs;xTܑ/*4l +uZJsEuRǮP;*8Bь/.pͰe Sc4: ΖUGtIa(p3Qe?=!J²"EH-Ȭۀm>4 i]K2GԎ+S!X+-[\g!5u@LDУE64.Ͳz 7Z +MF'iSGja㢘t:a:x-iF[;NtO/?2( 94M4C͔<#w!H V)Zݼ\i&_}]7 +T5Z0Q6ǬRl E7܄Ũ"ԎEgnAc7>[M:nlvbKa@_wZ!"=d8D,AʆLʩ %[ay~ +f +6X]"bJW[>wId_l+ dɕ#5]BDok#LIrNg%Q/ay&O$8Kkl8+QUv4E9OM3^2z Gr~Bsf)/?4RhH̵Nox@[Wn&nKO4ڄ %?mr:zW$ 0?G/ XF F@{E/doH@;-D],5q!3~}(#W-<N6֚\"ܵ(w5XbzT1~Cerf3Rt_,Jgs/w&I,וJ EfUp1X9O#)bU fkns2r<Kc^912 /(tJo Hfp +:xd_8F? d +:eg>)DHNwaB_Gs$ _A3~ՕڏuAQ豐zܲ6[B"UB1si^ ب+aKD4dh\9(:@뻢I ڼ1]T3ԱܭM'{Mta ҪS"@9t69; HfW/kxi~ }ٝVX3 L7rOdiγ@x=Z(B}ѯæ(+ uwdnwZ$Y(yzl}Շ,R'>'!; L3e޷ܝN@ydG@ ف7/#~ {RnqS|EբT8nbijhэ?/+>7w7M9nBڭaܾ1gT6-#@"Ȟ\07/Q勴M ǰGw@Hn2xi-HZj2ZlBcg9,@Tt1 I@'u:t.tfgzR,*9ʽ"E +!O."RfCojoC2 Tv +oeXwu$!?d"uyOz*V)5g^ fu1Q$lS,w#DPT Y]x# Q<3Dz\ԧ6.pEH i|ZZ%]>6\& $8R,&mzT|=Y)}F)gQrcB*.O+ie*@Ad< +L8-}œZ Om]MQc,Va +<`Sb z#rJj0v;,¸K'@JQ6[$jgĹTwDZ#wlh~'JR>`R ju-HcTt{ ?ggP4EӉ)H$U0hR*Cl` v R3$:q(ubpC{Q'<3jQl04@/hS^J]v@J$B +BNG;~Uކ9Spu#bG@ޭT@\S>PnX\=`ҟ9l!#&LVs!]m4rG[MλT3lD?GmbX(hy *{{)^??k D$˧wW`:X iٔWMKEŢݹ%ñ6= ;X C|[7!D`kU^*$wo. Y0ѯ!A-H0 n愤bVgo,b &\㕞o͔0;Džr AcU(qE\%o+0aE4lX1`g薤.ɽkXhxYoGkUdCͫ't ZlEk:$@F}/ߤaS@~y>.Sz\E4# ;^ xP(7SH(_d'a !fSȾw}%FL0,pA`J1.כq{_l`2ҔQ h,ķW{)^ [1Z$in y*ca^sP9/aNs̬ȅ=Qg# QB!dxng6G6Llv3pp\wMW'+4x{ÕoWP|`EhA7АG+ȉs[IR +2(4\=s%Qn6(kfsda\WUWʢCB90y3q0#<ʓ@KV]_V0PcR7Ԕ%\~h8bOg i[)v QFY1Y +>)k 0ҽJ![݅#ZvGϼFip Iyը44~Iy>B~N) +وV외goG$|ՓPFW`Ǧ%S ?9m{NbwLYg?Nr) K +D{m0h"@kA2bP`bSP@ F.*37VؒMy-97fBFAH$Gb/pR[sӝ , +@$FU&t +k F:r%گ1s{W-ɪRy. T3ftc9wU1WCڨWXbKW(bC`DT"}^tF))) gLMW7o +~*T? RmOt6 5ZRe +C~kӿ}ĩdw$nRffErV-hdui1K~ 91)mL#xۯqA)$m7s&93=F 4ߑw̘w/CEu`@Sk7GdGIew펪nqGS(oDV'z~cH\I{@+&pB #KK=z7CӘj ,o/fΒғ9v(Q?AX!~Kt]ė}S݅{tC$,ւOu&KV'=T:~^ +6;3L9V}-,k\v9X|oH,)$(bapv_eQ `?? +y9Q0+ZFR;~8†0HYlri5N.ku +@DY>ھ9VhwJJ$j4^-VA"_D#ZA$>~ILi}hƾ1JM^TN{"8)0 4nHLB'Vua?ٹ>1wR.;Rn fؔ[vX" IugRoRX=?z} +ِC.;fg t" CKCC +D&J +Yd[5#,V)U) ⰜcD1b"^'V#SF#&@ec8!Z/Ob3Kc'Υm +b?'bÛA^B`q幵Gt fJ(wK5_qym8۰ = _č.q=/֨ nm쏓1 kAI>ZhҨ'Q3(YBDZ=(Pu!!%6)ihI`Y{-+"C,W҉4%ψ @tsf?^ +(gˈMg .,:w'kG^ܻn6> 3.pfRZu?xA﹑򳌐0ز#c" U ⫄Nޑҟ) 4{:DO H+ijQ|Sh|YΖ Ԑ>8uX p=BR◩!/WaWصc'@x;=# ;tц +0,>j[;fn|mjPM!1.:4;ߖN9!YoBݠΨ̈́Y NĈ$/`ͳyJ4%vA;I;xc2,A)c2,:<0I2^+-{A`zSjeyA^J SG@GSt fS NLFѝ"C놣a}!J#="<*Sw'6*O11cw:J'-H'Ǖ@0)^EםET<ӞyrJ|-/&s(* Pi RU5}`->eXOذ' (`LRVpuE;=R KA0#4GEՔ?88 `KVx#T,  GPiSxZ/yZ m䰷A0\"^gp~b6uũ%T({"d#+b}ݸ3̢ς~,9 Xb6(՚DTcf,Ƥٟ +)IR8I0OgklCxHj/;4ugEOP|pcz6ahkM/tI:@ A<avr9ƪEY :l2dTDa1uDWItSN4Zhpe; !U%]ٱ}\ԹSGg[z&nPUGܲhӜ5:77W ޞn Q+[-az+%#Df!ɥa?fiAhk)&j]lވ#d/Iv$0@\6B#㏡yIwT%][m(aIgN0GSB|UՙrpBQXt]?2/ӫ(TT$'5®FK77l߅h HjԴ0clQ#{L| [fg!âZ &q (awzXp(CaIF>tAV` YW''<=vEI=r:PA3qj 06 !$hPͥc~ٔQe,eF=ߞ +^(WHc$n{&K CUv;Nk5FBV N< 8iiMԡPPPK7.WtMXZQ-RίݲQOVH͙o1J|3JԃkZQ3#T4](e_Re$>o;/xT{q{E.{4#bdZx/^3heJHLd$Ζ l^R|A&.-IճZ;Wǿ)*bEP[6 TZ />6D@'4L*3=k56>[OW_i"4 aض:ALU~{塐ƞ"-a{g"3 M]bPNci]0 1+ٲ,ӊhEfpNv0l*dCXx5 ߖBn: +EFU&^-*1T/nY܉@ LSߌt3s*#a}/S)D*2xSsVH2#>pd|yAO|뼢V7OP-"PG/# + ϶O]$v8٣=xfȕ^x~hAkP\aꯡRKA5t̚z`MhP*ٮ0PttIiB% +ԡl+/1ŞakB|l S{ָ[m=il~5zBpqH{a*'2tO׆7ӿܗ3m˓}1 dS}{yd7! + 7xi:!ڧY ;獏2n֨DH?yP:pC˰_$DnF7zwh5j'XL~3xKRwApϪeԟbD%29Q +q Е@~3Fef4P hX'wU[ /#SX${ƥO'w7? dz{)XF#Hw+]8ZP 'sq!(?濾 W# +ViْC<)#Aꌆ?>LJn|Hb_)jo{7ǒyՎ0 `bJg`%d $8f%tYfm8,җa +Āhve|#l yp%K==xF) >nM2[02M/٭/ƿGsvfGbQ"NDkXГYQn kHӎjiWmI?°̥A&G -v(amoC~Q.9A$֫سZr(|oU,G5OxeL>JtLpvRZo*((pë 6y՘u |}+Z7fOb Dv(.Ndb|;f e8@XIdnp5Fv*l=KTT"_ G#m'|9LFwKNڥO3"%E 'E ʍI! g! m F8cl溜uUE'G(tF?.U" 9h3B*vWXD2ʬLEBrY ~%b#z} ;pVf'č!ByK1&T|U9`0vR2N5f/I:Yb*Hu44w&"SiWmEY&^'Z,n,CsXvX5Id* vdy(+؋O]a äO!q|Vb; >CZ 6\DV"c$!mr(d{B\;5c,[}l 'Bn༮>B5 +ـFPѶF֧ Ն#$aAJh16TȪ Ȃ%~퀁 KK+{p`FiHO ֦dH"*KۢO"%GeaJ':H:J*~@S|?lIQ0q$[ZXU|԰\fb$0!^#`*K+҆a3"=V|+YGB_ޛ8|>ᕵ رFmFU<̼9 A,_}S={q*R`C@1^ۧtYF r"Èeӌ4pv gSPCzk}vFX3:y:h^j |U!S-)AXd]yP >~S)CLvskۓ0͠vg&OTd#HZΐ>~~ւ?Zvw4 Omd+keNORי&{ Q9e{5z+[ZMC~"}33!ğ6c.^޺ů- C:|vU(*;33B3";60t9B[C*ԍ>`TAldX8*!9@m鱓56-L G4x ,;X$gr -d B*xu6CUXZK^|mmc4!?ѥ1<.U@wd|` /wH' = Zȿ|!Fg; b[Tナ~6/;LD$,)9#(kg5m,)</{~Pێ~otu\ +6DJo?׈6G8} ^4O͹aG+iHJT-)_tGdh-)[ŐN`({X +tbv$nSY z}ٟXFrb,S!Jwem?2`[FHCo9A1L6:}RQy_4r QMVAp,VngJFtʽT!eU+ +);0"%v%A.8n#RzdnH,qT=M +P`f)ӌF/$SLՠ,AC۟ -@8/sSD6,ni- z(M%XBtӋA5r2L3߬SG*Ӌ,  Mpc%: S +LJV*̅@Xzp-dȲjMmv"cz ԬO.Ր jlbƱYkڅH~)?LYn gRTEt&';lZ1?Y3ѳ rIMԽ>*+VP),ɇ:zx *˔74;oμ_WZ-`[Qr?8لvɺ_@-+{Ya)N%#sA}z>AI͕3<285u \)q|Dj!궜*hK*Z)KLv.5MtbBb]UhOeNύwk;dB^(у:19=%(.vq,oȹ9aϙ(au<WZḳZDQzoVYf$gޭ%|E +\hיjC xK5_uXਲ਼" Y W2=A  _-~u;Av#kψZg&i^A J`WYzzeu2G7ͤط4Np vo.xW'3jfg}ہfȨ:YUݦ/Wp|簥I0UGyi. Uf HY<cc\yi~'!'\ɸfcTMufQ@}$jih4_HT(ArA-V=qCNy O|0PFaR)>D# vfw {/Q}ϓ#Y"E?3bAڂ dq fhqa}Jٹ \<8kqt&J5\stj2^,/z[i+>촧@d(yrFmw .Ԛ#E:fn?U +U:8\8AF).m/|a!*[Hl^ ŗL%}j~&|Jhkv +9i/DXBU%vK7vMs$ YݨVp=%+:g6{bpX4`pd={2뻌k<'[H@ ?;' +Gu2 PMPJ +uTO= +0 RES r;/!V<3vMhvv`Sz#b~OG(+&'ӂޑ IY8b:"Fuq#}f7O\}&"5< `5vE8 aKWcܭ PH)ш1?Wz}Uief 30c(-/k [-<,LKefןEjD!elJd`bWH&uG<u }%/8.Цq+܁[N&Lhw̌Ȕ-@> v1έLո> usfdyY?3k¤+P6`POOIpHB2C8\!6MJ ÚG(yඬtJ+;{(cTkI?Kİt|?Ai!g3:}ݷc:Ţz5a?(](|Y(.Q]Wݣ|pt%L[rh;ͣ4TFD %'ʾɉO2 q厐*ھq7˩gA^f_{GZIdʸ1My(J!8}%FP QGĥ:f +E1܏*Lh+ag0Hh;+ a=,-{hE7X]f vl@wSY[xԄQAL" +DҐ+q*}j m}/jװV + quy)AA1 +e!_x*tq).UWlT[W'C BE])l4D7XiJ@Ebu2) DgH)j)UXYkj[ jH阖F Q&cTėq#i5lb9'b~zrsZp.C3o˿~F?@ Qxƥ<87NU0Kc*k:LlzKz!L5ZQjhOf HvHO; ؽ&P| +`@y(aQ:} ۫r^n9 Fsfs^6)BRz/J>GEo v*+l&!g=oHČHޡ6t ;=>TŊI`%Q$[|6i?yJ|.p僙B PvtŽH|iǯK餁[#NBUH1 "ޏM|O~[~_(Aq̷i +ņ& GnIS[a2jvU~K_ބip[SJ~@ay2S׭v +ZL İ-`B>3w]KA*A2LjD_JճoVz3wFT)e>%iJEyWh߇;NdC݈ +CMrDyL@,pLx=)j~\0u*DbvvWȨ(XO$ݔ}ZXW#XcWRN'lѢdVѩr>ҌV^<#bתSIDJPjGY &K%ΓU0Za+8i\PSX ?[^wǮY^tfzqPK=}هKۻ*P31B|i|jcifi& +t|1 : ~xTsa64 LBf}%ڕ [ +(EnP^ +긢~8jGFg#c*;s >Ϟ +b~a@yY,Q?yɊoYY[_X}&GX KaݐXY#rbsv>O(`0lP=\&L%(1gTD0'Y0R]嚟08%X}MMlIHvJXf!XK{R"#*SL ,HLH[HIhpR_l +W2&6(WG(!iޗ_YO*p `Hb!u'3ڐeZoȲ_*>HN}$ 1N'MhXRYK6Q7qo\]BU=_M "9q&f*5S\,+fP);b/!0:ybŸl"x{w Ηʘ)O9k/wɝ"!7m7"K^>=3*-*0]L}l$$rHDYqv1E#!i vIH}'9Mh$@n IZo;s3bH!\J' +l15(ngMhX +DA!JF$UjF ++r !d:Ma˰sX؞ȬHmEqlQ X2 PU{ûnX9O}Bv1J-GT$ v(b7'HݜjiֵnDFX=$(`ȓwĤ u!>;tA:I̢LW3<+ + R՘HS#iNh2KH"LQT?h +$j{8O-Yl u |KxҴ}w#&p^֞]RT<N a4֛rAg1 74o/b#kNLЎY|qwG QOpTVIy +ZhEb<"@]ߧSF8f"B-W_RR#~Om +ݴUDedBѩ/$9(׈R]jxQA]z'I_Ts,1RK*ɔFREPp]#ī,Pn߰ yXĖFu +)h,*3 oEF[OHj$߈-Ի^%c;-WPS@u,FĊyC -a(-8g|5elgq T2aK\'/L'{ rz94IoNWnJ-?7`W)>`Gm?Օ :< 5!5ĉH|>GjbOfOU0*4\rXebFxXF̻{Xs + sN$&@p, B8d}[ $]'sE0>[>D+^4z8a }) 5h)RuUo +:eo˧`$nH4LTVB/lQL%*p1]-9"oFkMG5HmlHbZO]؈xj3/Q%MUZ:"KgNʒɶ=\r%d.àdXZr,HDX6awF.fW*t,kwDz)Op4'0Udũ0m-,Y(j&VQ7kdrG!*zwĬ*4]y,0uX1X8:OT+Np{SiҡjlOdj #K"Gxm|CuV:fRm7IVU!o.PHR:h/f/*1{u)apM0EUJ•NVP8f\fD?BzxR˓q ŔWK7rLnV8H z2`󳩠ͩh&}V`۰2y(^N@]Ǻ"oWТ#7SaG@y|qsg]J[' JjAm(V}I   +G\aQesZn'1;~ ;6:Fr ;xQ.DG>_jc)KJ0;f|Pק9d;ﰺO |JL3 +JeusY❇)i`+u dlSԻ(ʖ7D^;)!J+$ΦƢxj+$z}s},ujz9@= +2A_׳@T-Bh^]~`J8e!+,i ݳhQlMTô oA,>f짦6`IU?l+㰦&Yff4hT )n)($$dwu1hPl%[`nt#"{}Jo29"@&ŋÜ|U|dJ5$z}l[^SPb $ʼn5}$Y2s ϧlTBYw1Xs/9)_6WAW#5!N/qXr= 8ͺ4wr^DD'9O|MبRrY$ o󡚀*(p]86|_IT;7CS~JP+!0 Vw%4f>sR3(ӌD GƏ?aP[-G<58jXp2DIfN!Cq@XX@Z$/.:")8E>KQ]fք;s=KɏK~KH{ "<#=y`հ;2ˀزB=Cq{al\2?V~oq`ôOACx.M>{s`H&X:q᯺+h[b5]#"8, +W:N +zqEIa_ +AIy&DZ{5ӓ`= TQΝ&EWahYG+nOrJik}Y4&eĒ7TM_ a*Y]Aqy +?wphRu4.r|!+I.EoKQMe%oiU  ~~\k; MƆ^iqip᧪Kf<bfN =M'RugQ*7NҐNn4(8;'|A (?+u7)K]q?Kĩ 66䄓'LLSP M:i(l7B%5O`IgQmSb^^[|R|MuwS(s]GT];(~3P[bҪ^{fE,YkuYYExZgTը|mʲlg㼻%**X ȎlF:xh1D"O='j@:L B̔JbXGzM[#p)~2 %ӭ?:ɒ"g;DɛH2Q Ȯڊa`T ͯI8 (}fɋ̉kyݟfL3cq A9^3%w Cb< +XJP8קIf^[YP^6B^/֪PLs&@nf} JD 0Qn;bJFbu+Tߒ<͗΁`;K8`-|u҇(f_^}e:%X~\AT WaEדcai +V; T@r{ +gFQ}8i %у_g@.a"id kkD~_0iY55];1787!hFAxnH$l9@؎l/;ph'Y я@aUTd +sAP(GۉCe?T0T x<1N rF3WH{ +o z2u{W X&?# ȲLs1{*i!s&˯bv-#߀9̓*$u^ZqqDq3 yha4ZO_BC.R*k 0bT!,"慩>__fJ'GlbrUPRQ^,S!% +GUGj +pپ2-_0A-@@@I1p +R c]R|w8-ްP +|-+l;9:ut&Q[@#OL +%"m@C6',qS.h\ ԏ#@3 3C@GdddwP! EepШ=FB INOfy؈@ć!'NR,p׍" ,%P'.Fhdq׈¦Fzڙ"' 6m!uV<zo{S"aOw~&FD2%$ -3 XWҗSm_`$Zz^]]5s痪=WV'=Fno_?)0`M^շ'Ļj nA u:e]0>z>ԨaR8b)bm\L^q#G7*!-'Ȝ<n'TI6n4 I|__̺q!z;HcgtrC]mLl/VyCe0s&:"\IJJ] +$kq jſ 6.6XwWz5 +P@0ܪa@Ufi0`ŽprNrOaGdw}G +鄗?Զl-Jf/C*='ψ3/f*!>uʹ* |W-` :DJUmKX"DJ i_#TvW*eg@MJN@"Uq-M(uQcFfF,9 J 4E2z$z@v6zZٳ3%J9f5̧ʔI= @+ ܌ˈ{κ` +^ +Ȃyn)@IpZ|@bM-E*L.))"ɽF(5.Q|V@v*L[,spM$Mbz6>{ӴkRo(n:BМpMk8g%S4M@ +IZ;+ erTZg0QB'FӈBEo7.uElE3x)xCl4l]ۥx + QW^%/TuAW^Fd&rޮ3̞CvuoU :vR$F-o5uo'*$=X:h'CUiʼn@{"o)Z܁lb5_ӑ(Kxǃzaz`ٖ +ԍ)W@ 5C$.A"2ĥ فyBp*jތ(z7R[Ԯc0M4j 3k^nAGFAZ& 1H8Bbt^L?oGo +2/q|mEh&%kC*x`iВHCA=ӝwT6.f`wq!Ya +22-J/|BJt9ק[ ++r e󓀩~7 \qt@R&똦|`nJ/1 N'W +HŃ`¢[j 4V#ݫ$^LW{QI.T@ [3S=vlQL + ~si3^: +LJ\oeLjٵ]jA P< ] I8kl9Mft0N9 ԠsN;"=jS·$v9ʅ\8kH渧S$OEoFJP amHljEW fQ͵{fpZq?+B`tTKYMZjGmhGʒVfŅ94Df`g`l~ؕ~o.§xHէ!+!Sy +-b Ί)ԛc̻4,Le0HfK#b".flw)#ýxY.v;B"*ClU|7Y,`_皲 דc.G-e`Mwi%@ШC_wφ|M%8=p h( 2..31]B2̅ .2[L۲_K1wu FW; +XUPCx?ގ%Vzx&:h$2B0,ųK:=Q~uELcD*(~f9|Wm!zD$p:"~lb0R;e'shVAoX+0LՕy)UH)uNJK]-СhA]Bz*"9uMjv*NC͔;BTK* ;pv]s A-^#NX>AUyxuPG*Lԭ,˜<^A; +sW*o*xNiu9#$߄%૆#z561d=Ss+fe[D=F M1)Ȉ6WW*]"c`!y)ZPXz|=;V6Ї'KHk⩽-2vR/0Ĩ"GS-UY'[;iyry'Aљ t|5[ si\;Hao7*l@yּO*Zmg`*mٷUJ:hAĻfz6!-Uh@Qvږns=xć(]5|iS""Oi[XzxjTđjwPk+1Tã#DA"Zf̝R/W9 6G E23I裙CF9*'F(O0D\Q<wg9JU^˿~Jkyŀ ;UV Cp,,,}۞a'r[0 FkhCtZ0WErP[o/H1Ҙ^l]/Zn@*?51ץ镝#<{>_S+IcS-6b΄>FcʅtxnUNm`nS|~>åAi=׊d,B_2bZQ4P2 :\s66B!k?%5'He=M3.s g("fa6" Ew,_rBRp2}^F`oIcȫ$Z}+23˔0d|f.K0nޥrT*R;.eBHExPaΗm:H}a3 +Vl]eMU|<2)FȐG N ׄ7*7e-'-4tRWz9n7h;"^ا5 1\Zan8e1}Fվ3שrm~-rB4*f+ԹBOJIÁl:{>ۤsG*0 ͺ{ՁsHj8¥?x ӸvۿaNu@r P F+FPbħ@vY91f9taO$YE eӇXFU^J+)BQ}AJaQL1JKgT{qj%nWf@tDD5?S}\ljv[agY?;RG{+6bCmZ-dEwTB0"[??$Ԙh+v!(pJ#Ё6qaVTG@ |gOJ h# iZ`׻bͭ_yJx`IG[Q"cwU[?} ͐#٣tĠo ??FT?XL:?H5AԠ^,kQ]ֻ7<[v&ق;a31fYU$ XQƸ"Pfy!/ųOt<#KE~/0B{ލP8 0+:4q")٫)?-㺌Fb - qW^Oy8!4-.B]/e@7*F>N3z\H1!/FtاQq+K)vdʍb*i|M%&~n=.0NZUTЀFcGZѾ) ´vn)f}~XDt57C>F`*<[ + H6#0n`Ʉwp#Jikcvl 8Np'#42+C/,g}(g@ +LjbtQ-[L"qF6hH%?1 +IHGЎqP@ܣߌ3;[ 0rfP;,E +=- o5(#tQŨ#cD!ue]&{Fc;~Ӳ{/SVGoev 1Y 3ΕIJi[fN舏s&CIӳakjEPal@r~ͻK)Zem-%-+VpS69pz~hߗ,)X,eqWhp1'o21,htX 3:4u51{1(St~~՟!,bO@s98ɭOXeeaai fNiF>mc2gM4rψD7 #ppP&Ig;϶ 6J>S0E +řb]x|iLۍUjɲVDl4}`4Rn1czlypȜi9܉XnB|WX[q(%4 H'0adKעN> ]кԑ]_^Uz\}Od`I}"Fb^V% f#@0i}䧌{SJEn)NjD-4aX¥RE"+T bQhPjv,!gߤ<; 8P jͰ=ꥇtN6 taFH2Y5ۢu**2Űkr_%]">R-%2g pJ} +Wkh8d&, 1dnPEu5g,S{~0.մU3R_AkO7{AI+Zjw~]rsjuxTaQF̶ ;mX[!@a"2lmEg (4`i!EnRNIg1Rv<^ߺg&io Fh2TԽ= ~&%;@ u nFV!dڏu|{V(y|wg[TaEh!.h`G,ƤoӪ\icW:vۀ#^q :^s#%1yhLFkm:ːڥYw7fyb)p`$mDHuYFPL*:*NUlc)DZ5*yO vtDbNFIBGhOZ |u`I A\'hŖ10gt.E~A%`_FSǺ QA;C0Gl 3`&hq4T_9XBZcZ6R>[I#Ro_ hŦ`) hwEN6D~䱁 +V_%zHx?B4( {2BKq é–oj¢sSaaB2*i}\CkT[$pebP[עf|R~~fF-5>[z*}x%ӰKRw!Ϭ#hGh倓id}a!4c9. )H:۳g{e7# +C(} mPpxb:ogaPU?Ϡ"+Yyj_;'b J-?P1LC{ C.4DU!٠BZURrîZUp> py$4 Pq) 0X/:˛>PY?fǏ눪wun]D;u|Nc͏@3n,,7W[/(gXO!ӣ_8QA[nqW"Yѕ(M,{Ǝ;ؔ0ZweUw@tS$k;*2s:/1y6PcNJ&ēmM4-DYN{lԍq;A?PI[5 G hmp +PPQӱ?"`BH@iV%QNM,2@ ֫Y"8D͌N΢ ٽoPhJɥuHjUM+\L#㻝E7q2' O\)5d~i` *@ٴ(THMdytT4ok8,+Jrq 2gB*+pR㴾{ NiB"Q{# tN:V<X=G'шQXR#Atn +ZH*wrNq7r {oAqZt.P3iEXҘՎpo#Z` ~[J]+t2$6"R*1aViXuNM'ZirCTϧ1NQ:B'芧gMpmM:Ilt%œn>G +(Ca^hZ19<;)ȧFd~6tT<"R#Hswqf@<:Hɉ#J,z@K%b4s)\Ϯs -w56uRQNejJ!Oh`6 +ԺSeDK80OJ"Ro=u{JRQG1c^nq*l3I#ǽՓC* (oi2<%!xLbn֣x}B-P"i{G%@Z/B;'?C<= 1dTdexbNR>)`E ^TqtB,Ge@4 8t +rb>f +PQq#V(Je\/P6UEJ^#NjlrP" zGE;)ѐr`i 57lt+'!EmjFyog$ށ +Rq BXo Xs̔)\cDOC&NP9sHD<Y!CxI,כmI( -:,>ҚOPO)ce!ȹ1T.MrPPGt~;i=Um&/brJܜk42PI|*+$a1LŌno{fXM\L@TyɲThKNnG&|Pc.7xXqFh"b5S:*Iًm廒>yE_Ϩfʫf:-xJE$KMd##F~E I˃Lq˜ s{82vI'J3%f2x$m62pfodFn3XEX۬-~Ȟ+/A^Q 7tӠ.zٗC +IG$a:#;VH`pU~\~k9C'JZPBS`UܝL+R4B +BЅqӽRG_b hmTƬR ª&9Džے'cgvi 6Q tE +Ԥdvjdh0.ց5a>3ȓ(Ԙxs5ggؑ5i T:$2oI`}d_t !`{uKSԼEZt!6 Yb W[ eMY<Ǖ$8tp!@hv+$[8\!R;żlY"(끌,yP ft}OLjE\(⺎8ȱ`ܭbiĹ7JeQ 0[6E:E_BZsMjri@?[@9F77sUOܲ+!wrr V ُJ +{A :5u*@b!l(@PThZ P ,Cʃ%8NN/W%Οdە V:s )bG S$qi/z8NHpȩ~Y/Bya0;1t36Y#OUp#ǡ"c>7+R#8Pt^ĽI9PF]@q~ Nk%E{r:wYA~M +iB7#i]2Nde6ŷ]QDIf̸)H1@B˴0ẅJ"'}9ޛ,P*b"1&p܂r%BCIǼ5x#yk _ZfɊJ2 a0tp9,y7C-$xe^(e2 %ЌH`:lz +ym\Rbk+8<3nM$D%2doR'"Oqc{Ŧ  ZKV 4CR휬!!:*:5 +{_; +x #q}hI%[x)}@(FρW'l+ˆNRIG7|' +ޗV)Vh1 +Qa JhH;pSaTNҞ@9x +CO т?z5}ĵ€`<*\ICEML^mހ +U>X  xf8C{!|E6'a0\*(x{(khf'QfJLP2I (FĮ ډj8! ̷"6-: H :4Vbf5(C J7x\dZ㯑_Z*xZqph@UUvtpNpJ '] Œ5V.T;_"?>Jyjx?jEFE"nUI +db7ufmZ|ADnl'8, +KLp;q\-j)ɖЇ.p4e\ب~QO PQ}WJti-)Q nPSka'p9ּt;Ԉݠ%O-B%j+no_E? +cP1UrD30P:TN0" yG. +'x4#太 +g `'7/G' 6]%*>c?F/CfY䡁L,ٱgiJVE 9(+8K+rS}%&u&5G:)W7^ٶUDp\"E;*!Z*^S$~I@s҆5)#pFy5iG"'-JкRDi&4-j2=٘DVzT lnԂ"* FBT` rC0{rr0xH/zѓ.<9{5/(8k@N +[*}Ec-X/ +/Zw52:{Dk*^"Ak[sƤrQq +'G?@L:PBL*.vo>stream + (HE C>T4U:s stQw6TETZh"NБԗK#(^=BA5n*RGIqq$QscYe~8ʓ6&*ߑИ`]P_7䗔I`IE8Z' %Q>I{j~< BtVI)Dpe߶qU'gZvNT!9*]>!mR x˦Y;9A&gqr\0WeM%|CEn⪞_D$6K:T_tEb5sp#Xh:P=m9v +wEh 'O(ujm#G2QSUB.ߜr)qɢ`R4 *l6~zg)!#v)#l&q; o"-V+̣-.q|M)28eFEY`[ҕލ1Ӕ'+ +:u^ʑ(PpHf85epPIO )XDhU\Y@iJKC-*{/*h^"gW|(?pcP VG u^m5IVQRW:Z)j>U-'wUBr&qTu 6yR#& :m9ȡB޹*I▫h5m uBZ9kҁnPuR%rB؂Z<_lQ`zE@YF%4{9=9ϱT4#]tFŒHAkv;7MN,\QleK"ݭ䖤36I9ބƳBq4U&QuJÁÀ=rgN#S8Cː7 ii )Uqf,& +_qe*31xjsgW4sq/ːzt['+vVGXN@`9) +L|A;I:]K-@B "oB*riW)S07XZ@lD*!Rȳ]BUK+AR19 +ƀ,u-~2xRT%w*-| Ca@ 2GHf)Lb<+ݏ?1}Q1zwy_ih%Ihx'QǦTcQ _h¥!f?WP* `sh QFÈЉSkH]H\ G+3, $P,C%(K`VSL *Ɓ;v,8[$o=FZzϟa I,?KR } +)%O8z'f*A& ›lJjV.۬6ylAauhݵ:U*rȵ^S[uqy+-V0-b0C)z9H"'Kehqf@ ⁓^gG(|u^/RQ +S?=FC͎A]IE4ʛk %!9mEڀMQ@Tl;RH4_B:~p`s֖M8TP [ylo@ B@DxB^kQ) @\ 54'ʟSe/3BykPlNQWt4O *IW68[ +^IyDU o#x8=?ATB7 +gWG +GZ2V`sJKMf!#DI-T>W>(e픂JHqZjGd+6[Vr‰ hW9ZǠ&eG|CWCܝv 431ȘNy'Ь6т@)t^X!߽,s*pX(&~j' H6S,?|; . +\?^3[BUu{-1ym-ep +a#-Uo1}U1StOQt\)ЗsZ/H>^ߡ'e^tp 8L\r4,Q(*!eUl3L caA+ NL䴿CPe b0J)WUhs'$_5gPΟR_b_\L +#+AG%-z'NfTÙhШWR[Fa R^PnEL8SrAE7.xs<:~Fj:TL-t ^)v*;batܐأ{_*ϵU0]O9v=t`e ;ЕWHsScE+\\=^˛^o NqclZF[%(!(Gфa-EFÄkhaH\uN' +3Ds2xMB&&sUP객iP ?>+?)D9Ycumȿ*%BG) GHmj$c6V $% ,S5[l:Z),R-sh! +@nP P#6 EL-kQG@o"8U!hv +DOf>/"w~)Nx0i~@Rf.+#m3 B)ekAQu3U3s'qu8<[#z:z6*`dȵ*@`9<%`yTF@`XJ^dd!(P&'3fCk,/JUA%ٻHZ'+7 + &N2/~^rom+PG"A>:4-X&^LdQek(Eut$zDum$F0`4:ART%PEerGeXΎO g(Lu⌦ǭ) lSz`_Y甧10oM\+Z@]ɯ0Z *" _xv=* KdC +{Uvr5^kHi,ZD48T3T蘜+C6  +VE9Q*0)ikjj[YANi2! 5e!iX,-h­dm_>4v o/2rUܣxt-$&> +n7kgQ>EB8T50Heɪ:IZmidžӪ*EKRq6$"cO m+jw] ᐶT0>H"IqJTbK @s΋x8&Pu*v.7 eB蜆H,d آmF%x/DAܢ&Hw4$sTiPS (Ǥ + Zr e>,pD;./_F-wPP "q0f"~VЬ|@+YaBmwN,ѫ%U)>[(KUٜ+u;> ,Dkᑻ XjÎ}9UrvK痓#KMPZMrImlp04+ )e#;\ W4Wv,~u\GjZJrD˜%ԉ($SS.$ AH!p;p>|smRw\ {T pTPaT`k*q?rQ7bE%i P+ۖ5:e=dŇ zT,~m)7H\ԃ`(Uz>Pr-ZF9 rX94d"TkzZӛ#ȅ5@$žY1SD+5FE +{94("ı+e5l)IZ +gj6257#:@)/G=_,5/]mJX@m@h>dq !2"C"ØR+;AP[q?=a Teo,18ǹBI@L *g0N#5mLPn'!s4mXQ4RICSǥl%m l'g c=L"2q+ma_9RTc_Ti)969} D +[%Ғ󂲋c@Dj[6[ RB&j۬` &ػK5ܬhl_S#^HJ 9je,cH觳w=?_`'6_[m|[q(#*-8G/j"VBZ!{3F4@@tQ" +K"J-wWEH]^/P]W tK/Glu2VDr EGWʹ + ؏H<`Ô<)%\oc,|E|GnBƌZwd@|ئ@M`"q0:j˘0$6U]#/Il]L&mtV!vFIU=Ԅ7؅|缼%~g͗qjyt|[;RW\mܖ'_Bʈ"\wptb}_˓m_=ݍ._\^mM7XȇYWum;<,_4~s@_xol_B?8?Y~o#]~Jۓ7/\O!a矅_~_K|Y\|۾q_/ v_g*?/WS驾5Mo=ݸ}:S{{gʆxR/=l / CblѴ.FUMHYZ_c_e uWKF^d~da4젗Wn5~SCkO醧?ׅeqsYm-}Y#YNګX:x.Þ &#`Aor^̡4:SגB+C~];k}}ܙu\qeL6Lvc~mvuF7t~_;CdpXoϗ`Q 1Ϭ/7:-/w&X_Nʗ֙exWW +|h|ޙ6UxB_#F*ΪPDg?;nXauU#JL~No tRDB}\k:Xc߁Pnmj52Z&}y37oNdچڷV pOmoj-+. -k[tޘ[Z]_ZM:]L{\(.Vu'ac%5UYC߷Z[oy4.v˛[ݶ X"}k﮶w „$cZ{7.DJYHٔOoqy[w1bngƘ_~Ki/3:xqݛ˥ۗjNN_,ӑ:?oF/O_=՟Nm~ߏN+NVp0FvOC!bVZ p/Ca`~Pؓ+?CO7{y|s;^HZۏtn`MP~K^b?og;+|sCX~s^#;{ǗG_ׯ{yry|a6jo|n\t+ͩփ31ܬK埶Z>!2W'g[b/bhC} 7]x2{`_|ur:#Ui~/6ͳm:ۦ|ftM674xMo8}׳qz>q:fO.N:_66=(8͏8=epyH'Gw_{`&>r?p7;,}m7g__ϋhp~2q$ [u, Fz~`"Ƞ}91ۉn}Po-fa UחIA^jB&wmX.N^7 /wZר`7 j{|F! k`kC{ dۡ^쾆|tOϧrG~} b) }|t}l!]s_<=9[!׆y|tz} WWܫttvrՑy49sfǏ7si?g3v=IM]Zܥ9wc;=;G*~.&w*%Ǐ7wi͹KsҜs' ڗc]G;`]z]e<|K; mτc*.v zyg.|={7;3#7~'(//\{-рx=WNU\|'rqB.ng8[bߏ7 ahQBn&ޓw}h~[obo~j7gˋdOd<^:]zf;>]k泹akɳ/&TB8a͙\<~'#qi;Wm-b|7Ʋ}[$"IN¿:ut|rӿ]tv/45Gvݞ߲Dy=rqQ)n;lM|ẑ;6S`>[WU+Xҷo\ŋ7m<:A\ƺ}7/;NUUУ=w'.?O^%9]p_n_*yt}H<Ӭg9%{~<~szt7{M7$q|ǫ.F+E4yw6+hϾ1(h#qYY;/GE1dM>wsV!,nˀi$loMzԄqo雭'r߸A;z >=>8>Sz +.7MXs|f߾|,۽ R~cgyX]B؆p{qdPǶ;-}u{,>byۓ~ZlV^qe!>y)B@%;0<>ZG/wRI |Hy˔)}Ӈ2Y㒞3zfg@G)^],ٳ;"ܹu^KyfӞ]q{nY0΂A ,gx +*aQw+.صKkoN~z}Ńgp|lwHBX߷>++v=xi{~à[~R<3֡^vW.xX<ܟhyuzC''w 107/mJm qW'; kWY_ /o0?,ɷOѽ^I,?ŝhEy7Δ,s>͍c_i%-Y2!w ;CΐN}g*>b{UEi]kqٵ8ߣ.05/~r~b󋣳Rfo/|ϓo. ؎PϥǂQqwF=5~!q%b|79"'l)6]-rw35ۗ{m_>"/͏'wIӬkhl?t{TMcl)qj}f {?*z7;hޛ{S)tޛ{ؼ7oNac'>]fk|8>}z&iQZlٟqcՏ1|Qn¹?삥Fg򞫧5x{ h?aW3#~cm˘Ùqwb(E$샬$d_wKf}Ao3ɭ34@$3#ٛ8<.<7οȥ'6=y- O z6Ogӝ@ @ g6Pgu6P]̆Q}fڧOl>xcfll>H _G ~s|T]g??"\'g|_}O/;?ž|҄Ͽ|_~YXGrgonA~\İz_X<BY6퐦c),گMpͫVxN=>> Ϙ/HSa1Ma!>ߤI)mtpۃnhahsӷn{bOsO\/ݫDJa`MԵa+-}Mu:܆oBK.aC3Xڞ6ehCg7M 0[k-rD_lg{ah};?7/V?'#8ڕql5-kaWb.__Ambj5a36v3M/Zp6Ŀ_={)?ٟ}矵_/uwx_g؍=\u׆1vmF[o͙՗g#37aCJa{f=i8<زNC7}<~P?7-V?ϰV{i?Eh>>a1b㸔mhJLb|QeM53(F뒶@WΞbwoNu]N%6F{msXP{A50&rh?}חa;$EN6Pu7rC Z} +ͭIA&v&IBg_mf/&oaLMȹt'slOL(Zo;97]?CΘVc?SiOٷ;*k˾2N; ޒԹkwDmKEץխ:Q^| ~Q`nS Gak+%!u Z޶0Wf[A_ soCˇvUz.~cJeU. q=+,}:=:OÌ;hAji nI6y ڨ"\hGRkhGxs2m1+G{~]J5ev\l~17M秷=7C(Eî6) LuT6K&`94M1jh>- zMc&b6}chc{^LkL%b*gSW4kQ]ܪYc9{xѫyM3LgFQrv+Vv*uiQv q8LwQ7M+|9}lw0,zl]Ϧ1ջys.9|{hSWW-iKaA[:2M&;<NL`>!pdݶ1 cnId'Vu77fd[aLn:vtbE󜓝>9/sew6ƞs Tq?ȞǑوL1()Kf#"*)w;;ɯo՗l_hOvSV!:n'8]q^2q;|L+u}Immάlsۙaÿmw6CR Mh5mgI0ܷiio 7ݶoSMp~=yCnAj"v,m1&޾g6MMu޺snɾ}lmddY'lᓍwdG|(5cfĜW~Kf9I,]6d(oi*}N2|*ɬ'{ۤŶ*N-m +]{d'kH2d[:}clOɚuiHOI C;;exlF&gOm'2 &B-csiO<$g3nͅw]v'; \u)"'NcGE^-[;*Mt](h~LpPoOMdfge'[rkmemIfyb16~xr %"$ۛkJoD?ɮg$kzhw'~r{IfN=:nh7fY-ϏC_\8Mk0̚.۽Q޴66i߱~)fW;]iݳnq߆!m +} xFS쌈ҭ:5ۥ:-xChldjHJnwb2>i\LLײj2ioF Bs&B޶L"%;n;{ik=sbھmY߲ޡþ̄>]?hߦ^<|CPHc`lFp&}rZJu!Ul}GlKK3hCpS+/g : ذ.%6E/Mk]R0VC_a)&9[|$mlcu}|=Ol3frm_ո` +{W o3dQoylr?Ie pj#nfVIMR2%I$U_'8WIeRih]R]wy]4~Osoͱ9ַ'e(S>+ /(*f +N2JE3DNQƤ[a#g7{1*fa7DZMuvk1'sl5gjun %\~0u̥s)\1b<=ba9~c EC@u3FL +^C*?X@›٘Si 6:6eKIEjm\hRҌZG":k,U Uh/<}fQ4Kɢ +禼MW qA,07 ;.i]/tcV}m>QCVjU9bA +"iLX (b!Fe/g! +WoE;%]gHEGJ>>lV{3gV#!ERȞak5eVUka-`z8آi3CM@>_٢61T.c6tSKѨEezMxWGs6R[vB{W>JO]-6{r&KTnzƤG+;:K"AlMqBWZ `Zd"pѮ5SSBfqioQ*KQWmߒ=]{%cgkF"[ 3ݍW7>9P(a!S -ء"'6/io&C5swn)Qۮ;DCoH:Y lPdM_qcYUDu}VL$(BU2q/SNPksԤ- .iBc2l^}ۆ?O6!(Rc_}zZCn}`O,mY$]l^ӏ Aw 2EYW}j +SDESb5/zjvN 5%_/~$^? Ѵ+"*7Hak 4E=6ǩב`׏^ȹA#Ku;!(˞ &z1 `־@hۜw lzzJ]i7x6~GՍ/֞6~5h:-z9>&Kj|$n0T-""'!E~=67qجanU+ s):S?kclQO7([^k_DZڗ'˿Q9*>GGk| + W{zT|հ:6ׂyjc6ȦL%[hس" 9*AY U3@t9[pDZ82c[ =ycQ Mw5g7㬘psp|So@4vm7!FnWKc-b?@܌I7USɞv* (0"7CӮCst,RʀVSalShh{w* +a_/#{^G;F6Ǔ)97 ﯄zRs| zwoxTk ۇ5RSj86Y>{3sKa٬cw9ֿCSbZ#$YJT,2./cBU&.^ׇ/2'ը `p*#;j&'ڕ]ۆ+!0g)o&LA0y&<-jU!j@Y_QrjQ5]X5,)`wT:f[[">J<4x49:Gt6 TKRsi(;حiG>oWn$pxX# ubP51Eڠ[OVڊ띑B{)R-xjQGa6ֲ6~LjM~^ +3-oK6E*S|K{-5s*2#.(Qa1XΪL]$KPtOSC\=W 6+hWk[kFR/\ּBQAcOԡĕ[dFR(Y2V1ɼ`SKi{w(zrqm`:߫!i!c=:zj|]MןYbu׵O'ft^͕v%Uf}m`Wc`.~w 7 ~WJlx [q~ӓVi??mnǵF?\ |6Gũ 5oSo1Z)n`jUV*xfxkBE +0&NDN{Ϛ lX~dOj̴֎4 I1+VuCgÍ6ڕ][mw0l[Ѐݰ#kwnUm->mm]hkfx@[{5ЖW|c>{u8c`[k`ծbm/T&|Z«24kHi$jٚ%ҙ'V Z I0 +I'᤼jTC T +CZ9ړ:mmm8aD`[N7K$Bݕ@ ZMсɉHG +]{젘BV[b%ָU]׬ōPT:V&nL1L*ɫU "uk߬G4^*LU#ؓ9fk6J2%5?3;Zm˽a]ݽ߮qܶ{ZDn]Tm,bQ9[Tظ0VʝsK0d8!Xv[-]S,]qsbm=42;-WsӴlݝۦXЏJ NjjAgTzA_2}jWVLo`}t-=X'z+` +fƅ]3. 9Bθ3. 9B>r.{^f\ȟ yPXF +mTH.CS]ro%k ܛߩU,j;bu- ;ʃ;.^>7i]ouOt~\;FXaL%P'rrqdf']z&0{?!*BիaAkaAkaAka"s \0 5TJhFJ q1UR?Y!&v UɳmmPr*a6rlwܧ[&5}]wj{5,Μ^AT4 +۶g3)G:9|N=Sg|a&_f|a&_/v&_,}B6ٙo`X6y~ع΁žWs|t;;aI[U*16ބ935BW>9)#Om7AG7k_ޘ}7(uOtE`ǐ{tC,S>U}Xmpw2bno} B;[f3}mlAzsWk35ڼ#>\ ~_y/#.^ofR>~sZȎ[ӳWQS2ΈnЍNW~K`m"cqzkkdcީKIZ}Z+|\qlqM[}(cf.̡YmP6kfh刾G4mjN4CC,o_H4P V޽ԯCWii40ev"Lľ9ns]+x ބ45\l]O{xIjs>y +L7W[>?rէ \;WqU@>Gu^$HkVw{26Iq0'f']7ވ;5~UsxxmP +eO0o1R1r?uӍD7 QNgꃮhF1(hz⊋=߾Ək]D (Ʋ@zr[ Vmѭ^vb]8Fibm8O3cLW=ϟj$Q雗Q9;Gq( 6og@lf@l{@lΡ@\*W(ML'a&"):z`﨧|$Fdzi@7n#({đa|MƘmqD0AߪB33ggRwWwu pC6p9b +06=IKY(6nB6m{JӼH1-]TA֯ǥCL è,#! 5ɊQc `44xHMr!M[ \= 3iXC_.ţ9pp7hPh h-@G`J2D8`]C9x M)Ib$6.C%rЖ"s"-r Kټ/vsKRۻ Fb!Kv P_)\o +a&Y87}B"` 2]#ZGd)$+!ItD"HekHBl_WV# 8й-cr9,Td +/GVY6ETFG VgL"DfLY`hvh 2`5.oOuYA2@6 q$ L73# j{aox~bFBt3&6 MqcM)9CS/b 6LdV$Z H j]WZ7,SAKFvi ,Q!<0q?{,wri2n ۅ020#`nD@)X=qQ=28oH#ތWz:7v: Ba[?W0?ɩi'f;`vڋ`1F0Ht4C.&)}m/ͻ4?>4+/qec61G!tiq17 DVc@ߤ!GAar=86=m[";DƎ=P4hA%dz"d4"p(1QBQ1S! EE6n'~K3l9)r^$X8!TyNI$,#Ao>?29j Iiݮ G[ +[m9Ϡ 3߷} ` +p]":j?y`{|`KոFoH +%F?[5cnk2Qtь` +tWT75 frz 1nQD@` SD+-M }!9r(IH"awZӌZZ#GJLŒaj'B0dQbAugˆ$p-%-,`= RM xBED/prz p +H b-h$tL=mh(CP85c  Ǣ&YRB4G DCK/eV m &&,PQx*M +e:c(J,%a%]CY4/nc#PS,.-a 5z j +S ]M\u2_{hoW`dЂ304FD +P ТdMHx&2.wӈ@um+E$ /S3xFS /@zS%8CO "6sմfdK矒<_Qy͠oo1y'ʃ9|Ǘli Ց̧]GQ)u(MZK6 =01^(ZDcw\:L X ouV%usv,"z oqK!ߥII$tv8 B֟mHe'?6QbH3#@WVg-_G*McmE +X5K4 *u>63TIwȡui Y=Pn TgJWiiiAlUGݞ3?aM9$.OTPM4jۡQ;w"~Q'fwz3M&FGVGUԦwb4a, +51/ӛ$FBTo̘JRo_ܵ̕飍B4Jcg軟]^!V#RD7ӂQ徨8.Ź@ͨ5-WzLzdz:Pjy'Vԅex9, 4j]/̢]]yN֣7^SkߺHbd%J+,+S$d0@fD$H T߾`Z j4/on6Z*TŎq fFd%/e7Y!qШH]!0&ȏpmH+4KL&?PJ9v~ gFY%LzCAG1yۂpSQPkOg[l|i4E~@d?".siڈ宓V(H"d=3P~\aİ,%Pxb 62d;\ُBNJzoq`#8H L[n|W~̻?pV?&|n{3wDJ-`GdNh%y;`eAEWDZR2fC#%#20$'͊,ӌ[ق<-@b-kL4r^ #s@"O12-1 .h(&de h% ",Q2g[M秘Mp01x=1]},^+RM$aX*0qE#73<ē Q[7d4+%$w!H2G1<@3cȑ'dv ާf(uR'B@NdYP΂xM^臩 "L0?a$ +@" 2cIa3:yo t?8"7D,L(`HKi魝Az GL'@,YhYƛVY!0,-PW˻p}ʂL#Zy2.M{a,(9 : ,,m,dde)Jr:d@ ╭Ƃ^2hxbbv yVi*MX-P4аa43+3iBd='dw3o OXre-Yb[gA,&ހO>`UeiBs#K2dž˓' 3z@HY[X1@/ Cj&"8E1"Y]y&Ȍ~6-F$[j$^ Gى`e2ŭBD!չZoH9Kk4>X\[LM[ hE#Xs"s`ˤE@@+>9] m B{0:LB  A2fGS]xf [@npAX$t@daP{ȺMOY$-t(PM9 EQ|ʙ8Doְs9dzs3u$0$ + 2N@ 2d(vx@쬝Y{C +k&j`vgN8`,IU Z`JД| +{@`Ih +ô$av[+01-& tHywaD&pI)%EbeuC.84qSt#rɤq"xh /0FoaFAseMn]w6PgR'%Q4HN #LJ>(f (µ-B`,Lnn{xĝJ#uu FG#E8V zfwV_TӐC(wuWMuLїާb|GJ;ʝme\%P~GB*B9*[ !)>~qW6/{=1 *'?mJ v+H(0eZ֟dW%"q1'fJ(X5=dKxT+8Ps +R"r@!3 Q.: hj"XD 'FD"00$Z0(S$}C(YtI'yxi5K5B~$&wLOTbK] _6A]ˁu‡uS8.T⡣z8lm̟?1;Jbi 6=%qSܛP)(:IûfƃzA +D@ +vmDc\upL5Ƨ`r$G *2) N/"3Q^K#Z 971,&'`jEg%?v BDtoxdC# Pb!Q 2,dxź]OE"(e0فX")ؘÖȰ@ RhcHr"`K(>0PT-c/FkԁPce̬b :R^hp6J)跈 ȯE 6F"Q F$`I# +ٌ5qkӚn?gi3KAAhP(`t?@֛c o|nB˩e:p[jl;3xٛlTۚiML<l=Д M 5$ɃR>v~FP f^c>SP89(fKf7hM k>V>h XǖKueQEa|1RLWQ5F>Xh; MfO1FoԂ hήh$z7RCEdg3;!|P8eeq6ә6 %ѣKPO s?W]͛I6tRuJGu|lXI TW hDUul ԓ|Zo4#dEsF clS[z}(6RNVRuP*:`'emN״QG?إ4954eҪ9[B626Ɍ41(XiLz-Ǵbv3>k3{9++- 5E압AϔǜK3v89w$3mAM`cM(ce 5 BԲ мΎHk5`DR +'ߔhv&tOmr Hۋ2RӲV+ mꨩVo4z̤JZ`%vѴ)weZ$CQ\wh,d«BM*Y^״ª2`B-)bqX[-:>uv{0_c6f'D?Cd +EDkjAJYW[$&Æڳr&ΐe\U!HuLTzd`x(Ch+qҜ"Teyn>clu&z *?yugmtf٭``!DU0 ) 6u2)okYbҎr:xI̩T:HFQ4o]лqKäxe!f>-j/ w]鰴ifK,+%)kPfK҆_':q`4)3 ZSe4Z@JXurY)k}_(`j[}'Eg ` UWe49@p*E {yF]],tV@uɔFi{6D`b.5B۴Gs*N?26M Tf \ |*u7eԛv?cekVZ>磖[7~kF wJ,-UTpRDa%62◭0Oek6 unoTz޲y|ƱgoSq8^E gr +Re&~yT$l5̛$zhdg0Duv(xȤqK6DChG\v`z}k yM_<.?j\:)ƃB6*Q$Q,]Oz-7"#=Av|ڐ9{,|hAȳ7[JQ[VE豄h]WWJ?ꊛ#L۷ՕnVN-kz՝A5@;S40]أZ#BhD `&`m~DnU.q&l^ګV֗i7n9 ]hQ[sXKF%ʷ8[wDljћ .Z~# hvDOԘvCeҟDϧ*;+ƓHK7 2z0Zᣵ60)^ĽqЩ`f&>N:^؈{)ݩ%Z"JRse}yTurpt6]j@`iηaZRt%i!%Èh΢\_hYUmDQ}JOAHDf\5 5̵\w&|K7Sl7 a&!ó`ݩ @OWKo2)f~A*)f['hmᷱ?6PGhl( M[am<h?+v0YJg OzG(d>QѭT2.fG6YӞ+Lck]}Ţ +,fXdv+bo[AmNu40AΔ KHHwB[K^lEm#6ǃd)Elf[S[:S7Pst-v?F.8UQeQo =''|: =0>:]O[aIdCKc=c e2,z!}{j{R*_hjq^z"'BS/4NaBvt +#XfK7vs/e4oF$xKs\=8ːnS; 5R=3%>$oNgv./RxDKgqN9=r:'ÝUGLOHy7_q:^pA-8/YKϝ|9O%Լ#O xgy~?+ϒ^<ŸM3)]csa㱤T~o7 7 rU+z6ݛ֢tD*)| m.N> g>̧ncB~꣑o?\ȥ'¸m(W.'#iMEdcz˦ m=f޳Laξ|<`2sd:]`^G3v9'P!Sx60ZL;n:Jbux~C^ygv^yeaMz*OW:$+SO*usGH%O.O= oQ+,l-[P?C3r%A(4Q0[M1] E&QJҽN 31)ɨS1ΥGWh#}cO|zV6߃|9o{ 1`S!iMNt/?#/Ν`*˴Iz&FR +G\vͤŸ}bN; dٻәx'ib=u<gHbg{_O? ; +#;=NeL<='%{D坾ӟj@8 ^RP ?eߝFvz'NjXvSQuفNp +!S_'N)Qdr;s8_&Ns+:~q&FtЙ: +dG38s叄ptݍ|<9j|٨Wn/]M99=^%JL?\nʽ8utVrZEU\\7zuOACOɁZuC>>g\h`?e̼7U=i5np{{ؠ[*SwNTܙJܗwsO{~.RV&nSߙ;q*{Iv\7_~;oA0v3M[FOz@9r?Am:?Cz.s!}Y2xSTz^waU$]×A_ʇvsq=pDױL?zxB)G'ty7< +<2Q8N^}܆ OlG*@EbD4Dw`"6RDYdp1D]l,TQKt4c7/Q G>Q~iP>_2F7>u+9bVvSNj\<5?JT]\&2tNk\g?zI90=sNEe8nز`~ّ8m0\tr'1]]]`ƩSnL`?0[C&Zp?BQRD T**W1 #8AjKNǙؚhqBeS,JTH8!~|% +w]J02rSnL~SX(л>:ʹ NGjw|ԫdAas|8NkxP1c{/V6c}N§x?R͓Ad|P0dB}掣]9worlwO|XzɟLY3J.2I쮛 yV'f]O.s"Z[W_qZ8yx]Axf>iryI4Uo2p٭?^RbSΫ^%-ᄎƞ2H1w\ʼPL5>}o*Ӽ:{];k)K\⋖).VR2FUM54/%t=kR4V+Jάݸ 4c桚Ԏu儮bɾSU&;u;idzw]);ہxyi??2҃SБ0/4X`;/Ft>{OOq㫣uY N/%C'n^#77s-67?w>K㬩7DVyH|8ˍz^nLJSL:Z\i {IMZ_.(^-ݼo'˰RO5gwa;O&=ܻ9z썮.0}Sp>eϠկgb>V4u7p.F^eӨNigmcc*X :/̇?nFI"\ؖ_|ol3doZҝ߹ƸɅ@h:S6+V\h GIe]jZ]ok}ny nO]©$?uF΋3{Jdz ܜeQ&/rGObb2o,SisS4鄨K$ĴDL91K]RDS śHYuٺb&wx$>g3u9MWg`\ps6>Lhll@b)YKGۡZ='bsh3yΗo W4ϴoEtک,y2M#Jo:=Mt^4@G̙ +Kj=;qF~&KwXSW7n w|zl"NzoGVjpx OOe'/ Dr'(x'o^4\L9ѫ,:ꥣ +L2]L/^H+ss1[6[˧C759 +x6dN;'FC' ER7@Ţ .о +R9w2sƒL2L;Z* %4nMN3j#|A}ZW:XOqwR.~ K40&(U?d2Pe: Ƒi]Ї$%q\|}p6Z0aNi6U*+>;[4C,[, )M~*rkNN>]pO8+.. M,8>~څHKL*FyEVs>؟ +~6x-^#¦m!&۟tSySI̭}gJ|6jțE4I֊ I]7ߋm`,C1yN>r_2`\v.Ŕ.ՉgYkZֽ;6 +ElHbr^I ˮ!:CZWݙ)B;o׽M6n 7;AV@z O n>EEx+'tA\zR5Y׸[Re<&&#>eVFxڳ(7uѿ9 +q*Нuq"SF.|V>% -)Э^໋ER|J|F"jZ/e{%`]d76-yu4J.{:}dsŇ"x<^n<#Z]ݹ%izY)OE1icY%a4{ey1AdPM 2dZd'?و쾅6SNer T-lwܒ8$!qv f5|4"6KTm#K{nL^݈qƞhP w}-RHv3хbntgV:APJVcX!БJFQ'Ȑqmego4býfaC(s Y0G^0x^n}F?":,rÂ}[@V/r Z#AXuй̽r@K#4y`e[M'{yMd-F?+vjo7xNsR˯8;Qi)>R!^de)%/8CzLRGW5~iQ<8 ГN !&lqTQ3YKTjJÎf$n*m&LwO#Is܂QQzIł橣p@T]YRX)hH̽<ܹhCIAQrWF?jcwvhJer%uA"ڤ\b2pGS:=~C7M8u)L 4%)q^fC,8]Z#U\XD2J^=G`P~7Kq9 g.&rqfz4eec7[9C+FY٘]f71 Nt9B;GŷPa9N}Y6D?a\v2ˉ16f_JW0WQfzJr>D᭴]`݉'s>=]$y(wZ0??>ݚX ]D3珗@*XẉTTsn} (K P-Mü,dqZfwhK~0-0r 3q +\%"^'u/- d^(ܟJQ>x=>*RW㒭ȱ@#9!1*{g/}ׅ-[] 9tF Fg|$-QN|X,G5*Hцy$q .ulLۙiW0x qϵM^Ikb;J'KGB85Fb$,QB's*Ӗߢ$<6o l-&ҴϧeORVE'(WIi_O 0{Υϝ\:ѩI9On. 's\ؙef\vGj'!',Z*w7P,?(q1x8_L R3;Ŝ5Ȼ'Qo<d#{ a5tٷGL ALw/o&UΊ}~,&[@ zDŽ].>eYxnz{|PCPu0]4z0> +{A_b L6K{DXOX|2iVt#!~e|pR!EHW_rLmr.G&?fz5)V9rRK?Mm`>0Q1Ȃny6Q+ԿHTP3(I1k7*ۼâ=CzNPĀ\'cx"-vJhl4m]rtr)j $ǖ ]0qدٗLs-r9œM?߀9*^)&5'+vE$+wΕ)\@/I bu>L\'?YpXiPBP-d)2mjeO$!2dt9-V[Z,?>x [\VY;b@95ӵfZ"W/yy#^9{%hblQˎo뺕/0m5e;kqYsrSෂ +=) 9D6&~l}v\Wi0ʼn[6 yhTXާwZCəPE|)' T%Yl){f%3f"W$~0V3s"[j9iE/9^:okn_Hb95~YE_T1oj([A~OGii;|LMa.`S +]^6!o/(n8|oހ5U;8!c!_{e4)̅ݗ8&O( o >b/ȋc6Ker殜(ˌ/2uٳg8`sdgۃwo38?:CŻ3L*zr#ygMizs8XIxdq -Rg*.PL'dh|u(Ӹt<=P}-wcr:O듧T\UGX])x&}>I3%'@"^J`<,1GrZ:Cnu xSmP܃Fa fs>Nf'Qbqmcb pp7rT+ĊjT*W,X r5ʻn6C͇FnTwE0^ԲdzA@ldW~\\!TFb:P9\FP/VmL^>oWUp?&DpT+oD+7&TN]l)< +`ֆݫTyjn~^uͿP }٧~nC #C)t<2}:^fE5s֤3or":swOҿ^ZhᇹteAVVxOa&C?2ָBC"g_ӢEi_nj*@p BK+PBwn~*AFWcBPcN*W=b3-ǽ +T`3T+DVU7\F ޶@ +G[K|-P\CCj+H*ԷCECcmh-lXQ l)ʦ=GLIWZty !K3ScPVG:H/k<U\x6;2`6os{ A7 =cH5aT.G|k kć^j%H:v!~ +l +3r=[*jҧtgtǣo% O}n]f{F.φ]MshS6M#ovѨgE}7qdފUNQtdA_6)}VPv)R`od@9эue>TwuQ_ -з1Ky +Fxvm:{~2ӣ^Z&:CW1H`g2aېVCBJ ~\!w~TL}N/YM76,X)A<'Ũ9z=ԃ| 00[1W0g7q' `ȇ!Ibe6L>C}V-q5ɭܐ JD`VqÌv4 mǴ6ʴ?VaCoDPf#aaEn5%WZ_T{L2) oRSf]Өۥ:VEl6vKumӞEwz۵g(2 =K|'ЖU7f֢;QohHҘ4/"ֽ*NNПYLꮵQluʴ٩so{3{vVĞӃotIfw3fA;[TfOG}4^=Yqig6d Y'53kߠH{z!VA K&O+^ {'f؛TT@Dv@e/${JB=kbvRI*IESoX{g/s{6L({gB~Yf~$Mp lvj)y6Ȇ?=\]cI@4=y9! + !j:  ;Xs 4hїbgڎz4{v?`QyD.vCvY6*rـ>H]rsa!;zCM{hA;]u[6'PX$ҧ@7* D (HﰌInvz>FJ=m'pe|nOcAXv_$AȝYXey˝nѮ(;94h̺*/t?6BKiDs| +MK{=ցA-}Õe7k?0rŶm RQm'!y#7LkQ9Rh?dS#@ zkImB6#i-ruJL"' ;1=jJstLa+ QE`'hwBmj4)1?(11N_|b._`'i |b._=-̼mq'6Qۚm6ŔUyi ̟[@l*A{𙰝<6ZU;rh;"^f]C Ɗ'Cj,]O@HVot׍ϥfN^ f8 );KMh'!ixp3\_d9G)&<ڝM"piKCebHln +)9L33[³6RIY`IYhuNR@r} 2 d62ÀB_=~xC>pSHޮ΢y/o Hp|J:i&k1eӨ1g@ȗ^bNu:&# /jp04!cDZJnRxeZK^_*F7,4wsd(|y .S?6Y«σ-y E C<psi6 4JF7[f;WdIX{HDa"g/Iz!r/^9؄@HY~Nd;*4GkPbSUY 6#߇y Bof9Co6,G荠MK7xPz;FMv&ћ#GMT=[ +p|!| IC VQ.;=?<7D(̄Ky>&@d!+z$zÂtw 0$#1A;ҙ؝u4Gx>0$es#.ީg&]9x5RrVBR˳HT/{,-%][ӄy1 +FbSВF@+q\Mw'fy~3\473v۴A̼=_*.T_5oC%uB_aۓu$]z~  W(H2 h{*1@]<źgbd%ȭG'YFL1IFcZWThǮ:Թ6Ý=}=B)btu9e5$Hf#kx\@;̸26nvQK$\"OUWeIV]T"pe,~d"^E${ͺ?J0A.&R KTj=2.K&/)OME )/`dJ󋔧a|ۀ4:x!?M=UFIe>`sd,ِm^ۄM *Ia=A/A(qJeBɣ>_g7J:-CAX5h/S|,JRfV6D%RI* ŷ2/gVW/?nyo|r xO}d?VbOhwcB<ڧ%_.>(yOSe7Z'$r$#W^”0p.!nwC bhe>'w0~؊,Q^,\E{K-#t۰s A鄛x+@C..>3(rhOza|&M 6|ֶ\uim=2a;qu6阴kKdlJM*2 j3$g>&B;fDc̃>>FiXPU bb !J."X}6n}8wIcb/Ӧ2ވ},Vg&F"X}ˡ>O36Xc_}vO>(~5%*`_)?:S>/ &l@IcMb'EAÏ>%˹'{H}$;IQ;%Ӈ&373Q<#:s'!˾ڧɼv.*~,7Hrs9lɪ*mQTC҈ML`Mӓl̪Ɖ1fy6m2 h¶kS;w'klpI RlrҤf8(U%ZC[LJ|ʦZ9&ÁLLV87F%< RP';))(98P +l8asǠdF7ޅil/ ˅a73RzGI$!2KP6*_ر(lr$ֿ7Ѯ_@_fI u\]uetedGi +Fi +X{?-_JdW%.i}Clk; [Z:Iؾ@ + rѥ rz. l_ E|3="j);z$j0]^3{LǡT[nz"U"Kӥq}{f7}`*oNRiΞ`4NΞ#sD2#l1*IwKc Y[w[뽋t16|- +V-UggnY(0WL:}4I~n-ogÄlPxSEAH1Pb_ut {E}#z[g`Q}+[ ^Vpk_G߉;ɑ{Hr4kSScG |< ?`ǁ.SX8rf^l{ɑJC͏K%0۽}|"Bnk4ţ?VW#S)YZ_VO ݭ.yNZ jhMW%t,;Ytu,#rt;$bA-^HE <6SE(GIEW/eݾf#Gpt;u6l+2=LW9J:tv6lrYeq'3p)TUض`<=Y▀9U q َ*Crxv4u3+Vi.y' t?Ŀq;*XwE`k9;xZ?34ȕd#Ҹ锣$]=n2sXl!s@}wM*G26Õ¯tӟ#Mx@#cv匄t@gWW4KvNi(P\ +H1Wrsd\uY% +Ik HsK'6D.UrB3"@d%hOIu-i}qsJc9SMI7u\kKo4i|ϑCI=j5%Q(^DY>wGItC$#)(|Dȿ@I#~y$ʪTۤ]SeK'igD)zs%Q0@=7 + mCs]1*;UyqTV:Yq[-l.zN'Q!6g7kU18Et]&7,e X<MZF= +&KɇP"<6YClR@/՞__?E3:<ϻ z{ t?5hbiq5|֭q6_E`=iFB{wMo|22߿`s;WߵaZU\9)Gv&f;4sǿkǟw$Cql~a=7/{OUK1d(mc5VW7õa +24c@}wq(0o Ź +]9ςŬ&Bv9T>+ PsOm$!TЙ% ٳ[qH:]F3%5]`Dwv7c6;G%yn3Iu]'HLҷ5DMy6>)./-_MJxL({xkj2 $ wl8QA88ۋ{Tl?{_3Dޜ:fjJ;xq&!rQr; C+Gyn^'r@u ݚT(ơJk0Lk}LKNS_!Ԑv*K<2,#R> ИukUL%,nOM%H%$ 0EY$asJ*3] SCJ0/3$ę +jcSۥd>[<}G!Pq=<&~YޚP\y*cRJH=dB6B?xAg\G;S;1dĨi!hPXS\i5# ($=5sYs?pz!ɱ lkLÕvpc#_%e,Vlݺ&qDpnipJs5"QkDXkjvƘsHaouRqG +1FmҡpLQ״Ŝ/ԥM:fMO2č`Kd%3&3=ER;7Mg CrdͮU۝v|e=v'zNz|Cp5ޚ -tl[l[l[lXlXBk +-it<2P|ͶBh|6`vR8-ypZpZP-ӂiaoTKpP-%BpZ8TKڄpZbyR8m׿j)5OWvF Bb5]_ 턶Nk[ʹ̕wb~TPQˈ+%gzwp- EE[$W~x /0/s[_5)b{Y^;?kmp\i? S_! 6nTs;G(ݡS i!,cďwvsxY WSQ)ni?[f埇;A{f8&5Ń_ wLY.D`Is{kq9J*HƁg 5ک,}޶Ft[Bbdp-Ȩ֓T '@ɸDAmqֲoV,QTw=qfy@NpxHN^b8of*+[3F2FʮDtג3hAl2?KIt7im* uRž5(aδ#B (,iN+qԄ$V)vJ)H巃#56cG^T4};ҥjgYgTx;[d_!F0ir!iPZ''Y;s' d;&<ϴLX>Ӯ&gZˋ!FSÕq#ȫ[mb3}mDE.яFm?f*T~D̵o+='Ȼݟ,;MP$q m O:8xe9MC&>o/ LOwn;.Wmx#MnmT^&~m) w ou1v1ˠ#,y"vQ\:hgWO5 + VI̮ S$X2/QOQG(xuh!S-fxYs K"4={ioՃ5FN79}TǓu,gVʖ6?7iZ±#d·u*-i޳'}@݅aѡ^̟3Ou`lZTϯhux\9i>̊A<ڂGUtƢQ:^.|wvAƿ@̗G{!Q Op-x|'Amww< R +[,L)<= +× '_Jp"t45Nz'FD2v)kME$ +-sOEUb1mKKRA- *'[wY5f2%>)s9R1ϕKE]x=S5;ނ9%OJ9OWT/r6[gl9ʖe5-gWH6|9 K0R=9oiJ-v5U.gղR(R02R(2lEMJL\PR6,S9覐+LdslX. +y\ +2Ur |[4WΩlpY0a.g+Osq\1(RYUJ}`4AJK= +|pIo<[>SVKR- 8z{.oVf@A/&pS +endstream endobj 5 0 obj <> endobj 15 0 obj [/View/Design] endobj 16 0 obj <>>> endobj 25 0 obj [24 0 R] endobj 41 0 obj <> endobj xref +0 42 +0000000004 65535 f +0000000016 00000 n +0000000159 00000 n +0000034348 00000 n +0000000000 00000 f +0000162123 00000 n +0000000000 00000 f +0000034399 00000 n +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000162192 00000 n +0000162223 00000 n +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000035828 00000 n +0000162308 00000 n +0000034788 00000 n +0000038811 00000 n +0000036127 00000 n +0000036014 00000 n +0000035085 00000 n +0000035266 00000 n +0000035314 00000 n +0000035898 00000 n +0000035929 00000 n +0000036162 00000 n +0000038885 00000 n +0000039081 00000 n +0000040287 00000 n +0000042433 00000 n +0000108022 00000 n +0000162333 00000 n +trailer +<<5EA45AC2A34EF34780117517BAE7065F>]>> +startxref +162543 +%%EOF diff --git a/Assets/Project/Graphics/UI/Icons/Gameplay/credit.ai.meta b/Assets/Project/Graphics/UI/Icons/Gameplay/credit.ai.meta new file mode 100644 index 00000000..cb711f41 --- /dev/null +++ b/Assets/Project/Graphics/UI/Icons/Gameplay/credit.ai.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0f1672f5c4a1c9d48a63070d103b9e46 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/UI/Icons/Gameplay/credit.png b/Assets/Project/Graphics/UI/Icons/Gameplay/credit.png new file mode 100644 index 00000000..2c7f05f5 Binary files /dev/null and b/Assets/Project/Graphics/UI/Icons/Gameplay/credit.png differ diff --git a/Assets/Project/Graphics/UI/Icons/Gameplay/credit.png.meta b/Assets/Project/Graphics/UI/Icons/Gameplay/credit.png.meta new file mode 100644 index 00000000..67aee845 --- /dev/null +++ b/Assets/Project/Graphics/UI/Icons/Gameplay/credit.png.meta @@ -0,0 +1,96 @@ +fileFormatVersion: 2 +guid: ef04e1d837a51844e8808413c5bc1c41 +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/Project/Graphics/UI/Icons/Gameplay/half-circle-01.png.meta b/Assets/Project/Graphics/UI/Icons/Gameplay/half-circle-01.png.meta deleted file mode 100644 index b563e078..00000000 --- a/Assets/Project/Graphics/UI/Icons/Gameplay/half-circle-01.png.meta +++ /dev/null @@ -1,92 +0,0 @@ -fileFormatVersion: 2 -guid: 514a2c92960c95444a6e1a226a61b567 -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 - 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 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 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/Project/Graphics/UI/Icons/Gameplay/half-circle-01.png b/Assets/Project/Graphics/UI/Icons/Gameplay/half-circle.png similarity index 100% rename from Assets/Project/Graphics/UI/Icons/Gameplay/half-circle-01.png rename to Assets/Project/Graphics/UI/Icons/Gameplay/half-circle.png diff --git a/Assets/Project/Graphics/UI/Icons/Gameplay/half-circle.png.meta b/Assets/Project/Graphics/UI/Icons/Gameplay/half-circle.png.meta new file mode 100644 index 00000000..fd1e3ec1 --- /dev/null +++ b/Assets/Project/Graphics/UI/Icons/Gameplay/half-circle.png.meta @@ -0,0 +1,96 @@ +fileFormatVersion: 2 +guid: 514a2c92960c95444a6e1a226a61b567 +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/Project/Graphics/UI/Icons/Gameplay/metals.ai b/Assets/Project/Graphics/UI/Icons/Gameplay/metals.ai new file mode 100644 index 00000000..ea85813a --- /dev/null +++ b/Assets/Project/Graphics/UI/Icons/Gameplay/metals.ai @@ -0,0 +1,1181 @@ +%PDF-1.5 % +1 0 obj <>/OCGs[5 0 R 6 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream + + + + + application/pdf + + + metals + + + Adobe Illustrator CC 23.0 (Windows) + 2021-03-28T14:26:38+02:00 + 2021-03-28T14:26:38+02:00 + 2021-03-28T14:26:38+02:00 + + + + 256 + 200 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAyAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq 7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq 7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq 7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq 7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq 7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FX//2Q== + + + + uuid:C1BCCE1871B8DB11993190FCD52B4E9F + xmp.did:88a27755-21b4-7141-88f2-3ac238482ed6 + uuid:babe24b3-6547-4957-b1f9-1fe21be814c6 + proof:pdf + + xmp.iid:ea4a4257-d41f-574b-a12d-ba91b83f2e2a + xmp.did:ea4a4257-d41f-574b-a12d-ba91b83f2e2a + uuid:C1BCCE1871B8DB11993190FCD52B4E9F + proof:pdf + + + + + saved + xmp.iid:427d781d-63e1-a54b-a6bb-9653696918d3 + 2021-03-28T14:22:30+02:00 + Adobe Illustrator CC 23.0 (Windows) + / + + + saved + xmp.iid:88a27755-21b4-7141-88f2-3ac238482ed6 + 2021-03-28T14:26:36+02:00 + Adobe Illustrator CC 23.0 (Windows) + / + + + + Mobile + Document + Adobe PDF library 15.00 + 21.0.0 + 1 + True + False + + 512.000000 + 512.000000 + Pixels + + + + + Standaardstaalgroep + 0 + + + + Wit + RGB + PROCESS + 255 + 255 + 255 + + + Zwart + RGB + PROCESS + 0 + 0 + 0 + + + RGB-rood + RGB + PROCESS + 255 + 0 + 0 + + + RGB-geel + RGB + PROCESS + 255 + 255 + 0 + + + RGB-groen + RGB + PROCESS + 0 + 255 + 0 + + + RGB-cyaan + RGB + PROCESS + 0 + 255 + 255 + + + RGB-blauw + RGB + PROCESS + 0 + 0 + 255 + + + RGB-magenta + RGB + PROCESS + 255 + 0 + 255 + + + R=193 G=39 B=45 + RGB + PROCESS + 193 + 39 + 45 + + + R=237 G=28 B=36 + RGB + PROCESS + 237 + 28 + 36 + + + R=241 G=90 B=36 + RGB + PROCESS + 241 + 90 + 36 + + + R=247 G=147 B=30 + RGB + PROCESS + 247 + 147 + 30 + + + R=251 G=176 B=59 + RGB + PROCESS + 251 + 176 + 59 + + + R=252 G=238 B=33 + RGB + PROCESS + 252 + 238 + 33 + + + R=217 G=224 B=33 + RGB + PROCESS + 217 + 224 + 33 + + + R=140 G=198 B=63 + RGB + PROCESS + 140 + 198 + 63 + + + R=57 G=181 B=74 + RGB + PROCESS + 57 + 181 + 74 + + + R=0 G=146 B=69 + RGB + PROCESS + 0 + 146 + 69 + + + R=0 G=104 B=55 + RGB + PROCESS + 0 + 104 + 55 + + + R=34 G=181 B=115 + RGB + PROCESS + 34 + 181 + 115 + + + R=0 G=169 B=157 + RGB + PROCESS + 0 + 169 + 157 + + + R=41 G=171 B=226 + RGB + PROCESS + 41 + 171 + 226 + + + R=0 G=113 B=188 + RGB + PROCESS + 0 + 113 + 188 + + + R=46 G=49 B=146 + RGB + PROCESS + 46 + 49 + 146 + + + R=27 G=20 B=100 + RGB + PROCESS + 27 + 20 + 100 + + + R=102 G=45 B=145 + RGB + PROCESS + 102 + 45 + 145 + + + R=147 G=39 B=143 + RGB + PROCESS + 147 + 39 + 143 + + + R=158 G=0 B=93 + RGB + PROCESS + 158 + 0 + 93 + + + R=212 G=20 B=90 + RGB + PROCESS + 212 + 20 + 90 + + + R=237 G=30 B=121 + RGB + PROCESS + 237 + 30 + 121 + + + R=199 G=178 B=153 + RGB + PROCESS + 199 + 178 + 153 + + + R=153 G=134 B=117 + RGB + PROCESS + 153 + 134 + 117 + + + R=115 G=99 B=87 + RGB + PROCESS + 115 + 99 + 87 + + + R=83 G=71 B=65 + RGB + PROCESS + 83 + 71 + 65 + + + R=198 G=156 B=109 + RGB + PROCESS + 198 + 156 + 109 + + + R=166 G=124 B=82 + RGB + PROCESS + 166 + 124 + 82 + + + R=140 G=98 B=57 + RGB + PROCESS + 140 + 98 + 57 + + + R=117 G=76 B=36 + RGB + PROCESS + 117 + 76 + 36 + + + R=96 G=56 B=19 + RGB + PROCESS + 96 + 56 + 19 + + + R=66 G=33 B=11 + RGB + PROCESS + 66 + 33 + 11 + + + + + + Grijswaarden + 1 + + + + R=0 G=0 B=0 + RGB + PROCESS + 0 + 0 + 0 + + + R=26 G=26 B=26 + RGB + PROCESS + 26 + 26 + 26 + + + R=51 G=51 B=51 + RGB + PROCESS + 51 + 51 + 51 + + + R=77 G=77 B=77 + RGB + PROCESS + 77 + 77 + 77 + + + R=102 G=102 B=102 + RGB + PROCESS + 102 + 102 + 102 + + + R=128 G=128 B=128 + RGB + PROCESS + 128 + 128 + 128 + + + R=153 G=153 B=153 + RGB + PROCESS + 153 + 153 + 153 + + + R=179 G=179 B=179 + RGB + PROCESS + 179 + 179 + 179 + + + R=204 G=204 B=204 + RGB + PROCESS + 204 + 204 + 204 + + + R=230 G=230 B=230 + RGB + PROCESS + 230 + 230 + 230 + + + R=242 G=242 B=242 + RGB + PROCESS + 242 + 242 + 242 + + + + + + Kleurgroep voor mobiele apparaten + 1 + + + + R=136 G=168 B=13 + RGB + PROCESS + 136 + 168 + 13 + + + R=127 G=71 B=221 + RGB + PROCESS + 127 + 71 + 221 + + + R=251 G=174 B=23 + RGB + PROCESS + 251 + 174 + 23 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3 0 obj <> endobj 8 0 obj <>/Resources<>/ExtGState<>/Properties<>/XObject<>>>/Thumb 18 0 R/TrimBox[0.0 0.0 512.0 512.0]/Type/Page>> endobj 9 0 obj <>stream +HtM@ u@eϖ`@ /FAQR/Wׯ>_8x8[#B_?r_O7O5}|F:2B =T #ٸQjvKeU1/éxϋpRh@RS$\4ȡA +aقP-F'swB+fبfp1%p,̨ DJ gTN昕{0(3_O~ŖV6YQq7Gp9޳ "%Rv]v 0Ƞm +endstream endobj 10 0 obj <> endobj 18 0 obj <>stream +8;Z]L!=]#/!5bE.$"(^o%O_;W!8uZ9(]Y: +endstream endobj 20 0 obj [/Indexed/DeviceRGB 255 21 0 R] endobj 21 0 obj <>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> +endstream endobj 16 0 obj <>/ExtGState<>>>/Subtype/Form>>stream +/CS0 cs 1 1 1 scn +/GS0 gs +q 1 0 0 1 261.085 147 cm +0 0 m +-38.02 106.749 l +-152.08 106.749 l +-207.648 0 l +h +f +Q + +endstream endobj 17 0 obj <>/ExtGState<>>>/Subtype/Form>>stream +/CS0 cs 1 1 1 scn +/GS0 gs +q 1 0 0 1 109.0049 253.749 cm +0 0 m +210.573 184.251 l +298.312 184.251 l +114.061 0 l +h +f +Q + +endstream endobj 23 0 obj <> endobj 14 0 obj <> endobj 12 0 obj [/ICCBased 24 0 R] endobj 24 0 obj <>stream +HyTSwoɞc [5laQIBHADED2mtFOE.c}08׎8GNg9w߽'0 ֠Jb  + 2y.-;!KZ ^i"L0- @8(r;q7Ly&Qq4j|9 +V)gB0iW8#8wթ8_٥ʨQQj@&A)/g>'Kt;\ ӥ$պFZUn(4T%)뫔0C&Zi8bxEB;Pӓ̹A om?W= +x-[0}y)7ta>jT7@tܛ`q2ʀ&6ZLĄ?_yxg)˔zçLU*uSkSeO4?׸c. R ߁-25 S>ӣVd`rn~Y&+`;A4 A9=-tl`;~p Gp| [`L`< "A YA+Cb(R,*T2B- +ꇆnQt}MA0alSx k&^>0|>_',G!"F$H:R!zFQd?r 9\A&G rQ hE]a4zBgE#H *B=0HIpp0MxJ$D1D, VĭKĻYdE"EI2EBGt4MzNr!YK ?%_&#(0J:EAiQ(()ӔWT6U@P+!~mD eԴ!hӦh/']B/ҏӿ?a0nhF!X8܌kc&5S6lIa2cKMA!E#ƒdV(kel }}Cq9 +N')].uJr + wG xR^[oƜchg`>b$*~ :Eb~,m,-ݖ,Y¬*6X[ݱF=3뭷Y~dó ti zf6~`{v.Ng#{}}jc1X6fm;'_9 r:8q:˜O:ϸ8uJqnv=MmR 4 +n3ܣkGݯz=[==<=GTB(/S,]6*-W:#7*e^YDY}UjAyT`#D="b{ų+ʯ:!kJ4Gmt}uC%K7YVfFY .=b?SƕƩȺy چ k5%4m7lqlioZlG+Zz͹mzy]?uuw|"űNwW&e֥ﺱ*|j5kyݭǯg^ykEklD_p߶7Dmo꿻1ml{Mś nLl<9O[$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! +zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Km +endstream endobj 22 0 obj <> endobj 5 0 obj <> endobj 6 0 obj <> endobj 27 0 obj [/View/Design] endobj 28 0 obj <>>> endobj 25 0 obj [/View/Design] endobj 26 0 obj <>>> endobj 13 0 obj <> endobj 15 0 obj <> endobj 11 0 obj <> endobj 29 0 obj <> endobj 30 0 obj <>stream +%!PS-Adobe-3.0 +%%Creator: Adobe Illustrator(R) 17.0 +%%AI8_CreatorVersion: 23.0.1 +%%For: (Manuel Jager) () +%%Title: (metals.ai) +%%CreationDate: 3/28/2021 2:26 PM +%%Canvassize: 16383 +%%BoundingBox: 37 -381 453 -58 +%%HiResBoundingBox: 37.4371671659974 -381 452.563070635049 -58 +%%DocumentProcessColors: +%AI5_FileFormat 13.0 +%AI12_BuildNumber: 540 +%AI3_ColorUsage: Color +%AI7_ImageSettings: 0 +%%RGBProcessColor: 0 0 0 ([Registratie]) +%AI3_Cropmarks: 0 -512 512 0 +%AI3_TemplateBox: 256.5 -256.5 256.5 -256.5 +%AI3_TileBox: -41.5999994277954 -643.600036621094 553.600036621094 131.599999427795 +%AI3_DocumentPreview: None +%AI5_ArtSize: 14400 14400 +%AI5_RulerUnits: 6 +%AI9_ColorModel: 1 +%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 +%AI5_TargetResolution: 800 +%AI5_NumLayers: 2 +%AI9_OpenToView: -695.516129032259 356.41935483871 0.861111111111111 1616 948 18 0 0 46 87 0 0 0 1 1 0 1 1 0 1 +%AI5_OpenViewLayers: 77 +%%PageOrigin:168 -360 +%AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 +%AI9_Flatten: 1 +%AI12_CMSettings: 00.MS +%%EndComments + +endstream endobj 31 0 obj <>stream +%%BoundingBox: 37 -381 453 -58 +%%HiResBoundingBox: 37.4371671659974 -381 452.563070635049 -58 +%AI7_Thumbnail: 128 100 8 +%%BeginData: 1946 Hex Bytes +%0000330000660000990000CC0033000033330033660033990033CC0033FF +%0066000066330066660066990066CC0066FF009900009933009966009999 +%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 +%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 +%3333663333993333CC3333FF3366003366333366663366993366CC3366FF +%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 +%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 +%6600666600996600CC6600FF6633006633336633666633996633CC6633FF +%6666006666336666666666996666CC6666FF669900669933669966669999 +%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 +%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF +%9933009933339933669933999933CC9933FF996600996633996666996699 +%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 +%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF +%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 +%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 +%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF +%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC +%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 +%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 +%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 +%000011111111220000002200000022222222440000004400000044444444 +%550000005500000055555555770000007700000077777777880000008800 +%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB +%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF +%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF +%524C45FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFF +%FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFF +%FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFF +%FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFF +%FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFF +%FDFCFFFDC7FFFF +%%EndData + +endstream endobj 32 0 obj <>stream +%AI12_CompressedDataxk%u> Hqˈ98@]}4cYd{lM7fSϯ?FdܻE;DRwDXwgׯ~ot1>wo?ꛯ߽壟P/&f]}>fۯ_yC%.o_ݿ'?囿yս݋W__xힺ͋w2Elgq>^| aN-՛o^/>K-rIJ>tS W'iӜʔ7o~_}՛_L\|~ս^!yU.W߼|_?k JۿZk?+}w__^O=~򏿾KoooCYϹ^x_/O.xzj +ϺZX_F9\>{ +_rGtq?t/x_xχWz[_jNq'}sūW/|χy߾Z/,(_sWEsn޼zW7$]^x_}W7=H/_Ћi7o^H[ۯ}[;<3/^O4FVqU9pK'{__g ~z|[׫RlI;sl\u/=?r5|˗?/~7o_ij՗~~"ueHR|ouKԜs!ݥtq.Bnfxqo>$x\GfKţi8k! VwVF:\i\Kmeh5 =7]FZjXd1i)4d5i?~zwzl覾Нƭƍֿo}4&ԫ@wr<xo/?l:Q§,7*dhdmL?CTrn5nL-׺m@ 7EmSDOwVFZZ/(lU3hԬLs3曍 +;ljEdń:auw3E1Mu+*a݈&huц[^҃/:I.ydv;vZD7V%KT+puӊV랴,ջti9hB;QQM-l9\2DQ\"ss}Ctoͬ]n.=nonnn#[=mm;zwg;HG/!?lbb7HT5?Hzlb3|7.Mz=ǩD- !}\t5F뎣vE+>˷)_AqXtjbE:ZKEcYU/%gY[,>,桮-&`>+|9-:s]/_{=>"I9Ky[\ [+WR)7i-ՋYO-XU ʵՌŊƼ`Q'R,>Bc@T\ %Z4EfPE`0ۡ\jJ"j (%7++&M1朤5<tY= *!V>rjt5R »oၲhיxx)(xPOW_hoXfcz[E͐U"byN)#?"/mAEd=/S8w#ݏw9ZUa_V|YM2ɻKIG*-:lI`^4kJVcQ$$2Y t7W0`A 1rm-jH&(,$$RaQ(\)&](EB< PQ.-VEÉp !">d'$rBf(5Vkbs:愡D]9&FmNW\Nn\q{wzkk9CW|ּVCW|LWxaJCޥ6|%ƟuiYBsmem2)p[eQw+қ쮊NŽ3M 7\ETuRQ{ev̆au·P}u|uoc1Rd-ep芗Vvn`XI j܊8ݎcu \f[Qќkz9[Y5[ƃ+뼨>i[7ᇝs)rg?wNu?9Vb!Pvr~'{%n)a(XBi~Vkgjl8^w1:ڍr2XC0|d\=1GÎO?y޼ܡ+>{+Ftnnod.EK!eDoD8g;#_\=|9bʸ|È)_/z;\:9.ޝ.޽wy?GzWgowvowvow^Y_ƨv.ώ@xv u_-~8(c:̺kL\ķ{8Ƨ[quH'O8]qpĸ}D,r(+b/_e -NK)Ι ctl\k Ќz 00<ba~P z"| p$N=#_mÅR)gWpz"uj=Xݱ ,D8,UbЕ X?:Gd/nAP(qI4\)< x$)9eiΐ3Ø\|s>yHR&yѱkGs+""/!;L.ua sܪN1gzi'qb\ҟcSظ?9JXVȏ,}~Ʋon` p+‹_xepq VvHs1\f2WL xxqp``rHC:f`WށS=BA;,tp{Ez/Xow]̎#W}BG~ @Ƨ`q㧁 _GLJLj>/rz"FCxRdӡ+4|+~_@6]1>Vfro7HF2%XÛG {@ +0-0- ō]+4tf$,v4\wXŖN1`s6H|a | +gR: U$ѻh@S <  +}$qΧ-;syc3f}k};+/O6O:#gܙ5sfM<8cFa3󜌙r8*w93zQ{̖?4EI:2z^;Œ}#ORx-2>A.ƕ.O|5oO[7P] 5I߃cمXK^-iM5nV6B0n5VC:$آqhBލM7c1G2&nѦm7ngtȈOa<3f}'nZ|\C:@B6`Jmnt}x駟p| = Bjg5+Qi?BR\Z :g9t ^uv-vS&>0u:R_gW(M GkhgJ>Mlv28InXF~dGG|8t8<=$=6V{o3n?4ty9X|6YGeAwXx+$HgbeY!I +w$xӳh.EFO$gw,X>M h[!1tt8 +Z:\Fo XحD"SȒ8lf yQ+=[Mߏ}qJ}xf`036 ⿩ݻ11#Ts;n +k= +UBS +GpQ&lJ`W~ rSꆜȣM\[fZc͊FGvw YKw3r+sU&kXԾPݮHTv<( Po5F!V:*mOSpbOCFDDb$bCPLS !KHs,luG];#cU?N$tc޵8@-qWQ +H*M PTt݇cǏx'<P;v2!AZ-č,"B5s96GtvbzlvE;GEz-''$dٜ֌Ѿg}h"?nN]v/!}:x+]cv<ؒ+sɏ^=u~JYdE{mʇV>rn}il[! Yi1?(kgˤ=>@R k1]IA9+/h)/c獝xOa_qg:P]SZKvtȻi' Uƕ_)eݏ~3i01hs4x6mlAr+V}}ٍI0$\vj;C{<xt+>7OyP0|芏@@7W; x pJ Q+KV}[!7 +Ӿ*PLm4ZxP ¡oq.Ǿ +0oW@vB٧=fQ@j+c m<=zqWh{aCXh~ڦY?ZOOǣGކP~ 0zfac0}Pl_ng<3 ?xWm}hΟfθߍͼߏU78qk<xEp6>\%yzTcsJOG|ų+yi펩#kh`NzSuʰ? H|9)B;Rd}y +}XTeV_m_ka=ՆsR)/Bzc޵XZWQL߼F}]|GR#'5ǼkO+Ls7c.~u0/==$;warw9>>ب(v:G_ʮ(CveB72vy!īȾOS_va)VXpb7|U8Ӭ=Bv4`GӽHN] Ϯ_\-CFIv {Z!k'];faSt]|pڲopz7ԇڿn9)0BuG`>r#}?ĭG)VCF]mÛc^ *UBeC#o4trJ)͊i$%ѻwoz.46:x'б+)5]~ckݻAkݵy~CޓG2>>fE_ȼYٶq=f}}ȝnvX_A}~ęF!Svu(;csU;vաk>\RWU2RztL;7\uzC)ȇc4>SM^{_ 09)i,knMs4S/t2R働>uY?tQ=4޷~s ;~͹E߹9>Ξ0O⹶sg[g;'ّp3-` ӂY阮oA#{A4Rߖ"7;.qf&|t'|JV~{ג=^wBcO!4\dO]q{e+/ +—)aO `тhqJA #*S/2aܭzdOSO~[tOԆw'VQj'7wam=nAa*[H:s><~8:X;aD ;w ڴ |4j8Y14.yVGueK[ J-L>:ɕ{0mj߸k0۪VɻT#oO5RDu0GTD;gOv|g|'y7Hg?ݞսjg3sbED^uj7|K$i)^\&Y?ֱU',=\16yTC\m>{E<>4YOt߉,i?x q wn/}Vʹ)GO={?iI뇕89* {,Y=yOYS@.XEjnn< {]xy^nBw9*a'>)tyIGr#.tJC9h)0aZӔ=]=ڗAW->N(,2P{;i +qz 4)jM 4!J2 1 XU{jKWuf͵|E΢5AydG ķ=U|;e&iO!Q9񢺣V!'>0[K]ouM}t +#J䣞 ]GfEXXyOag4:,OJu?7?w*{˘2"Wi˘Yo|AM;gTMv)~@ u>WC좩\珞oyHi#M|,sg 'I^7qD ?-qonfGUeK$ $Yѥ.MҨy!AD?eɔsϞg}O⁾%xׇ/^=|/?|sD mthK/f'jճɚ=YI)$Y,s:IN{Gc/xp{a>a>a>a>a>a>a>a>a>W??GH0a}_y/_{w}7|_ߥݯ^{w?z/^{{gB,UŤZHq41dS#HŎz;hW>M;<.Pe1%Ru!uITY[1-Lb +˒1MyasNb-BBTOg* gX(I*iEhF}BcƬRxE,6'\"]rXʅ /,_ %N[eMrg^R҂$^761{}1w\$ m;ۡqŋBƆݥ_YUʔf|_.Nm׍nLRϗ;J+:_]Ĺ!/y.QSE"ӉLzC$)/;3IFDƐO5?CkF_(M+ŅA Kz)CҪs4C|e*݇ EuZAnڬP(4 D"<ɮ<0CbdF ӤrE-t,7) 4*wՄ1:x J $sBȓΎfGZ.Mǻi`,XuTuD:d:n#fHOܩN<)u }FTJe9*l\Wߊ"N2jk +M? F3˝N80.ݭ lڋ +9%O+ OPuxB!%ւ>E:U4"~|;kMj"-ulŗΤ.KP{^Wѩ0Cz*Bڨ}ъD. +q΃$=BjZI!a'N¢("fZpNhD3Dٜࠫ ΁8F 85EJJd,keZj<$8LA+)TBK-qw%^f^nItI瑥3dTJ0C?ы/z_wqCZe4ѴXrQ:Xi*¹ ݂R9 &͘@/Gh< ٹW>QZFmقUZ'[j m쿅 \]#;U{ܷCD +LуgO/$X ,1l!z]@qt~P%<%sx< ~"'n9˚@-,-ӃB:]JMP} P1 =&e(:-"@R +u8Mu8VOzH yJB衫4tGG󛬫T4B3jdfTY̠zRDd6[!&Ͱ$}PJQW"=_^p4&įi*!(DSz`^WjA}׌Ƹa,hѨNN"4bЦf"\IgC[i%Ɇ:BӼ<0uQF`T|u3"h̹0ED$ ˚oQ!@2̜(@$tNXsH3ߴ!k{pE (z2M[<}RP;@N+*<.U/+ʇW*)"y 6iuPeIyʸ+b@C3_G3G'_c]kBcOؘ-43 =}u*#LۖMKWu' ,'†O{\P3DIx4u ^R(m2H !i<CVt*bSҍ˸N3sb6gdX/m a&"Nr"P/c?؝PjATXg:?g:e~3#;;kRg7= +,k9_lv~77elLE}vH̱ (:`5Ç#[o3h'7޾|O.⛯~ &? ǯPNJP6Y Шwփj0@:Si/D%Z(i=X_6G<pnhQ-^XK޴*Ap(Az٤T1`k].gօt9w37g^\a Qhe"tx-DhLtz%uduoޮp/ca ݩf7}kނBj&@P4Op^Cp1a;CONL 2c ia'O4z WBl:aLSRqH ZiS%X}p}EI˜/>5a{ԭ%n VOh !K`9G,]\J PBS>EKo҆:qE"D2-1^l&/" >(U*R M]]#pMAzvlB k}>(YVvmmW.${7O D\zV$n[r>A Vq`x&NK'K4C? |NCv3JRO/ +t!.MYDIC&E&4@aiFx{/>X^}d Z GN $E 7̚}$ň*+Ք.Nރe #JuD80q37V_1Fu_C8b .0f0uF_Hc9JD:ے'13@`|BwQQvbK2/8#9#v$n*I P4MK|ͳUX=CHb֧ ߢoer"ݲ kQlV\m" M H]n5CmhxI#.EWPd[}5D_c +i2/M`fkßnCk;i8Ty >*u|o> 9wR@^} bHJ\{^T@&\e?>3({ +ISF}Y p!/ؔbX#l q +ZJ%"Y2=D[oÂ!{ չBoJD./2;:`w݃%{sD )bLr!i5zɓOIs45+Vpz1t+;H:=a'EH7&^)'x9>/EԨɼ3RC'lܞ0g ǍBZxrۭ&8;HW=aJJ_1^{p9:τT$%a.zh4ŗpzT iur iwִe +QIZ|ّh&;aM+"L8CDuB\`­2SAS"YO ֙3aC yhwMr.&g=F~ziy";h =o:$-+q101=* fy4NBw%qPO$?eRO +û\'maF&"1PufOl& 8R6G Ҙ{ !Ȃ~Y5owҼg\y YnĪVK#FpN7\e5|uEoY` 0BDUYI ;J0hL ^pZ)r$x0;30=)DZKDPGE`$9N#PpcR]B8*F$:ب1>>h} ]\g2 <^f!SWˈkRUX2 -dx)$ M jcpb`9LO#$K)t{5/Q&u*ziͯ+3`A.v=rH: Ml(Ӱ.MsC-7WO<Ja<vA:H_΢ʠ8}ЭwZ*fŕ upGGS|F_k)N--{V;$1 +"Җְ\*$CB&z'>'cTD޿,@D`Nih4L7ZKxԤ i#a6T=u%|&Ņb_ib$F!+]5ߚ{60x| t``:]cٹXTܱGW3Yy UB\p=W%ܽ,dsE*2W=bha C@,Vuȭ[& +%a3(& #& +z6lg1ÚK< [-Vr Iʙ3m"d >-_=UZH8ݡWj4zGbq!t ueZ~k}c`@ 4Tq* -Nay +U@v'xڜ9!w̪]㭯F?W# i$09=is{mڢہ +]$r]d)5`mE =A 2Sg\ D_W\,j`b0Ars!&SRātԪԴ4tblHxq"jiǒ0ElF"w羍.Lg> D@{4vl^}!9'p@`& +iCGGE9St—XϢM^jEze(|@u ÝdJ6m8P%l[ɲƲF& 4CNDV- }(I˸n^h͡Ǒ@juz=! vdq FxʼnȬH&̐I8xqPψ[ 7 f]m +g F,>n[d]P`#dvFf0:NѶHbhxo,` [A[cG3J{p2y_Cte|ZXi>n.yhJ?=l4٘47ꍌNqư%$sUI(8IL"h.py˘k!_jd,.XI%[.(-xP [FH%st4d*Dt)l%!iΞt:&K:& ۫FrE8Qp "yp-hiJ8O8䠧nPmIdJU,Ɔ $yO)K Mr;I}vfDE(kaU7NVD+ ;7'aq>;Z_(/d +$g2\%'X&͋$I=iC*ZRgb놤gt)ԩCLfug= N$`FBQ̻8tE'p}2w%Y@*T1%.~1:7 AoPd$.W*I$ FJ:l2',MR 0V)Xi&F$8 ڋS (q#xqӈ,A `X!q<_p*׌4[%heMV!1r0XET?gP5@L? XNKEeR(\^ζdu&lLWɴ 9֦`-Wȅ!_<$e\ߤYfcnSEyrx+?FWؔgNΌtB (TT%H=D/v`cL\ +N ! ( eskC<{ i Nvh&gQN.~1ۮ.&%auXِ*}ԃ 7gH}mA5ʀv|sW(pEWx_FKz"NiT#:,O>C^8גӚ@/*؍#8!֍%Sr?UN9Pg 8$fP)LMfj$t$Z= +"8R@ud]SUj\.&m3_?hsbzc4 u%3 +'FOXǹ+RgO,]\&csT@#swFC]x_vGRkOp,tҁg(!)$ds!W9Y{o]BaH/?p̤3,͜՝P!z1;؝NKq#E? 8˸P=ΜL F {ٝodH `'~MJ8dj\fp.mB0@g E2.ξz1+iy + ShY $aW-fwLb +[N$P+=29A*qL]<_`z~\ThRN 6|JpdOy zn ]$VɑEQ#w֢Mى N9^=:-ĮSPg'v7JR]hwX*l9 cB[9N$"-(N^h"S5LxkTcO&݊h$ 4 +5,u \^$g_lU Mp$W0 >/\6tK`rF]\IGĞvCXOg C UHd @hJsIU=h4'mGY ;T)ΎEpj}Y^9ŒlE?M"!a ~;` cuscG|Zb!Նq>$c)j +u'ٮB>dW ؾ88ȷUf}E$+<,yyIs00 `jӋ6 י;*V/ ؝SN缬% +\ݭ"y]Q`qb*-dȑ4Rq!giqAS!v͖8<-W:y;Xr`EӤu=3,N]2EP'3̈́5(hlgF&:;Ex@ipJ +. m ˪i>Etn ٞT0Sge0#^NjX|h_rc?Q\5*z8-pI_ *TfmB|{ gbW4i-j|󌩑7cv +صgSmU̦9ˋ]㥻-!vv'RcB&t>NWLE[fRy5=zTpQ%i||`򿇾-t P<tq|\y1;20T$_ݝ6%͟Z]H;KL=P!jb+gU +E--\IM_(:-; ¸w#;3CNsRʥQR{N!U.m 2#_{zhs)U3c5L!9Е3-$Ҝг0mG&`[yם0JS$a&|&72*bWSQ̯ +!br= + v;d0{z%u6U6P9bzWQN%Npt0&6;Udc<$z.Kf|uVfg;j&gSh${ZŁ84 3O푕W"a f6z",_BvQ:/U&gYR &Eg}=)ȴf"8^8zrݳBy ts&A" DV\iyL7(ttiQsid:,x%WFx3>f`+kF6saњ1B$ 24De'dy)[3AI!Ќ_$BD8"8A9WGO()^"f#WlR,ݡfƷ\Y8=3y@w󨻑ޛ6*+k8t7x 6ڲ "&B{Ov}tHdf؁2D0(}`IA%Σ&U[E]қS ܋ I-MT)Tk+R ͩP{kX!Kψ}IaՂI8+B3zliӕ\I>mk[N~Nc8Am6l(OfE05;,*<[9s'Wi%+ +89ͣ<E=-@tOnÃ."cx:E$"ǠJ4n;8mnc]ndQG\ }6Q{pRZ-/*&8GG:F/X0h.}qKI}AJaI3##!/@o$> ԵHaݥ S`'t +NߴY0?PxRϐ2rr_&T0^DZ/sP2Sϵ>@,P䐼&.q3a0@26{27Liqq32ؤE#H]X7 Ixɲ)o /CG51  ?62f)PArh 4{ں&a)Z9,gd*Z)^O!Vp.=ef9;z'XH+;3 ɱ!=mn^TW!43<Իfs X}ohdžXٝ&zFאW_4R~A6w[4]f)ted$\3lF5!(wg-_&B^ٲ b`=T$43FbQ }<&~u,tXQn;F"!Hv:Jܐ؏шA -26IFpy(tuTq<5Pl +!+c.x]sWi='2ARL]7xi[gF 0Fe8|"6nyDݣXsg/J+*;T)-)U?jdG;4dm1?I/i'?ŋ?~o^/߾㢏u/}O8}CT5q9 ^mk8Z荭d&S.%JJUJ +zNN#DvQn5T%[/3>շ?v]vWcQ8;jAtD&cn|#j2gp^xճ%SYFJ?Q *"ԃI8[b:q'>y&efwJ)yR9XO1@ͤ\ ҎݡJ(y;Lsg$3G](LW +:ҾG}G5 Y:,Y~`1iҊ,-7? 6 t) ^cceăłkFT3 ^mx# \v4[\+~-ˈb$ 9'pQ,XzVzhXNteK8Lf}v;oK,AUm$;~kaSK(UdFڗZc^ΦBpgcl*Cc\Li`#թ^*?x `2.zOTL1\l%)6ՇIFH T HH-#mS ]: Br*Δ%`@'8na-KHJ87c=]S F[J^=)j̠Rґz-<ˋ CTF:0,ɿν(tMbE ,hmc4c8% ,iJ^+(1z;Yvk0 +F :U4޼W2Z) {M Ia< pEB^dLWͳ7֏GohWB،4z:Ap]O[ACrAX fU˚-R'Rr=d`F _!ـ|B`|adi}e< fɍpuƪ*X WT\/u +<i1)KLsq02#8b=W k!P05Lsl;QzD稟~\~0U&32d),[[ R]dޢ 3oKֵ$sDL:RE"8u;{^Sa^ΔL =ZdsAcI,ry;dtҞ1E8.Ɍ@O~QӋג]A + `D\`ظCK#s/h\БH#QDcz:L3rt^hbU +KpεfjMq5\ q#KKW*IhNq*uި/hILRoyM{[JY*BK)HX0Yt4v\ѻi{ۄ6*o>ѯV`'`]v-u"JcKϘq2l ͤ\r\0lv` asO߅ "t%Kw'jK֫:O~ŶҰJV\);RÍݵ?)Kd6”Qi/]_gr*Dμ$ݿƆZeHS8`?%r$I(4k2STEg? m1N[!\t uc&TaalG3]W݈3(ӈ;;8C#GnwCh'z_w=ݣݦ-X5J/; 7b+0g,52CI#ukJ1\{F^una"~ƺDMX蚜 x[*׭3{zᾮ=A .8q"+ +ec U9a8 DP7aU ꆙpt5W%; 9)ҲOUPDa :T.}GLyuU伂89@57GJ +Lfb4OCظX  7'nBa`7]BӲHR2J*>s)'0;b|ͣdk9%]r_P%g.I7OZ-!L-g6#YMWRh.ͮt618f{dtx /I"ÐNvw&I,וJ EfUp1X9O#)bU fknd^6P64@VV t4ɾp~Ȏ2"t:|R0􅾎~gH+8^'g+C-ͭ2c!4emiEbҼQW*42/i*Ѹs Pu8."gc 7[ #*SODUͧDvr ms$w̮^(6;(fn7R$Ҝg%,zjQX_g7ĆMQVn) ݚz5HQ4 "*Yĥ ;7 (O|NBw|;Rgʼo;+Ȏ(想oj_Gߥ=%12ʇ EqwݣW_W|n={P-o r\%45[-P?}c* ةlZFE?=hao^~ig Rq;a9;7$de%B)P3p +[x R13Be6Pل^βsX©fc@LNtHd6]̰+/XTr!P{E\1W-."-6*h#_SHD4`(*T:(*Z=fHItB:Qt./NxJ3BgԢ`i, _^ѦPE0*L0kI(P%>gJ/wN+ sfGŎ.tX+-[1,&^0)|T+z|?sBGLBBD+E%h.z#-8{#[qw!g؈~Bz İPU*``IqS~~n: HHO^t̛5б>A6Ӳ)E5sKc;mz4;wPK63pnB֫,T4I]aJ_'C~'^K[,j@_3bѼai5c`uS8Xrr#A"!PQ.#Mէ>t_)r)4p%YX~Ϸ_ڢUfn.?A%Zsn̄66H^(n U7>8;-XʁH,-L(@tK_ bo%"?BQMB[Uj] g5Ysp9cZ/QĖKyQ,B*ƩD-4RE; T SR4mK +!#fIYo;T=!~@lEAtk;C$)TigcצIy؉SI7bͲˋDZbErbRf Fӷ_vR%I#$n.L*2_sg: z@5i&+#1^LJ*QSfo8Ue[ +1P,߉NƐr㹒VL "@G(Dzo<9(1 &\Y6?r͵_$2% 'gsP֣~%1|M1"B4<黈/m gSHXj,A LN{Tt&7DG.lvig s\![Xb9ָ&sv 'XSH'>bQUs"d)ZW""EY-iJ0Ё~OQΖ5 \X uux{>F5!BC̐\O^wtgNX\= 7˨2P6Dtߞ7\: +RV[kB ݷҌI{OT(qJn}j>D1&q0=#6;Ρ9d.'o6T2"QQRTuEaL@9/vh֏6O~3L?]ji!eF:tg߽S? +κD7mO1{&,dADU{?gDr?zzl.7;KG ~!Sc{D/HjU,oCx]092g{Y5rtΰ4SFޅc;L2;UxF0oA6E/v'X 9J‡4``<v/:jf}::N֎# w;l}f,,]̤~|x6I2 :It8?|+s#kg!a>e3"3n9 GD@NW #?SA/ht0W˟3VvԢx0-1A!15}p(z +/SC_ZX4k N|vfE{Fvx ];`Y|>(wj>ێޡ C4-8 c?c,]ti~ew-'rV +B߄AaQ ó^L I^gBiJ*4v/vX'dXRdX8u4yaxBZx2Mv96옩#ۯ%d;IAe Z1 gNVi/Z=P#ܷ %CbZUq@ª 1k&JyAU U,G)̣*}g=p -fVĶKΔh+񙯆#ӝX87\9 ]Z:q^z89+2=0PD0;&̞OT*]Uh,: h0eB+MƑ"Th? Mv0@( zVV>)aSl h}l%jF1a-Vxc/f*dWՓ[lY9854F@̸!ǧ$-%;E_ G| C•F{&ExT.Om&TbbJK$,uNK[LIN+` +R콴;x@i= <ӵ*Z _L=OP-T@2<j(3tZ۷}:˰:V#aO  +%x?\Q:N vz@`Fh㏊)]q-pBA8\!F5Fԩ +m!X@׹ZҦ:z,^ao)aɹD=ŧ:Z!|maSK7Q~K57EVAGAy,\tDwdU֌nHDw0H&#~-g$ȨRE#:6R_ o9{pWKaG@}V*vZq1gE7TYrFlP5K5dq,@ XI?8R+p*5`کTKm$iw&02^./v*i +"l, +ך_֓tGIx2',rU@_fWQ/j)HN:k05؅])0nn 84(ըia&]آFX @(t[+TCE'(L@PkQ +ЇL2}6邬 jNN +y6zbsi3C{u ġf6 +`Am`A&CHf5Qk "hK'vэ)Cw}= +Xʌz ?'=PPՑ DH2tL==0vTkhōt +yD:pӀ+ҚbC+YꡖoZ]  42[8;_e⑚3:c2gfFFiP˾˥ʊI|naw6i _B%㢟;]hF:"Ť%ȴs^jK(gsL) $>yIȝ-A9 +,p6@M\ZޫgI58wST9.,dm +@_|lx OiTb%1gzdkl|HDh2\.mu&~:ڟC!=E[ +;hM; _Ezg@8|Ӻ`bVe!Xъj>aU2:3Vj:ӿ-1tMZTbB/K^0r "8B?5f)TbcG^ D_pRUdԭ2БeF"+}9}yE8o0[D ^F$4՟m(#@EPILq(G{+)-j*נ._C5毗k J5 (92 T0]a -RN݋  4%셿8J8[>4 +C'W^c=t78܅:0 +qL{jX5*r\EU:N4:e(>/ [oh/[g''cAA8yɦ +~"=z.Q-nBntBO)@vVedݬQʼn~taI=I܌ojNHًCg#fTP6A> U1db?ň#,J@er +(R3.+{?fhаNpի.޷@_F8|H.KOo& NS/FIY7Wp9 #OB$T[Ql})֯4FhҲ%xS FZ |䙔"'[ ž Sߘn%w OaBAŔψJ@IpJp&X/+DGغBJzz܉׍R|ܚd+ad4w?^= ^-[[G_z D>ౠ'אҮڒa) KL$ @ZP0A2߆#ˣa]rvHWgPުXhkfY!8 <'`9]6%7|0h4TQQ\Wl1$ "<=VP0jopٟ͘6P>4]“#Ȃ-" Ev̜q+R : ɀU 3kl @U)+z'D@1wG6Nvs8™"c:K#fDJNHSŋu|C.B(pƨO `X7zqq ɡe3uQ'L{.j^3u³T +!<h& hLD.DӮ`Lc0OzXXSa k.TA&ħ;Pȁ V:NG!99@~IxaC 5v?}ʵls5'C =$?EǘIBښP#6 twkX h( ۛ0 Q)NJ56y]}DkmOyv 'Gg GHºТcm&r[qU'KLI} W.^Xd 6MɐDU8E:D(Jʾ쑕NX#tLc.uTsKXAh$haIa%;I4/a<2CF:,UV4 >(O5'f9Dr{V +A- 7q4> }:+kkc یxqys+"z^) t'U89bO']9"cA5F-DR:+`i>23dMVG7$?Żrʈ!? .(0kW >D$fgB?YCm\u_+[t!7=PTl vgffEvm9assTΩ} +@)ohw7ߜy}*6Zd7F#~Bq =S맓u6r[WN̝ØS,0JFT!<(}+ fxTe$pj*`jRBVm9UіUS.]jJE;8xxݯaE}U +Rg'Txam7NJ7m~$wuT=*D=Go rqQ>ll0$j8ʲ{XfFe0fӉy$[ +ㄧ%qg@?+Etb;`s;.:SSͶj_0  +%bk`-%!T *9TBɳbRA>I2b'Tݚ:‚ U-|#ўʜ2v`Q"ubrzPK8:yj-ϢIIQYŁTyzh `֨~x&瀏܈K + @"cHѬ_ 8:M)pl:bPiBǩDbI(or21C$ڀ?;j:2nD14\;/B&L5e~YN%i7v_54(skEy6}NDP谆 +04&KǑ1kmɒ?}Y a/F"h21rΑSwo#>shaP}MQ\Yߐs)|sž3 Q 2)xS0qgT#cެHϼ[W_K`<%(ђ35#<;kW441QgEAy'` d|{t ZwhG̯M"Ӫ"*Dg.P(5en2Ioi( . ŝ]Nf(wS6d3$6OQ?u3IlM_aK`6[C]@Vou:yǂǪNmCO2 qƒ署("P +oID9P&ix_J䀊Z1OezȘ?k[-SQ#Snj^: 'MH$7[H]<: 6N +@Ih~:>=Ae:{LzI U [pݟ[, +׆Pu)r3yZCqõ(|-O?wZD\'re Ux,{+Xf̈́C݇IXo1MDIc2>cF"|k#l9UMFlnjZD;'KM3 xa:4f6`=H0ɻF9DS*pnRֹJ|TPNZ$Hz߇x&}(lW6-/Fc9OY&gPGa@iͨe +ErRDn,i 4Dm+%^%fFm@Ps(d̳ЇtVg6欽Dݳbz24rƮR)' 3?nLK&Mu]d`)@M;+9c%lhçw8 ҇c` m Rs/x!4$uuy0ΚY5v57GqL̆73z p2'>Nt)J*ɋQ m4Ma\̿ױ0nբ< n=DvLw;"kX/äv]R| +PF Z5:#4^&#'=FJWD~:f1`I(QY +Y][j!sN<`yp +*LkPeX _n-V=}iO9tQs"ڌ]m8\95WG؋uu7,~Lt4q qO)S@+\^$:#BUټ2/CJf +ZL*8T4?s&Ӏ__,_ ҫK nZq퐛HQ zK@%+ZWtlhPUzdPwx4hO#ޝ&6= 'v;O:m>dB?v1z`$'h. A6bX3vڑ_.C +y"yl[p7 4TD_" `Nyv^6AԏKtMK?XX bz'*a kP55j%J8N1 h؃bR0pm_1@ P?tɓTP8ĥAY&aZaPȴ*Z.' [ "h?6wDmU<5A '1-.TB@фw]g@JH<DBBq ىM("CoY.쌨zE]c)OQco8ø,OWq*&B0)EE3r2[2#1OR|gT%p ,%8JUF~ 4.Q>W8 +M2OL#@FqvuD(M3xGl%7ͰoꟂ_]1NLD8=(kNyk 1pY[Ø]0ǂ[#֩|ARңWQc~'l@ f`*\ǎQLe[ +8^ZjyHYN˲׭ͮ?! /(nCT<824M뮏yН- +5@JH{_p\M7M!V6M,ZW)+) [ +-M&UK}&?- c[#-Vq},d͗~Bg|)IWl|2ᜑJe p^CCl 5 -6QmmY5PWWvQjƨ֒~a1~ӴCfƙueo5tEgb; k~P +QԳ}Q\G@Ky0KPAbKwp'mG)iJ^O }ye@p.!U}Z_m nSs)Ϣ :O2.4 -/ypןd^PFG ~r1Iѓ^Mo_c<05,ּm{w4cV=ƺqjb? K%?O1 #Y#[{E|D$ MGhnԡݨ(͔ޕTSJ>@ 9JЏn2U$yvˆ#"h}ݣ8gvU֠:Av#"+\A +{TRH]|0`Ȕq cPCp#Kc "XPBK+ t$$cUZ)V ΐa~KwW4!.‚_o{Y[Њ'n@3.A؊!38ʓ!E+ ۣDb+!W1>4T<2I"7):._Ԯa\0:RTM>;7b"7CBMKőT[TS\P8p>U ).Or)͏RiVoҔցR}J}eR$ΐ4RRl5vEնEռF5;1-=ù0Lƨ/Fj#TrN0J]~=QN[%0+4xsp(";Bj_􈡇 ڃztVk 1z-=ZثP{A$J5Uo{BksK>[ Nn5{- Dk^ +fǵ;#D CJjD'mw$s"_%lljټ0*[WcGtal/D& پy2%[;{˭TTR V4 dm?'xV >k`~`dj$ҷSsrJ}\gR߾X+05hKypn`_/SU NuZK99!JCjN R(Eџ4A*:'n-1pw@{M P$JQ9Gu3W%lǽ sp5缈aYmRc^|> :)!TVL;+PCzߐ$C7mAvXVMk{dg}9ѓJI"lN}h 3]3١fy >/{3"a w-t_їI7{ FǙ`b:BD4oj9% +PHu㢹oq M ܒUG5-˓"SFd8t+%Ti6 r- aMdS=[Ba["]ybŊ ft&0*uu;3 +w#ZəN v!y"gb: +KopmlN+NۯDl`]bN.h!nȄdDHasn9:72YVw`yv4c壗^*iyV{<&`tKU`#(D2Ǚ3BD@o:ECURqNVRT }-]Յ|f2JUdԈ ~gʭ߬də;g tRL1|K ;yӔ7,[оw' \P; +|YfgL{R$aس;lU`ԯ‘Q=P!(#|z +Jtϵ+#TQ"qE p̍ϏFqU:@'w8#<1V}*3J=`(+#4ųQY~ ߲9\~DL +n!!9UF + +}Q`ƝN^{LR9(CKPb©:xaDOa65?;apri J>ْ:`픰8Bd DGT8ݳ +32X|h0S2Bᤦ#dLlPϯP/BF/Ҽ/#ҿTABO|9f!˴ޖe6T}HdcN аS/%̗loL޸Hy-ӻB{38@ ;D(sL|u UjBuYWh͠Sv^C+]au+?GقEMZCm@54[ك/E1S frH^{H.5P\.'I*H7Bh!}v:u++8+t.>^Efy8' VV@1Ǒ.F#ѨeD/ ~H pZ@ '\iMTJGL.ci틽=y+7đAfi7΀=c9h?n/iZ1^>SG. $J' }Aj󓣞8kp#tY‹ ŀy2E$;TOpD.[RK楬G@:ϟi-։vV-#,aA-y+ SP'=ѪbYTf& E=9$?* HM#[wJDŽwZ X8kM x[PZ,q =:j(@.d–O^l 4O(6&shޜl9[,':''oR|@gj~+NuxV5kCj#|$44͈͟6rQ?aqUbiJ尘3Čwe/ +A&%HL[Y&@p H 1MO*A犀a||,VPhpD}Ø8RN@k<3ScXT t4%ޖOI $-4&%Ij;ݐZiD^]-1 ظ2xKKTzbлZ$sDތ@8 `d3j/AGِ&4|ٵP;˱}ftc_V,J\}d/uD:A,!_%m1{6QJbx]hA-ϯȰDxYT) lR\0̢0UX֮R|h0*=厨1BTYUiB>X'`bpru"v]-Wdӧ҈CՌeXF`Dt̒nT`66#B#]IuxVxb=?_L`Z/l)Ϟ ۆ:W]9h]Y8oj ڪhBlL:% ̡KFɿP&yL@TMU3qҌ3{?F^l&*RQ,ąR&1M%]I hG\abIY̽FoN#&diS֣ $Gn=SE߆3`D +a=F̪ۗ&* [͸N2rKUE +$@|_Tq;!5^UbkR>$*B=`d+X?pyp͸ ͈lSSZ&'%, &! 4)02nj3lpdgSA7S32Lԭa'eQ,u%^D|߮0ݡEQG*(o:Ž 83<"t*۷O @*Q<; 4U.g#@$ (862OX_cvvlx0=u0@v jz /j]|.-.%j S`Z7v^_KOs"5w`sauߟؕM1m#@%6hfZ*;ARk.WȨټĩw)5Qҕ-W)o4vS\CWI^X)dr A{te3Kg+-[|*9MѼ>;0pBVX< +gѢPiAT߂(YT}1>27j=OMm alW-}aMUMh,HSJ9/R +QIIf54bj3ҡtJ(GE9 "',e9sEL918ϫ&.+ؕjH.'&>z0 "H|9iik@G @Id}$E}O2󡅲|щcH/*IP_s$RLmگ߃|5GD_kB%^㪕5{$NQqui.4N +r-Q)6>} (}H$C5=gUPp,2lv#.vnfWC`J`i͎}zgQ'  +<\$Zdyk~qHհd$P?%;ɱ/B<0rI_\uDF/i |Sp|N$̬ wozȗ2"0D;yF{8/@￟[awh/ + "1Ke7ep7B{ظ0 ?e<~+Ƨ8y=+iqqkZ7!c&\mkś|zLht`_u Wж1qkFDpXt/<ᗋŠ;Lb=7/8!j''z9vc!8(u;MвVjg'$ 4z#hM:%olr/TD{sut :x'^Ѥh\>ybPkP9M2zby9+%uuƙH25S`i#jXΒ} 2BV*\:LK[O8Tgf_%ɹ vt[ uL!OUJxN-n؅>z2N"?x4&Ìa1҇[dQnվ@U|4'Und̓!hQpwNPF)ó~VW$nR;| *>S6 S%@ll '+N$g +Do@NuBPn-J¯kHŮ-#v02+§P + +ܩ^%"vPf|/Uk<:XD?t)1겲ζQf6e"c ywKTT8Бٌ +cu&XMbE+zNu*@W6()u!İ IFDwBwŔX#V%y乛/ёvp^M[g$J(tKe9t`)%M6fGebTXBL_/6Z6L;G=r'UHcAI꼴"+gFh*.4蟾\T`ĨCYD! S}"F̶SO!lNDX :BjKa6}A3e$N[xaZb(AfǺpZasv[Wt3 ."wxAsu.SL.-,j Gȟ[JD|+ۀmNYf]и0gGff]CՉ6. =%BQ{p0qα')jy BN esY #EX4PKN8]89Rʟ+M3EN=yTJ7͞ ?;e@kcEdt7m7J3:wCgؖ!IBQ|*)qRŪ=۸*ʑ*GnUXCZOB9y%Olh\A4uBvƞ鶣冺ژ^Їa(MtDa:4H /2p!u9l]m6!DjaUÀ9:Wa{($Ž +%. /mo[ە!,2_TzNDg^V TCr}V5iU|G50[BQt*i;xrQ0X0ڟƮSk&Ђյjf!Ueu\*R# t]jj(Ű-Bt0@Nh- :;pf&9|OTJZ12@+,EҪ֘b?g (=7ɽ`2gg5&G@~#2 +^2E@*ȥF~w2/"Gm򆮒=e-Tj2=7,ء0QAh? #d@pWҁ~gH`_[{0{@ejQ' +u}<-DFp F)! OjT4΀x3%ե:h*\&ej<-:'}L M? AJ3dM;EڬB(iP!]PAS.gn&~ndZ]=aZ3ޑd輴$4m /C54iHfQvV5{ 8z*HB"Pp2(䄚G];&ϗ?8%+\:7UUXڷ5{h z, p\{r[t)FOMFy +QSxI)(~e=:SPirr0HoBh%@OE tFkb[)U aptל jv2ƍBaP>GƽsFGpGtAam۴,7=E +CUE`-:5 KL1 F?/G2G +5eGۅ_H@44)"H@4&;(X_.IB*ګ fwrphuo=/Wa3yFGїf !w6.==|D[\PJƌ +͌Xs!tq3h(dH|ã85l ggJrjFיO)eSy.%%;n{@jW1 =0e-6uz$ݴS| ,"ŚZ&U"n]RRD0{wQj\2+1TAiY!H +m|iR* [Q"NtJㅠ9ማ,p0Jh,}wVT75`ƅNzŋޔo]\؞Ig:}Sjғi0ٺ@K[_JC$0Ki_낮L䘽]y|,; gҙ=أ ߒǫuHPZ1kNTHzuN +dҞ'D)5Rl;˹Bj#1QpO('% :D=*2T- +R :m<j:Ip3 ]& `E8e KC󄞹*-TԼMQn G略 ] 0$a@!(}iԜA&g~3J׼2݂n5Mc0/ 8qrj~Lb7? +(zxe ]^ڊL&KֆT^6Ӡ%Oz;1U?n8m\-lUYlim%)Cni4ȃdd ZQ(>_/l3vM5sO2OVG.'SWnD逤L01M[ݔ^b N7+JsEP h@b)LGXWI4`'T]$@4gz f٢יҼg.u"b ,kݻ"aVՂx.1g<pEsba,sAvD4{ԦggSI4s DqvאqOIh:.-tI'do>6oQ}e#@^)͈$#k MFW{6訖-t`R%̊ s)hi?WQu+7t3r-c]O0/OCV$Bҧj BQ[:5SBk7fwiX$@e`ìG(TE]>PRF{:]fw DT~E С5ū.$oX5e'Ǻ] +[J օB~KkNzf\F,8PE lDXB< d6~۽: nߒƐWI\UWdg)ajt]`>AlK8Ubw\f)ء bm5/t. +fܫ%>ٺʢ,b?<4My&#e=RF!N oTpqsoTY#4[O[h24=#rΏo|vDRNOkb)3+# p{_c}gS[.hTtWF3s_̓QuO}!I; T au43pޅK 3r3 nq?ÜrVňOijQ=sbf0sU09&I@ʦ;Ы罔0)WR!' ე<¢bBr1UD/"@c9|fH}!b(?C$_OV'?PRFX TJLz\ajƎ*"`}GSpiRt4xo1l)jn|`TxhltG` +JG;(t7|q OxÄR͙*а~rΈxs1.t1JļN;Όgr! a]ڡeI>#2L* sYZX&aCxNKlw8J ռ+0`Dǁ@%΃V'ljc +J7pT+!JPiR<\ Oԧ]+h ޫVGnwj9\wFS@ds@ӓצBOQkT8%6.wۑB\vB\lɊee-x5`I,M|FhdW ^Y 'mQπx'VH'r5#8[fDlЦ#;#J~jc&3'OS㠀GUgJw A8a̪vX.:zZ hkQFli&QGƈB0ʺLv$)"eSqxo%^%̧0@cf.+,͜L"BgHj:vـ&0#(Ǜw+v-SBEڂ[ +J[VP8lrВ/XgS0XˤR?<2=PcyRYԔ`HaLR +gN!ۿ8 R1L7I3 +ߑypᎦ`,YNϴ%ނ2%]>LjYXM)tXԁV/J[QYZEt|N6mebXձftijbc 'b/Q:RGl?CY<rqV[ѫ0:sA̜J8|ھeLh #o>vGX!Mv +m%a -Al"}*)_7*`b >3{ź2 9y+PӘ)6bՒe%ih4"0c!+9!s,܄P}KiO 7|aʅ"ɖE7 |ty/u#}k)<}oMWqT*S/̓(DhU˽5JÌ}G` xE%jKt&{PNt{>ݹcA>2\^phecvȿ`$Y^KCꃩgGpOECz%! VWG!LXCjɆWV!͟KmƠ|O( ,_T(kSՈZHi`ðK DWP@@ĢeSц+9XkC ξI9y(wle)9p6@^a3E {qEK%9*m7>)d\G?eB 'p:𺨽&;#P ktcA޲Jp67NN +y1D8-^qyó-ZeڳQ!fcO5`XwaXy-~o:Z}g#FԄ O9DiP*+~ ,?˺7 +9aFYz Zⱒ#iSP㵤>@_ k`ތ3YndòEnD17h԰b@/=lmT='Mٺy[thMY:yPTaWK$񹖱%=s Q*ʁMy@t$_aZ7زi:IgCIRމ}LIRA|)T_ZcO-z3c`$J]J~K75u99Z%@ځ}v&a@$/fFLh%rƴm" }𓷒F\V +r=e1ANMbS@t*lx)coRK,S+*f+~hPAd +:"AxهSE5- !ՄE禨ºdUJa"<))|rBY |GΏ'M&BiB#ͽ9ɽI+5:r\ @vS֑.tg +*nF( LeO5Q@H+(4,:u=$*ô$A{EV/վ+wN"2>D*[7 Ec͏* \h0VC(mA;%l 5 oJ%] =.} %q I8hA9'{gݠYY:o6诶^P qϰ"CG!p&zfܷ{FS蚉d,#;b]ȭ4Po131$\jdz۾l"{(sYśXDsQ@88-Ҵ  vf9c ^gS7q@azj<$"]Z/)jp +PU (A`רȟT=$8*Ѐgpw۪$ʩИuBQ~"+Udu0vP};d^DX@alעXl^X\QC +<):>9 @rc)f-Ta!VG"a7Cu儡5O6/Hfpf +꺀0tJDN.d%9̚Ib .zѧ n;j>, 8;8CYH\ +x%P`6-AA=RFYE^D4$=Z ˊ\\è /ٹP%Šmq9/ނSZyHhƀӮ6V.c{I4b_"ibx[´1)ܽWŤ,[Paav@` >' LZV.4f*r#&\ɥ:;|VRW +D>2IJL}XUrGHhNffT ;@,3'(\۸dN'@**jf۹O: olƮU p(g +Y];4\]$&d,Rrℿ)PE  \ +׳5"F}M` T;eSٽRf8T&(Syԫ'UW$U|3*і4ht?rܫ>RH8E~cK$)|$1GY +Cl:eK6Q_vNx:4c +Ĝ ]{RW*aΩ:Y(y#PM &r;=GyNVޢI.|smuvHOX6ir(&(!PD(ݞ,N$R;4`徹 b%)F1*BK^&2&)GNeiܥ8V&T`'{ Τu 0ziAgJLűZJC¥z"Y Y25!P??bʺJ@*:/%(-Ӕ')sJT/Vبb;V_(xI~ v ?y=),n:Q[SeSVbVFKr$yQ,LP)w'ƨ?OuS*,Z.kT9'dvNĎ(viɠf!A/1xU2,,ucJa@a1J^+ߊQ ЉU +EM$8t^7"J0} B,XrJ|%SJ@Sɸ B~BqLTI}D,J?V)ȭTN:$)@'mRǍX(q@pT]Fx&nU:hZc/ RX @,R*&mETyؘGBeDDTF/RJ'@@DJ FŖpZBD),dl)A@klK2Ј\g-F*8GlM)ܨ.Dtw<y1\)yE9,,Xeo7;8bq8 \` UH[y +'CBXcߩ +.mҫ_"I +t-:IU0Js#rtf(zI=<^UJ< ^J t[5pCpMFd](XӏNZC@gZ9@mެàT[ڧ‘0A, zD-ˮv "H50M=`i+ + dBVUf9G0RrVdec0՘T]:Ke+:1p@gXbPF@[Z"FI^ o) ؊" YF%6F/DrE'2iT_Ǘ5=3sCW60x8\YQ@ NTJ0{QW9"Hői;NJ4c\X:CE]IHrpZ@S+3I:kw‡D-TcP,[:n֜<3e}a-x +Wu:i(_  +:zn 4(gc=3ds/}z> 2?E8#7ҚGZ R(bt `!97% 8X 7X.*.o'zࠪELTCiA"sB&p1Qe%Ò$ 6yUGjdt ThHN,A$Vv$khW5&r#;`섖,"fl\3=LmAlDڑ61P+}\%j +kӊ P@qQD™dn L88aW9 +<71JI+/iZ +2׃9O"SacP5:>פBݥæ@cK) M +"#WgK\rJ2`j%L+Q8C`vٻ~VoQJZuuV'G}QYKNȨ^١i^"O.儻8F/!f͞ a*bxQH<lSU\A8dh]_xDM 'E֓FwxޑwݷH%̚Ue+bYXCJj[ngwC4k3-lid^-(cJ4 2:4 NP0p=İA|Sgco4P (Ȩf$h^%,PS$F .11Nbf$)^WQF/UɸF8Ztɶ$!ċwH ʞ tΗņN7VD 00$BCzku,B[ YX3U H!%FQL.y_ۏMᑕ0Q$d#mh!6E"|ijvgZl*1ތSg  NTi$2$Y<$cs81և9aa5 Wqs6&J(NY1+ 墚tb !`6~c4R|8rPmOr٠4V",$LE)K ) \CHZN #;VH`GpU~\~9C'JVPBs`UܝL)Hf!GI ¸I)/L`b6*cV)aUBm[134 ÷D:"]BjU2|sy2xU Iu`lfX ,5f\YvdMڂ+9N [RaXYb|)]BXA|^&+5oi/]HHEl@lf?dd5pYSq{q 7\&eJD5gp"^1/[ +Dz #0 p Bhx_8{S-$9VQ$$⢸ct_/VK8T UݑI%=T^ߜi`jG{s +É +IV.֝N{YOT_P@plӉ]/X ,4u0{,Ф&Tnts37]E. -B{g!'aL).9ߠ\L~ \g$ȆD EJ8<)?_; rUI] +aw:Ҁ-vD0EG!zT*O z "mO3O;8cǑY8T7*2NPSx"8Ew:HK$.mщ_PשQRt ww YgѤv >z3P8%LAvhW| %H$a֑ɌZ $4LЇcFW8CdUA) C-zJ:[8 g(B6HVTB%Hsy*:5XLaPq#Jb]ٻ/&h(s`^z bM eᯜgbU!EUa` +R RNWsZ3 5(5tm0L˧ +O|nw*<&JUuLJzR69Qh:W(k~[0>5b0zV#+;(Hy + S(S~HPrL@*$h) * ]=^N18f +=RcEYV|o7#v`0mLeı*ˁ + շ  +\xI:Ŏ#۪/4Yd!N6`jfV +:8b>πI)X8\{PKBaHQ4AD\zMZe5<)F5 6sDRcH +VWܿс:D!Uq)pBS'$v($..p- lqfT̀:s% Nܠ*މJqwunvO&Q fʢ0cjfro%A*$ j$,._Q: +EڣCI[3|0P 6WX[CL". MٜCD)N=^ɟ#;I%Y8 <+8z_[pbf[<(4G5*G")#MNQj;!JSv:D( 1K ,>%G \P +(2s' I-2yy*lvW`s&`/ +T'@@pCO`*(x{;(khf'QfJLP2I (FŮ ډj8! WIyi$|^l$ :`F^"n^9U$ 2];eG[^P܇[E@(փr:tU%RœԊCc:h{Gv@ TJ8yZf)v@QʛT Q+2*qìJRW ;E3kv_tߖˏ"ʔM$t`0a mWXd;@aՌZWmQ$[nC\Poy N&n/)(W9kO*,{01dXΏט +JYdtoĺ l( ,@J܂$z7d~(AX@p?'Q6ADѶa(/H.BCO?R@*TCZ ($ @#?9nk*# kjlNWI+:9IrpJUΑNɤPpڬV`K2.lTy(ŧcgש+%JeCŨ X7)5E tr0eUKk^h5b7{ ;j>(fӓu BurI[@yXkGuEL% .(;bj=9yxҀ=fTAR1`= H-JVٍ*nFA`y4,\8٫G!(bU$V<T1L[J@<ą4kBz €!A TQ$>6TA +pA6x9fόca)Q/,qI7d`O'ϙ0Ǎ7EPR K1A 0 +O z>t?~pnA*` lzE#! ݚ(w@}B :e0X:AbbjF qOO䭇6~d݃'|×2 C=mT*ƔM-|EWB (Yk"x +Dh:m&$ӫ?NH.G$qe#Ro})Sq1,RfTꁙբJ}TFn)A?S5AGYe$dr'Yk&% +M Qh`MgW9@{ƅ1P)dg|7yh`cu3(KvYeg-Ѫ(!S2e|%GxisCnAMN>4kRgR~ Bj{eqᕭU#s (tBZexeNJ$ՊΡ] JZפp @(qFKC,)= +,ܚ`(@i\gcFYQ-#uT 30Q @( +BZ]!8^fkZet8&hP!5U$D6<6&'I=N'"u$3JB^U\$\y(X!.Z~,]|I羶t5ȹĔNhJǺ)laNRPͮвM'+p=Ƀ\ ' \+Fvly,#c4j1)=GBj7EOlxY7pSAlQB]@|jhtD["z +endstream endobj 33 0 obj <>stream +'m_h"NГԗK#(^Iqq$QwcYe~8ʓ6&*ߑИ`s\/QKJm$C$b( [Zk1ρmBF-)ݨ1=mWrYzeDe.S)j+ 8hBN[v;ΑBE79ӂ.kZ,3`-jU==%HluT]i Ģ[F䣧(xy촾VP7"GTHJ`;Җl(ooQ; m(݉${1s>Ն$A ,[h҈N$\.Y(?x@i)*7@<ADi 8g'$@$f-s#%SQ {v8oz`p#<Q!(gBݨѯ}.W F(34olH !9znktvˆ׹ PRF >dZ |Y'8s BL%r _cjh+rYe\D:`{r5IOPhjm#G2QSUB.ߜr)qɢ`R4*l6~zo)!#v)#l&q; o"-MK:%_S +jA/ NQdQ֨t~pc?F 4Y/o슂N3U͞׏AnSS +g Ks_mEY%ݟ8a"/RpqŇY^:5a%PpPզޖbU;FxB;="a_L3StC"N/'7f4O{L\k.P^R)hc ib` y$y(?؊rUyZy8e" \9jxZ7iPt.~5Hvwٶ S׬ @ +^{ + Ϙ,~%CC.txB|m"Ixڸ١E j g |LsoKI|%J2(ȯ Xh9آRH@O4 K_)&tfr*N'5g,%B^iyI1G_K0 `bPiY1LE ,fveR ZJ]/a[̤$Xls̑zrp?v[qTZt>&Y ݻ"f,+--4&5fɛq˱I W%H\IẀbr3Sj*ULl2^?kc@*!_ rLI ՋU!eA癔%g~Ew$K5<RM|dISNpccWϴ̉C 'd TMh2W,cnvnUpVUt+y@r?ntwM ~lHൊ0Hz "&M^mx)f$nۏ0g/%0u(pwɢ"/\-`բ%i?}=';Aޝa6a X" ƭlqT0Ѣe`'ɏA%oeTJC S(.Ө=*te v:G\{|,$QT'.Q;)z0h"4u: Ѣݒ + N`Q8||Yr4mF^Av :D> (GC7P8Wq +dQ@'0v'?fKK"H?rB +y+^UjIpE@*&?RT ЯCyO^N+)Zr҂7JZ8<(s}dt!x8#cSJ{JLLG>ɥH"DDMZa+?B} Ƣ@B  B,z ~TUJ +RA( *l%H]Hl\ G+3, $P,C%(K`VSL UuZs|?;U-JIОFwCBVO$ZT%>x[isƔgI2 Cfmq᫯lJzV.۬vyjAauhUgW*9MrkYVz*i(L ;!e +V/`1i0\$d9N HtRCB1 +N(1WLEtXSpjQاhI,0^vR/,:=a/].JaI6Ф4u cAF< ʌ .-w'? S&ۚlevnyra3'טZ)0u#4F +]J].dyQb.ӥEPD!RFDžxjrbemW^vrɡ%pHB?*"ٷz0O=6" ̀.v3fd# pݖ=OLPTTy-CJb`4=5"6DB׊]\%|Z؂rc ɄTa<6ˀbéA@itˎKCI4:Te46PYy] +됳i841SuP)Yo8r.vHQ׮i _Xbn=뽓eѮ6L.p'K2xY$m9xL")N]@VKGsO*!H}qwFy*'"m^dNP-( "? rt}W\G5aE1J)Cq?$a[c8$!W#z2(#9>.i=9UPm +&p{r4nMbun={/h hDgb1NYmRk\0C +{QdY4U:PF)NMFO^B-{N/m:XЃw@\R;:-XHg!Z%cZ=NF3ÐG[([)6b|+Ibmt\) +JZc4VѲT/::FW&x9(n*ZHR@If18㨌a'K&Sr_!(²qpk% *_z49 hHD `py/Qš3(ROs˯W/eE~.VPڕ#͒ J' Lz4Tljϕ/"w~)Nx0i~@Rf.+#m3 B)eAQ3ҹ: - +Y-r +Xy% D?յ?!ֽFYȢ#g II@Lj#xDUkIn-IbJf{̋y=ԓE7Ǹ e"6> ՋI)l:ȡ.XPg?H +Yq@̎6l 䌵EI4VzR06&uNyCSjVҁ -]e~o*,7rt_@2&H~ZPL³Q)HnX" 6ސݫڴ)&v{ ̈́¨o02G= +404A.eC 9Lz{u#}ZDZhRkոNAр +Xf @L6l$SҸPcrH9jܿ 6 2)b9xDE9Q*0)iZj[A, 4Ȑ[S؈2sѴN, J>8ڀpk#mf[ߗEg_h]&בDnջ0f$b.(4ɢԔ ad(iBR"2ߧ\UU$<)Qfp +AyETXQI7#)(ʶrp(^YY!U!K*daΩ R(1 +iހ!\@qz'yy0}ܤV ::xxޡ&rQ y(4'&jVn "88~%6QƨS 2FQ8{Fߑ-E3I>p6_a#SsCБHMy5bjW +*lB\% it *]$INݶR[xCUrSa 4Qdr JB)@r$ ICT,>J'tR[Q^@ Bɔ=GN(!E.^|QurbwRm -P= >Q}(CBTr +SF*.%]q"ձҶ]"lɠOl1,xQ%Lq!9v&HjKWR vzEs4#0zOp—3Xc'j޻85ȪAC2q,#ҽEAb͂{j38`` +<:..b$] a O@[HAIb"? żbc@FحF-UU{C(Ĺq4%@> ؤP$WOG-[)99=@89jrPЗF vHE0#A-"NR>Kp +}':Tq6! +WM<huBSx䍪/dƚNZ),[ +I2ΔJ#n"jюb}E8xyc3!$Ve/S(T8)M(?j58.! wBӨOXL\B"JQIY!wp[ d' &f{~dz h.sAQ!Dy~Z.@ox*pOe%_ += .Y`1d؍݃3؛Q>ØR+;APH֞1F׊@*7E jzgjbNޓ6f(7`ڐ]96(Iߨ$ڡ)I\Ķnf΁E& {0|/)g*7/ldô>  +" ȭB iIyAE1HLqO"el$' bi--dNѨz nBz͊*"(=BEtPo^ޙPX8.cD^D0mv;qZE omhhww?X i,2bYv,"EK(s/(}w9"vwyAAqw_5-}c +$ce$-z.;:6"0"6s`%Wx)yrSBK(Y+pY4EYv݄,%M+|=Uwd@|ئ@M`"q0:jeLE. $V>Ic~@QnRrMy- >v!l}#;/I_Y7|%8ّVu_]~lwϫ_-7>/Ϗ_Уǭy/vr8ZHRQĞOo.~S￶<~yy5x`!&f^m;/O_',\f>;{n/ +_|*Y6ҍ_>oo{oXO1gag? ?$gq|dP#_zaW +ϫ'TR_񉚦r/t^3;`E9| Ap+k, +/ CblѴ +.&U] +:%t?~@ژY kC~|'hAjz;7Ҿ)D-Oi%j er/fd9ij;޾'K`i/;|yǝ2na2. K7i~-I)2䯼re/GF[(5{q=wf:F\<+_Eк11;7:#[:Ӿo!28nKFҘUg/tf[:_(kݙ{L. ҵ/vfFgZ^,[}y{%i睉z[ᄌ>x]ǟ_XkȪ]}TpY(LgmC7~kc/1|~:=Y/Nysy/>8軓HV~Ɍ7O_~y?ُdiWpl`V C֣A's] m;~>[?n?n@7g/Yc{)hm/_o?+v{l5[/+e:.\|P/_9a/Ojpi둝yÿ7yuyryta1jo|^!WS-[/v~p +)q(7: y:9zο?8<~W<9G ]QiP_~ex8˝T_\r_lӼئmjMtl~ihM4}ˋC{ۧ=?yqqNl1N?qeldmg vb>Q}מ+X|~wRy u}ɛƶl3aubuߜ_|۟d" I>]E>Dx6.|l`;cȇ߽|xxaٓv!;VҞɌ3H݈>g'>wo]knobOP%foC{0j_|wxvv|NÛW>h}G{>~uãWg9~϶wuxϭ'ZdNAˉnNWv{eX?vb^|}W;i0ۛۛW2yChC@BҗSt|ӇˋW;JjTeovrrp# +O7@s5!}P]PC><ËNExq, }|o|Cl+Cܸyzrv|xoAóWLο~<7_=?}ڳa\z\ah{̥]fOv'xtS%wi]z;qθ +_K]zJ]ahKҒ.}ܥ."XrXr4rvY"nC3Bhrs|1sτ]rAznv>hgAG(v]7eO8Aޥb ׃\wu\|rqE.!_[n%o=9qч췟em&췭<syv|챇,Kg SϞ2[{g|-|6)|t-y%J=4% ;/<;=|窭e\؍le+ HgG$oN˕u#kS}7A?ٍl%nJ9wanD_S\؄;A⟴϶؟uZ%}[Q_|浭חg;>XOzNjkA{'/xIۗڧ'<u?Y̢_{"B|RdJNjó/w`y㉻}޵f_<>4)S秧ey%d<jR^"o[A%XqC?Oz"G6ᾃ{˓]/?>I<ڸ8~uis{J8}pϢL?e^<0oEAij`[PS~Ql;k=xO8q^<ͭc_i$-єYY w@.ON}ⰽ_'\Cze;NOݸW:%#Xi*AL}:sdlp;W>p?NyZCKO#r3u%vԬji_˗/>/v{*2~OOjyl"{7S}ގ9|pb4,퇶nivwJp|y?xov~euaxoGEf-ޛ{xoa?c{xox>ćlgهZş8Mş?J뒍3ظ}1^6ʫpnvR|}N#DySOuw<Խy0?[lqeLxwb(E' HY5 H-Zɾ=流,֣2 ;gh"YH 'x ~da-gc;)=iG{7IKB~&]^>'j2z_Ez`7}qoώv^Fz}%yÿsyC ˓k5.#rC šߞQo;a}'~ v, wj{`IR$<;NVv.{1/קse%ùށC7& ڋ$qmSgZ|λ'uyr=)xɖ ?]j +?d[8JҎ'k<喆O<yNGb.Zbɳ.f>}h'qO}13 uP uP#lW_v=k??l~>Wߜb_| ,>ga~?~?qO/U ߬ v?xPB(WY:gosVGR&_kxWow1;7wL?9yʼnd;Y8!V+C[9!䱽tu)šaOn|rjh>y(y^K:ҽJ䟱vЅO} c,}5j)7aq 5KЍ):Ц5vAMF~Cb<c߳s+XWji2Bg}qn6l!kk&W4.__Qmjn5a36u3ݜ.ڸp>z_/>Y]?n_׺ԍ=\w7we캣6_5fmδ>?1l.I )6T80`B\`h:9BkBbDLX<=bZwd֧XVg"`|4mRͣ*1nZjzdmuI[/]oO;NH'{D>b`JrChVA&jN+S0C^!Աf9ٜcݘJ} ugIR$Y.&IBo_mf/jCtSr.`96DuM?~3jlq'~T!)nSNﲯLfB&$u]&w_jᦴS'ʫ|_yX>l󺻃‘sP@v$޺sSm +~hŦm16|`]:rTXV+ʿ[X:׳*籷٣S(qt̸I{9~L=KA0-`e-i[|n-(ۍx$.ؚ:vwI*SSlrܧT)+jbńXOo{B1tc(Eî6) яLuK*%0}Ɯmlz5VDOK&CfӘIdoػm$>؞ױ*iJA໼j֢U:^{sbW[ϿN(]3JxnjՎ`C2.-}wmm#mCz>"v)mw*"_`n;`v!vw9Ocn=ѥ!Gt~u51eX]5oҽtDZVQm71WhkϣG;1L.Am4v4&N1'zn̨ɶ십FuzĊyNg^ϐXjaĝql?g)!ql,7qd6"SaL/%0zz5elDD }g'͍rw\촽\va 2βn\KT\XĶi=%u{bi_gYX:Sj cWo;mMZգg7;{d +5堄s-mڮ l1[RǡLGNViJc'Pmamc5EoLdkfdnږs𙭐Ζ苦zWSSLرɗW.pEYynOKjݥ /JC(?/^]8%ܩl~xyy|qogߜ-mfZ'[?N^d]/^,!^zo//NN+:=q.o>qܼ=y}y!򩍞2ˍK9o u _q!V~>+8v1ű+x`OܭN6>WNӫG^>bn +95qkNk^&|iuqv޺/iqhbǙ|5uocǷRMfB7n&A|pߦIRjӚ6n4mPSLC{>ܶAj"v,m1&޾g8h5W}o71{ι'>|ٺOelO6ɢHj0-B91rɓXlX0,}SU&eTY;O6ImU[f4LvOOneVz6}clɚuiHOKc]osʎ׼Fc~6v#3'[ 䥌y.6Ge;y.m[2pƭ}.͠[b}KoImO +5K!)̪Rn 4њLF`0EL#վ%*Bh׮戟7v܈}=ck?S;\tSo4p=Qj|հߝg)XJ1R1Ec -a'{#e/z-`ZGV*PKT!i8:bkCQTjCGbK3jʖ˯ӳTuWEgXDH}pT87mB8ubĤx b5߄gXyv'LvysŸ~SE d__ -1I ֡˄̀i"nPFb|pF}\-6CW/2>PoV7f#VY]=J#{J_:PkeVUa#`z8ڢ3cM@7!O_٢jM Cf9 HiYr`٥gohTDzd|uQw>4}Ӻ2`mԖݴ^͕ϦD֜~F:~OSd:D%o\ߘpE}gVgb[j[.αϦ(zՐYJon!usM }潩G /E[C%{N4&JN74}5E@fG;ۻn}rs=olQC +ES9*ء"'6/io&C3sw(Qۮ;DCoH:Y lPdK_qcYUDu}R@&X_ ƸgrY)Bf'(9R jҖ4ItvsTW>LvlCO61(c_2rC&Y'g$NvpuobH~4 3}hd(ҽR""/BWys׳GWtM)z4#q}XQA[[1/ڱ8MD} +D΍ Y EYn0y֋YcJE-nsN=8eCSlOS=;lo4}髩GM._QnV׫)l.m0 +2~&|lh:Llc}cλ-E{&̙:J:.!{&j86޸. SQЦ40>oej=*FQ>ݨ~s[x}sJǕվ?pL7oqr%*Dŗ(QqOZto܌VFp6j:8nY1ܿۧ߾>Di&j1;-1o#/%C<#Ɩ#[}1Qm~Sɞv* +(0"wcW7 +cDZ9Pe:)eDک0+4;S6 c?Ȟבy|<޾MdJgD-ȇk!A _Kȷ] #"{VAԾG}㕏c ,Ll6_)mg-yK] +ѬO~%pB1]*G-I5*?FX;ȎɉvbѶ2J YWJb&ء{<T PW۬¯k9-DҩI,RۺV[TCM;^hզH~c(%^Q?M4RG&\;vkvDI(HGX:лg LE6֓Ä=rok;e~"ިyuZS}Z׏_ɯb"K{dE}f͇!|ɦHe憎|/={NEf$\E?*,Y#Dp##\:q7`h*<ZUm+{೑%e -P@TPu(qكJ%$&$B͵L[/'t`@fJc%VY'\U'Du`L4Qٙh"GdTJ6]]U_gI4 .p,d19;Ȟms^Wv w)7b{͂d:Gx\71(iLݑ`+r&eCZˤ |0z*g%/> {b|YTE֊ꍥOPIV?/raaz-D׃KNyf[L|ӏUa_MhSȿ[G|6#:oF~*ו>|<)̇:fj|]M7Yb}׍O'W輺kZͮ]o! 6W<]^kisū߽gί~܊k域vѽva^^F1U =SUxS6|L6lRS5sTY9 E`J]ٝl4u4U;8t&Z`~=#k3Z{@g$ά`[7y8vζhhmi|mAvvیݻa o|-ūmz-=|p2 +`WmZgLܨcTTWzE8U×=یib;U'5s`)֢)\5J2%u?1;Fm˽v%n݈ݳm܍Vn'ڻXĢrUjqyvS`3nŐ41\6'Ww3Rq"*@7%8 C`2;w`vqBkڦ-]s,xii16:@OkݹmZ]r,G%FZ3y^]/[+?淍ӌU>FPNY'zY*` +f\ . B. . B>r){Y^\ȟ yPXF +]d\0KٻKHJ? +WXxv;*v]\]p >,4_|uyqr꟞?ͫ?_wPB 07>V>9/Bk׋Ӿlk >< c$L\11?q& +k'zNv7s/4YuaycbO_jaAXjaAXjaAXj* ,5K R4j,=HEnS#~9n¿)AT}; '*B):<ޅ˱m7sawn $sviIȇ:szЀl?I?q/Kz/, B/, Bx| ’d{'@p.e;y#0ȷM|w L"҈ѷ6̙=yIC QcMӿX7#PoxFiy~_^Rso~vhxcjѧ޼v4 NPyAq'_}tݸlm-谾n*qr~fBW"x<8l| [b^Ƈ8\&#Vh.u~~>jJ},jx1wN85reީiKIDzZZ+|ZqjqM[(Sf>̡YmP6kfh刾G4jNwtcG,o_H4P V޽wԯCWii4:0ev"Lġ 9sϕn:W\+u?oCEn|n$9m<&+_n+T?E&v#:&_6w{26Iq0l'f']7݈;u~< M&Bʞ`޵cLˁc8l~#Yoʣvΐ]Mb>wQ5{<}Iŭ7~Q9Me99H뷚+7l{g_'XU~ۍOSupf?gNzΌ2_?}'Upo^;?v.Q%Dq)|-b  -b .bKv .b@R9Ekvez>'414OMN~{O= E1zL'0NmewEqgm!4jow?{ٞ=?뺿Ŧ cl00E(S;ٟsFj6$Ͳ ̜^fFQ l-m+|Dybصr &RY}8.baXpfeAqiIU(cGYrp4/!K6IɅ\0Z }IXHOH)-A: / g kzo P Q,K +קI9R([H$l] J䴡EDZ7F<}探 J^&󒬿((J$g+ԘA.?hS! :2/XżDB¿h/J`mQDId, +HZƸpe;O 2OdW0eƒLQTx_ +6?IuR`F0Fʃ "y=(2;`($=gp.0c +k,JS =k2v-GlGd3+`_iW+FomdtIwShrnw0ִ薂i83,"nqJ Cp/$<ڲV!AT1oe$%$wln9b#,HW-CTPxCTMzzV#_ԯrroj*kOzIFiL*0JC\KE<*Z*KS[Z%rTDO,9yVWJQI=|t +V]zaMfgp EN!WJlSij: ?GT!N*Xj&^Sr6VDV0 +UĂj@k zt +a@4D<7WhDÂcƙ]D~~D*=I2:9 DaL42CVƦ}թ?2ũ5b6:)Sܢ8enǨKjSK?_!\fi[I +K~l=X)R xF${ ȢR>10JYBW3y[0 kT(ª"SDvWA! "J3<捩Ugՙ `*|f +3_-o_[޾ז-o_[޾}myUcj4_[4!t{~(đd*.9ͧ1Wf(Lm)H7^$q6"yEp^)"E|3G߇f9l&?! c¼#.F=UX,q7KИE ;1bO}ۖlYGu(fS( t<)oGgDPwg% !:>qՏG52 ?p;X,8òcƍ};dq=edms9}f!ٗg"G*ɆC6>4BCd90W# OVSv37@@E!#kd g+@" +1 +4>͵zOd ʐl@&'ْP)Dx|@2YNEuWd&'r-*h8j +c/b045G9J +(l84w5I#ʑ3}^ӽ c 5 YԀXD=ZCy8튕 +t^Ww&{Dž}e@TΰSpuZ5U-ْ੿+mTF3[0h\'yjLI`; $ZZC%'iVTFJGJ:~vӦM)A\q4/aklm +ok amOS{6x>m_y?b}0 fJ#J6轏Qk xZbOD8|"!o÷H$ p@%Oz Tȯف2{Mup_9]n/ۮ_ LXصFt؆X}6x=CmыoEI/eB".'#U,>YLL&wFY:mNHuD~4V@в`RQ)> @#&en#6tk޴ƍtLih'?25-=褬&Z_:qم'?̉E&!:DѨmj{'Ju2mv_F\7dAib Gjun>ڬ65g-}i+eax:yҽ)poO$ R”*bľE}ښ>(.ӀcXf5(W ~&jPI̶@rZE{i&-~"FD]I@{&՟"h? ff~QGVKyD." í/d~BM=]c!bx:Cx&?97Im ?[lf:~iq-6.mlt~ +ߡ70z&R:eAgӗf5n6w,|9qZ9}Y/+e~Z++翬oW6Nlܗq_6q$K)k?]7l_˲}Yl /CUK^;)s1P3ϮW/ĈZ#OC!7nN/OXMUu,(1@ @uujZ@iid ʤG6 l>VQ +TM#ue+5+eլ3TAX GT}a=|35K%FYYd +NA-.̲2%K2K,-THİPV` O},G IGZ^f(<\ nGDq}ߦ߆Y<0ì?F3O٤XlYQ8wW/@$yA-D,rG|%ȼdX̛?\=*9EV8If_<-E!XS iD2|Y (`XKimAz gL'@,YhY;B$aXZDC/<(+ 2F%- 8e\6Rza,Ȩ9@  ,TV 6"?pk YBfvaY +HI&-hcA2hbyLIOWirl9-]7̬\@9 +/g +K"5xcz $V{ʖzt)R Loٍpds];lqI`@Ӹ  BC:GS)K=-N$D A2 FxL$DHD('Ip^䘲FoaFrgM^u.lGmס2RRg%Q5HƠ#LJ>)g("'tJW}/cXXi( ;kN̎F2 {|}|PL6mz^mw{NXXt=I}+gqSrB(ѶOH"S%xh2[G $=%  n#E+À\ ['B#o LPS$/mLIWfq f_:'}NAXE(q!F %ziK t)b.E[8?bK$C +1%KBBt.GbNσc[(`@WtD#֑Aa}(ZW|x J$pas90XWOk.po>)ɛ!.CpH4|w#xP/([(Haw/uW\#WM*q тLw2ăӛ{z?bLԽW҈Gf̍k.;0 +x?`Z1G͏CC3$^5ŐH|.`(pk?nH 6r< "|3ӳ"HLB0a;PK$6SFCxs)^\>Hؒ(CAϥƾ Ms5z@)2QfV5j ~)/j`8D[D =>7O–M [Oc,#K%PZDYl暸 ii_?g!3FAiP`8@ֻc v%7o| n¾e9pQ[jl=XMgkԵ5w۩6mx2fQSuͭ)faC`W4Ap86z/gMSi5ў&kP cم9M`+39 i fie?~ t?-EyrXZ'64*٤טT}74NL&_bi-ܴ`Əocոq{by/`h7;R>1 mGAmJķMoƷ J'M5~lO1:SZux0Ζ:9,P:s}Dm R-;TGVGՙ˽/l+ӮLglAU hZy4ysɖQgtT[Y ɁPdSmn߳d#=@r=9lhj0Q=e7`E9r藲@V#)kܦx'u&&LZUu6g"`5i`نyM3#O&h:V@x:^6}[Pg" ӱ6[P8gce\4ƽʠgc܀mL[pyp21Ymj/]i͖ZaO["VKxqlu,L9ݐ=W`]pUfʨYdik%(amoV8pΕ脂TMЮV+mkDLl]3E +f=(Nex3UpRh aŠh6 /͆h}B/0dtZ{hzcp0?J:@'MWB3ڷ z2M V=\걋2LQ]Np-ᝀbad-C/ۛLF wJ,->T4pRD!>0◽a,?!.60 wcݻj~sz.S5$Jm łoMf?S*ӥ29A!8>b-Q69d$UAߑͺxjH> Bqk9}sp1ŋߓNcPBL̮"!G« YX%=OГS;QOU'-[ ׈Og9ցd :Z>41;ԉ?c{Ds2mk'~ɍU۶_F\֗o)YJtATЬi+P4\Ʈi%3)ܐ.Ж +It1}>].mȤN̖fa)lmXOA%-ZZ4-0͡l7sk-!'M}#J*fz"V.Pftq,G˞+Lsk}cŦ /{7t?f]۷ov-msn%)}[`L|rsg_!q5|/n7yk/ d3Y$?5;/v~mɹCa+G%wܿb[ +ϤzZP%8/Aͦ[Ã_$mLO}62MT9MxLF9y"|l2,'jl&cߞL(nϏӗs`  ˤlI=F:]5>j&c&ao7m~rhq:Wr0U \Ǝ +wE4>]\\LɑyB:֏f\ڝ/|ޒH+%-춄=[Pr?C3Ϟf%AlSyğ)YSg ++=7} /.l"X]D@|uZXOPZv6\×m?'雵ORA{gOtwCwA|&qC64/?8/vAKT?aڹ= )w#!Ct;ĦblEffwz Jh[w.f8RA0a^}}G].41󌿜Y&Q߄z; +"]v9bwW#߰ ŮhG)pGs6x{3U< ׎=PۃOw{Ý^N vz*v9;λN/Bb׉]YD2٣[]gh~{2KSW{59gqɞ/:g?ѣP$w]ߦ,:̣uwU8O2:f +v\{\zb(~| ǭpV>Cp.wu +c':N\2 KW?r\:p)TsuT5J߆\A5|!ɓ;yq|rbg۞g~wpw W?CmEP[Dߥ'=AGzj4=q3HRgtxI eX(ļg/Ӑ7zˡ~{wiKo/VC0ޏ~_ 9Gڥ){M}5ʓ{~ʹGy3?9w47 +į8ZmF_GI,n<Ǯ.}CY 6]g`<ƅ &cEKpbj(Bn"=~+V3aWIJ>oɞ|}= wڿ6JiFs|PzW&|,>9%_I}N>P^{汙ʿ˹Ʌw\]TZ>_tjSz^F^Ƞ<{G >SB^z1KS|Oدb{2Wjx.ٓRbJyLWqgOevmnϯ.ɞcs ފ'\*gXKV]7\ҨIZ9):v׬;ojfR;(]/vczەy&Mt7ұvҎesr#>|Ӹ~dk?DZ = 3#ݞ/c{Fq1=۟C.|ri<\W Zm p|)/=wɼ=ڼ߼\~YS97xVy<_nTFU/7&F)]YҏM2@uݤ&aѫrIu:ft{7oq2lS^;fףn9Vkip?աnO ={qOfj14.[ۈoco0[+ x>y-2٦޴;wYr:CzL`f3x/X]r5l%u o zu(w U +&ܰY{NH9H&+rg“̛b6c5M;(~Oi|zɄL`.fu!~ʩUbt(l*Gć, +D:csMsGEckoG׏OZ*T .?gihOYO0_ٷ<~1Y+>+yst#~ +ޕ zzh=ޏՠsNi73Mړr'cO^0/]9>~3BWMSaE"Vrp|NOD x']܅s<1jh$ f FEŴݪxRH/Vt1 @,96y GSڋz0 376:)( +#DU, +AAE?;r# i`#ϑXvzۧ77QX,`gm~B1WJ&hX y9`+#x{2JЍA;'<D-O×Eq%y5uDYLYb{'09-5[#,*䮑]prvlRK_^Kt|#}?N.q)x데X>/^Ӎ8 [?}~ײWx#J{#M\ )a'~Ol&MǰP-0ehRA04iB o +G^ŏv~BƺGlZL$J,'#BCwyel'K[Fphs륲#1Vh-4m DP@Dg,5#_0vmdBsK\RdMPv{2UE7cް(Cm_aDݹ'rf3(~8 +m~}|}|lgw1YUv=t6%ŁD eRp}_"C< tA")I$i \샳IʨzÌd1NlY2$!kR*Y^@\\-.xҼ$ħ 4鋉m[ 9~0vsMKp B|" +팥7QyV/i5+?B H8X 3wR6~ D w0t :xwGZ&[8N`ˌ"SKw35{Nup/2񄜶ABe`ssB:1R`PH,AYKQ(xh5T)R˟}{ܽNbr.DX}P߮ki+"Qz|r/ W[}y99aQQu9^qZϦ-ƒ5% t9ec'd3}G_!a2/!)4KDf$"Bs8؝ nd&]M guÄP'y\]MtoQϜQtN(-_~0/ +Qf^t#~rY ?pDF#M)ˆ΃ ]ޑYK/Ӌv 1vEĘdn?dvi?cFH N1ِd`P;YoypM?v괕~ IN^&J/P$k6&8> ?^:|w7QV]Sct05Q?b/r%Ksp]f>m1aKCnRY&{nЍBYv8`r04}:Xt?&mMEZoiMUiJ~pgSO +HNbxt=08P6D9#O ✒ T8GNJp&RWs4|L盕refqPYYA> dH\ +'Gv|8?譭jxޣWdL#0^uI5Q5tUa'^gMjni$}H>&j5}_~ F<̟O+(l* c<Mj"W'2(W:24&D +R(P[gil|(ז>d=Hr9W:5<䠟$YPkh/Qc à BKL^ryO,H^^ҭX~Yjc]%ko]"b{W{-_L7|c69&# FRiXwj0۞l$Qq$!h6K +c>W+uO\AJ_51: 85{Y/@C{O Hx&XǫbM|1K~- +$rʙM=svl[ +7wY";!V=C-`+Y'ha7%OpM3m6Dqio[TOKDu~l~{S0b! qը[Xd+(EN+bNsѐd-4v(7˦5sFy;Ck^8$gWw@eT\=40W1b ͿN;bIvk2}{NH90\{^^OwGZ=}q&y + FE?YYT8?ϾΞٸ[V1.4Zǃ] rii եk-,BRMuO?r|)Nj*Q>hn~ 7S6fIZUAY4W#1+P~kolz kpCtv(EyӠᳬ׉Qk-{Hl8ӊ;iܭ9 4IT›5SIi!xNqf|A~tNs70b&iFr1 +=u +3@a_~$ú̐Nr+ "{+Mm6BU\b$1yڳ$& ͟0\CWZa\F4td6pq} #+2چtn\4 L1r ce2siBD.zq9`b֝;ΞIDH(;yLhaTsf\:\HWNWb%8OR+D-A%%TI&)5:yfA>)c(M 2B;m<;:63GWSQ{xBKHY =A[5~}P5~A? +q^uy<9F(3֝#7ā!8dt5YM};gt\,/Nu7v}#8/a9*YqY^> B SԺ$إ'KyfvO}; +v0,Q|1&@@ Mt/(^s܏Q[P>VF֓.`$zna]mBΗ6=Q~r8>,c}TsbkV!1dKR̨8_)*M&Fxy!Գ^ھDYb֝N#qžft[ϝnS]]=ڃa7cSA=H(ޥAP轇)57eE]ϝblRb%A>Td.ub$m$㫋yHTH/^k+O#Lisi%TNTGk5V/Cys~XBEY}y;;I=^l?ir;Zq,+nȶ#nKH+`y\&Q9v`ܝoAE<+v= Z*pf#J3sqPt =rbP9\{P/ٝPA1U۠x8Fn%סN.xmzLݢkBN[<^6ӓʮ +NA(^"ّUzT*.vBuKj@0U*w|Nګ[W8^:u^M =K?Պ>S?!F2P}s=\* *JT +`U*f^PA2&kP \-wQ|ջ|V-񀖭ӭSN5*5O_ܱ5F\ul+`ݵmsG=hO*ۛ>V Gq'~dXJ耟Ψj@oyvBuܿº2S}2ɖտ!<%&wHMXWOszT7ejǫ8xW-#,P"[ z +@O皹IٙM/SG0ϳŪ2,B m*c[5;'PѬ-b4աї5EMWM`Fv&5k"TjcuWߥO}¾$7 myvl3\4kXT|k.9m̻eS? Pzk[:Kր; +[w߭eyywiTI~VJ;Nfƴrm~#~ %wRwoG{ +O Ҷ48w}>=-H{pw鼨;Ŷ5Fsh}nRwbit#rn5^w޵)޼:D PZT]f{OǠ#C)lJ/nN>WkR÷\9SٻlkANŬYdgmx (ʊ"8w}2,s9Y7t~1$z?-\FnhVڧ۠;8hTWb(i'Tzn2*` :& +BGV yr9P1`]w16lywCudЪ +;B;l#atIl* h(VP wpWPXe#X| ^/`Mu@ԛ/T [L9qC.7A2sw)}F1z~,4WH}EX\^RןԦW [ zMG2tgBdeDelR[3U x{Z5Û&d= 5ZA']5}|Ry048d,!t,sl|ڶa);;&'hFF~[ɂ3Or?.f'\>Cn6X!# +52Ckf2e)]vsFo? 4 NBHH[HN ;𵦅2O1ߪ,B ,PLVp + C.YD_ݠꋁt|0v=U<ޖ&)L,r]39]."Kˑx!l敻t,3OڔV Sˆ y\aw~TL{/M;7kYn#˱jyŰ9{=| 00{[@ő +`v %}`p C +o C}u|Ncd76ARg7፱5XVUEf4]]f!C%w z"Kg; /r+jl:Ȥ1 eL!-~^*7buXc/sИm=K*Ęw>,ZKW=8Az{ f97"qHc~(?4R،n;T˭d-:C93ɻV%ݩfgT~%AGhpET Np=/$=CNYiJR_ݰGŀi٥KvgA9DsvAҠ߻H{B-lJK|f0 CXZMY;RO(kVY()LɍL:޻DT"-ˆ zgp{<0}ڮ&*p>+5M,Iz9GDb<"M +/G=ZNJR?Lt6 HZE%4f7!ɮ.V8_Le2Yss)~Gl;i `T}Ԥhd"㮬| IM[HpV_&GY*'0Av޾͡4bNR ix3>{ތM!i:P(ߦP|}O5?vaM*eq AB<_xY"X8{qg Ző&_HC@Y;N3z#gy kzxp3ۨ>mMw'`!Ey +L$w>3dZ ho$dipTE;@XF(L=e|8/1vR}9Hd6d)28S{pj6VLΔDZMF#ВP/ư;`zĂ  3w3ؚp0ZÃ۫Sٹn\Rvkwt֋ce-<峂||,_=c| /t1<%f!||,TX,t1%D|D@#gp'>9 >6[#D,kͲTC<ʾJKXo/I9Ywyl$Xvq.YK9bx!)"U~Y^f+<h-Ό+60}]y2B; (~]B$45)s :@3t&P vH`'\<"b;qް] +Uwؙ<{oW6n=EuR bgLsmQDAf^$hL/N0ǿߍQ<6W߸?- b1G8)RϢyo0r|J2>i&w1deޓ^O>c ."_x>19)j>4?!HӸLDRB0nI'?fݹfRd94p{ZlmA=菏,&?"x& eX(i f|>hH!KZ С4D`c4^`V0)1ӷ}d^zS{&kg|`yЌei]N,}OoRQX"罱RF{ {i 0X%amu^zoyoΡT|TA>\rkr*d簽Ad Q=N¥8.&Ad!.N7z tLa$BA7n\,[!y(gtv5߇=sI::h:!vJRO2xco&AnrB&SQ7Bȝ@ ʧ)3smȼϹ1!h ΋B ɰS/2/R282϶9@Ma(u>2P,jQy& cenj̣l}C P}4и Qpq^^HZKԸf icTq Dsë"o !癌 ()y'#5-Al>ɒc'Bk>^R!7SR!&c-I(.!BQ@T|6bIeqh(CYN'*3A?dy#_ANT+Z#cToX6bE,%aAF3hDCr`kl&DEtWw:zT*_I/Mdᠺ n2vl&sOŃd~EgH[zyEcyi_JJWjU:nu~WBX 2=ܪrxkya73[ /؏mao%`w WC8O3`?-e0y U7fO{K:tU{k+|+7$ͻ¹ghU5'9S ؏O?$ ?cWK3!vRPztƔ]-ߛ9 kRL7;~ufpgS k!9HF\䵎3(G3hTL)Bv31}l`,sSF[e=fk W| +DƤC3^ cSxެVdP;!9G6lf}]Gyihj'&>`-d&2:̛x}Q}R2pɄ y,ww>X=art*5 GC1+}s~Z>c~}4Tl("23M>&V`F, 죑JW` +싏ib 3K#}4iyP}"XG[ܘ}~죍k{F1h[}QcC{37cѻGx{t}KyLUhfWŏerVeU&<%*k*DÔWaO@IdV^694Kxb݊*\zLkr]qO1Y6ӄ=1DLw.GȇR2EwB +KnZͶ~D92IC}fA1EEK!38H2>Y. ho&Rl*7;d&7JR3wޘKY=.,%gWUS4Պ1D*gIZČF\t&$LHBT |Y`#Ҟ8IT 73v<PD$~ ^yeETB(=k p87$0w>MR+XqN.Dए^'FT8 + BRc! ٭~( +8Ao|{F QxB3(pݿЦzlS*u]ڨ8AAnA|^l~#yѾSC<|uU|h+dxMx}h-;㿅о +4$9U7 EG*킡aAvPJٱ`T|`KZa֨RZ--x@7Ч!j{FBm˴r<{O0 {ORٯ6+z|R;%qe1&n4-t=6l- +T-˫M,6˦KҢQbEa򏘀ub)dݺ GLjZ֗[ zCvwZ8G > <^36"$גύ%b EjOb|XLySGq 'QqF)0?`~o;Vf@[L#O. MMp'\rY-X! |qj%p1rCzxf3&OI8t. - Qb<\BouKBuAt n~sWߍ'0!uQ`? bDľi\uACK7q? I99`4h!s@yw "GR64t##9 f$j RC>7doφ<  rAV;d[ F͜Ȅ獸a)T;$# ZZ zCOb)xȒyڡ7e$|Ǯ:-D@i )۳ׄ/xj! +˚XC [o@À-xv&bCFFxlZCcuP_0w*xW7zC +,RP O(xȇ +2s!S-xȯv#<c!a_i  ҀWd؂69{t!LYv-xH\L) Z ]N ]s|'d8 +#xeDV;du-x ܥ-;{r{a중ઓK #|^eHJ.li 1nrذB^($WWIpz7Fk]7\Vd&5ٯR;;ʭ|Զsk##8|MIUQݔwwMi/?=Zus$eEl%KgmYL _˖#]~,JW;t7)v~a(=dO{~R]y4ZMk2嫽^N%.J.RcYzSg5c੐;oS'r%פB%׀Brtm( +ǻf~TS 5Fs\hB}^'V4[ic]j_5hl\=#l 2繵RU7ok[ ysh}{ sǢmU3w),1:kE F>WM&W/`i$r[_}n'4m`syenX* +j]˒f ?,7&yx.",:,v/;M؜[u{_Һn*Gx03_7WZɑ]+_/+ w`yٲ_x,A*C*޸l]^߫/5"Dhfns_DߦSFyqd&B%ysbJ~Z, sO5>RBMic2D~qrB|uNɴs7JfcsfE8n_[?䙫ik.y7HJXHz8ػ6^؜M^?s.;C MkD-K#/WCeO2*2%8;xlZ'4vW>JHpXys-9d(_E*ԇݧTz\y.e I8[W3+"ytڧ]]C,)y|Wtߪ.g!_ 'E49P-:i<\v;9#h]hhS2Ԣе&meu#eTmKsYdw {V\X>wui,ey9`МGe{֚`>_,o/ω$cky +A'\r -z-'άZQG:so-+MMJߊ6%g!wƲaeyihHSuңsRJ`U4zYxzV/6l%ڒ$CT{?e0/ ݯ"bY5הS{oS" 1?lB*yiTؒ htruabM#&fnlYz^ {CrG+G]=xZđMa Mcɖ|Ek]8O'` d'u8AI7.3mpg*C襔vE*@^$(^'k{=OsO%>$>2Qr4͇v Y|9N.j}[:56u~]$C'U5`mwh^r DP=lMIf* 1 C<Xwf¦1ai5DA+|pSA|0z&vgcU&Lo&tL>͓tCس-&XoMaBz,:|h.zrT'2q><:[ةo +@[U9"iL6v4pqfsFWΈALONGmkG!ʹM##M#KEeNX-m1 w4 'sY}wO_σ9k yp``œ:ϒ8/? +ql{gQYnnpdKk؍ɨ͵d:G0&!ll؍^"-S`D^R}stvNwy~4Y=,WՅզzr}\vn#r'i9^Iwޖ#=W9&U֫h~OkŔI6hBQi[sA_˛tsf^/ڿl.v@̔ ȢHŸH;10/^4ǺsXp.JmкZǪ_\UVm%8:ؙFu~w\Yl3ָ|Z ؜ُ\@.B6 +:pvkTg""?vxN7^p9 ʪ;sQ^߼E(*`jW3f덢kA0fOaqQ$#:kMX&9AppQ0wep*ߒI-#sAF~@d zS~H$3ZnnWzsc`^/q%Ήfg|уD1^vU @z8!]؈Ct+Q)fCX`MY/:J=06h.Eڔ[)]&v +X<aM̌>"Yu.' +}"&:<+͍1f>LɦX|ԯm>=1x9,&\Lg{CC6P_E&lN76dHtG +g[8T\(JYjeA;6$qĎN i#Ҿ. ϡKczr=R=HvQJ7M4. y}սuĸb1YΆ%m0 DcG2]KZ+"G4(3בװ$}mD=E&ǟ(@Zw@et_sߕ++{Di:2"mXZՎ|F\/,,֥L]yw&8cO#^1"T(3߅瘪q8UCt d&˧y2H(r8\L<)~i/+9+mō4z_eqξNeV@kdz^6Zu#貖.5/A;-wEmb%w׎IՎzcnrx 5ùcf^E$lo{V~0Ic6w:-lh&7js y n̓0N\{.L^$=>IdVH%܃ZUHfL wv_q*_` Y9]# sǓbi%kZp{ :L=x;l;%~s? +9Y1]:zLJM>ƙd z{dװ?\ .wjsOVҠ]R< ɠhq%m?dѝbٺ/>;i9WPt貢C֤T%~5"zU5]CY?,Zjm[];2G0h9%hŸ5HSˢëI"10ԊQ + pT$]ܗuhUMh\FEGc$+)ZZQtU W /|JERʲZ)Wuh+߀ߡ}/}XHeI**ŪnhL,W"͊RTePT z*o*QJ*s@[VV@ŀrh",5؆jXȀ&ç*EH_՘V +  PՊb`^|FYA5; H0|a+Ų(M.W +S0Rrp? `L9(K.emLdP*ZYwUԢ +_uER,U]  P%22) Dh)0HS( +I5P*h +->z=`!U| <Z >G"OIR@~h _Ѫ`E0MUq aQ`@,n䢡UxkrL:迊5Ze*@ :8U !e P+l#l"eYˀS00TCr*hEG:B8{uᣏzN*ϥ3s+xS{'(S{bKRR PP8Wd9CCb> endobj xref +0 35 +0000000000 65535 f +0000000016 00000 n +0000000156 00000 n +0000034703 00000 n +0000000000 00000 f +0000040101 00000 n +0000040170 00000 n +0000164711 00000 n +0000034754 00000 n +0000035219 00000 n +0000035724 00000 n +0000040717 00000 n +0000037354 00000 n +0000040471 00000 n +0000037241 00000 n +0000040594 00000 n +0000036529 00000 n +0000036851 00000 n +0000035786 00000 n +0000164676 00000 n +0000035967 00000 n +0000036015 00000 n +0000040038 00000 n +0000037178 00000 n +0000037389 00000 n +0000040355 00000 n +0000040386 00000 n +0000040239 00000 n +0000040270 00000 n +0000040791 00000 n +0000040987 00000 n +0000042180 00000 n +0000044341 00000 n +0000109930 00000 n +0000164740 00000 n +trailer +<]>> +startxref +164950 +%%EOF diff --git a/Assets/Project/Graphics/UI/Icons/Gameplay/metals.ai.meta b/Assets/Project/Graphics/UI/Icons/Gameplay/metals.ai.meta new file mode 100644 index 00000000..c80214e4 --- /dev/null +++ b/Assets/Project/Graphics/UI/Icons/Gameplay/metals.ai.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6ca748cdcb89ed64c971c05d7659a0f4 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/UI/Icons/Gameplay/metals.png b/Assets/Project/Graphics/UI/Icons/Gameplay/metals.png new file mode 100644 index 00000000..a0980b8f Binary files /dev/null and b/Assets/Project/Graphics/UI/Icons/Gameplay/metals.png differ diff --git a/Assets/Project/Graphics/UI/Icons/Gameplay/metals.png.meta b/Assets/Project/Graphics/UI/Icons/Gameplay/metals.png.meta new file mode 100644 index 00000000..0c508ca7 --- /dev/null +++ b/Assets/Project/Graphics/UI/Icons/Gameplay/metals.png.meta @@ -0,0 +1,96 @@ +fileFormatVersion: 2 +guid: 1419c333373186d4e8271eb44c3532fa +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/Project/Graphics/UI/Icons/Gameplay/thruster-glow-01.png.meta b/Assets/Project/Graphics/UI/Icons/Gameplay/thruster-glow-01.png.meta deleted file mode 100644 index a6a51c38..00000000 --- a/Assets/Project/Graphics/UI/Icons/Gameplay/thruster-glow-01.png.meta +++ /dev/null @@ -1,104 +0,0 @@ -fileFormatVersion: 2 -guid: ea9d8cec6d61d714099abd4921499b96 -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 - 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: 512 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 - alphaIsTransparency: 1 - spriteTessellationDetail: -1 - textureType: 8 - textureShape: 1 - singleChannelComponent: 0 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 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 - - serializedVersion: 3 - buildTarget: Standalone - 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/Project/Graphics/UI/Icons/Gameplay/thruster-glow-01.png b/Assets/Project/Graphics/UI/Icons/Gameplay/thruster-glow.png similarity index 100% rename from Assets/Project/Graphics/UI/Icons/Gameplay/thruster-glow-01.png rename to Assets/Project/Graphics/UI/Icons/Gameplay/thruster-glow.png diff --git a/Assets/Project/Graphics/UI/Icons/Gameplay/thruster-glow.png.meta b/Assets/Project/Graphics/UI/Icons/Gameplay/thruster-glow.png.meta new file mode 100644 index 00000000..0e9a2c30 --- /dev/null +++ b/Assets/Project/Graphics/UI/Icons/Gameplay/thruster-glow.png.meta @@ -0,0 +1,108 @@ +fileFormatVersion: 2 +guid: ea9d8cec6d61d714099abd4921499b96 +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: 512 + 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 + - serializedVersion: 3 + buildTarget: Standalone + 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/Project/Graphics/UI/Icons/Gameplay/warning-circle.ai b/Assets/Project/Graphics/UI/Icons/Gameplay/warning-circle.ai new file mode 100644 index 00000000..5e523baf --- /dev/null +++ b/Assets/Project/Graphics/UI/Icons/Gameplay/warning-circle.ai @@ -0,0 +1,6257 @@ +%PDF-1.5 % +1 0 obj <>/OCGs[5 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream + + + + + application/pdf + + + warning-circle + + + 2021-06-29T15:09:29+02:00 + 2021-06-29T15:09:29+02:00 + 2021-06-29T15:09:29+02:00 + Adobe Illustrator CC 2015 (Windows) + + + + 256 + 256 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq 7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq 7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq 7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq 7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq 7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq 7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX//2Q== + + + + uuid:d14db4a2-cce4-4223-8fa7-0c22feec8135 + xmp.did:be5df3de-e4d6-1949-97bc-513b746b6a4b + uuid:5D20892493BFDB11914A8590D31508C8 + proof:pdf + + uuid:d1c078a0-2746-42b2-b0d1-25aedff8fb1e + xmp.did:1b6690ed-28a8-c141-9479-b6a9cf6be651 + uuid:5D20892493BFDB11914A8590D31508C8 + proof:pdf + + + + + saved + xmp.iid:be5df3de-e4d6-1949-97bc-513b746b6a4b + 2021-06-29T15:09:23+02:00 + Adobe Illustrator CC 2015 (Windows) + / + + + + Document + Print + False + False + 1 + + 1080.000000 + 1080.000000 + Pixels + + + + + Default Swatch Group + 0 + + + + White + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 0.000000 + + + Black + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 100.000000 + + + CMYK Red + CMYK + PROCESS + 0.000000 + 100.000000 + 100.000000 + 0.000000 + + + CMYK Yellow + CMYK + PROCESS + 0.000000 + 0.000000 + 100.000000 + 0.000000 + + + CMYK Green + CMYK + PROCESS + 100.000000 + 0.000000 + 100.000000 + 0.000000 + + + CMYK Cyan + CMYK + PROCESS + 100.000000 + 0.000000 + 0.000000 + 0.000000 + + + CMYK Blue + CMYK + PROCESS + 100.000000 + 100.000000 + 0.000000 + 0.000000 + + + CMYK Magenta + CMYK + PROCESS + 0.000000 + 100.000000 + 0.000000 + 0.000000 + + + C=15 M=100 Y=90 K=10 + CMYK + PROCESS + 15.000000 + 100.000000 + 90.000000 + 10.000000 + + + C=0 M=90 Y=85 K=0 + CMYK + PROCESS + 0.000000 + 90.000000 + 85.000000 + 0.000000 + + + C=0 M=80 Y=95 K=0 + CMYK + PROCESS + 0.000000 + 80.000000 + 95.000000 + 0.000000 + + + C=0 M=50 Y=100 K=0 + CMYK + PROCESS + 0.000000 + 50.000000 + 100.000000 + 0.000000 + + + C=0 M=35 Y=85 K=0 + CMYK + PROCESS + 0.000000 + 35.000000 + 85.000000 + 0.000000 + + + C=5 M=0 Y=90 K=0 + CMYK + PROCESS + 5.000000 + 0.000000 + 90.000000 + 0.000000 + + + C=20 M=0 Y=100 K=0 + CMYK + PROCESS + 20.000000 + 0.000000 + 100.000000 + 0.000000 + + + C=50 M=0 Y=100 K=0 + CMYK + PROCESS + 50.000000 + 0.000000 + 100.000000 + 0.000000 + + + C=75 M=0 Y=100 K=0 + CMYK + PROCESS + 75.000000 + 0.000000 + 100.000000 + 0.000000 + + + C=85 M=10 Y=100 K=10 + CMYK + PROCESS + 85.000000 + 10.000000 + 100.000000 + 10.000000 + + + C=90 M=30 Y=95 K=30 + CMYK + PROCESS + 90.000000 + 30.000000 + 95.000000 + 30.000000 + + + C=75 M=0 Y=75 K=0 + CMYK + PROCESS + 75.000000 + 0.000000 + 75.000000 + 0.000000 + + + C=80 M=10 Y=45 K=0 + CMYK + PROCESS + 80.000000 + 10.000000 + 45.000000 + 0.000000 + + + C=70 M=15 Y=0 K=0 + CMYK + PROCESS + 70.000000 + 15.000000 + 0.000000 + 0.000000 + + + C=85 M=50 Y=0 K=0 + CMYK + PROCESS + 85.000000 + 50.000000 + 0.000000 + 0.000000 + + + C=100 M=95 Y=5 K=0 + CMYK + PROCESS + 100.000000 + 95.000000 + 5.000000 + 0.000000 + + + C=100 M=100 Y=25 K=25 + CMYK + PROCESS + 100.000000 + 100.000000 + 25.000000 + 25.000000 + + + C=75 M=100 Y=0 K=0 + CMYK + PROCESS + 75.000000 + 100.000000 + 0.000000 + 0.000000 + + + C=50 M=100 Y=0 K=0 + CMYK + PROCESS + 50.000000 + 100.000000 + 0.000000 + 0.000000 + + + C=35 M=100 Y=35 K=10 + CMYK + PROCESS + 35.000000 + 100.000000 + 35.000000 + 10.000000 + + + C=10 M=100 Y=50 K=0 + CMYK + PROCESS + 10.000000 + 100.000000 + 50.000000 + 0.000000 + + + C=0 M=95 Y=20 K=0 + CMYK + PROCESS + 0.000000 + 95.000000 + 20.000000 + 0.000000 + + + C=25 M=25 Y=40 K=0 + CMYK + PROCESS + 25.000000 + 25.000000 + 40.000000 + 0.000000 + + + C=40 M=45 Y=50 K=5 + CMYK + PROCESS + 40.000000 + 45.000000 + 50.000000 + 5.000000 + + + C=50 M=50 Y=60 K=25 + CMYK + PROCESS + 50.000000 + 50.000000 + 60.000000 + 25.000000 + + + C=55 M=60 Y=65 K=40 + CMYK + PROCESS + 55.000000 + 60.000000 + 65.000000 + 40.000000 + + + C=25 M=40 Y=65 K=0 + CMYK + PROCESS + 25.000000 + 40.000000 + 65.000000 + 0.000000 + + + C=30 M=50 Y=75 K=10 + CMYK + PROCESS + 30.000000 + 50.000000 + 75.000000 + 10.000000 + + + C=35 M=60 Y=80 K=25 + CMYK + PROCESS + 35.000000 + 60.000000 + 80.000000 + 25.000000 + + + C=40 M=65 Y=90 K=35 + CMYK + PROCESS + 40.000000 + 65.000000 + 90.000000 + 35.000000 + + + C=40 M=70 Y=100 K=50 + CMYK + PROCESS + 40.000000 + 70.000000 + 100.000000 + 50.000000 + + + C=50 M=70 Y=80 K=70 + CMYK + PROCESS + 50.000000 + 70.000000 + 80.000000 + 70.000000 + + + + + + Grays + 1 + + + + C=0 M=0 Y=0 K=100 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 100.000000 + + + C=0 M=0 Y=0 K=90 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 89.999400 + + + C=0 M=0 Y=0 K=80 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 79.998800 + + + C=0 M=0 Y=0 K=70 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 69.999700 + + + C=0 M=0 Y=0 K=60 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 59.999100 + + + C=0 M=0 Y=0 K=50 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 50.000000 + + + C=0 M=0 Y=0 K=40 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 39.999400 + + + C=0 M=0 Y=0 K=30 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 29.998800 + + + C=0 M=0 Y=0 K=20 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 19.999700 + + + C=0 M=0 Y=0 K=10 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 9.999100 + + + C=0 M=0 Y=0 K=5 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 4.998800 + + + + + + Brights + 1 + + + + C=0 M=100 Y=100 K=0 + CMYK + PROCESS + 0.000000 + 100.000000 + 100.000000 + 0.000000 + + + C=0 M=75 Y=100 K=0 + CMYK + PROCESS + 0.000000 + 75.000000 + 100.000000 + 0.000000 + + + C=0 M=10 Y=95 K=0 + CMYK + PROCESS + 0.000000 + 10.000000 + 95.000000 + 0.000000 + + + C=85 M=10 Y=100 K=0 + CMYK + PROCESS + 85.000000 + 10.000000 + 100.000000 + 0.000000 + + + C=100 M=90 Y=0 K=0 + CMYK + PROCESS + 100.000000 + 90.000000 + 0.000000 + 0.000000 + + + C=60 M=90 Y=0 K=0 + CMYK + PROCESS + 60.000000 + 90.000000 + 0.003100 + 0.003100 + + + + + + + Adobe PDF library 15.00 + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3 0 obj <> endobj 7 0 obj <>/Resources<>/ExtGState<>/Properties<>>>/Thumb 12 0 R/TrimBox[0.0 0.0 1080.0 1080.0]/Type/Page>> endobj 8 0 obj <>stream +HlTKn s +.`6U.zv5s&$t"$Mmrz<~z)҆Ҳ~N;r״,}/|]ݴF{^UUU c1ނe1Ū[Q\4+MC ?z]EիJ+ZJa$#!Fd4C +XDbɘѳ.D Y2h%K+%5{{qD!i sEs)t'pmƢizTMG 6+xYIg|djJ ?^sKd4Ģz- qPXZo0Qzs%HA/+U<<6po Sn@aaO9<(RrE 0= +endstream endobj 12 0 obj <>stream +8;Z]L!=]#/!5bE.$"(^mDEn4&zz^p+2"!6n.gA,~> +endstream endobj 13 0 obj [/Indexed/DeviceRGB 255 14 0 R] endobj 14 0 obj <>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> +endstream endobj 5 0 obj <> endobj 15 0 obj [/View/Design] endobj 16 0 obj <>>> endobj 11 0 obj <> endobj 10 0 obj [/ICCBased 17 0 R] endobj 17 0 obj <>stream +HuTKtKKJI,t(݋4K%ҹH4J#Ғ(H +wqyy~3̙g<3Y9El +@ ]!O-@\+BVKK :OX~WCaiHKL0qY `5ck +X]x= 8 XĿ׽>.f#aPn D^{y8  dp H st:Y׬cxc IV?S!:_9[YbQP~+rA +ShHht^ '0߅™kYXY9Yqqpl'WzEE$%D>,^|t*K)%/`\ҫ:&D [7dplDa5|mb4,yy{e5 3⚅,t+whlA   m k +xYUH&%Ȥ +qO'Mz3KT@v[NUnn^\o]abTrtlmE]e~U+jאZ:zaqi5};CS[\_ۆwCaQ1;>L$Lz}4:%8M7l̎Χ/}XT^]X>\Ym[n!ycskkƶʷ;v{pIs0Xݯ3s󝋒&$WWW*)!$$%!e$cHNOAKIMEq ƕ;KLw@YX;ؚ8^+DspfKOTCPpJ%D=++O%$*8IZ\Z^UK_wL"dx]}>9=;s_G8/̹N!Gz[<=2|B}PQzlH0Wc(Een|Pds::5&89yFT"od䳔i/ZK^&gd:fgQl kJХeJ*+篍kj5U[ZUh0|em6]B@`PpH?QM1Msψ*iϛ.Z [JYZ)X-]R޸Ѻپw?@?5 ǖ'vNg +W3gLC#u!MMMEvAms˔FVNA̝GLwA̬,llؿsݛnͽ+!B²" 'R&k?3?4+:6oT\ұڿ6VʝoF?LT;:>::>:;eqvx^sawݥʕ'_EFO\DKLtAnFF)F|ԭ6\`@z?m+F;LwiAhy͖)Mgw~_ @ZH_XA,"F)%/*9aZ:Q,\B^_AU񡒀2 +*'[j o5[uR1uh`fm$1xJgBdrltlyyEe$feg-g#`dGbwj0TOC9; ܨݿxz6zx8IP=A!.aAxۑϊ}bG-ޒēx`G/Ԝq_O?0"۬խЮ˯ǰı²µŶȷ͸ӹۺ 0@RfzƏǦȾ *GcЀџҿ'LsٛFsM6+1MZ:{T?~ò~i~L}~cbA~Dad~ty~W~O>~\/~|~`Cx}%H}1X}%z}K} {N}׋<_~7A~-ψ||Dz|+E|[s|z} ^}wO@}-~ċ {Gu{Dz{]Ĭ{f{Zx|[]|ϕM?}R<}Ǝz]YzHħz|z={LNw{\|=>|v|ېI8z/r z;bz'sMzd6zɬqv{D[{0> |;|yyaIy?yazYvzݮ[{^=c{ФI{R*y߄yfUy`VyyuKzZi{ <{z%zȎ~+~}͇}W0}3}HtЄ}Zk}=~zɇ}!~Єd*s}Y<9wpSwuuVrUW؈|;,뇔{RsѲ;:8q)PCV:4.8Ȅ2񡂡?Up Vu9S c bփR.ՁNn U388A/ͬδz6߆өn1T\e7݀tXT)$̯̕6;eCʷˆ imw3SƀV7M +\lGNػځNāa5tNzlߴS<H6*-N}o2ن N%է>w֣A}⇤\fXMݘ2, KԐ3g°[} +0e6M _1 ? 1ӣǾI^I|B̯dܪwLe1$: rW] 1S{z|diL g0\ U{[G{!{ ޔ`{&yE{xbie{Jr|/c5}~ +~:f#MKx+Ca|uI~.yW ώәߎ%¡唘[w!^T`^H*- 5GȨ瘎=Π4rv_ҍRGf,ދ̋|,ƕ{ Ҙtٕ^1Fő,;',#h%T,Qۥ{[s:9󅼓&^!Փa@!" y +.Jl6mHju,bU6+s hܸd-ʥ}wi-sun=0Ľi-_*)U_ˈb$na+;ϧT;ppA7C4.*Iߥa8Mm.ACi7\j|fiԫ)]ޭjʄU]3(í whJch-4x7h׿*P0H됎L랇ڡuÂ,{Bz}8vggҲd[!XTZZ.vlAg +{;Sm`vؿ`~?ga. +3Ì{L^WYe4]L7ok!wI~Ira^=C#Zh`Wu}p)"z7ff&3$FJ8Ҷ5m +uR_,^VS&aR~PfLL_Dw*`\-9]q  TI6)>u6 D`e͢/xqY%9ʜ;åOd\˾P&eRz;].R<oΡ]P{?: r̨\ʻb Ҥ3|m s؟W9oZt]RnÅ\cW#+nI&gyAjsN06HiD'@J+a5V~cRI̫vwtUc[3+?F|l(iU^+O?Rs1Hqil$Wþh=(RE +1BvџnF/ BsGMY9>ܖ3ȗqI ڣ5V_1ȣβiJiX0WVH[8g_/ +n3 ` 38A.|f|ј0I6bv%& ;Y㿜҄#dD.).p'3J12K[Duɥ$s8IƊ.z^48e!R6}vcMiozo0'=~i,3:?-?oS,9w#ROa; ?pB +֞IO ݟe#}ԯN$\l?], y,>&Рq]yh0AqK)ĝBFҍcH:-h-ǟcf)K9T127]qEjL<>h;|U +dpG +ƫ`&!8al`83>.qɂnA9 +; `HByg KB*k㰗2fF=#OM eT? +mTm_OBۊV<ɆF('n3uG~Ȯ#7Њ9[١`Ns.P..콤 'KnpF\? B>-`NWOOWBlfxW^b-_x&*/(j_=߆󑊢zF`LdE:SNʔ@S 03|TOKokto}bFz$4-,.m'j*J|)J6BP ^3ewܫpX.*,07xPڳ:2XOT21|"7=0ߴy}ĸB)H[Fs V+̯+Y(I(x&9JAI'tXmyG=X[8TK)2<TSRvxlȓGO|g/{>4/gRFȶ&A52 uЯ*B幃AuFǞѧuD)B,*?n` 'qQIzK֗4{B_g68#ʉ2.A$69!̒ub1&D3Qx" >ɏnνxVG&TۨÓ)sxd-5KxߣD&1±jdGjJ|J{Z ޲f6/vTp̄ub PmBU#gBg˷)-*E +ar>>Ƶrn[ɭF-IByѸP=ĶKUC wG D}"vN.p]]Q8uY{#qCv}sax_oyiNr( d8aw2CQ}V8UWO\g \yk@dcZt9$u +p-1z(=f) +vě92 w u煼ת#{P6+Dq3HIi%BCb!kc5&U ):X$܎[b2*@PkcӘdoTB_L1Uwi")=2#pI9,RO>T@>;bnDPuCfk^^\G~ oLRcHqܮ=-8^5Ońy*9:-\g8:T<?*C;[yX+I;lRL߭$DvYTQ6DyVmfy%/sIsmXP1Lռȭvow)QBb_LVwupeėO*|+](uHװ4WU.{ 4\m.QwR~MAiRz+%BKz?'{ k҉aa{H]sX}da~3_auQz VM\ĵv5I0LM)DŽp1:5,&4 %!$}ocޤA]R^xT◬M&/B:DwA24?cd&g]5b4a?iǐ Ĉ.OA 6vfvsd(5yTH/P=(a;zUs bWxDa)Eʼ $sgPJreY3w`cFo0|U[j5k.5J&eTor È´}I lpjC8c5J=g%Uo|L58E" +ِ[Ak]J͆VBM"{NrQihЦ@Y?6^߫ZWٯ]ذc؋hKSLj:>O ɲ.ݰQ{5mm<ٷ?^v"}ъw9O&vX7km[ ,70nΒ7|eP\I;-wgFN cIP#qWI ;NٶA)H~7i thl~~dzY Cx2>*c&mb{9f1X*L #> + V@g蒼]7n249=MK% ;,F\j 1klZi؊ΐ.|Q9а$_.!;̿lE,ɥDi}D3^a`Y5g{J=mɳy3CM'jM-iЦm n5? SJE+U~ ;q.tXd~~p*QeS%.Ћ"ưBsZ6-6[\d;^z4`;64藸ͱw;|+&AfLU3XTm)lF'l VɺgcGObbɜ9;v \CL, >B?KGCe"z -@EHILp<5'҉$>8#gL2m c1 c Fw)P+rkC qp/u8#!*g°Pa`vu@oH`"Ž:z_Q<,D>'ӅWP .`xW3|!6 +5 El[",0 e[Oz0~lUO+&xkPc|u$k.?{Qp""kr6isVa=~@W_ +.<7 +2#h?c~m'rE_xs6aG+K 14L^kUp^^_mS^dШ'>}5$:τ!E[bJx&n t(m;ZsF5uqX.ՂBqKP *l%{ٓ{'f';,TT,bhUq2Z3;}T9vwRR;GD + K*/@hUv$j!@ vyבm,W|-͢ ^ ~D_􆭍"ĉ#c禘*X/Ϝe>|XH;:)d9gƖ4aBQ4Ew,C +ۯBU#>SV$L-5gV ϯ*B#} npþtdU$Db&$^\^&Z"/˺+-}%Z:}9AYu rTlP0"~! ͚*@5K?߫Z-P=j>܈[O?)a5 +?WUsy5^(ge${Cm> "Gգ+$踿ϫ& Xw8?g,'ō="/xNM)'EFqrf CįQ9ZY$r!6m)4 V9kJ$# FьX٥Cp[ģ)CS;rFP#ImKGɺzj>>X9,ZL-jIbkȉ8˚?vtxPIO}_ay@:|Ve6ubd/e3<֭ztea'cLaM +lz&,f^_!?l2x2Xyń3D)\?ye ~4O+9$  +EVDTSؓ7X?MM!ԼuOtP Cbt;iްa@gW#@4c9.Do z2>M5i~u0 qswQ9ǸLt삟Mz)>kɝI;io"U)]$YL >$$T:gUo$UK,C`sCMAJMÄKC(g]ٮ9sUG0?L5QM%0Ol5&`Ƒ1,x'{k+mY}-Js#\d:i/NK\8HstQ#-ND).s*Zymnf\1l{(E=VGW9s:?wǟQZsC6A1ƃ6K@8OUY^`7j6@9?,yt4&}"T- +\Y&kVx녣391ٵqQ=beMq\`/nņ|2͌JkzDmͫIR4\~5NlօKɁZ]TC3l̅D3jSS)tWw$IX[wV +WTUw^PeUhWE^ؓ~Wchs sIg`wgs (5mr] B`7JfAaA3ƓG?{O[ ?xj/Z*7exXz Ά})C?`KcMՌ&)Y5J]q':]$؞]Yv x(ıH1eU>_0b?*񸨎b¤،D;Wxm]|N7U13*;.=>SÜj)CM>.eI1/QvН6Tkk+Ɯn\\FFV#Xde&~WE7"bju^I@j@bQ Wk8w_D ^z xZKA _`T}] +x}ЁM0S,rV+ KO&ƈ`;E{irf0F] w86f fm_8c3V<)r1p +hs|p!QP'Ղʛ2rӤej4Y r, r?4! Uq]f(*&umM+;1 +-c8CjL=L1TDJ7>)BH*cHY}~xI,{7WjWާʇhg_YovMKiN> QRǧ}AQj^G syJG"?txt,L>֍p_>Po$^<%}KDS4 +*S<ܖyd;éIJ~JMn>ȸcI6uɖژ䩊i77_5W2' 9t^}/8%wd0k)ͦF9kih3ShPBULzs'0$Y/L3ol|f ɪ\AW#siS-O^I+36xas @M +A hm45V-' ѵ1S+ ~*%~k˝ʉl * +lك=3_2~OgPs +Ccd[aے{<ХjA {! ߲ۓ;O'9+wEHE&JV?fiӺ j05瀶bhWZxo=ƺ 0zhK5mov (YOut;e=R*yMVn,$v:QڳE.yVl;svn,Wi.[@34SD_!MF>J柣ND @$Y~-CMu (+lBpБ^#$~2è /@̣6 3nh +;۪.3Fq3\َvZnZ"/vNFNJ2V{#ΚVse_쑮Ta8C¢!Η>FL\M{5eH~7;F AB?VY=۩Q i9J.sӿc%FVbdեiL`a)kD=W \ne>NX7Ƒ†2IYf-to7/~Uas[`W*v3_`~:kjR("E +* +e)DDIss,f_n6":hmh+]AqñQqSa9{~8|~bh6GZĠםN\h+(E30~kTMGβ1:zka'LG2>,gt X&@?e% +=@Ihs)HUOeX^m7R7~,, \jJԌfͬ8!*]JR:WR]Mɚ PZ;JN.8ɦ,[r*Α]MM"waX)Lbjd`>:?|:?u>^G$fa. +ʥ_S%ED8 J=ĕK{6r zGG Ui<Kg"^ q +I6vPWy^,uc/5@:ǹ+[N+li{P#^yv,ñ-NѳH⺣<֡gxV</nb6󴳜Ρ +nhB˾PoT(W##ĉTwZU} w-vT-9O᭺HIz) z9R'dI5aZGS˟agW=.P1ٜ y?2X)r4VaGXBe`9Q1͚@85$W?D}z2* +pt +;Br\ܕ'> -vCNeʔL-ʌqKHr 7I d<BgNelB^փRγF2AqCR&t7߄{" D9u)Cw1t}?"'[7o̩~1{>Ru* ʖdClutqf2[l~{S4>J$.nQnlP#x])By`r+wLH?VD:|iUG~ժ+&+Rb gP>}WԹkQǖ]WSkqwZ +DQdVd24KGMvU35KJ~4&jwJ*y;X߉˔O@5hw)񘴕o-9E:_̂o&6#V(ѽS-te$ פp}4%4mrnzhe4KX*KÃ29ʩ~'Ǥl|O5ÍB +;^j㛑Q`exH;J\*`l˴Khk +&tF|(8VǡܷR:ϳoG*UjSKknRgl ޅ-6&Nŗ7O4rGmO[du_TvY{ ̏Iy\aRKy&P7ݪJ)l"W5{K S_j0WSW;wixF1^lО伴^'1b%OAXhq)L7j}=9PX=n`ɗKX#CùA *7{ jWܴTByufכd=Af]F=_u*`q+_i݋\^`BaE|S&%Z a8+QgQ[IK-jIKr2Tcju=A ʧQ"7{ٮם*X|,Yzѽ}ƈf:jCo[>]x^hlhNrϳEDkcCǪ ת9c Ht<)}z!hE~DBӳ2S͆i{;ouIp??砃46ٺ^"1R<-65sjpCSjqi6dzھİ紈 41.$5EG9:=ob쾄 v#[xﯦAF+T(C@RQF772I$^a$Eq>.AEbiO0]ТK5ΫPÛG ZdJ*$d ^}E*֤>?Ƅ$dO _tl%$^7[KSECqz"$]*B]}W zT[Rk"n]EUYvFUW\B6-RB^Me2B4/wͺh4Ek5˖<1U[tD>Q!.kR涧7uJc>c +l/i^3;iڐ0sĀZnS +qW7Np:([568ViAFޜ~h9Pldüj2dO ++61--1Ewv =JCHW34܏&x8,&#Rc3Dvz6RSyu_N/nmكvT֥Y˼?RFװKzn9Q4gC^5l`P\ܲG&ޫ` 9PҞٲXr6 +V4,{a؄\tcY`]lǿԾar鴯؏=b!&Yb ^[\aYt$w +[R)i[{$7f"o Xp +zBz'hO|Ō4ǐ|-j +:}̴a%Tv5Y9QK d0 ?$ćH|#uD3 phrd@,@XmVKY@ou([8#!OM~.7SoJn%OG" +Ü3N|/'O-R_1Vh&׺ NPz8de 勊ZTH;XQ6}+'h_|ȋCcuHjBA,NOS{3 L`]1> A rxӴ*E^.ؐ`Q5 v{`=W6뼟\9avGOXc& v1w~0W:ʎ~f: 0/˵%m KRKAcR% P#CSߥfmD5oEx17B0<&Yd8"1wܡ5 TaaJ3p57A>+yIMcu Zd?Bk1x-rsV9sH6p]DGgO| y5S$aE`$Ls +[Ym ~u8p`6*I ߕ`S88sn9O3nXOE /7f^lbN[PBFO.9Z_.5>F S̉R'}ΪѬ`_dX|{dHXԾ3QlZe7PRqشO5OkZrx5u`aǂ:*`T), +DPQʮdߓJRk=H+ +*#u)h) )B6s9߹瞏HZGzGT"93hDͺ sr|b4y $TK "$I~$v(B#].qi?CN ~ޱ|ܷLcOnT~vxj̦5<.f\K<2p:CpSy,66>|zC +E +T)f/:X1}J+>_~Q;^ㆪvs&۸>.k7yZS:˩㜍rݖۜaKa!l.g57Kv0!;ڗfe %]"XT J3aժlwVj=v姠αe=bI/gH& :g,(y 27>aba88fVVqɌT0NɉB`( _"fo! t}Wg_0}HX 9,Qx=~Jٹx>ӱe9M2mFS)Vk-eZFF٥btg0O?Dǐ%7eyښ6WSCyeUS}l`a8i g"1лJ"|PKڝc,$+&PvꖴGBoj_t4I vqf熚(eC!b׼^SbYi1¨;2W`/7uh?4 +!z@#(T 6 ^!R S#>E/Sq9z_ /G%ӈ0C9[ۼ@(٩P ,}XTOkpQȫUG6 x2e,> -?ϭQެYz/T5FL^`tީ3\#̬D:,vw[mDW)TBZ`0Ֆ`3tBQ˟kks41y `\޸cV#z`XHhwA0چFTyqӵܫ*F˪%*/>9 +gS'"b'zL=N)cs*bR)W<#S 癛)K +&L\9WtW!Y17i*%wJ_ 閥nWJ!p-0T`:K6B+SzlL,~J#ZLHBEe߈Eq1 +ڸTD}bB;*OTCnՍl$OYQ0mz7o9NŻ|hDV[Ve֩b7YZÖHl~I)ܻJ5oOݑ%(,hZGҼmRd!/NEWutV57z;jjs^^lDǾ0-a_aL؁w44簍b^ppi&nX uƻ-݂ -cY4_g ?jGIfH %J҂[%ϩC6OzvWzoZtA$?z;ؼFT2/+0@@S<@>0bSuqw;j4S'/4sEթ(P[V^5ƊHkg/ۄw 0*֭ ajyB5TC J(_F4!m, RN ?S9 :״OfOV"յڇ1,V)S@._ +#Q`K|ͨ%cj/&\: [Ft^Z"q٤Jm뙊jMarח`VCg +w"~>< 8i}XT8dzQVY<p%HG/Û`rq;Nm~Ms\/Zh:(MXа^F.꜋.Ys}5`a((X0T+JS 4&~|iB!! !)$)ʰ WFY]E븎3x,˽}|dc +|i-0Ws +Q_GpRjy0׿tjT̎ԍD1څڍ›N:ka? 7ek_%]a;זF=9-b= &Mm0-vD'^j+/5(er^+EL F1$1KWE|fOFMKm::1`ڥfXЩM*i9 +l?+Lw?-Nx͈wɳ\C0瑃f sM;iđ`$O0z*RٹB9@"k5v~.lB?ug]ed8JAj͹um.DO^^v:y;ske+,L¶vŝҼخd_5Z;q#k> MU\J{l*͟ґ3Doy"UDcu#H)BPit/ v`_Sʝ{e5mpPpy=-2[m+v6*.WۿSǔ] +^DMk,2.#ɲ\!{^I4Ԉ.~çlDcBU\b"c jvJG|H`_2rHѥ tHHBaG :Bf{'9 +[jaЧe +&hz6Fdy?>gۑx&l$^:^nx-'-]O 5@S Uڏy]Tu _,zWPT|BJ,ɕ}`8ߴy?p7gˢu\JO(_vOUue4+Qbi?A.jCxyRJ駥Pt㸲rTfdd$ֺFR>PaL'v2M*׵T]`W*cD*hAe#"ɆKO9JKL2J( KgK3jԉfZnL5oM(_>FOӹGi}<@w#Ndhoo4Y ̾Fٸ2YAz$W֜5Copli\ 32l;a<;S?B>zprjsm1tZc̥{s/J{c*#3ހfϡneh->Bc9SJ"չO8'8ހ `yHϤu-*` x[c')Oy\x!QS9q*;$;d'=NY ,|ܶ34qT=ka%hs䬺UX7Fl[ o1apuxf9QGk4;e +˸7荇5xB:yZdͫ,`2?_a[0~9iY Fs3g Ë9u<,yx87 1Ja,O@/gO㔛94 |.]16'^@1'p:XtwL,jVQv@wl{έ̱\?R^UV\GI+9D03oyd[R<""" +.2}"!<4tH~(-r25DH@l"K濣,/S}"+~wF}V dRz,:w&?C~FqJ}JݢJirjzEgU#p]ZF%+[PjewVjlW7wR/*C%%jGx @EFH)&0_Օ|Xu +DRNXA\0JSH307͛73 CWc+U#r# aQOL4Eљ?s~{sIy?y>ҒLָKd-ޣJ1v*fH 6hz+~BO:IQqZUՍP[UD#BM >$ z|?^!J0W8N WzXfщ@'h< +%sdR۔e[$z,Z2H5[&Ht L UO 췯+52j&P6uRɮ! +a+rk!o4 `ܗP)f%VQTF(Z]s,TR|O)O?ho# ]6yл)OU,F٠E})gsٴGyҘp/kw~˖I'Y;TdgYU'I8@F* 8 $I+A2((+y8OϋWȗE {բbW"@}@C׌teYgvֈHofE`eagbN_4!/e%O;mhtWv6[iyFy4ʔat V] au #QYm3rM/q{~tjD 7fiɷ  . =[n`4qShBrx_5wԐ %nQ~x'G[ `+qb]Q2Ըi=UGn~ڋJ(Aݪd E7Kz +M]!} jnh-Cզ_魺a٭Dfrj6$-4nUZF)Zpux'@]U/ٳۿ3Ug`iU}ڰULWu+SU[;uXJPvOŀ{$KF,qQruH.}imfZh~atMBb0*iWC䶧jZmn[nKfi c+.&oV.&ʭ{5_s9dmIA. *s5: 1Ů m!|fl'6#N +Z>\oMkCZ8)*bEE@(27{I" $!0a=+vUZŁ`-xEJUǺ +~~7TSsV6i1=2J眆Jh@ Uu;7!0 +߽\醮%-;=.e/T7D$v{.ʫ|ZѮmcDֲ+-Cu_{>1H1]"D^nR ٺ:E3[h9 7TJOW+3 vœLimc @6'[c`Ǧ8v!bR{1_ӵuoPE2\@;4"mO m{ ߺE1dA}C=WB}[3']\PJG5VmnYG Xyahd'J[U~ vWۅWo]WnGnR9H7ѨAu 1vZm]lUrTVA +sj6lhm,My4A*0vJR? Ĵ>2C!*#q0MJ!:ŏCR|dFa?2݂ch3dBzSIt?%LmF[AxYGҏ0m;GY1űh%[sጒ@9 q_8G>r Wn)jodEzC.qJviN&If8bg + v|sd%:uTf&L0~p.(RU +; _)w%$/ t# +~#u`u[w.qsY_-*'̳ɩk/)2* i9$7fUzflc9}],툏WYCIkS-ty7>T! 26Kݲ m&cӣh' ..+upC6&@j5tdP0=I˂Ė +C{޶$tR:(ϭuOR4$=jluq1?פ9Si|cqF!_z^SK}`d%DT wV>;<'V=(5H%jWMV#9YD2֓p~~J }D]gNSsjJmn->,vg&SLl#>^i8ʞ%4'RJDhRN0hBA0(r0K+aMY|"EGE_R^v4/?m[˨yN`K/5[71[Gؒ' '铯RGhqꭁ]>iIX +5'\GB ćd^ux+[^%e ֪pxE + 6%!Itި@Ҿ#% :*h$r7שׁ55׈Ց'I+6*ЮwȰ%U#zD+Jt BaUؕ 6}uOr7dP Cu}FEua7RV"KST20 EN{^lkƕ$vW(,F7b ˢÞOy<"_).kh[n 9W?gڈ7yș*ӼuA@ OpIRrP($e[iVYR +n#(aFq&mq3%\g?%ӆM5XD3b$ʁW ƿ5&͔D4®KcᏊ . +1Zo +^`~¿`6z q aXǰ)Ӽ܄'84 n"Db.yC<K d},{*h +ڸh>wMv^ c8Iƻ(~j? +eoyl/Dl5Żרpy1ܣܵ^004{ .%CA22dWuQ>okL<5.ſȠiffh7S-|^TjX[wCY*sG^1Ve֗+˃L3 /2y{+.;CtJ } ->٫y6q< WxA_PZ? Q y1>yK\.!OqM +0Cl];Sk)=RZ@[ɷ5JBeǐ$Ni"0 -úR4H~9.☫|Dϸah-)r~"eoMK%4 _7"‘e +QD~0T.>"x*O>酧.Ey+HVy55RWsEk*PxEGB;(J X(8hiqmh^ 0`}_APWDLZ‹]<4zG֦`oyZR|u^gCF#nr)Va5ƪw9njyIt +xI1bIy>}-AگOShKFx6xqqQ +3SU\ka椚̩Di~ ?{>J3mtߐZt]YNju]ɒQYlZZsNѴѷW>Sݥ0Bj+7q҄fU7m :8^;#eտ+*,_CY3MSU*LX.jQȖg_IWJ5a"9R'C\y׳qH)VU-Z.\+Ѥ/aen/|F[?SPkr" +^Y>VH9 &yaIxQfd}+] +U.o.=q-y][viRgk*`/pLBu+A@[)&PYQ?im/K,Y*gu(i2`؀V"fJSs=RU@7+>dْsmY)w=U?ο3D qjv83׽} 1r@vy:{Eͩԡ.޸,珈~CH{ksv_l毁@"lOR."0Fl]]C˧Mfi nq˶Q{56ef e l[IuY_(i&;to 5kZ/ jjp~Ch⨿䦿iRs!G-֠5 +&wa7WAƫXUr8+}E)oVӃIÌ}qZlh<gw +A?=$6-ޡ|,)!<*ǘ*z!8߀ϸuPpD|Ŝe=sm4'ҢؽYaPOZ(vj?VGgxI=V-̹uMCJH_-C]B~2A\8*E8PTΔTo 9/whaߣby\'F,Ռo%wU/ժnM*T Ƌ{5NJԢT9L;y _fXD\uַA:x")V%V/*]1# )ԋ@X"SVӅ4u.f?Uչk%Nj;c~?]Pۺ˄WҌ=V듍1 +E ֻqd{q׉; +NYHdfttc #&vPtQjd1o ­R)ʽ@}<7 &8wyybH04͂@>o` ~M`Oi#T2"-!NSn\ z$SC%Q%;OzcT)!M.wf.Po1U=Bl1F#F0HD\u̞rڜ*ujQO5u8E$7:"І(UuANgulWYE*Z"cT\kTxlx)$8(YBIY`[}.Bb T$=U8Oŧ yP-x$]0_ +j(sOH|/=wKR` ptl>f*ӡuU<=Ts(&zpKA?sLo`N0Mq+~*m-~F7^5惬H]${|-Ҷ9Y&=X'Vu+^ϖEm +Y/0X cAdPc_X VRx6b|C6^FeC]o-F?f7Q3V>͝yFsy]ݯMF͊k^NնI#FZ.7ƆQfeϫCJn;AjB JFw +mԗ6t(I5beElXQ͌ i,)6QS 1zJezVBf ۹ʹ/ HQ89SnE%o-4NJ``,)~utyQN]vحp+e"xN6y*,7$'x\CQL[8.d@}CɏE)1D?@晹b$?7 + YM N| _Td'wa}0Z<9|3閗3~o=Y>l0Wb=P1jmE XR[louv:.C=;.a.BřS[nWJ3ǟN1='\Xr8۲:KXj6e g΀ap%z"K1.c1ɇzɭGTRiVBe-)K@iͬ!u@_`&2q up%P +SЧ|NWP !o-t_ nyV|ؤ賐e`HʏE=>\Tǀ|cҎkIST!%Gu,%[IR'+#T}m3\/df)`n2#\M(CQd6flqGv첵).Z&wITe{JQܕQE\m`p`Ҵ\z[v7OVo9ݜQ}$SSFMWdnyuя: *o[3 O FRJ0ոl+L+&oE+d- +@?^fEkoo\fyJ8zΰXmi  -Nw}OYpz&@>gݪHc. ]7Mz#fe"g\a@\qyºJc\3ܔ r'WQVE D|PLs\h_h#9Z-TdL>˼!WS/bniA3.1Fx@Ǡ3UNN^nPOZdtvWO&-8ךshveSȉ`wPU_cař=շ}m`<<$+UV66do88{ηzkG}ڻ<<7\jvg!5M!w&GmpfSgO3x? +wZsLRq/~lK]QV:om<Q' R]AMXyu ^ȩ $}! 9LHaH8hʡrTtD-*fY]]wuu[bgg޼ߛ"ȹ I7HR7HBHudt *Ჲ=eJtj| #TI/W?{ΝO^'`v'$^E=7ITF2˵7-^'Z"[x ;[U7,QyWrr9E6cy'I gIRm2ZQ +{0K,^H/>>G@l`T=FZnZH ѳ$m¯鵩KA3D;w7ŏw^J<`i$M_x8wU-,/h!pbP1|*k _U;N45jX_:]$ %ͫX+é Miwzz{7`fOE5FohX}fL}k%Jq_b_A54WK'h?:lTHmm. m&"X7rV7l̨b]r+ OpK[{0EuwrfӵFajCCPktMݻVw[FR(Y-VE8 P?)p>͛5 #TtF%3 qhk ;`LVOpZۓ. j&\Cʡ <*g!r)J;ȁ&xK0N\B&Գ$bԍ7fpt(0H23ӲG1d?ź +bVֆ|\[w+tjj?b7hwJCmm#b.^VBDRb8E]4J 7LGc.Xd/a&ڎ @顢zQuֈ4Tqi˽èb˕ 43~,ymoθ[0 +l} TCuLBt 2ZW>Eh@+[Řy0= +sU"r];û](̏{e E=ma^2'FKv~.Оm0Oj(esߺ Pk*!3IBЦs4{^|{6k\* }XYǠD=A %$hǹWǂORV UBꯪr+Ca6 Kԣe :Zڿu6&?W&k).]%],lb7MX][H"}WL)RIrfr?AƁY&I~_IB${XlZXE&|w#؆`_vߢfu3fm89?9 +̟NՎ`jz1*.@爎܋`oْJ_+-4α6@/DWEjE}HRDl;Y+ z/1Dѓ(z)oι&;.4aZ#gsbZ+XWi;<~n"( M'b6!G lP<^\nM8--aG+dyXP^s:0q \p3bWu.,R&rm#қs)lej(^ ,=/FV6fj;ex%Dk%!FW@ao2QTvs 5h0B{UHiGCOzL'pbIq+'_1Lv +QA%$[H~}{1fKٲ:HmWS +ëd}2w7 j< O7i2G;SWݒ!@YsZ~*PƐ6xQܡ/9i7cGHVf3R>K2jZxH"Z")vHD} @} YJ64T(P_(*C]miSJqOZgA(ny8}wν37;?߇*x"D6HaeZ +5K e +tE=H\ƒW8 72ym]Ly 1N<8͍@:> >6pӹ$.7$C$pA)hJewT*FmKg-lm*{{v\ܲsJa>3_*ݑہ>V5|WG_>RR_YL!RFjz S5fځO2< `}I\:XiZkRH*4[(xX$u|I9̺TkVzl_׼gC%*wXR nY)N.9+wZ[E9ľWJ%wp`Nj[.b|JOsdW,R~#* ĽyFdwCp*L(8OelL˞)A vfFʹ.Knd~A򥾺]Di(i]YʯJߟ?>w[侾7KK6w"!eDp5V* 3VEa{:KoEDcɾJ#oOU44lTjFk,>{S?ýSk>Su=|j}T +SU.nk.mcŮ)RxbT<TV*yÙ<+`RC;S^0-itp<ȗ2IZ_0ȡVVKHWol9=fd jb%}DCy{sI*{ZL1r`n}+D_*Uz3}i779_kjxL+u ;FxL.mmQ`sKzK#>&ޗxiBV^\s3_XX_رC+ҭj|S kϽ|j|[X +ΆBL.?\DCqߢ7nO(M&JOiݖw0IJLM,NCOYPoQRSTUVX Y#Z:[Q\f]x^_`abcdfgh#i3jBkRl^mgnqozpqrstuvwxyz{|}~ˀɁǂф{pdXL@3& ֜ȝ|jWE3 תū}kYG6$ڷȸ~kYG5"ŵƣǑ~lYD.оѧҐyaI1ڲۘ}bG,{W3qHvU3sIa)\ Z, +     !"#$%&'()*+,-./0123456789:;~<|=|>|?}@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`acdeefghijklmnopqrstuvwxyz{|z}o~dXMA5)ۈʉq`N=, +ٖɗmZH6%ؤʥwog`ZTOLIFEDEFHJNRW]cjr{ĄŊƐǖȝɥʭ˶̿*7DQ^kyކߔ ,8CNYcjnoldVD/h 2 +R e r xzzzyuph^RE7)4=@?:4 ,!#"#$$%&'()*+,-./|0p1d2Y3M4A566+7!89 ::;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{||}v~oiaZQH>5+! ؎͏Ðxpjc^YURPOOPRUY_fnx̰߱ 8Ql»!Ceª9^ɂʦ2TtҔӲ6Lat݇ޘߧoX\[VL=*b/fMq T + p_L7! }tfUA, !"#$%z&d'N(9)%**+,-./01y2g3U4D526"7889:;<=>?@}AoBbCUDIE~% ہ‚rW; ϊ}bG-ޒēx`G/Ԝq_O?0"۬խЮ˯ǰı²µŶȷ͸ӹۺ 0@RfzƏǦȾ *GcЀџҿ'LsٛFsM6+1MZ:{OX͙~ʹ~y~eL~j~Qc=9~|4~cl@~]̳~nf~C~لOiZ/gP8v}6q}0}>ϲ:}i^},~ ׉_LpK-~~,*~&E()D9vyowy=TS3wI!D)J%OBvwN64;>FVWm +S^Di*bPkpة?%"1#!ϼK`L<n-e2*+) X䥂C@v2l Q?(=0q MzǃIz7MEY; Y@K (-\U&>rI^2IMe;Ya"VN,S;o_%sD;fƎ.R?l ;0Dq>8zDKG)3o+&<4@n͗0EO94#ҐnW9 b_7}B2yːv/ąJH삻Ȧp$ȫވy;Æǘfo虔F¨LsI,KhW2!AjHE^τ _wdlXggΩr!jU)[%B\DCfp <_\?k,.wȲirJRݐ=>0+cvZ{HllLVAc۠ ^{6oCҏSمbȏ:sz 7jP@Q;[wg|z30Uq`!P-~|X3+z2lIђ:_p-FOJ*Yr(".O'qäfrCRJ'dc~h!€?`}WzBd;hѲGϲmT SAij9< +ߨ%@`8xLTqė=,Mk $hJdx_r̰gʱhtG,KytomVK0X?R=Џ ]ٛa`sʠ7g&Grŀ?>r&z`b>&z%sxbw&{~څ]"WR%c"zD zA rs!֝=jcf]rmANJl$ے#ؑ >wTfGFF699<׵.'SZ*˺#-Jl.ZZx%m*| o 2ӝ_TWK4eRsu33'jRFBWl| +Fgml0L1, y+Hu2f;[T0BE{:qntoT]okI, + LgV_R:Kϋ0dP?= vE̷փ(M4m\Tk׉o,H=Zw/EI-LQ[ 8F/g֖'$?[u~fghXjݚ- VImKՀ,%ibQ*e97WKMYiHtXTBUDw-49#iԗ/r]hGވ/ + +lD2 h‘%TTT*Fdw">GY?"[f r5ʊ4`TAo4H5rWS8Xy;$Yr'q vUPV&4m/5LJE:S7Hvy.. kPXAl` +,e: E$@BKr.!{A$A,CY[EA;| TJkU>41aƜdcT.Us R&BchR) + Pd;ʟHbl?1;_:i^mMh9Ӝ+,x+(‡j3=P6u>a}&b (0=.À<2&m%u9_~zL!S`(6͟>թVlW䨸m5ypg!2< PR%wC>ubvbF.0UK$K;؂P,!rA5%\v" +[2gwdxJ:_'Eښ_+^Cژ I! v,V72UJLNITUKɎIy/R+=+(֨v6!M @PB%R--3|4-)#ͯ w.ܘ<;b#;*>$eG +>3"و~AZ$xOUx f𜓜x;٥Q h X(Zx=`dš 8b†id, ϐ!enZ +b /޲І2P0~ +1baktT ?g)˧9 С`.ޓ`>'4\DRdPaxԗ?i|9,t Ĵq]"m-9OD'Ex>#Bz6Nk%tm6BDzVQGq,2O: y{iHcy[]vaZT5 ȨR 345N@qG!fYXr{3^M7HX1ey87ҙ;NP9tn/D=}*I:2s̋%G{7abTBm6ۺ4JZmI׶Fהz\FD*rEyք ̣V-8ˉi#7XmZLW:2 +$Iⷱd`U+z3 8"}Y\E^\Qܵ)<&uZ!FM)V"ڟ}&à/ ď 5 O546PW눤0 fGlEbdc 'ƪrӬ[{K("M/y%0=zFBx}{w6{Y50%,40R}ԓvTp>K@fR$7HU( /10f<,1BS>٨RI3#&&pa5j19#yTH9cI[էjU̟~? +7NzM`k|-kqJ}(Ҙ2SaӼGi ; b:`uǤayU}T 2Ftm̔%OpuDU0m~L-_:qWg0~huw-] NVrP =<]x;Y1iw@8,n\(zqb !$zB&5dn61Q& & CuЎy#c%$7]w'z\0Lk{8 ;fGS Fx¬P~Km%t3MccM(bCB$ _ J,@՜ %ӸZ;.6B)PT~~:_tHNITScΤ5_3bO6-[o 7$cn:zNqnE2~7\NT' "[fTT^2F&+c5r~ԕ(jl 48mWDC]X#<n_ T 45 C0 V~ m&AGA7w@w;Q8Q ?d9#1yʕq_eS]y|d*&6Q30J(WG>HN vAg+[o:y1ډGmUV'pJ{"M@3X|*oƙޞ%sfJ<ߔ[-0R'G i++qNPF\&XT~ykPx>–~u2LX'P MOW rة Z?qU\+w>-q}y/sRQQJ@737Ka[t̷E8X,Tp!PVK$`Κ׵bu~*LlBz-f{i8DbMp/ŲF_<`w[Uq. Y!'i7L' Rz$v]c-ީ%HY~ٕ 鞀ws{)Wa˹ԑ`{[z ϡZ& z +- U@uBP.8jz B{GtϤ1ޕq# ^o2N*`DZm錞c@QY@Oy`ŕ^ )H??s %J@f-H%{#}řPKn@u5w:=YX9(5#p 9#Av(~-"]Qb'䠡ya +'£ +vO@%7_*Z-r*~z Ց4!wBpG-q.a+c"wmqk=WfB +k^0>npu5㞃= m]0o-1:ǒ~%ui;pVO/a3;0oKܼL6Ed@ZU%{ ^ ͰyOVNHLmu?uMBEQ1\IُOui@L7Nk\dd[i|lRܰ3"rW^  +19~(VZQjsfb5~Nl, $LAE \Yv3k"*Ie.gj4uDk"*T~~g^ ~<|1cPx7kF84K(/AI\%HG;'6`kK +ZJAFqKq$5GT#.a;1 p't.t-SSUn;QY(sў*M8= +BHZ# GcDS{d',Utl=,}*vcr+](_1rØ@?A[KDlv'”o>=ԏ[?Q ôn!ܘeoiB]u3PzP'ߧ%44Qw L7@?;gSVjgohop7syR\7V%xL| 3n|2Q|-GotuV֘Gk}fd'̐yQ/;^+b#&~ي2(ɚpTֆ)$Dru:5zj,|~0T\~>*,6Y +]7E9!7;au*8Y?Ң#WfiA~\mB\$OwDhE16:_JqBR%*X3 !O:`Iok2+}Y'1%Y GPMJ{rK w_ L&N NyA'ճmﺾo4gz"v;L je %Ɯ{NS6U'*@djNcvo^=Bi 795l€Aⶫ627ICkyV_}B.I=YR2U^c~o\Ƙa3Ƹ2@eU*Tlmcӱ~ xnNU)o`Iχa]PFŚVTC&ϣ࿋Y=d]/..FBXs+$=}buM>RWm6Ŗ6ᢐFX 5x{v*j;zv<_~AVUJϐ^IjQxシuQo=lK_ՑEkZ\4sqU7vOa J?Q)4C^\k[{3y~M|J'g4Ay,$0( jHl:Q"V҉1X&e s)MZ(W |Ϲ\88&tcpҔa͔ CC GU$^fb|8u̸&A֍9ke7;㥦koAvՏ0o5y'M3q"y$[Y@SgÓ=ݎP1)L \!B;U!)/C$N$A³ueuU},3Y'/Jc .8_[ON-<"NawGm_+yj~P]ſ^\y X,r-|㒒ܳ<L^T},^eDR,nkqց%|r,!gJx=~p{"\eeEN;Þ=${q@Q_\?/иLe>u#Mp'Yn_e<q㼅Ra8pLB=(YK[l`BKB#4;c;HS^OA>Ʉx\+0lkOԼ`Fcfup.wlCnKJIi]&fXPAn1کFTKBoI!ӮZ f)~Xhy9 ݨOC5&|T2ӲnSLB5eD0:yP;(w9mΪnWhKu{`wk +kH>*ڲ1 wp5Q݌$;LvvJ1f3n*Tg@oO#9|}?V0M5.ۀz{" NK?C_$ P&B̆e>(qIu`|ob|_0l2WꂝsCܴLTIa?f(/+PIwB WhgšH EiŮ(G6 +"  +"(H2̙dfr $xZEP>ţC~EF:}< \{ +% rH6N$(߫Nᷘ_%1]2:$o-8ȥ I-qt;'kTjJW^}kfQUr\ulNkHn᫂H*Wd6M2 *{`V%VRoJJ`+"yO|s86Vy8 :+;9ɨ=.qqѝ=ɥ^ӏwldG;fH^2`zBȳ ŞO*{M2MoR0i:T~%$9ED~cj<}${.-+P]c=Vzpwz\S;!?C:GFIױqYŞ ݇>;]mS)yrEz_n˕aI"l|sGvmߵ_7e]֭>ГU)i:D΂G}V W5*{f? +($p\)9D$ZYr|(4D܁OHʳ ;ܫv۱jxLr_r ;Wi nV|Rudܦ;@YNl-QnJȲc/14C:'K&̕BOJ{ߴzfsW|F-q2 ?}Y[pXdY<\v+M{ir8~LJޯ vlL: ?@o[g`}>?UrǛI2Lk.}GpI8QRV%܂L0/PUE ?ɹTcۼfHs^QMC!)$ ; ej uIy W6#LMi9ĦͱP*HʘFg]mߝn+|X$Z6K'OQJq m(B~ljSuZ ťbhWP"z@UVJ΂\,<\HA 5Oaf΍C75O Uݮx7F>QL~:ʥ#][eTS2%c Æ~EWg9i%3W4ފ:}޼0_X|-ƣµVu8H{YF"qĔ-F95E!L/3zLw@"FRmOQ&[#ZO/xˤr~9T00bܬ 4Pߋb>_nMFY%MOaN$ʡ˖~ &($~>tBM%^i3ϐEf8UB '`-icIaͨ+ دR=ZȾŁ=5U#5HR>njky/s6H؃E oLyCG/?QE%FvMMz)=ZB.ϡƋ/•3O85&YKլ(ST eҝZVx'xaV4Ë*H]z~h~ i0d,K8CZy{jCF')b|xNJ>V{0e#|SE1b狛*_R"37Boξ(p3_<ݥ%-tɫBetƓpx HuRuɵ)H?mf@Iz͂qrgM_D|Ce +ӯ_wCՄYK/Ԩ 佨/Y0y̸7.]*ѳa !d[m9#{-;W[ U$mb?ci3ؘsq6ĂT t֠} dlv{Fyt/ټt̰KQ8 N"4ʻc'׸Ns6I ][#?wsb,4U_ f)Eď* uä6Go76ɵ{'CGa+RUA=@5_rgs1OUG*ʚO&Q͡4%nlc=%Z vY Zeਝ4? eC` _wvĦ10KB/*Brv4όwM 0r `$CܝGa6;g-N_&ɰ.` `0M/s\PMf`p3 $A7 i c(y jӍ 5!UiMSD-rBFL&^:OF-T4w T3c q]2Rd/3U\;?Up=@b +TYRJ3O)*+sWu.[L6ǼA. 귒hoN_=C|HW Gz}w\2h{?Ur_ס,[<4DmD〷C/Fl Mr_򑹾g"P\TMIiDw$=` IӐ }6.jYx^h}]"]l +8"ӽ΃ǐL"Hڝk:^֖Tm.^@1~qxTlU#U75:LE|4&W25exz*̖̆;M0do^lpmaIS7kD#'͊$"lL?bADINmEh 8Ԍ*"vұE݌5Z5 `z~x[MN&a|b(ǁ$ch |cq)M_Ɔw>bSО$  Dpz!G@o3a]PnN2);K4 U"p+q 7bLay$04iCc9(6>E3a{ R䏡0`?s07y9'`Lq`ScLr&MP.ڽ,_ru/F=܏=1ltŜ 9>1lם +KX_t+ =#ثL +uuWK̹ u)F@jR_$YuBśGbQl+$,o8qlg!) n2QήU>Ytw(^'Y! %GU9, &>YcwU Mj"Zo6VWF9=al mynqA/2AI̐i +qAN?!9NxlbO{eiYQ̶>SZ .&sbj?1_ǡPkٟx`дY!n6fVJ?ffon06l)7BuyMAѢ&m>>Nj#4J%&|E]ۊ:i2g0io*6zXh +҂3;1"2ҍ+O?KjaY|nMHpA/LsI5cu*ΐDx!W {|mpq%qehrYbBt M7uA- +w%5,x+ z!Ί}|%wpȩxeXx|Yy$M}yAz5{+=}5"6~{άq~p^Q~Md~*XŸ~,LU~S@~5 ~+f2T"P{pUIpf P[AE;Z1ٓ0U)Fj"0΂op~7f ![BPY_EE;T\1撠C)k"djpmfr=[M,1P\ǑES;`Ћ1')}"Ρmfni=pkqr^mtolVurX wtDyw'0|Yz>̾jqźjlr`ntpu0rnvgkbtgwWIv~yCtxz0b{x|bh|~j|l|^n|~pp|j\s}AVtu[}Bw}0z~l;fׇ i +9kDmh5})oviNqꂿUtXBEv=/yVǧeP{qgi卞|l{nohLp(TsuSAv@Z/ryX_dִ2f}}hƖMk/zmtLgdojT3rxAKuI/8xσ[c&5e[}gܞrQj.xylfoDSr d@u/x\ębp vdܫg%iwy3kyenbSq@to.wUad`RfWh-xkkemn)Rq\@?t@.wZtf4uhvjxxm0xyosekz.qR|{itP?|w-~zK'rp{sqԜu#svFtgwwtudxw*Qz%x?E{zb-}|Xpzr'zssj{@(t{vxv|cwy|Qy +}>z}-R|~H(oYpq݃^s=uPt;bvSPPx <>Ay-|0m{opzrt?s^auQOw+T=y>,{¹luSmoou{psGrlatqOvk?=txj,{ @k mܖnlprxqؔM`WsNuȌ=&x,zj׫4lgmomqq0_s*9N uI_|2so|u]}@vLO}xT;"~z-*|Ly(x*yyr z$y gWTaˢĮkTd@D\dPPp-HG&]30;sCg( 1DE*n6ܵaz*&>P3ĸg| ,X񦁓`S$>BG DǕu#i#܌-`xJ!wم:(`[HWeQ2UFD`|:Cd2~TvkdEeUb2̽p ʠ~[@QdF!7H$ #dLt!BOK*G-iCrB.UlmO> ,B2W<+367ߛ@ )۠&KO 0ޏO igm82=D 4FB[!AIb4~Z *fz\OtF&ӝN&3xF[Hjz&3n14bM zB! |+ +/hw{V\lsTjg?қ۟u 깮D}û.5ʺ(wM ұ=Ljeo(u\ yPXƢ8p2232"uh0 ;(3-ybݷ3WdsF@w ,8#!H*9)iF^ +P7Dg3I33D_)JQNdOm2ta':=J.۱ +s`d+uu- ǵiȵ\L +kw/i&G1|91:H^gW@-Eif?QF?/KvřMkz݈uN0:ӎ3BJ]PU@׊VVzDPC9>RTl{=EY^ScyjN96b~mwj[ Zl'd}[YގM:tU9WI-#d=sѣS IKuƷ6i/JO{s{c@6oPU,'9cV~M6IQ1WwoT+mlF0\Od?oi4M4MC%HfM[r0p[p|R’/Ld/_c8]׍ YpFKM(Ewo@jjI0/kad[H>|/ѓL |00SVRׂV2Cæav4x,'L82'7&n&CĿf]9-f]i{Ta4EeNٟή"V_ǔ3tf65ҷ, jP6Ex)ͻUSu@6M6dFVSˬGŦwƠuy@>.TȆVOdj?#驺sycA)w,zl<ـB*7ij,\P#;}}~r4fxO"ZhNMBe@(78,iA#FaN}qǖ*lf Zۋ M2HB-7߅,yY#p9|qeےNYƐ*M}"A튘6؈U,ۅ#||(qW,esY!MANJje6Ç,}#5tPcjOf=_`rhTkHm=op2s(Hv "zbtu5k#jl_-$nnSjpDHrB=tytn2ݑOv)yL |triIs ^ٟtSuSHt#v=_.x02y)B{! +}~st(o.w]^`cCcHlVf+;t)i0aldOȯ>tsw[-wnw\-_AMb0ke#SsShA!a7kO|o>#r -v0[Dn^aaShdL%rg{`j哟On-=rfv-vm3Zp]­ `܄cr f؝C` jRNnb=q-vBw~o`^q&ccrfBti quk_wInN1yq<{u8,-}pymjynlpptnRrp/qsr_;utMwv2>@?nC)HKс#Eu$%`^>[ +(?`~^x0_+OËv&"YD>s5x']~-if~>NF" P^OG# ǖ0<7ӆ7 :sXL!kݱrx{6Rt"+@q*7k1U誘Y}(~\H`J䞂\ +52[{F;Onݦ *C{2Hpuw0D(MHOB$vKѻX{'V' 5c + +sh]T4I DGãTD(2BNlz9eB_ ݫ.#JUbGɰ Pc36߅!3?o/˼ 4Ta1l-vKWZApɾ<>\Щހka8Z5$GdW#{{ߢ! e8l&Vlu4ʚ@ԸQWJ"쎛)9(6gf y'1?JL)b쭢l]4LkۘPpuﲹ)nCA Ŷ+2dEH'Hm&Y3uѷkѽӭ1n]_Z<ڮRvӛpjm9G݂#j}dA-uڠ +0\C"dhK>مٸ:IFq\BVhF'$[I&3BtK\ D'`;I ["%#N\I +|?a8+ş3"-Aש_ZZKO%u6`X{cͯw1 $+OM{'E],jz6+~ Qk a=_/E qbVk&S7fg\"&]KOÑ: %ijeB>%j:l=T1e~/ߪg I0^YV)<^ϑ% +զՏQS-WGpaθD8ߠ9D֑ՃXM' +UJ]I"mteuuE)-3`Ҍ SoO6Ju@$ZZǚ;oam>݄92)@m{>-V|WU>r$Ӳ]qّ¸zEYuɔ>GT@蚩\'}њG9mp.d.@L4c&,r;b ӂdlt3ݦ]Q<b-w Nk k bK%H@ j"W4sf|Aa{8c%J@bW\E':Ehsř=}9fǹTW !3ߔ% פԘ]YzĀ&XIkWdPيb]9gbIi $ O1wu_)xS$P)m/UI .mpsf5Uwl}oyh 4;=DUIKSDSjj:?2*w0P4o+G4O6jeu HW)ϛ=ݮȆs51 okaIӽ֒Wo0%>#}?V5N_r}%7 +Լ{!`D}K_4 +!Q\HҽzȔHN>uA-^Ჰbg%+k58W #wi+q0khcuTT[`5Z[`J &-v**cs0:-7o3G(Z!d  z Q}vx'E}aQ#*'viƷ|'in˵Y;eR{E1vikYT24o/;K |O c +Rr_T'UtKyγzaL= zs#k)|OĀ܇:axim&&^cŽoIѓ` +W82K/ױϬ˽^ipuO:JD:WtG<8YJ] + ՄyiZP-|xm4rQe`dZH ;4SX1̚`wpu>7 H2%Cd>zES?+&e{\Q>+) ^T9ZPFV+@l@ A B +r3L2$$x *,^-ڷ[]<**RInpdk ŻΫ :C>KXi<_TTՖqcs.JmZEŒ:^΄hsVIbm8tSX&^ a*Ɋn^m=A2s^mICca|k`K{"Y١:nf,ڱW x_n~ +!f睥# Aɧo(u +gįVg攷E)?n/ؠbdSu3QQIB`\C!d +P,2QC[Pһn`RXYU^',|Y5G4-},V{:T5zGFdx|4Zٲ u'ʦ"Ww[f^'0Xcx2rKJJDJmB|CÁ=55oc/hNL9'0jI. =$!_3s^>pX0]ScԹ`gi9Q?+,O|ekkC)6bf!),MjQZF_Y[-ۈfiv&mH!`5oIxudP#F +P&h_2nnmMsC?wOt[Pk+jnA ǐHځY*zל`L﵋TL01|w:44o(%j̨5YJ_|fyl00DO+/.5T"$8[g)T`MH?Ɠ\fިÕyL/\Zj@Ν(Wڢud>P"Yd'$$ʗVJ+W>pG[^Gڻ2|M 5kci{ZJbILFPCR7<]'wKÍQXb* +$f»~ ^̈́:)]}pA(+RXzE;b1t!9ݠBj` d> !L7gh%7nׅ _Qg1R2Ǽĸ:@n\KX)'WIC0hݤ!XL}4l5 Vh2,?bLb#(sÀytk]:ibP_"2S&F ߆*:/~5l6fݻ Ӡv(l1u;8qi7mL[@Wxlg Y<#nMDyYZOEX;/C<_IfGuROM++c7S +4ƊaZԃu Mߊ]>]o/m^&=Nh̕.g*>d_$ +]koj-]wz`g`@XRSZ^6uV^og~XQ 濮a%{s Tp4{HLydW)YU&R?FD/'gH7yOG +S0᪄g :po)-.XF:e*diG{.㯙nwn.tY<"`7dsSC!x$g:SX9Y%r_']4K . q cYv.㏢Mrm*ADbW냊M1Dqby9mT'buq7Or }yXK8`微.;~1K}wҭrB;ҏޒ &6 Rr*?j䆑lugICkM|vhZYHn8VzQ3N??֫zGP5|No(RGJ[5&Hs)qq}^&2n:zǰkFmP03;7Nsi+ZiӍ ^zs7Tm , zb@p22{96ʄ/= 4)c x +t&83B-(;^SedSy7yG^H@Es7<AQ|h[\jeZҎy1|i-M']|k!3h{&m5&[KiK%}UEk̀u hT[*FkkOZ e ev]G ؼ;GLW[d;oo3xY{OEk[@|l2섐^򒼗F6a 9uUQ[Em'*uWAw:^WfAw:Rc$DZ9-N7~c + +?;A34VfO 5*DvUe_Rqr_pMv]{қ[;f4( c5ڑGdxEjO-n +| g8 KٶŲ]{r3J(?ұqlu;S7qWA}ǰ=o +nxg|GCTpTaH͗O0U`llڤClt0jh~pڱY_,x',IUjn\[M zDBb<Ô]T7S0Co}2%sF͘MQ ś!7fSѕ&.!mFk(+O Oȏ@ W1fG 0JZ-#=qb>@@gIxFz|޴\E=Yg6atҺ*SY5T9vh  %2{}n}I90v zRf8kOʼjVo:*xH3_ 6WWx4\;5juK::i7rʶYAd~X:J1<;e +(;MsrlڪU[y5vw(k +-OlHWeG㐣݆L9sŠFp6i&xИp0C2}TxmCH#ѽZyڇm{+EAaWdVSy%ې8bש"SLL14$Bs&Bj&d@Y?O+82}-D^ݒD(PR{Ѭ.s!$4Pڣo\i(#u"D8 +:]C>6ڒ׶*m@1GQm lìOrusg# tk-ۤ^G) yۂ2b+PgDWB;T+4Qv{9輵;!f6~/ė|@r~EM$,<`2+oMҿ$ȵk뤆)<$\nnu|LX+z-]:r"Xꗺ.KW;–YFC :Aǔ+IU u+U>.+͋;SN@] LUXKx6 ͑8=*U4^qݗۥ>S韒+Ż eLsf v?m!'粈Yv0zْ2GwT1e{BHM, &fr(y)% P Ehl% +$EVDĶt o \~6-s//E 2<뤪t :mbpVn(Q7:ziZNl*3miИ` snX +U\Пbi0^Kc=!!{pwpyKH&Ș/UDg#M@1&yf_sIrŔ\ Bc7HexXltbu!hI +&) ֩ršbps;Cu GFq~~c6RbO'l"<͖z [T0}5y V|EWrф\2aAA0 /ɷW&aA +AK]מ q\kPU"Jѻ?W{j#'rG^$U)~VHDTup7eÊ⚊R"I^w0^+mOXiMi-T5ȝ'N]~{e r5Ճ-wA-VYF~UgBOJt8y0.{KO(vlJ uS0փyk^?6Wc+ +Cl]Eko%ݼ脦g}h0[[tVۃw,U^|}X?4:a<X s%هU)<@ZQ/[6 . 0A=fxIҗQl3\PBoJ]Դ\>[3?,ЛMOyIOi> '|2kxo6oy*Zo9XYifNP?1k𾠣 *_BupֲB[ 4Xφ}P73d"dٮ&<ăT>x4Y"GXF%Ngt2S 8.hpq܏#~2HleҢ(j =~n$ Y9PKC‰/q䢘&lrS1|8+ۺp5q Z(QӸAX!\$$$CsrL2$L%,*OQuOłBuUX뵊]xV~n,[|nC +-bY@X?(e92"կ)fm6@>_|Xȼ L N+VJ2v&ǂga:y*=>C,꽅zqwΣaVbP$Ԇ3H* +|tc^7CvfCUʆN\A X)MȊQrK{Fۏe"j%hCi24.$ҲɹDӮ?2]HMtaPZ+C9J*_r%QNH4r{W) |em}^e ٻ +.v_.e'T)V4(FoUgzf0=rƣ[(hGjKҢy}%]ʟ%(y쭬0L1sR1w^NJO7 نyoxõO`i0)¿6T@JJL#״C[!)9!w+@,&TQ0GU5a +5\1(-9]s41y3yʍ/ G䇫~IĴ41_35g%@.1N§ N̡Pi'74@rz8Z? i;f +cENOri@Du{A6.ѱ>1_:, Jf?/LCNN*E]٭!mq=p)ݍ +cFMH?b;t% 7r~L&3>ﰞ~6slD'9?6T­ϙ^ 5; +k[}gX0^hq$WKJm3qV/f̔&|}31sO[9"6ε6 9K+|dj8a&kɐ=9wUͩ?|0,lugzeU,}* e-^uGSoy77bC#Qşn[,( l^ 6!ʌ>":jbiq2$V1\$ǕwkGԣQ%[`ѐJ Ή `]+Y)u!*5(HIdaoElw17hYxЈrMyA39ScLYgBل*dlQ P/Džml)IR`i?ĞAY訌:et/ ysn琸M>dSG&HPe*p:vFӫ}9|%*CdڌTm ؍θSVkq~VQ< f +CB'LH? 6ǍZWzjxA|+cshi#a43 KZr?'H:m2AĽ eЭdcM^k^Cj#,@DL2I~tHGǫJ̀e W`_qZb +"pp߄CH I&d2L)xʪ*jXEtJJ]EZ_=@XY#>(UT#tgE UO4E]cDix`Ffw0b(U +Y]sAvjfhw@A,bx#iu+E_Xx˼U-EW'_@ce2b1( h^EN +`V[@-kbn_Pe:60lu-'\j|Dme;tHGD˪&աD!ߪ@M?B=rΕtSwo2Y!;DLž]򮆁˶Rf;˷-r0ۏ첸R}"?5#mk+3((.RxP{K$ ~?uX m(U$C[KIl9vL"F]C2q.OI61Qx 1iQZxle_)O&uZCj7$6} A~8zXmb|n^i>]fQBchJDj^ k]rou#Ih +8ЂTc1)üW+-*kxueI~PE:LR] &t-¬^*$M4-bB c鎳A9ZuKDۄT}pp;dzx0w + 7 ? rlJU/3BK3hf@jm1RזD*p֓2O(Vv +ndmMAO;1S`M-a6)N˛,_ +l[c.Hі%Ŗش+#]lcٶ$ s~&b~In^Y6-쪸ʟ/FRa` Ei|o$Գh:)=kZv6g|V'E;R^t\"ZW +YnN'⢒LiK[!6bjnf$=+ *.ӃKvIchP*%zډ,1-pGsD8DC7x&X8e!j5kL4Y &XqYLA)$]s_g^.[fx́{sHq  o݌ KFaa)1$PoגיDO̐Ńwq?0$װޮxYZN8$8 _ُ$`lcZ6ݐ?ȇY+0H5zቔkQ}Ö!~QQ2&P{BcH|7gz9^sylu^A ;RckU>)vQ 8:oVcsK68#7>^nNk_<w*>mڹ3"ΨŢl` D#ޣ7W-#hD:G"DxA4 >X( 6b-X>*'qkxOOX+{5| fP|~NEzEy?|S-2<3}=`[~#ltGPj_ _߷,cn$kaM=UlMQ"gɆ 5iЉ5M%7R%qvLSG[]]M vKsw>q| +7pL=#.[CjϨ^wUOlTvCe]j20uuFfձʪ:AƆ"E*S'_ +!Z:Qpt47rv윽Ys9{<Fr׃d+G1 F~ /bm1&&x, ^ LtZnDz4g?x7o߽06m3fB|=ksΛ 4|K5~Xp%&(*,.0<664^?|X@`PsB#b$ PX<1A͹O3l.O IrOS#?UBP' +BPT;} *~>22 +EOL_~[ g ,v,cy]zFl(}FVύPq㫪J6A$*H$Ρ`v0;f×9zL2ٞQC|QM5xzAR+Ԕ k*xGjsH%Ť^Vaݼr~Lȡ3h5$؋#2'$ +,FP].V!foDc&2`* _'ǹ{# ݰw%{2>aQ*X SV*5r1V/\2dL9x~dE ]0 +^z[AKmILŤSK``;m\ojc{.]w{]}A][UT5䄚T9"#֑$-QJ֙ +(R;7n^윆a:VVTST@e& +PkLlvw6ԷU8{`>5#8-Eʦhc5Ij ɱUx(EUu=XU=ux}{tjG +4a(=Gr(nËqZTivU肝 F7 :&|ؾĮȬ8CLNlG\nt{Bvx~T2?]ъ?:B': nAS+w."nG%PBRBz^MLpz&*T@ mHh؇Dc΢&ZT_Wj 5yI5LOї5m + һE/`v0;fˡp;ϙ־A}UlK8SQC#kדtYFUVErAF̾!b7E|{e wY쓌E8T@V4U4<7IIiA(R@: j:8vug*tE@EQ*r 럄B; !rIC@V@]_ӇQ5UW/)aY/-Ry%F2"  InK/i"tY{p8d|Q\Đxi'6ĩ/UUi5gԧyebLY(ke&\1q(h-Ev;wΛ6 !5kC(xH@m՝N&וy UFeaf5n\+#$,۾.wAڐ&T%_}ؗY6"s 9G&j ơR9aWLt~-m ANv$&! 2p0t{z$?5Z uTj]Ġ`9t& f,h؈!%gS$&T<6ncK /'z&bp`F*8b(@H3x!}': yo8IP&\P{C@Rt(ɓʌ*rH1𵐗&dx'McČ`$f>m|S~䃱ؕ$x0mq]Pe& i#eF6AWB~8QChiTɞ <|]z[u*nz!bg9Ԓr3lq Xr3" >4SPh=m@A8 {Ͼ+\Ǖ--F3a@4M6;ҩ'Z8JԐpjj6 DzQ0'չ=;Qv(X N#0-z#}2Ң>ƾ#Ahw8Vw5C/[r:mU5fYH7H)N6S PX'>}<5ӽe~y'NNdtOݗdjM Z̓x3YAdECM&-ڀjG ož>ْm\-u ZTS#%xG;Ѣ8]0^`#Hƺb~ںnA-9*ViTR8 +`'yM>aATm#GђZVZ˪ݐETD_l }mϒdo8zPc)VdjGT *:YϪ z*MSqKP}W7K۫Ov*om;Czzqt}JeVl|eryItV2j)kb腳h ?|lIlN^mzQr}\E+ݫl([Xp1ٔZ[m@_Xi䮠pvfy?q)?GZ3=@W =T2lvsdrڰP챢ށzE     q5YTp +yOCŻReb &l[Ghmb9M%>]8!p~{gkl’B42?ȩVnI6 +e%2G-8o QP6ncN/J/FQ&= }-9>#, +>nƙ,Π z,>3'ЏԍI6Mo$GWdosfܐT:jGyhKڻ)k[Leٓ#ceA>Vl oiEǪ2p˪lMe.{J~IT"Cvnc53}-"ÐhI'ِ,kHM"D[YjsUZCM:fD˂+)U +Naa␽Zfk@ 0,"IBLtrAlĐ  N9Vr:#Q1ha x!coDjԀE_dLqi&]8NLSNIS/)WKlƜ5==\[jTv]٨@(WKsm!fwO)iiLڤ?鑓#tɕOL=?ٯ9,o9̳t2UAP@C6-!d!@ BB6BĂQDkop94Mre9*ӍRMd0W:rB5*G1GRBd; ib"P'dh8^`B5yϕJ\ L΄*nW2b߭L)3t*E&' sdr* i@s?/=:Vh,~ߗ;{u15k}6EnA;xobhS$u,N%ɕ8j 'q/qO=`S)г ,Tרs=@o5-z$^˚Fk3(lUA?5(!4v(_uw1ff:w-}hXKvzqAOQ NϜ@:&z$B/ $Gc*8?z0;ߗ]/ZZV#sY]X&qzlKNCd P¶GFޜ=;èj!,z5ϥ+D`C^n"NJf90 2?}ɉ=yΝi*mJnL6M$_e A ($eEU Ȁӏ^9,>IoGs}YEHBWh֯յYTwL3rS1MOeS-)*d`[hh%؝jӣ͓\$|[XRK@-_JoЌ+כŋ8V"]?/&{d_$]B?,kʯ2xF5xun#s +[oyDs?{how1,8 fL?CVAyE% +K.?)-amU [5[ڜȺMtM0o?s}*Ϝ|-.̩ {JZVu (lIneC6%FQnj̍;\M{w 564q@p${{bKXQVx &\^fA{O򒻭m.B0b @ħ/d?4m/o +y0wA6kloz=vVtbd.RC{,DŽ4]@Г zӁ4#L#y,xK|}]XÿC>A𵲇i6pD1|܎,HψP(@c ii@Rq2[eaU^FR6Jz!` {v' fQm)0}^(6Rc$5 (r~P,y9wM:(^։gDHDϡyl"0A4t!5F5bl ”#@ +)ۚ+Ou`;\ mqׂZ4++'8bqu2ǬN Gt$ F7 G,)O '6bgSo/+WuQ.mlc`rj($oQM +0rIF?i#@I_S>8Z7gW-[ܫ J?&[1Ck\B"mф;[ + 7qD +$fØt;Sj͖%qzfg,;-^Q`-}"ҘGHv- 35Sl.J7oÉ@ 5pNgmwٱٙmu*ꊸ/#7H NH  @HB\$77!PxE.ov[O8bD>Π)Q6AY-aWjLGU-oF7k1Fj@3\=ۉ <'#Gޙ?uߎo qxeP IÉh1nzY=Wu Mզgԥ'(e]-gCGi.];^ɹ>~o[?) oOP^M!=aǠtRl69m^rU4\ O%%-,O]TB*s;?Mw+Pmv{ւC)#HܥO)ih\LC.!K'b1 HQs.w{ϟ/2Tp c6#s6"bI)i+˰exVz:;9 sYAnSKG?vOW{$a R*ը1o7l ˯WC^kh+qf7 :B|J+*u}B2#PCѦˋS%e*:g cCh܁li) +`Fm5{kï 5!>s^sUXt9UJ厓7YΆ-P7 $*gz0W]yl`\:XA>s97<5'&cE=ffӕDdyix M8ZH6."4Fm Iz9)d1 ź F+)mju@a7gDfFiUcԝRڊXxi>6|XG/@@+$kaQbќ0/nMҋ]%:c!רZTxY jq4Fּ]Xyw?=5a'v:u]㌵u=,"@n9 $$!+E@AHGBBpEA."(hA P뷙ӗ}Їw +oPEiԑ9qͩ[ q)Q<\Uh.gY}WS(35QEJYj)zS h/Pk<^~'?aS| A :8}F/R+|cha + 4Y^HjZU7 +[C1 ?w<}Aw{_Kyē]Pmp\+ؐ- TźˠRVYĐ[tX;-i(i7[9GPq4zg6@0=4kֈ\c-MANTij *A+7V |ZQ4fmld/ 5@ +ݽ#]w̋Usri07mN wˌ|!WQRQIc fWlerU:Gg&{ q? +n. |f0rg$u͚B869A$Vˊ:bVoi L,EUJ@!Og)Л@v4>4=A[+g $fy4"nv,9r1gJc:5J-AYL +:J匞Y*ϗȭy5Zg!W6@@6,GDOMBӆF`+٘^-+*uj/iuUcnC9K)7hsz 5]Nٰ;Td~>TJ4& *ow} u?zXcΑggS+~P2u.3MV&*1Z,_e%I#\iPpYRg/PphmsY}~'kGs4Tj`ޅX~>3en؈24"y 'ʸq~tZh/5kofصOa8s߸F_$@3q˰>'n9;7^^^=1.5?jD'_X,D,Qn?t/J\p &w!ב0؋gTStZ*j| D„=bCB3WYx{ot}5[,w$ 4LBA#oaQQ\xąʈ}IHNK ȇߠ Ke's}*_};v$p;$p\,1~ ?$ + + ! +9~|?}SRwp^@YH{VDrqQ"Ş'VpoTU$VdDױJtzt +*BM"{i1a=~oضR[ Q!q/eUV.yVH[(`IʪYL 1KWiE2c9rg0]DgQ])ܚd]ѯWiMU}:o@:vN?ćѱ@Fq?.[cT(y1oM70œh~8Jh.#lQDҭWF[3j;E#@O<~.;YKhk&qtd=rT}J+zPUX}Ψ9gTz<#8:<1)y/%O$yevUm:>Cn^!R$,@P18Qr .eFҺs&o|<#AD1@q47剜_NJ5yvAT8a@Â*2 +hc^3~13JEi颸r!:Aj$U^NMrs!&xt~8ۀ>4@sWѴm)9PV-kQŸiP8SYFR4c4Kl] IC4<Q zás!{2 ЅfNxfKH~JμΟuF^4܊prfJ@г:6BRBd +Am-[[ꍏm@Ch[kd+>~r`vS!CkBD+Y]d=a&JD;Dlw؛7c_so` + y툈z6tk4 6֗7Z *-Kآ&%ת#qfB׆cʡ2 GMTC?.X [ZH5:Wt6譥dUEFIҬŋ(ZǗkxZ,z0= >=P~?Y9=1y~4tV$aix%A!jLsLdEԶrV!tZQ<s`i ,{߸?xQ#/Ne`%zyx+UnGz)xVY'iNCV`k"|FyT&`y'_z>#n/F\Lz2Cs/)Tb%Ӌ\8yU B+|Ȫ/: {7Ӟ޸ho;A[,8N(V'O7* xUzjޝ;Wd(aCV%l`PPyp<}捑^gՕBkQG5wa…g7pkŭYlhd˿L^b/IİK(9w} ۿy7S[Zh=(L0~l.}-ZYn@."@P +gSDFd{W5d˸:n8 \o3K>^=ݻ_%%4$&8 j%| A +oմĶ^Ƿî:fԌ& 6-LzH| b?ӑu[}U +^^_b6QYU82Tݘi-434o'iͩZRn +ZoH͟sӹ?}W>ߪm7 +b#1en ?#s"*aQ{u5k ixtJK} +LjH +0}0:[gAM vtv3tљvZuծ]uC;rCDD @ !`BBHHBr;\BZPXnŋu ؇}f~/76ذQ @Bbh\Yuun^R! lQwLs6H-M{#RpRʒKʓ7k׌MrM'?gİkS!" q8@& xw3KsޖG!禼:􊑟 %X~H<齾vmWkaİu~AD +(Dh>F,AC~I)o|J"&xŭԤǮ03bgF}PM}3-z[6|ǓoK@C' 룐A PtD`#c{xʢHjl80bÀ!s'<jc/q/Ӄ@ | +8- QMxFeU>iHR|/1{.K<['-<+AIgPW7 K g + N H]iD/X"IYEMo( +g]Ytd_6]8|pR~ =)L}Uz{@ yf4HsRA:VPRX[CYqDu*ܹr. Y%3XlsZ~=*UN^i\U^,t{gP5y - AEr(ӣAeQq>IY`<<)`?5Y^2]b+0gnϪn]T_\Vc/=˚%>x[@A#I=,-B- g Vm<Ǿ_%߭PfZewJ-۸?{5# %SryUC ݠ>Ф'XʂRlFyCrsTI0%ŭҐǞ݌!Wi KFMvWZfC?]>jqF-VTyl?d^6b#Sl0bYKO̹4KftDuE5spx!DGSvWLv|j'mmcUZգ_E&Ѕmc~0 ֑ܙyWk:nv}þv sv$4y4A֏K磻2nuJUaDG222qwQ؃RpaWPgM/ uLnmXivu:3_0%yN䍡I/ɴQ:8nj %bP,|Tv@^@q;$8ΐBOGhOtP___r:!͆i`=li_(x1ra q#Ь$ $v@mdx8$ F{8 +;("a)^STS 7 +Ә>ɟAdL bc!3쨠bUom`kRS2i@1ȏlr>>^@=͚#K+ڴW+lc4`}_81CQ~u6hxF 0l? y;H !?)|$Y"3?iV徊H!fLSI̝Itx#{vMH!!M@0cr?H+e.%fNMcH͐/dLk V-I9wȫ_G 7^P6P%Ȩea-\`XL)jYFX| ך3"紒jro/&ꀣmjv;!NzA1 +1+d)VasYV.o*X0N?'Tg<'TZs{ZI=yw)=?S4О\ p|*N{?(ы +Q#eMeXqiJѳRSFz9XFRwOMnUzwOqKqOVgKx}E5qcu(:ʢ2 R^P)R @JHC"BE0 A\ gnև}99? ^!HyYz@-F*#1KcH9}b_Rh2/s/gf 97y7 HPa 0WRX3aA *v=A)%(j*5ybf?7 +@\MH@2 P7]APeB<*#q +r|h%x\N/bz|VViè- +5(n@ +^$k +$ub +wkd߁zf0]1>F)\d7KheRUr:[Dx%2Q5I%euaYI+tJ^%(G-il \~NSyU0.FyaM𔋵dCPq d&؜L,QdJ)BJ)dB֋$SC wNyߧ6Ʈ6/> +qJhMIlm"Y+q &WQ%+ŕm +Tbs@@ӞEoܭ-~b0䤶2'rą >UepKyBBc^3XVVIqUz1 >7O;AtzB;~ICțF-LZ,8GK(^4#J]cz9@YA}O_\;nzGPLh%%lƲ.I*\Y(ؼX%mK$ik ^-!Bs@i +?lu?ov9цwD%HS2{31| +n)c!5*!/Q)Hj&I A |sPsp3F>M/Gl|tĺκ>mw3ȭUNӑ98żbt,Bw2IjVs:L&9Z&9&^ MaݕɤvOeq'Ey+_hbh'GDzCȺB(kAzE*f5Ό0"4ӌ)ftPnjXo]+o?سB쨅手e36M$Po(u +v02`Ry=0^G/z*TN k㷩a#3 +sr%ۿ +Ve ˴?si1ߓAԇaqIw3SY*v5(Y51讆to40xQ9rl|Wӆus^Y~mKw|NQ^#Bqsғi1s̈9Zn0/GϷ`{|{cn[:6-2vk-oVZm-FC q4Fcqƴ(c j&Rߕ}L{#}9,Wϼ3 , S!VCfi}ؼþMGNK?z8O.{—`bc?[BD/b>bSPo93){J<#}Yw:W@F4 WAZY۾[hΪ8,v +]#xA7̀}@a zZ`C? O-"ܖ#>65ڷ;2"{+vM%\ -ypI^vq2_gQMg9=ǥ=Gg>(*(Ȏ;Hd%| ,심@EERVOU0l*wo{_;Ci zCg н|_H)Om;ݠ0ʃ]ʬ_Y4("65p`63q' ܭc~3!>G P~؎wr+ ..:rN@uᎅEc *lظ +zHMQ xzAԾDkW pN8t8@`s$@fka;PYln "b HQƺoc.᮳cً9 ܹ11?` v뀍5}wG!Bj/YD}鈿S ++5wqY.棇xcy/q14o(v7kHx AAn8x|A +e=1ı.${5pנq +&+0ȋ9 55l eԄJtJ{UK?Mj>"k>G>EOsE7ڙ+2k1`0)쉑KxP{ +]D#؄t +J2:xՙ&V"_8Cj71RuӲ +6YPsMҹ>jY,BOz;[Rd:MRhg75V]={__Зsbc kAENBv?k|?0j78H89PE +-aoPoꤜYB#k 5*a\pP&k, +E|>O<3KbXC㟡m+y~oߛ`b<&Uȥ\59颦lY€VɋTg*uũ 6cdJ3Ft@6cv`^GKq;}^] +h;c;H N]/eS  VUfRe $7eMZYWF0W-3|@oΗ l1a ؜um%]V;B=vB\pW-%\gKERSy*ʐU(E_0}&79 @͟ +S߮\tncuO:>hp{+!Z#9RM2Ǫ* KH)T*mN6M2յ4\DgB9_2?B p%MumwuL@#pBA^ ST::8iQimlY"YY9}^Pd9(R6 D)LI3 %8)|'r2$E9)yW ro?(}Sӑ) ֩ COǥ]%c7M5Y,iY!iFy-_RM-ϻR?{9,Rl|RRF$5tYqE7 )ɏ<ޑ)  Y4PSF5;/xWg-^f72.ԊU!AyW2*R/}8Bfzc%9gʥAgjĥ:NwJCrgECzu6Wzsmsw~a5eJmN qȈԪkRbWH:&*_V/+w_rDgfIkU[4Pe1vGO}MO@ٛK_omϕY' YwFHNM?x=G_sb:Uݔɬyɮ|ɭRAb/+զtU|J +WmR}mNW)6'|cDŽ6%ňw3\Heܩ%w_J{1 GV(d2*uTnVyxիE5.vmyN5ҏ.b< >oDrZc}[-U$rD$j {.TB2/^#.SjПS3gi{ݒ>'Oqb_B]\~gݑ&ft{w t\ ꨎltz9)z68D WoZ?u#ꇗT ,iCzҏNF<,iQL?ЛO`S,W}ueyUL+vS;3$~S' j#*eߩ]o^T,7Y+O;'=#e4@ӑ/rdbO,B&xȏYhuX#wvݗ +C3깢L!rL:{NFN&&%ST˴}P<4Mt +/fVwWkS%*4ҩǡ; Ra:6p`F~ 0cFnuF##G! +E$Ks@9]0D Te8v,`X` N70I>~ r>ę["fȱ2E>ރwf6uw r3W)˕ 0b +WS $x9[LkpXBA{c7$;C#@!MO/ X/AbAh)c52 +E0"Z+l xj=ir$5w« /Urc3\嬃hD1w!av%8?)b|Jؠs~S6$ o=OQ3MAdpm:f2ɷ@Hq$KˡS YeLT~Sz7I}t _(Âh#t! NuM5exuH،x1bCp = Ȣ{v)Ki5)Zޤw=@0A}N7PF,`Ȅݾr<`&OlX+m$9CiFg#Zd= ̠W5o*oQ+~(F{.0F0Lw$sD% lggEw:v/@2ڿ.bϰ=l.R-:{RUp#V$BB Y$9Y$0Baod(PW+^!,E^y>9/yw}qzP!qO( CT=gd W o#oŸ_F M"#Q/IѯȷP(7b5. 0w~B~`9PXT?9; @X\V?, !tǻ4̡Y%ԴjH#uz:~CCoX}:No\{5MU?ͯO+r3nwfB` 9HY}LpuD(09ZMF5M.t+y&A ?,'L2򤨈2% `uM%;Ěsy~QC| %'bzjb72zjRXMI\I-)'Kb mB\@ḨOH8Ww~rCsk 3s63Q64r6[!¶K&~˙F"D]?L 49.5%Y =7pH`1],Y1W|rTMOweC/0m|L"H +Qo\JhKٍU}_6HϵIӹ{n OO?|{e/ʏU{Pu''L٠KT2^fq OhgK ^\RQ?& +lLjwxѬw݂{"YMв֞\;Tw}˄ nʦD֤ctB5YN7)S92 C'NEEC,PGI1YR PJ[rY¹}'}K5Uv Y/Ηg1c|I'SCR(NYd*R!Z2_ɞ*!hTAc2px3H]}=@]_Y0^}gwt# cOU EttAVJNSrY&U+UJJE1HaU@5ikwxN|ҹk5zC'KԘ<^-j3$/K5u&-Qp5 J暒Qr4rn,Am@7dK[>Tluٰ}së otxՕ`ߦ*P'B2p5 (\R' G&w5\gZ׻^<|}WwVPr9꘩{.+a%R!(Pq9g83mRa. $rt >SWV:rk>WX}rKEGK 2؀9ZG@$Ub\TDc+شB-h.YK}6(E[%XӸ$.wBly; +OU+ڼGr꽳ݳҚ7y(n)(A=Ǯ52:ZVf$+̂J]#EOP)=@/q֯/qxpoӡrΟ}=K+3FNȺ :VMi ӒLC5vDS7<]~QmP.rF/Pm`C߽yݏ:6Žў%GVg  uDЏ fB)7^^Lu)6Z2>u䝆c Ъh](VED$ +*d/FI + Œb#ngT-.uGܷ0n +B39+r?%RC]9˻RzU.y;w;l`Wqy-g?cS_iy=*| BKZJO6>b)MSXT*4VUj^cu:ZvctWn`>ӳ~˴[9N;W/9'%j:f8#mϲLviTv:^֚ۖǔ.[Wd1uV#eߴj%?Pbv$k4mv!&2yҶ]7tG۝8 /t)]8IWN0׵^bvWrRsLyc?=*˷ /m $KQ TL eP`F80+c_ĴŦXJU$& U% J>=r25j"#C##KnD]=q=ɑgDGw>ѝW!p|!ݲ7=^Jp|Rq^>(9!Q( HaY1!;BG.;QȞX?2n )~c3:Q/H&à r"d(|!/1B?T`GMG b ֶj+}<Aw#` 'p3nI`ǃѴ(ȦG@=# :d Ry=[9}Ʀ߷ V|aStD}Hp GP''C>i>ԓ}<9S|P6%_z=P5uv1 ġP/r. ܙIH@Z^(%Q| DJ/&8X`a:$I!a xa;{K!Ȉra93aӡ@ +eqqu1Syn-\Hnlf裆XT?go"aHi9C +crY3aaH @FVҖECm<$ 1n&x k&i}V3 #~{Pi کaa5, >.A C+Ĺ!<20DC:oe@Xu QS|pS\(nD{;rPo,'!6@f A c8Lש( _6 hLj] +䛙āh'#NwY3a)X<,a&Fc42Q)mkD,Bg_ ܒZTO.P&6+%_e- / _'E}4pR4Bo`,L\jV[x~IvX%=!+9x-7+__)[T-=YsSn\V/*G5f. 9sPl8PY^X#*EP.r`i^|onI)k-筮EҗvElSecM셦Y֓~G>A^W֯;8"߇UcPwGs-}5bc)pڳS2$kw[4UՇ5wtO7T]Kzuᔦp?VM63rz\?Y Brs9z!p2;ik#|r[a[!g=,Ʈlׂw1XWef ƫVD)tL^Nn?Γ8rFJF7qxg3Pr|UO3& S5`їƽ}/0~_5t<᳷9h[C䙆xO$_TN r0󖻍\g'9YߎAZ-՘MOd%LM59U}v!5J@XĖ1fGyPdвp.O80v9f< smOvcb8fZp(%-$T,,5K34HDuQP"KٗdZN<9\vupdi}{>Q `>7ZNHM$RCÆGda+2ZB'pĂp2SHr] +j yhC_K^hyb5b=lО# pQ,[8XG*cE_ODNCVNš)i8GU;ۈ&_HfPHZ!I!q"EmB"~>"pg#!(Ohg3aNQ4NB8kC{-!v,t5J d @T~|p7c1?#HKAo*V"t@' @ P{}dY7` +b u: Z34b(@,i!֡%`D(0~N} G69?CL  [(B[= q.Ш=4Bqq%xg`]y=;{5x5,k 2)Blp'0\Wx@c2;U ._ QM;#tp[\6scc~pG{ÜʘT e0} 5alZ(~'gYb.cny8=לOO11v +{*D̿D[!އ-L쑾h hśH 1%:K谺8|H!rP6 ca=,(^%~wBx/[bE܋=!9a grܑN6C=ڵQTUnE/?%'bW/wsᓸےRȬCAIɃL;8bXɜ!|n>sZzs~Ē7 ѯ4[؝>sQSYr_?ߓߑǷKWҋayu!CNF +;ڢ0xǡؐ|Ѹ#i{KcmJqkjobMZ:Oo tgw%;y}w,p>zݭB/M6小\!8D߲^7ZՐUPq̸%5:=iszGRUgcefobEf +b,g":z_Jמ 獡#NvF:unrsԱLvSQpxWZy}&6K&w*簩2yCgu9Irr{A"rYLtފ#oserɁ`{&^ɛu6LfJSdSy:qMP\Tee`KBE~Cb2isjrqؤϷ&,%!T ; (]@{:!PRB( R'DD H*" qwPagȇ99ߒs9I$(BVK S%> ~"^=7y^as`&ETSYAʨcGq'y3좂s‚nÔ/.w-XOlDde1%PD _*s:bhqИvN~Vqt`~xv>ǵ6Ç_TSq4Һ"މDnW49z)p}8EGדrlD@`VFExߡ³JdT=bH2`#7>"ak{?~л>;0y&6)!3)l09l:`9e̒ (FPyyX햅#`\/X˜pQ<cr9Ut(PZ=/2*PmC|zu;+lrJ'&I̩ZgTn$VlDt_$ X' ڤEmۓJper7ujRzdYgg穾P3Qֵ]SNA&&t.C#I.^hz-;XO#v>c>N6nkRlrk}xg.+98=7Q; pa``4ݣARP.F}CycJO$ ]ㅾjQPpav:MaC/ao,lfʹ%?wHo, ןDY\$o4(^U5"kUfJglYsVXV^ R x_md-;]:fֳ{l`^`h>jd~rgc" t^hXx@@!`CӘJ*䣃t'w9O~[=>*~fnsK;jZ|[=8t#42B/kd@su:pPQD-JSь6t7t䌞[_Ce!S +"gf(`*`Tݍ=.ne4.OH"Q(D'P\ЈhCFG t}JaFK!k.:7ict5A=Ș0EƬ_lWXi?M12qJ$ވ:&$*eQyPEY+:긺 (# ~| G E 3N:8ͺ;8Oz@5!8&cǴ +|5;Gk :{nq#x9g 8fӸ/<.ou[@1?s!p@3 if o^9-j y;Rf5@nrv' tR/2}e_^S\?zqfLxÞ7$>hp ANAF\2r6hjіI,[t;RZq3~.Ӿg\^3E&$ߑN_%| +, @`iRkCٽV@8y5l 9H:ff +(wĬMқ\?'?z u:Lw~v{ S?xJ;oe;5CB"/oSlKlYk3)Nd;9ut3{ܟ1N|ʸI/WIs >@e@>AngkJXO]%i2Bӟ֯eǤ鎣2Մ!n 1!ktkk:K7J?(}\[0G}Eb=l AdHQ@[!Mڮ{W{zn4yX)(6~;aj<ⵠ*+6EI>9?nj3qf K10$H 0<_^ ꝉh4 ]\ܒ\w,_!5{omwrqqQ{/3=.iH}!徽jϾ&)id`Oˬc6'vMUE]sz=H٤[ ע/Kj{FܕXRgkܴ?ZWLdUE7pQ=’_DőEQoQ3C:~AW= 1%ޙhFIiV V\-[SOxgWVS{zTg*|$1ZpqXqU_-khbOc/scs^r⦅sx!!n꽫QZM}y6Tvnj +Ҁ' ;#=T>)2U>(I*ي.Q$]qWVS4)u߀`_vP@cMjM給`:IkOk[ +lZ +ϗΉ#j3I%iCibVvr/]$8)NIC5Cǝ/: ;/1n&K `ŏX4jFtM@- + aPBzVYaLYㅘk|kObX3ٱ~&6r6ȻOOG6ɠDW9i"ӽQEhƜ ,0b*e9,'aՖS3c3{DQ4H0)ځPqE! +<Q=0i` 4LOt=.a.ʰ"aDCE4TQDU8 cPf([ .Rn(ASxX9xG r09ACڗZ1Jj ֨IGբ8hJ*\'8(>M\'ot b`8dLT;YR6*q~uF.J=QrNި?(KGyR$%zQQţGC1 0Vg်Qf@e;b/CxbQި$D*,,  ]彂w9zЧ[0OE-z c LZ` +c16\0j +#ڭaMzo0|?@uDЧj*[>*/x}P~|ݣ|ݥBY0< }c% \*fS1wM\H tdrtqƽ7jCd n]7{G}^kNtiD/5D/4Dj=|f~Rc5uԙqIDQ⊈ȾCHrsH }; + +#xZʴiZԱuZ>sx9||񐊵n.5YMAJ"KA 5 *#pL6#-pͶz7ӦJWn]Rc&S٥";H+,%p jHVJbe)Qa^b(,D y)|Z)qn3כ X)a zmVoRG,K)kȫvٕɎ|3LV&V%XU?@Uw(1ſ!1Ő(ZeW0Wi x6}=A{a.'M6eKȞ&!>6!$.ݙ[+tOfUUFW#ȑWy{R"wypьÝs8>Zﵡ7"fi-hgMoKKiIuHl7Iz7QCi +n +\+k{'B>p6?7{qevCd]@?ߓv> eЛbw8Gv廝xw{S;|)W[E?r/~V迒g9jfjk`s@=aSN3w1_3"ܑН]QM^i@AH ,!!   aȢ ѶNjkkGfܵ"hE .qj3/s{{sfW/=4rl4:&eUԉU'br(PV_}P#>NW8,9u >K~i]ԅ܋/a坟ÝyDUD^Rj NOD{Z\oO#"V7ЊwXN)iQOͿjr˹jʺZ\25/$7'6}&o 7}״Gm:i=ic l:;wP^Ս Ϳ㌊|QMD[}fpNۊ<zǷ1tmk|cm_blԶݜǸv ?6OvwP;;ye*pALdRԩ3vΰOJuvuO*vt/v^^ٳK޳[s.=͐^cHzak=U>GhùwK[w@9(+JcԾ"_L+)qZ;@U=h̦E;ȇ#J$ëpKi +נZV7n7ˁp;8]~QBi8 c>H7'""zBJ*'T"}kC]dR!EBXd/48pܑ~p֑ ͎,xx5quoC('u"4c )d $L.9t?$\0Q ‚̷C|n Pݠ}f>g#Ѕf!8w + +W(|!g5q ̤+$a.9N )Br=H$$(H-@TPiwgpZwl!_t1 b v{ cbh01dU!$Ą Va8*Ĥ@= >re(>/}K _2AR]`O!tZ +WR`HR~E$bP +ev0CKq'@7' - r\>&@~ aأ+{X>߀8rɀ7(qVH pIj*$&9f̙!vh7z+bMDbGd*FU'9oTת+-Πӧ<S@?IH䓐0)IO0M_=_3[|5略3h5gx/4x57xk}10=c ֟.)~ HEnZ{4:ML5y$҇V'c0l{nj]^An}SwQDMЮ$M|[:A8n@,ҘHB>#/~|qĒ2U<}̷;u 3+ޣ&Op/Bh3Pxtp_t=ᙨ*рK_걺I& (NBQ(e(:\ Ź77ǽ#g={ U[Zm7SH!zʿE-!ƚ+ƛ9ji&"N}} {o7sY Rʳj)s\ΞMoBVkNŲZД!cR֐ȧ̻$VqSmDcYi@~<4VJ' s<0,bK%!dW"fŹbR~]ʀs> *SINf패';Q̨<Ѡs,AeԽ"xBBZuh)MְBXRȶ[ȯ)\.<9q]QMi$((H*"@V,f5@ !LK@(h5x92NGǶsȇ߹~z}c)̓*u96Ϝ e^*3WuZM?YP2r}mob ZfkVPa~RM|%Qz|Ǹ$~(ŵO%n +%ZnUSOPj8=G`ߡ_ҥhܟ)<fA%z)U#%ܫefeE䶉ò3. ҼMBZ P+ڰ¦9$P%+2-%&DqlZ`ߗ+ ks9l3k2"Z*?﯊"you@+a{6 }jKKKbA*huE!j iTo5&#YP>e~L`C&ZSXQr5\k޸qM>ʮSkMmeCJ)׻_V& *W"5QXN< @>Bsoh\!B-"y3$0T`½z5:<̶ɖøPFm[ÉZUGJ>EMʪ|oHY8T*Wy-$W6Ec-sFF*"odRJ,48X`f:` -ؼbt̡Bpק{+y~š@~,6<_ɮdUL2d tt[Z?tBɐ!䭐\oJީr1p {@0uָ]r]Ky뀨1dzX]ksTu +BV&*)LU*CqP|Ce¬Aȿ!mpLp~Wy z{ô1){˻O9w&)HWԖu㕧4K3!i03"Y3JJTϑ+ r|ȭ^:OuW) {hshF}p|f+iZ@՜#H1\%wc홗.:3.f$p㦥NNzj5y˟>?}?Oq$6nfDgpG p =I=@+B;D7xxK>ؼ04+6g|`rŁfڵCk3eO=IW_zFοC#fwv~Qir +os+ k cLV-&۞˲?f`;Dx; ejgA'зhv 7|fkg/] z ٿկ{x`),@ [ߙ@C 8`64f1ƳGm4c5ȵ4W+jv8N Z] _;{ z LpA8"4```"pP, RFC` +l¥zb'&jA'^R +4TxPQ HG</chm6F&Vjr +l&e +#n#D +eSNCCC@:*"=S,kP%;LQRBlt$js_%nsFΐـ޻9sG^xWSo-Tj}'润 MuyVMg/hF5DӠDdEa0$L!g*Si=j0DG3t9G.ߌzFZd-tm%mӅZ!?9rNGؠq;EQ=QGNZ (M4LfΙIJz{zX[3ح ټkqyVcW\YgCSǟ"8(s9~P~Tx>좸6xx!IM8JEo`iǒ7g`Yûl;x +ʩg[at5#}!UgєPp6i 6-)>$VG7yTE_UF?UcP=LxI ds0<Z@{-ΑR.¸j8]ECF.-D +ǣ_:N N&!Ƚ2~"RVws܏^ZqO%(ߓok"!dc@13E4wкXD]c[lظ ]lq|,úՙ3 +\+ֹM.}7מEIRN+g^3?*I1ބS8Ä́!9&1<&_b7r2Wi1_ì͍dIUTfgT6k^QIɷ<^3{{j϶:-畅w_u+7nJG騘=C<R}ZVry^).jpdI*/Wy`vs-q-[ 5gdBV.YMY2O(g6yK.omZ>a"^.#NzK\ g8@U+beV%y:Ewn_Bu.Ϩ<PD H)#LQA,"tІFpF RD *1XQp]f%'nf=G}s=WR*x-^nAIܐ84wQSQQ;aQP_B61xCTT0^,p̕_-]Qךnܔm^`UfWH+v)OmRIޒ)ܤ޹oEDBLH$ oA26.98]pfnt.*[;hQ]&8+e6lDzBY[Q+HouSEg|2R>H{-H#BK&E20\ߖpQ )qXt)*+4W֕V"ҭ &ۖg:J $\IN^vNWFv -h[i Q^R"K0T꺭bQ#U+,-}).$)" +&{d1pq5k7٨&+46r5 j:^q:(X̝),dEK9wkE5/snAph}OQQQF_,Õ2ڃJwfm4Յlț5{V5d7DbRd+>6)uSu墈&ކ.uCq~hН) +Sxgz7.^܃ZZi>5Pt:2e^iRuI*Knm7rKs=M2 JnHC{p OpCpC:=zW? +-4 ]@e*{磤ϖ)sg.VY97[pp֮(f):v!;ikw۪n{B.^R=lRMPzA]H-u̕IrbVύ>u4BcuGLBd.XPWvﰢqy7N}7{;s& 9:t}C@HĶQc$:2%@`u#BF6_s*ppqp5~'[-LjL.7h2h1=D[!b܍Y?.b/Qߪr#icؤ#7&s,17]Կ+_6dǁ\DU#c$&3+Y+&lU}'|2爦4SJM&-m):S]{ýqwx+}P2 +d.W)6ncmm,m +ib191 qBG|KV@E1aɂ:3jQ!9N,vP>'Sߨ־XԤN]O}&gI}D]\wa% R)i~=>BO͂82ٙ!.g.CX~خe6JlQ*\iTS@H.!y`b FdA@A 4 aJ"cD'( +(
Pϱ+߱}`:{uI ,c`#ց]{I|OdE?Xc{< +8b¯37*535.ClU4-B 8۰::paQpڱX'v1e| 2F9#a[ lA{̷Sɥ,s0\; +"_ h@ |9 fрW2:pb5 a|'&Gq b{̽D|^'Fa7BMhXt'=o) <_YؗڝW(5ܞdZnQcU!-[j!.z5{%-dp_jI:Pw1 d_hwWеL*D:臕fJ>Y)hץ(Sc +e&Ir2j}S_l_W- TC|)3I]':&ͺ(f^zLd/.XBVJ/)y+nd)˼hYh=w2٬ )vQ,yvi%)YaYYWCoadbτd`Π6AfҊ`u ؋M,hSbE nU/*H,X%%.ls>abAǐSN7=p w +%!9kųx)-vbE8{`u,= +*̃/ŖŔ fL7=[+"|WhW+BwK' ,:}mDss^R(shRX\)wPCTffU*'EL;mV1$bل-mWC_^!S~\[~ uI}q-v P߻`G)@N9@ΡKհSk +km N3<:fjm0ormڹ55K֤Uk|YxWWENѨQ?Jw0%wrf@Rɼe%ǘג3Ly)P@w_wOqץu*N:ڕyw[6~_U%1/;{xb ؅>K= c.Ul&׮VsǭX[-uMu^uY~%U4uyqx"*ʡvlC5ިxxŃJs`Vm\clTf3iwNl׶ݴMnc3w<>]لmqN +`TRiyFxs.q|r۵yyo띭}w8>9|nrolʖҵ-ˤe=UΧ䋜o)`"<#“QZ2\b$D+ mk ݾKvxr~Kqf(/]p6Q43` (; e /r*x> ].K< ^9e>gx:,fٌ M`tWDL+p`_+ǐ5|U"wxP w`EĄ+͸EQ"\!dAל8#P ܆Vk=!㼽ay4gTh֩ȑtG] ;z6& +,}sQD%IV%~pYJFii~Nu?V,'ZBsS` 9}yt{\T_b޼1zDw5Q]_Z|#x~sKn)$U9 48U*婄\C"⁒RX?"ZB =zOᨮFgyfG*˒V{3f{OBlMz 4eεFO >pZ`JUD/y:Ľr y̿_ # C{-4k-CF(^ԽfjppQ0f|7\^a3d{wUҕiM դ 0ь]}QNbWT.ŪUV^+1\"h:еg=Փp>j +-b oЫ*CH׵Gh(MAcj1:QLtwxBOg tZf݈kVߙ^b]jP!SXIsGN/l7O3y|-0?a LYB6b>@p-3(.7RFvsնD7ó2?YWyĪw6vXhŽ]ٖ eɳјJgg]ȳfPQ%L^`}a`aQ PD0÷Q )Fal7Ls:q&3sޜ0e \[%%I8ù s>pٴi +]ʞQK @ ?IoUWp㠻6DC{=7ff:47BsP u~ڪ`v? lo>mnVGA '&:n1ߒBӡC U(| YO"$=3!Q2 @ׄBz=HfX0IF)_u@wPlP ( PC2hM? tB"A +kSRsӚEs@a=2`8Ȩl3q}JCHb >$L$)^>8qZt^wK-uD'3Ÿ2q'vABpaRNH^ɛB~ CXHPCnnDOZu T 52^HF"$W셺=W3uЯGnj6{ΆF.f#W'~#{;֫e=֥?:CןdNvå_…VW.D.rah+i 8Jc=a} Xa2bak7lcwݿfwܳmЗH=_2p5YIr4'jqbjQ3o7>xDxG#G퍼y13K~{ԷofÆ_$TT.nTwR7\v43g7p$I42w7y Y<=Aߎ~m1[b~(h-hHh\`%li<?"ﻝAtWΰ)83Aq^aQYpZӀ4ۥWsN)LjK$4%Ygu 煵Dğ |1SPk_yd`ZT[0VFr2zeN +K<׭EhJ3y5YxS}k]|tDP%VHEfuIcQؘo1}c%殺9Us0clƐfӧveٷ͙.J[}FG]z%WPt!A|BT*˗$S^X`EаtP7)r>0Oc m@o6Sm9`ߨIvV8ת\+Urg̬-l/VʣBYNxBKdń3_ ܣگ逋"`~ǸCBGGAӢñG%8XrӜ+wcNg3de7 }|aQ$G}%@~HJQbB'Ry"es8Ba+z|tٰ֠iEU9H.%:!_YW˫mks{H=%Qi/dj )Բb-in({HWFG'5ԗ25e;8a\sI}iqp)2t|b +~VA `T;!V.J亻r'?$ +K߱!u="!{KsH_[p"$bP[*( b ݜB~xmuSv%2MYY^aS̃$0(8qKQ[Q&']%3ZZ:WtCY?֠ȺYwrpnvC}V}^8vw֕z&Vk}j15,(-aW¨/U V]uTz>+C4-(lA~*h7#};jdEqmim2Gi9%5\y볿_x,?:_/aa ճ`>GSʹ -]=m]]@^7^/dٿA0Xnb>/!W[cv 幷%ޮB:B:㦉fz~t.tV.=Q7![@$oGx(3͉OF"Ʋ9u5ctmim##?r>o<Y, Q}hPv ec@¤b=%F:ފ] gBgb=3) ΙmU?nqxkzq 7/ޜS'Xc@ +v>ʵ sH:D&u9_[sc>oχ`|mq2oTh3q6٬܍~Ivl?ᮝn9~Wc2 Ng9ឋ@e.,x p iq6.a]xj_Ǻ%,e%V/YUKʥ#LyFr6#Y,/<爯1E#T{'trcIICm׀759`w +ﮃ^ł_9}PV )x=χ_u1>FH}oM+@ lzx> չle D((`W% 1`A,H@Dņ(< C-O1D!ODQDĂg0;=;{9F 9PY0s C Yҿ#DHNb:D X +ACFr<(g3J,Z=X=OZ8 `] h%+"6!j&;@:5ͣ1n@hm +}k7jGK(]48Zw }0`W.e@~5Gn+jM :kRsG?:=@ON}DoG=b{}`]$7bu)bѽ5t?+f 5(F?C?b>`hUŗ`RwŮ`0o4H%$"H>)k xCxjth(m0k0QLɼLDcOWI%KrW߀|ExNyn@߅BV5ջ ]x)[,<:t6ᑬt7J+&BZ7pC]h2ehTsE9塡|(T7Tj +:U3PŸ@7QMVen)wr{q]yMWՌCkp^øZsƝ{=fKm`f9/c)QDy P+Kz?'\z?#qnU듸c>;sC V}ҮBܾUXfLXD%L3lw`φ1H6G[g\qǜqy,wy"y_sW8-q;-v\#,s:Jvv:;9:wlqfLm|N:h{u A!8bnqm* +[u_epKؐ**2,m7֛l1l5)0.7TJ6 W\:dk\^V2Yg`(vF#9. % }#cwJFscS[ŋ6-X f%YZ=_ڽXU9 ֥t'+mZ#PM88>(cEV~O8qT oDѺk6+Y"ʐ-ʑg{fzmS,maeye//L:}?>4sЬD}>͟Po ;`k@xry`A1Zѓ٣L2eit,ET-RBg}[~=h(1:ӑ (X2 d 3lj2|/N&I I?Wbиlqr1_5׸S3Xejf<.iSGCp" +80(ٯ[u^ȉ̘AȈҢ}QXqR9Ӥ'S E ]|j)ǻMk"-&1sT?pjPEq췍Ҽ3NZ,ҿqBj;(v<.@0wlpvL8!f)xy\ԨLȵ" uyGEuqwgfd`.誈i*e60 URUZb2XYK(nQ@M\)GO-hknQ999s{}b<31=uO\u]D1D[~:s[<ס='ˍykP0e P0I(HҜy2s&3.N#56CiuXShvNޠGGp>36o_kE QY|7jdYc?4bIQ4I\tl-4 6)1D")!ΐc/T+b۵ \z/NFŋ~>\3T`'ٔuy%&G,5E^rR!+ea򗤚a6IѶE +$}LR¤r'Vaܦ 7w 3wY`%Rf5Q|'&`_ԥ;I 2ۭ^8cGbt8Nşi kܭz a5_b[7 W`=.Z +׆]4T[]Mo:`+@. +L p? f' iA̓0 8 ׃S +{t{Ȁ>-fn)Eϖ:4@ro9tXr0y TO&`R3`Q19*hZ]nusp2Nm U{0C{2OAy +vP7A%PJ^uqW}@w&cN7sG80u +p>-*ka{l(H/xArA$upup}DwPA;6yDt3=S-iw8O.ձ]#Zr_`HD)PY^K:_KFn )kp9}5O= G; pKŦ@ ؋+p By:xyDM?} :[KWO21 F.~EG+#ɗK q_po-~#nT]:˪^nb +8K!N>C<O}'iǠd[[k;ϯEf\ wNrgũ!p/394L`""}*/@%Spk6\KÍ8†NQp: +jp2`9Nű yy9t>`:G}vm(/cH?5'Ip?P;2z4.c: 'i8ڍVW0.bfzWt[=h/ + n{h˸_E zyɓTb5 O7?OEOHhq`t Dg)`Cʘ!]Zv{*vkphsѦŭ!CΉׇ7OZ4gI{Y*w}? A/zPg&2S:Qh MP3}:5<@SnT6hZ4uuqUҠ%YVkNq+5WSHOQZ*HyYITꩤމ&8biޡ'H}1 +"'b{d86Gji`6D3-vv]m / %^^%^DR[- & +[v\^'_H {BWG7&3ҿ| )-F{lM16ͱhIbƤ2l}C<@,L\5G$jW3NpZzfyմyQG}*.*D=P̎NQ-xyO |JOi:D'mxZѬSQ7uOg x $>[TujZ*W+F^kSRΌUighUjP yj9n/L]ns!I!X2)!K CmJ,S,HNe'e%9ĕىeܬJiybLR^[(TĻ|~$A& \9 4{IF ǪXnZ㻨1b12h![\npI%\BZ_ +/7+)ەN}?&zAI(^s?dN~7_mSJ<ñ TMAeZ$Sa2s +[jfKS\q7K]*Ӵ'Ԥ1n},)F??2 J/W袙h!kS.s(N9]Q;yIq#IlĦ3Ein8U(1} +$pGn?cUk(b,% J,v-I.. Eu݊#ʘOʘA'GHotE,9g0@X3}9ݓT84ɬOOZqIP/y_,*ʷ8o{PzN-gߑn1>c ӧ#% iJ-,KRĦwIp^4;D!:gk{Re܋$$ӻ0 +Lg6)C8cl7FgaTV?x B\,Il|ଥҨղYeY&rM"<'"*WB[+XIYIoR٢M^s=\wD\C5`0D"83ƹBqfL7JHCvKCviH#iȆe!Ԧ.e.I +^ ̦{~F`8[֘B99c@"u(AxI$ %_2JF_Tf!شzS۴Ne*Kv +PrQ? +_H +\ la d5i!݉tOR r+ZJWޕeE9X 0e,sòb 3КB[m(xuQ!b#IY}XLa[8 l5N /xF6#n7LŖ-lڶ* joAe}u͏Dt##s*g16Jҿ< pnPBUNP6t>2 kgBCfQttR@Z| 01O'06 z? 'Q@86!=Õx-~ 0h兠V>xڸ\[ 9/G0+"<5`#Ha 8iAu#y㼖➼ ŜG;/"WX_B_-'{9ȍN2I{F(;޾^S@y\|N u'^5Mw6'݁t$jV; . ={\\ ry =f +0^-z~I8m|E&w͜>ɤDtح;DM"P2$ydIOK exJVғ;؀DW!-tUU񭸆2Gq?"G@ο\!/"o™89iͦ=zГQ3pkMrpqUFjFgъSm$3‘O"%Cpb.đh8!x ܒNuY"o$[ TY:Sf*/G|6Eр&E :=؝~@JDd j|<\5x]7\uK18 Ψ)ؐ<޷=||E>86pcQgvǡJ? +`>e TNXI(ћ`Pl67HCNI6ܒCHrCEIίx̲\fimc?p}a2lEa$&4lLY(6COBao/}\)A55J .{]8..]n r[ۊ(%*XԱmSӦi3δv!mӴt2M3Mil/2f9ߞ>f&mJ`OfO-'_Ʌɍˍ "ܱj}6p/{Vp\qz܊5)hF+" ӚjLjIMs"fÙ!v43gNsCܠ"\4wYSe}~@DPCܦ+;t/m"hUc*7'sMέdFNfXa젶 i{~0ק=hgnK.UEg_  yyBrpeCmnNSgcDǐނA}ۘ~#ۥ悺\noӝQ ~+BY_٤+Ш>BIN1@QD,60aL@ش æ4g"dGٌt*tUVG5U~B$Zʜ5!M^Z{&Mpݵ6W&dw*&]g] ] ++"\F5uWep2CiJi +zE{RpqbS#uEuSnCw}jwςb_c٘B5Y3xwZ. +וywy_sjJ`&FOy]7Gif-PO՟ +f"1j=d\?_T䴼n"[n~i~-J#0GLQ;;ZPŽ0wn)j2@eE~W9tYV2s܁wyu65WGyu7HJxZ)st~P@1лoA^nhRqp@P>CfdJ U!#:¤zq65qMMKr)=kJu.ӞF D5-ʞ[ +d!st#2ƶc8ia=R|+,a_؉pH0ç] M&)|II74eָLZqhcq=dLO ej=N'$$O`fbI"qH+FB3sH\3oFH28O1p#Mύ!Z-v87 dRLL=e\,'`f< )H\8شhlX|s/#~qxqo n=<9) Ch_$uh +ПfIH^6]p) D"\ށX"vŌu+XEJʕA|-p~I|gėPG@pS%gi9i%ҿL/וP1M}SQQB_CRJSNhHER !|dB29>eȲZfǚ550żmw\]繟њ@ҚCeSeSE؈xxu`E D994|Cݬ`@c\ 0^_o !(`$' NRp>ٜ69mV<Z[9ɭ u;yr)ɘ+ƫf0jRӢ P676 +}@R;Nl_lL:X;:8 u'F7yۀ܋ouQ`= PSy +*_6XAEl<sDw' L7;0x0ZSלV/R"ȭN'w97?=G3sǼBOٌ<݋*%_꺑aуBFqd$$o+%9V)6 *5 Gp-'.o Y]> C+"/NyYG(2ꬢ:lΧq&9[<`_Gz)s 1'#`uQ/Z)ʤN`uSJY1ks4r.f~/Ȣ!ӝ7:WGP3ٌV"uC.b,lN%3_gpqoZ躙Y<8I + ᧾dJQϟ0ԊhI>K\P\͜E140M\ts :k42JC斒e.F` J.$A"gѦV84%^:e^.R/NZ*4؉zzu uawc3vE= 2,wwȍ>6^X㴱;MI(M"pX2 ʏqPze6>WNbOr۱t?63/QmvU揱-xN,+? bIaJ.l?=*q|]?o쵘ݖѨ)nyfQ%*W`U56YQ1 ^GXmnzxj3%Gyg{GFhh:!m3;m}PcjQevlMv`7v9Xgka}9VoE{X^nA+'C %bY(zԿ=}bi}z5 56t38zc?*ð1ӱ#9JYXR<,u*BSPۓ C%(Cg( +<'bg$LCRimE/R. aǜ|+W㬰@=ծL?2ԡHWO,TcNiB:[H+~vHZENһ\b͡\l{Jza|7[ +Θ_!90IB|B\`/.> \/E(TL : <&JAigV29Rz)d>rIv!cv RC⎙!c1# !a ؐHĄ +ѡIBTh0=4W -mSL +'-kzaRYA#[]dK3f H0$h\FFhM04ᘮiBdx0%|09_#M273(Bj+7& +"0#2L*8y2T2E$\Ct2_ۮfFmo^R=|yߔ-}ԋRR-)>Ϝ"3*{$efEim4%wW^zQM ʶ&fPndXVL#1Z[W,2Z2cI>&6j!<@ۖh!Y>q4M`,e,x 9*#fT{RclO8MIE,%eF+amڭku!u +j[5Vm8պʭVU_Z-mߺC[[7䷦A-Vsy\۾HJ1eRl4^kЯBnfs nԢ:D~aj^)K`eổf+]M"ˁ샓4(-wZ^;ir) 㞓nwF[Zi&sMk.:⽏B8jijpkxju-HN~spRb]05g9#э܆AV +xE{M\0pvƎ4Gh 1.::6zIù:bQG, r/ֱ>[#>AVG%h8ٜh[mӝihml҉GccPϡ_ONIt=.9_9%tzuR glf13] &;Jw>%}iBPWf2PWIU̫8rf`Db405nt;xZj~yl ҧp>HKo[ȝkrf>7vߐ@a5쇃L  B,$B&'fѿHi5\Buz}M=żtC:~5V)@C(M44sћ 4棱XׯuSDg-:XsE]>c}X+]`F>/jh   M@'_\h(Ac{)ezO=lK59cnE鄩zj>^TPnBHȅ@B.@!B- !"BAQDTRuκεgzvvnݥ]9o|=y2|k1;nmmW׆p%f.Ōb^pe^wqbpGX}qQ,MB!R}[;q+67Dĕ8.n0np̆vr|'p"~b!MX‘8p1Slӛ+,ejwѽW6\ڔsxiXJ$+܂d'wc.#2-޺[b_77 I}O0vG1QݟP{WH{1jm }=]8c,Pxub'k&j~GIF(}Ls1.è( Qv 0 .E!qbz]BgNtW2)ZXKM於C~ʚ%X$|@5敏)pS=e勔Ǡd#$Jr#K*C@ZԂvenx:) -f$sSk48?&"fE9OO5_{Hcq2Kc^2F9)_<Ay)(ѡ]QVE9*(Mp+Фtl ;|Us^lcQQfU=|ƌsdL3NY)GQF@:,xphRRW€ + WzPW [jƙEsjN1Ǩ}|H@1jO'Pݛz49D&N7@9z_ЦG t|4j JQU*;,:7:?L>fԏ /1*Go6Gg!=GrO4\Q|̒մoѽ =?eiѬ_> Tx +`5\@mj#5uiBuc:NVefZq1^Tr*L#NKT֬`o+&&uh<͔zSy(CC xIe_3LVe(%dtSV@uʹ[hUIѶ +X6# D(ЯvB / ?02xmY/sd?q5iݧg&#?E^`!! rB*d lnFf2SH/!-|H }z+NRi2Bz'6@m W7Dd;灼i06@0{]1K%5edX+aXo/m` ƣP;612@:Xvp {KO"ޣbrϯ.˥*4q~d%dԳճ|$$;G؍=g~Iރs{Ecpnk*>'͓|]%5!qw4V BB%}lN:PBp$aIvg9s~DD$<Ɂ' =Q%_BfjDd{=YpN')|FLN3,19%]`aB.(}INPWʤ8xd8Du:1>J;돟Ч[o pp p&t;1({@}>np/p_b?'v5Q5M+[4[Rjcr}Ǯ{GﱷEsS{^ =9כ `.AFhC+qrCH_i!eWk2[EB ;ɳtUvZ+~~vuGMD]쟀F3A#bÎZ̙m e|??[#(FXI 5hHKS?(4HИ9hb4qR<_Zق5b.@dP+^?jFؤsbguC |h4)ڏ$/{;vk.rrkmOqR-Yۤk#ވ ?;@_e.hza}D Bc>رlÎر;ꔏ<-zUv5ZVJ*T)W x+>hv@Iy _bh4ICgV)B^fUllF-n~TTj{OĎ\봷hh{NC-U'5vk}?UV0īܐe-5LbCfaJh*w\*v:"*p~9.ϔbUnܜoGEچ{hsVDh_wTb-pMD(9IQ&1S9DqpŚjdt/ a44ztc-Mh`yн\g̣:0+*"EPEaeXT7( +.ǚb&Zq_c5֥1xXҨZMD? \{0t^>|߂3s1TG9y%41W1~PŌV1V$ٍ6es[2͔-WJ3-WAMJ`?fr1 6 k`T78bEqgO9+h`U9Kq&(%a,pFIJHc0'+ ?:cx#%S3=|K!1'tTN쉽/[P%5)J)Iq$[d-`.s\ŧ<+SJM2ZbSI Qg[)#Si)ZdQ5DJH5ʜ4LiK+Rm9-QtzƦoԘТKj0;1Ue +v~ۘ7m]Č~2g V|F2-cY1YVEg56@cehKoPxve +G +r+^eti)̇ ߶LUvyWMP*սj4ʳrUS99~nբf@ pWKXN/`^ @8)a3/ffl^˹-~**uv4{Wnuٕ-thFt2K` Py;Nn{7M.v77\ĵ7TN(WRjgpG˽_&h'?mM^!A918P~!0qGBAlp.|7ݾ\Gx`K:9:A$'1 +G f:GMhI ކ* ]{.CvyH8ZZg8 U|J}'|/Fk~Eo#v{n;tk`3?M—Nñ=]|m--M< W8/t?úB9sIm|y=C魇 +ЏF{ok:KkOB<u:=K[Dp\џDlAOЕp@F=+1ɤI *!q|@#q8մNjB)odJOXWGta(V2:h䳣:FGqK]k!*WmWxvjgvBm1<{/H.ΐ}"1++YO䱜LYvNATúuLM&آMG2ӤO<JpW0`6``6` +$&!IsM4I&kf]zd=Uuӎv6դQҺN:mkUv޷dz{>I}R/xW%^սŋ7Zʥc:\G&dQqXtS gb"㙏5;e2|+ +O =.V%?{ewV,Y ,de#l33a*pN79nek4y g((FsP;."7)R.JŎ].%Yˏg m K(dXѢV 2X4Lq턶GIPݦ2=Ke6ҿ7Q׾H_Ny5K/Ib$SCrM6MNJ)&X:@w8]eos[<7C_kҝ6GYyҾLh_Fͱ 3k6Tmqeioi⧣"D{(Uh:D,xlO}fۯ_\DVyFWf/k\2,'XL5v IM[aS4,d +48/QxKEDd'{VwQi> fѩ6n5zqmIޚNuk>VֶJTzx#f(-Q[仗G~C(7_eJ"(YRZ X;TvPљN3eՔ1[(80EQ`#.x O~S +U..HgI*1'k*j;ʃ(`KO>=&z(쭥z MIv Y =DFۤ~&~OF'dDwK렴ĔDPKINA? L!w("d U9@pA҆GI#ydGΈ$ ?KŻ$ }*wJkYEHM%ZcUVQ[cȘ06HD:)y$OyZ'$bcxMćOb_O7xG?#~<Ši1"ѡ5UIJQ٘U!}z I$m8Ms`/68e|/Hu^dD~@cL<0""2 +* 5"(Ȧ(( (8* ++˩₩1n&DQc%i[5ǦMjԨI44>99=Ǚg}T:++Hϖs''- ŏ;q?>Əq)S&ժt"_u~uyzYWz+TXGO~>/~طb-v7R(=zB>C,N)V|^)P+[]G9DFx!Ngu%yab Qh@#`52yi>ZUƏq@Vf*%cDuX;;M,$ǩW5Ġ1 +㱟LVUG$oV*V[rcգ_Ks4g [{/^g A' +hEc)hdc)E +ZV,""[.v._iswr# kG>>wpelwUSVw JhYG%Vu.ZꚢZL-q"|Y܊TVjZ֤y-*s?RwTcxJ1lD%G(1,V aAي /иrF,؈lCuR#~=;iAo m +1 +ǽl09C"J (EӸъQ)5UkTtFF[4b0dǼa1|`!vS\7ya&po +K#.M ̣>0dQvMvD}}GEepcĠ`Ԉ\Ƹ5qiFkUظ/MjzbNs5MSTk7IOsf`f{{K9YeIPfRIIHJWzrҒR%SJMJM]j%7)MG`A,W}́z@y>9JTqd2јTI)& +`ҧ)1ݮEXgޭX`>x7e8نV7m\30*ǔ.SR3(;[9%ʩVdLE(}t jK4l)w)We 7v2l {Emg6k|m~sn0(z8E BװH~Rr_&,K8p.+*.]tqíAaa= Gw1]_5 ͩPFs([\!k\>ZiJɩm*si-䱎jb`;6{[ Vf6SDEVFr{ 6xh$2.c}cc}ǹ}7TGKH1Ia1y5빑oz v^x2 + 3#jrK y36 Y+0;g6~K8N[ u?E\vih2@o!ނ18I59͌# </W/RK ե e_&*F;Djǒ7pjY`\ U +\eN>aFї2gl MVżuؠu <=w'-]U'mu}r uvxa}k}Ӹ_C<ω <74}tWE/JD3|t*Ш-6KANw}eE|y\Y"qyW(29?9<{=;BDzQDJ^Gt<ΐ))y|X5<\i0w|G'X4HG# |4J=ͫ O[;i$Nb''sqbױsqiRM6Z:umU]K+T(L\Mh B6&B Ć m0ډ3??~:w}~{cc/V0]b -|Q_75O op}$1s4WG + :kѡ\i5ϫ~j%?L FX0i*\ъvif/hGɋ*ɒ5Q&>d +eEi׸?-Ye,-5jԪJ-ЬyC =ij׌!ƔiM5a<NjĮ1]ר鞒ה0F,Yڬ^FzЧ}c~,lZsLf1;5mnДEami21˘F-Jn\U c>nzRqU Zju~?>./8l>Xz{f,3qږ)Q)&iU֦-,xwnm~LъksxUa +WާyEit-<3M2s36{f 5dw*nנݧG=9bVr\Ym(TO5wU:koÇgZI"r=I8ce^FːH_mUPY^g8[R&Au׎*X;EuTo͉[=?kh=Rioޡyd,}TckDָTߖۿG.Ljj7T2|[/iW?ճ@su~NB/ ]m|5j RC%w{jc@霑sE՝GT*^eٻހ_p7ά濏YjN~#?yJ +ZUVnTTeOLCS-isCO,| $[[&[=>Vy54ИVA:R#Շ}…rn1*bQe\HnUCe٢CFS]C;'Ḵ{Mb?9WY73hzϣ3N Aۄ%n໣RU_*KT>`RـUA6 j`#e )>s2/]_SIǴ0:tf|0^ B-'F)ՃRuPAED6$dLeHKɘJ 'w([*H^T^r*7C%~(cFgJ D H~hObl3ɘ*QIʤ&*Lժ ըT@aتuL.EL%*Pl܎3% Ce{ˇvLJmϳ?ݿ}" JH%:bv̠RѰ$H@phĈ`ּ>5&ym xyX{g(b5 s/w)1WΣ0JWAJc6ԔG1 #uơK?C"<˚eße.o-q3<{>Mzmx_ShB?ʹ |5[By=g®r'oϳ.0gK2{9 2{2r{ 8|oaׄnZr1xvfK04&{CYi>>椏 ~q>J%?A۹B>zƸ%9j]cF2ur9ACa?/~곟B;i8'U9@mcAg|FW(ćW$ ^~Ea{3ظ!'}q=/XRl $Ip.G&& ҝjKt>oKOlH1ӝS{7$ۘ~S M̫2ґZv>Ϫ@VOS;tF=ğI |ݞpOѩye \0]׹ i"'kL>RXf)'Z:%t,ev+-H|';!.'v5LqTa'&3iB/mt9.hXIdn9L?Ev( ,r5^qOCr1/$v9u&q'-[|c!.yds.3: +On1.̓ي +U2E|$E/"|,||\q7˺LOgTT2CeO8[S6[.R^/i8:4D# <4(GJ31yJ}P\M曓Tp$:`v [6 jV^?!=8-:qHCh(fSwԫMԡAS4>. Y2a ݩЃj +=!vA@{ql5[=0fO53\6;ܠICtgUaɚR{Xi Tkh79|uq 5D,P}JEnGBTaT,5VŶDٜ*e/Hy&)7U9]N%}Ik2*#\gsó֣T= W|$^h)Ub{ +Fʳ'+מle'I.;FY)LTc|Pr:#x>3zhL9eHc_#yVR!: qq)ˑLS,yJO-QZZRL#}R\ z@IGeǕ6|W<h5 ћȅL|}^d+ +W\QhŔX]tȑ_$4(c,J*t=TO\K%7MEF4 gR]AQg]wEЪ(* +-, +BmăD3iFUi;1&ͤNkNc̴L56i֣c,d?Y罾}FL+`WJQdv|dȕQ Jv\*C ~;+ιOcqX^8V±`>( *id_+;IFYIJdT'[y*u)ڋ'/ыp| <<_h&q;(@1τ;~$J ~dʼnJ**@0 :3"$ * !yURxP JlL_qÿ~Llu1JXbPt|R.Fz#ìCH Njų#aKgpK-/p +PH9ĜE̓}O?/Q_µEgKO F+k+:w%KF.(\/Qu`;ϰ-DMT\~vPBsy&1O _?f4`9VAZM.?Ppxs{Ez3r [d!m\@̳p}jΫ)$C7XlaX?X6N`LM6s6U|RMySpw+TQ"͡|ի^3uK a·A? XWY +q/O=r, w}qKCM~'q~g<>,O ڙzb/ku?#|agD:a/Caq0&Xku7F4(8!8G䠿&M sA ";`4"hu&x`x?NsfO8)w /:r΄;M6HhD9pɈH#88rpu\,b%% +~O +y.!MwAQj@|ν:+OQ8|H❧I~E?"sphBp;C->Un3o>$}|QX5=:7j ~{=Hj=k? +Ux3z]W]Rt+pk>\P\fFi3[GP'^uz|:z:~CE0-{/J'i : A ƸE+Zd$,%ض㷋\DKè!A6]Tyxscu9/pޏ#N[f|a +Gb]m;V]a;l/nvS<7v#dr EA+|2;17bۊtf.v#ʎ^DZ=B]F yBz}d%,ã%2vb\lQ*'a{:sυ.#U{~=7QBy5df'ީ~.=$8#`; ۓ=beد~ ?:CZEKo +rzSL9q,Ǭ`#vpFHo~:b&'2B". +8p@wtұkuԣj .3HxU32_ Vq G-*3VÑG&ȃceTY 1GT5Ii +De=G(\jycm+U5qr ?'L84^zJKXk'/SIF-6X3k,!K.l-HWMbHQuOzU&.UUfRqJL/tBEp |'6\p-^~w[62UcJӔjTM3Te|S**7WUV㖫hjͳUk}Eso*!=pm`cmzk.|q⛃SbUeMRŢ +MI*NS5[ֹ*ZS;IyW)7urR٩O+fL9p{HC +U |w*_ԖTRST:A575Kslʳ*VDEʞT5#}2.5-cD55,! ¿4`$|e}oJx  b I5AI*;œVYKfnVbUQyUۺuն]ﶹ]n9 d'y^z|*|̍W%Yety-Y*R OGrjU(Ek +&-V_vl4~PVg~”߬8Ki̥*PfYI(/TzT) jhQjE'Uo@ɾA%;Ċs2T\*>W?a;Rԃ|ǤJ pϊ|THپx&')ʨLiԪP*JnRbuDŚXFwlU|^U կ+|DUݬmo W +TP *1Q +<|.HF3ńٴF4P(NiO;JN3X3.kᡖ&lAĵ)0(41{$f[3K7E,^mfv)##ψvl/ dx:4z0^oQ&R1&J ȵ Ny=/亭Mԃ>!g}6blS|s>imd7yp.]6E,`c 5YQ>9fq/r9br9c/[yfg0% .mm,o:HCYk7f-Pl,`'&'ߡOQ!zt~"'(~sbϫ5*]Msv,!{_3hl<&Bh-TlDŽ0 ň2=r?F(8 +a:tPuVr4%-|4.F&1BJg蓳q\E?OAr3!pFpvR#<+;<au:Qx\(.A]6}fJ#+{^8i=syS~}=*:+G /P]Wiԟ%.~J~B.i\:ops0^/c_>Q\f +4G5t̻jL?~ʹy -JCxЙOEh47jvP}hũ߄3,ji0)(' +L5{ #u̼M`pEWhT՟W<~`;۹v0Ŵi%mx} %rǘ as9jj=7{L`e R5:%.Z;}Q`O#6Zm/u؞{݌VlEݥ Te е/iVқbX1\G.t욱k.l{]Z쇰V+#]Lb +Y:1~6ktv 5bׄE g?RX a2)snM?ӳٮ:e05&9(Fd}{\,XH.&=Fڍc~t!셱ۦv,n/f:z43UaKH}$A+oX&fp:9/:jQ6LC8JdRruaĉc;ǗN8NvlDZs:M$m״ K֭bBJAVSV1Dm0؀A h*h6&.ZQPG'e=:3Hì1V*f젗 c%Xz>A4lsGX 㰔gKH ;;Ѩ$:u42to>.& zg=;6%ʯc³x/U|8fwcniL".|5ը\nsL]:Yuv0-WxZ(m٣fA,ǔVr vM{RaG^{jSWKVZliDҸZJJ[;lWʺPɲ1%(n۬mjS" +ۧ:\G8N +6 +CC7]'caVDY]-vJ~%uJأjw)UԱ@ 1E(llVG!~*h<G +W^k[KBzNUy9-粼u7 ;\MZL3v@gi%r1O5m + ջ+rW]'OWT]HU+ީJ.Uq}\Kryr{oj'荓@.pm4$x#FE[תסץjWU DJ[զ~UT㟐ۿA |EFpJ偋rPOtk#Z!kR]'D~vy*婩&.W0#gGڅ2j<4)Gh/òRYcm݆]h44O#"YePP\u9rWɨUy}4t'[d"kdlUidJ%#DN *\d ԿEسA,$!=P ˀ91B4B6Lֺ"og4t@ mM@mݍ>T𚱮ib8d6cLll&qc|-0'3/<~w4\|tzFaɪ{Yנ6t-#Hb3ı8VjXCc1dOT +3oce}~z.hE75L\=5-Ch,I5$so%{sIFMı817v0&;XTVfH3׆A!s++z ))"ö[/:@ndwt/ ıv?~ޗ}S) +kyR{꣯s"!Rt{^sk^nh +Ƃz8K!Lt?I!q8feep#TxplCN.a0UXR|e>oH])a0K$SgX'0ٟq%=y2ղ1@ۏk#VR+{ @^y3xޔT'Y{.o?$ %KE&<{ŋsgW ml}y`}ò{ސ͚:Lm`VKs%O,~ccl:W {ś4썓dŧpO/yC/s /d"oGG,~~ͤyIKLWW^/}_%Կ,jg'ހ Ufyw?6sZ) +:2qӺ{Esxq~&̳gcۼ8m~v|;׉8iM鑶뵵)F=Cݠ$@cL ILHCC􏩈C$PP}~{<$% ݜ73 0(_fѯ=MgP^ O߰y ކ!$=~7V!Rd cse e:#h$>+xyK+Dgt*sB?Lm* у_u]S25t,v#Wȑq?>2S{R#aCdC/6k*< 3ϋJ\;-[Cw6Н@wY4:0 Gt7)T 2d V9-hm[=c0g!X=GG xl'[p3=ѲЄqQϰǦ![[-&v؉c'vة`;fL$GS\VY<:ށ(Na |ayjiȓ*ʝʕ3ݔ=$[愬epf(Hicc{SP2(:x$!(*n?/UK/w6$gGL*)r F%O9s* rg}-ckl@%!4 +AhߌM-]N9K-uma*$MG+],ljj@iCePPo)CН$PnNS!6J@e4U6]?MS'hu>[w4qu:@zJʱ{-hAz<2Lrr®Y~ΚE~A!ah66@A<0ǀfq&m&А ឦ ]` ta/)q ĮQaE{HYaNaV6 3]Qg6{9d7l[ Pb F +*e(P*SS +J/Pʥj-2 ʴ:ڱj 3Hm-ɞt;oel?V~YpYKbr5 c̉ջc,NY{&Μ&38]p~ᣴX,k:gHL6}?ѯ' v ?mI[-~x;gr!q68wsΕΒmQQ]·˨#rs[ 7c?}&{vdVĻH"8sIKi&xA;.Gd##h^e~WN0?HH3(qe3~VpNEj'[ٜ;nG<$H9X< WU~H<^W^ef\. euqDINۿ^p᳹ϏU6K<`,D$+5>>ɿJKb&>f- | +Ol.>IQAaM2z 2zQ{u΢k~8 p ޿z]uq-l$.%~u9Gem~~|?D~bz":'~BiUh +^VXe]SNڟ&hq48Zj%v؝lj~>^n.NC)u}v!~D_v<mv\pǝ;vd`IЈ"v;;eZu&v;#bl/"Vc(p< 4z"%kЙcp_/;muiG:ў؊ @ENA{;ӱ;arXeQÛ rW+b f8S a@䩾";=}ll>B~ *YoaT1v|*8=ط{Lcz\cQlz+۱ݍ>l`o6 ;s:>GNU QuCt~1lEоkپ Tc ~o~;@VdjYdg:YG-e:5c_ ;~σaWuMC,lr2ژT2c^y;u£)TE G7Y.wmkUh9WJ4fy$;B5ur%X| EΊ}ṗs&o/E̻,HK}ܥx#+iժDb񠂉jO˓˝lSMG;lqf܆i I|HbxSGdQh- ϻ|Iy"QX+3SD~ +& y24Xr5 9gϢ)K{caq+X³Yφ$/"\Cedj(fsI>'ݲ=&=#U0?;ӼMvū_nF5#\O&~mXflؒ! ||e6;A+h9/)>O&d\25 +r73D V:HJW xmǶAlcoC%K"K+>|pN+=`hiy׀)ޅ~F5}faX5 ZZ" +nUƱ3h:Z+neJ;=HYB6BIH@P !Ѻ/NT;նK2x:ɇ0p=!?}f^LRpφ`@Vr@G Aw"0<A!\ŜԪX<71 1 '#hGw_C0" 5m ṫ` ",B",BPGbP !BpS/ t3Ϟߧ"$/0` %:BrXa`F6;XApٕVb\r>i:_PK -:G/Ґ9c+.q|h"|X ~5.5uбFl 0a|x=u04.zE4)x C$Hl- yױ;'jn i\ W8tl-бk؎nA pNlEMlaY6{ר` +Y;y80_w97=Ecg@Ҁ= бQR$Ή {P1j` B΃Vݕ Yk`Õ(,7U +U+'F|` + ^EMB@n/+iQ'B/ paT/D;C!XB"0cr>Q88/l0݊M?xy~n07|cǎ0q)SMs^(d^^2l/WYn_zWl۾ܵ{"ވ־o|#G?>3L6ğ=w>1)BY"D-U5ڂ¢CiTSźƦffpvv]|nܼu}ŗ_o~OD%}y1<\'_ gK"0X8d$ D0QPp)#`@L6-F8n#mO@zH(=&c̾dݽz~x FEyy = % G X'$`(,K?W-=C o"[ ;=Qo;p0ȱ4Ï?!Idr -bXwAWM1 0 +z޻}_>xo=z;xɓOkMuDT__ba~CٖsJ:CR Z G#e&\WfHKi h0a@À 4 w|kfdKeUh_ݯAųs94HASe *g)AxӀ n_ToO*HSoTb.W]ޠZA Р%4(ײ3n膆>nE$YL!`*_mԝ/QsР 4y"ySIfuaƹgc,i0,5pCu~S9Ѡriȇ۝+]xWY"Z:ӸdM3^Dv 97V0N6CC4N۝#>1tdBG*@C'ie$5hͥotРUrS!\ʖrz$N:Ҡ#{脆ƒn#Hi КʷkJ +A˱)sNy6K"cwgI=q:E+6 Zg +Uo-/4CTРa;rV(ՕБu9'_4qbf՚ *ʶ̅ڸ|5ǢT۳,8Ȅ#Eƾt^鎗{<6XjwУ-VZzQQYkF}QLVנϋIh4X$&}49߻w?cW{YE˫}?Q +˱lpWDL|rV\`ƉмVmӰi4l6 m{Pdžg0|ǐ0aV]ց灡F!ʺ[Kn۹l{`?)`oh@lǧ"sf\޼-RtɌ)Nm-në= +5e'#1=0htHh#EAg"F Vh•Ibm0;;6 7`2>A :SvIQĢU]1W B% OXoL[n` `Q/c×hޫF'Jcs_+!DtU3(˗vjYy`xN+1™-x[VJf AƻC),ȗfjkۭTkëK/ck$fLGz(6lj;^i<)7m}Uɰw>&t%4aS&Hsĉe!e;l[԰0ݸ/WioƮOW}/>{cI_ᜲks,p!m,g9@Ov.Rgu6A$Ⱥ[5X=ښWǖͯslwrl$&";$&,aqJ'=ʲ[_vwMæaӰi7X?ښc˖9_ 0tJddD'%x:,&rA>'>\0EEh`NӽGWpkz^`x +Wc"R,Bq&<$Lci7_uA[=kV};Ǘ/ b$fǢ* ˱\PW@i.wEfx΁HmjiHW#-]`0(̩ IHL` HwEĴϙqrxsvB@E͌:yn8~ ^I3mfځ6MmҔK IJ qCwI֣yGﻭѾobKl˖%[^ p(t4uU}\?ɩk3Xb?<1{B1 )ʠ)u +e;5+jK״4Œ^S5x{z~q_=a8 ie/ŴxXj(Q@ӨʨVf =[rSPԤtuEhx{~ {/ͩ0/!=k[8P&ڪY V $7yMRULMogn`##4n%ubD@tPf*haTIȚ^ʸ,oe>OUq x -"8g3h.PԗMЬ] U,*WPW2M~K(d+\+x{ڍ^o_=NioYz!pg'ئb +Z(e^ik{dEDUۆa}B{_k_ӜB3sޔJ(6y +%<$iCPMAcqd"mnf:p~0HA\^0K Ì*QJ 82Eg`*)=P3؏6r[h/w`}o羣=\[u᣻nj:|ͶoZp7ȗ|ImKu:mlB%a50as5ޱwDGI^{Ivx\/$ٝh cD,IFIdB#mZ47"TՁ>m3V?1Yiޯ-:B}Ky/eN(^, +юd,A#$9Z6mtoJZmio=aqS5ݾ|OӂSacO0.v8hx'#TQ*LIHLʆt ޜYޖ~0˪a +аm=ć“!A)# xB1B 3QFg2R!@ R`, }owYr6[iì+auc71'R 9#lD}qNܱqZӝNUzuuk@zWEAAP I\Bx $F$@BȅpAEVԺ9;m-ʶ?*9M8bɢv:jh"(VV@ߠTei4EJtLpavwk}n䅜4~1+=n*(NU +<L;sYINiBx6 +_sZfFGܰZ)HB':!TUr_JDot$ H\$\VQ"Fa]|VaG ^j2#(Q6"*r*&!i"$]0 k A]0ݺ4!>DZр/rz[IV-9~`qL45z]ECmdULDD](ՀOICVt^DA$"C V[+{$SL:Q 1hG 5M|CF^kʇZx3UAPi/  n҄di=ۊ~i+zd%C6@>k\OX["d>Еq]iB6gx;iذ% +gd9 $*MM//uxUakfR2ȕ\o`*X( 0,OƤAq.<1*; O[T{j8lQƒ .3&Ba:A8/ W=hS g4IC΢/}ڐ:=kJ]* *8l]Kh-nH6j &_ciS 3Ҁir`xaؚDy]Mݧ 1M&o +Zr-s.j)kjTAAdGO۸7`pHGܤM$Հ!o?f*wm2~\?h2b۩z2lnʯK @1'TYY0FG)2UhӲ4`^2nK֬f{}Vm&pҁ-ZwZܥ5UUz(ԦMjJ m3GrA A%h4 `Z ЭlVy1>g~ |y؟~uG? ӷmHozޯ'|%:WS 8#^87Ѐ`SӏT]=r{L&u~C*gN{i%8 dp?3 x \aheeh jOy`~RMOU!KrUh>Du38lj,J0pzT~ޡ{&`jmյk˦t˸("R(HɼX&QoAqq˓2,ah6EeX=7eNަ ;63e0uOɧ4]jnH"QRĀvߌ帶la,/1 G#Œaܔ>ehi3~1k<ʞ1tȧiPQ'5D^LRMl)l8q(˛G| 0#xeX+)z 9Ys{xJ1?o'ud^H2kq2,9ʄq00|hahe>o옵fϘ+&;jpQNj$ +%h>鵐ifqfb5\Éߊys&``1k{ڦ4vTᢁ/AɩYL"2B5=+ v:̂*;\q`r!=\= ycʚqOZO:ᢉ/),duPbM97Fz\Wjz{Be7&H΋ ( un̬uyP>8Z?]'[E(fjY1)QUoh"^jN^l^$oGs4o-Ҁ28>u9Ƚyhlu^sKO3;(jzIyD. As\5KT1E7w>u>3mu *].NQ!iWcZDX ޲=7B^UtpQ+.hD2-hM;[l'Apd:d;,{OHgpj]<5jT:hCjJ +]QI%d@ [[ߎA;.}߆w[|pRB\G;A-٤}SKUT*K0)!D=eRoh`2xo.cxk{wt#;]ds=c?bv> k6`B:EM{MDZ"VE +Ӽgwo2oM{ ireӇŢ#3PS + }fj;8wym>3tE`uÅzAQlnwG6{xϫkE7]HH ~5_8ɯs뜀gq+>~?>].Lm`=acܜ>"ˑ~RJaiVUXaS/%(\bxa@ @Յ e nH\tzK?Y)ƶX f#fHvuqҨFą^DJ +a]XH:$?y.d_Y«ѶOo~~ZJ^]rrj[Eۛb.A\Ԓwͽ xYbN8ww`{-CplInF'LǬ/F>-/,zTB^O>{.V~1vtnYHI׽{Bc{C: >gώP:}$%_z^US~nˢeϪq%kҔIe?R˒6^L|,Oxri' ޥ^y/ >9}Ǿ+22AnB:@$dPɈğ?Ǐ۠d~u9;3'ܝd}/Ds;d~>O`?T.@WY4v,dG$xPt2\11 ЧO| @<(1>0nN\x??G )eUMuƥ6-k8b#S͢v횮馐J~Ү*`wo2`i(`!8):W@KD|Ъj){g3Wzǫqdq 1>, Ay-"8YhfNS%o_%B)X7oǶ;LyeT;- DA  p[ZT ͷ4zS>KkL7tDa 3fY`l^{j{~8 &x@ ?= +R7 +EUne2^dQDLr9I[M#D%@P؆~?VN8 o @A$o @ (pM@/6,qkًxդfu㍼*d %vk\Cn\ӂ9Xgh ?)lń(9 +R7DkPPqKf9T$Y?. c(w 5A3xی{6gsv` ;llHklԪa *,ђY.I38aOr791fkpoui6ٶ0 ( KJlK-Xo;_*%/K8 P*cK3\iaY< r|^|ǐk2L=>_USI;İ 6mNH OHT$+U=Td웒rl+Z3! 6?9(zI!73`zѯP^e-'ڜ2a@d#LҖ*1:HFמӼ(/J pEHy,pWt:;7 ^)m.3ȷ '=Zs&6qg +6q[ͷOG$$_py"!hgT6! !E f_+Rl.[buũ@36.}"~'>]W6SL + 1f񌒢Su<*qOhfuqi6gAm8%h?w=Oe4Ĕ=1a$P[k匭sH_g7)hv!oFVϷ0&96gtdul`5( _YT8PG]s߉5{4;~elH&{aL0Ejm<,P2|sszl e1- +?N٭s׏oPʝ~w8 JW14Gu'C0VЮ#ԫ%JFWV]R-fE`%la*2 +& 7Ym((C U5XB~dgr[7h~ }hč87w*A?:Lڞ64^or]҆Xѝ&jL/RiYvCA)Tu6Ae} +{48=?pkbPVg(3]BGiK{hnzicgXeTCP T!١} փNt[>59w#;vމ)/)+F $ev+Ӥ(󻒔.RPtSj]Τ +eGrJc(D 5f&P}j-~&swl&n.Yh)YQtвE~Nkbr[iWra;=VCjRic.TڄjP E &P)46_.K{OkVW<>D:Ewa>r:lHd(qm6r[uKT[|ks+AutpP.0Vhaf' ,լR:!]: sep1"@L)FK%tەYݑ@ 29!kZb.zۖ7.nޭY["B>ߝ1cEGC z)?"WWc{5: DUՄ/ +jDA?iW7lZ7ʷ;[%NJd&Dr'IY\hR60r-ʺ6WC`}UI$P,1oDAÖ/V:eņ-`,oY/ݱ)|! 1iTܽشDιt^73h0!-/]6(֣5~c#턉ӗR05nl:CLy! a1Q_sOq!)%5#03g!0̃T2^6:ע4C_XW L: ip='>sCa@Ci4kP z#T=saTؽ;`fVg  ;`xN@vvG! R\!pJCPy8Otغ.̾߄?m?.N8BpDt=~8+[Z!H[Ck#`X 0- - "dl2.b" >c @gaЫ\BXK&=ה%?}*_Ŗ͐iŢIbhX<" JFA0(&~> C e Cfpc/شLVbJ-?k.A7_"NDˊǣ%cƒ1;;AͲ^bYgT2Cb!,OK= yЫ7DvZC&3O&L%Hq1|4JYqZy->i':OJ|C> 1d#LĐ3ѫorٔTÛcM'M$cؚr]0IU=uf# ȮZT!΢<0ZOsjӞqkuQj-"eA` @XB$d%!@VI %$lj@AA VG;ߙuzݼ٦$DbRfw9WiQ^cUT-U3f5URmJ*0P 5ṗƝK@ޱ C? + ;61|3$-!xUF1x&(bJfX,tf(FނOg5p}o1(f|Sv/%V})$;͚F.MeםuEmvC'hQCݢYаsh],^trx77n97Lw@,Ddu,B %k{=eե:uS.uܥʐt*ڿB۷/7&V,tOmx} o*<^DAxbyލ0>P,8OkĸDT6.HO:{9F#OV{xAW~%=3ϭ/?ulmWۂ%/=J=:U|?HdeP2дpy7g3w{jd8⇃ȀX <&(Gdl1?Ƞʨ13?3vjjqBn8J:j`G'`21| ;7`&oPh1G a}C )ȁedD#O/6 P{]䈪F (䠀Kc.#KqgKhpu?ŀ׊@ؿtAC}"c_zAW;(v@ہ;\BPn  :w#-ya~ C'z6 UC_ + B 9t ;{p?*NN& n +nlw p?8_QC< +Lq;FVk)+>eRƜ%Y8ωgz4Q0kMa?M47q1콌!} Xu;1pC:b`!7Ey!%x„LiRK33oT-"֋2$+Ill2_;$'I$ʻ厐7Fz, \ GN-M"EǚT`R%~BL&6.dN(&pG~H988l' +]mE P7ȌE2&GrpI/9iγ"Szx2*}L|DjP'^81Nh~ʾ}8K ii1U vp9l Z$N0gy4x2L6AT'f=$7< Kl#&s)' /S՗@ A +N*1hb d| Q&O%xΗL(Ɠ+jU) QS4w75}M{Ҁ6D6%h'h ĈADA pm|("F-lTže 'Z88kaVmFwII7 +i~~~}FY;A2 Πq@PB ^WfΔT! sF.JsѯzJrИk8W\+e^_4 1b ,oB! APw}A"NUqSJxBrR9aC۴s%Ime]+nnYfSV)) !cHɽ_oCP% I/ ֔J zP*5aniԚ>Z*|a98fkz.7q{ʹ=O@dA (F0aDY0H R'uJP + ;-ִWSXmzNf+2~D]nt1k%~fo2 0~Py]܊?K +ՉLMeQkj\rU[kתKmVHaыLzqWb1CO@s0 +&߷uasQOԑLe-ZyUqR+ +Ygԕ[j2ZkkU6NQt.bA&b#VgL{BPz7CF7}V3GvHwVeU+mŲ.5[4my6kR-4UN#rH|jx>A2 91PRo<݂x.NW@Ʋ5΅ʃvz!0$lŜ KHH"N_Ԥy=Hzg04Ay,Ey٬,G} "}bg}OXeeK'!vD _0Yǩo"ȋąs^kJ86׍z99`t2~@2ȓCByvK߿靐E?)ԯ&X׺5\L^sv:F"ed? ƿK \⇻)t{]ue5yn4nq2ueI 1@&d tGeɍRR؞Z`nvb, S!O" +Hu rK}*e:.װ~vxcOѥ$Z"oieLMoʲ@[ F{^ ؙΜ.zD{@,D۵rZ ?8rD݁A bfL6lL0V;f`Kdp3% d 7 l+Gq@#[8ko G-x +,=j] bOrT!H4dT2-pSbj'tC>ZMISs?Ç k +LDFr$j@#H$C!ױAU&46Aw'(vGUNkp+o5SB!JbD}ӃP*CD}qIE3 aQ*qGt7Z#`&gV[VpV0wEJz@٦ }}/DІ.ݐr%`U 0j(6 +pUa/S 1f-u%o/&|E@j R|iA +~9_y" -c>CzϐBT0Bh2@EjpB e(;`uzP/R e@SWI-A+vw>o/e<{g@|˚]b={ǖ lMi24kp/70D'^' RʚBka~mg}#|%#3a&ϰ&5==-:+ZQԣuTD+ʅuBf! H,'$!Ҡ("e(U(Lx@e(λO}s7i /l>BG/`X/Ш[ DՄ.3#6'=0] 3ĉjқ:kci!i{JFӚ0#NI@Z +݀xr 9{"=qH{\v[laSBzYF +Hz1|`D>e1̦X 5Q5P7y7@?H @O< qzܻ,\>5F})b_d < y`ۣpnapE?tݦ,p89 ٹi$,~'<=E3ch/qǘcӬ*h䥄gx=?1x~M\!_;_[ 8> yȷ/5 Yt Ac|bIo#e\=;0 cÑ͢GV\_͘>؇:Cɹ>q%y?h] zjPo4L A f~ 'J8=leC5Q QI^M|or=񁬊@vܛ|ܛ,`:jp!ul,Ap#@䐏bv/f<#|`l \QރR܎V^N9OJtQ'i= +G,`Ow& iנ8 `ڹ} 3 ѻkJ&DD0 GMIT: wc;rjޑnct3:S ])lG en G `2w, oo~g1Ag[$KiPyRT'5kkCWlǷiYjl|(9Uѱrfr% 503o':M,s&[W8nR)UK]^6a֖ 6X~%dgEl|AWIg)E + b K1F|q B̳(V=1mxCY0;̂c&εk\,č `rlLjxcWʴ|Yu6NQaK:|a6.ݮX:ҝbMf*7CIC<\:W{}w/<صSS~ՍuquDPQT(bIl$$,D*0:ŒZ;NZ:nǵZP*2)UdK9}m^|^K.7VzaZjBK5}F_\c<\mzGiafӛ0ܻ=|j|4쳨Ǟ$MW?l{I]voqf"k[եm+UnzZh|:^Eh[m[?QIT"bŋxFR.p\T*m?;1te!WrΉDyjx,k#]!ԳQ>ňX&gk *Y>cȎcd%rQ)#5Ңq+QhG3bwF-!?&H#!EjZQq_qY_iRH #ܰ8΋ŊhM\ sp1nq9fG!~%d͠3Y /RLtFkӡ\Ob ICo2 : Ʃ:KayU4c&ϜBp,4? #G2_%dBR+>a.| sxF=qs@ ݄Y0)։AXISQ-~bOqp?;"s;TR4HH6•%t0 `Hp\"b4GvnM-13Vw_,Q1_@? `g]!gCzztPh +á.r=3'CM*${yCBEXtY m Rw26MV/z/钼vH?i3 lhS`¨DFf(Ь\_ܜvCrH1D%3O ;r,jߥh@aEvy7;S0 A1lz, +8HA6 MPnK|bH- z9DWUB𘂠z'~٨]BfoU A %@ǰlr2p`^cI<BW(w8 V)%$uWT5!zJ _6+_(ltrH e&f|U7h2}`t06 +cP2A J$7?OCj!L0lSAG~DuAYgV\7?QtR6?I:?K 94d0 \`Qr$TOCl6Vh%o eLpq__ӫڣI7?k~"-ցjWuDd !I 2 hQP(ThI ǭ{{̋yy~y$A'b*37EmJO%\OŚx4C  b'iݑ/f F}KF-%:v22vfAi:Oǡs=_H`0Z:*J?,m: 20% qqChmݨ6foT?'j݆49u NU<*А^ _b`406YAP24]f2e\w|D x~j&TxXp%=6s@4j rѐǓ +) [`bc1` i,p<f;/_ +|A;sT!5஘I 7X- eI$->CX?\Ij(cO3 4#76N0 Zd{߽\ml׷m#šC.9 !ƶ˜LV]Q[j6,KeDŽ =<Àd0 x9h@ZjKf{p?pjw˓S?+<ڕߡcSX8Z-PKj~!Bl0{R2Y:=,VGr=/mDP\s`z[k sBfjv,t^<{ j]7wZu@E מVET$xb%Rν)S $"B˸D5ŕhڷxHGz,߾ோ;^5YovYcS%]7+Îj~jrXUPPl,S.)Du2qrgH\&餢aH8, DO7"@@*,XSiy}-z.h umǟѨ1yHJ%e+f% b~jږʑ!K餈tXHFy1_d 9i9%FWa`FN֏oU6>\w1ҧ"6TU"Oe!<32%Q*f<%Ii#b|TȖ 8)GjD́dtm-,_tmkŃ]_t_w]|`eDAmLpfV"tnKR%q)yI㲇%dՈznLHK +B@ +6X֬6c7WG0}wv]:֋5-a9AZRNV +T#$Jđ%"\hrLǟ7J#rn<[%/sڥY-xg ~5=?Xt,S~gZxB/sI$4IŎ gj/C5z*4 F.!gCȚ0 -Em-xlۀl@З}pƁ}U7ܭ>"Ϳ{IŒ81k5Rji`MK vXQdbF0 v<[_o7l@陣UeEmz]~?hn/$%8vC2]$ow/4WԀWKկh!Ab;,å` +tYk24cGfMcݬ?Q }#ف!'Gz6⼆pq^o 7}:Y0y!`XNKg j,eUL9or^!p]/?4$BQ.X=㴞0&+Am;2]>0GzbL;Z hk ,A}kPdk-[me{Vg]1f=Ϝt{jx&{9:jo|}{׉ϾGt~;߁pF:0Yc>:̓|ޖy9ӡ7Fy:-p.]gQMy? q +.,* l!!!{ I 7kKGwKU#-X+:uA=zL[8 +B|潚|w]=hil*5{.]0wp3GN RqU"֘[>asbOn"){>G6bڸ-Gx}HY|HC4ЄaX(AQ> a@TNq Gq2͓$ߡ(2)*%`8z dE!; qL.}6D3e|4|Es262'aqh/Ȣhf3 2* (\GAi,; <As +Ru t:3ALd> 1y +J ' JCʀÄF KTaP-!DXK/ldAV'ɺ.g Ivg|[xbd=xM4d'ѡ`1IgB'^9pGCI<ے!ٟ +tNf@x&v.Ywg!>Y/yB t&xCȀ. &E [D(@/8nBܖ>BE<C!ρ ُQx /(#hPy#o1&BPPCUꓠ4 ʝ =GBH#3 KGR9 &'}HNJ1&QOn=[}KAݝ <Ϡ#4>(:qLT}å +A1(Iy -|v{8TgP^RWhʟk4Owyw:?.)4½a#*}P23L}*QhAd$?ҵj}jzoW ˦QӅQ9g0"7x&XśU@|e渱jGʰs)wtuV+neEc88ᑾx_~aKyrpf.l=tГ|{]Ċ:&N'ؐ=ա#1+mWU]GF&K_ +n[nZd(0[mmECSC-_zl/yAo"ؔ-Y#zY[|%+p2\+9TcqK?gK:-;,J/Y_8Z4h 8NJ),9yL~#d+ȷ.ͱLlK2ȟ9( vmpo]_JSMk{As_%Q{k7%γfGpYeM>'( dȾWOz4̣a[4;Yp؛=n[m .ѕ++ۗn)ztAGd9׉+eU|Yy+׾ʾݮ~.'0FfQC5&2%?1Ad袻[~mC?h9|{ɉǪ]]mK:j\]Etm_Wly8yƟ8H%CESf_˖889v!5dl!ҴeFiK4L^XYA@3AZ6]MDj+.;fw9&G7%ƞgTF.8M$, +%tIIlb樒I^֥N{:+vxof:4 kRe i"anH^lYXVt/#\Ԉ 5=/%z*"9z&,9j649j>$)j%=֓0{"_B4{YS.uEp@ +k%Y5_qOfKf|Pw .F +&BWLxYN\;.v% +#<{+UͤHߴzrLNM~jK +ODdg%222YI„)x䇑 ~d7*a:<:~7ǎ.DDaDrxY~nSћjᮽ&ʷmZ_s2P"wZ~ܙ *d 8ᇧOq#Rgy)~[& `A O_B'=q/n&yd,@؆%`mY`Yn`ug=w4{@7|I:H5 ?BHI t`{R"n>|bf/s/m!?삐OV"xF`'!,ɹ 0z}OX ҂Ag,7{Ɇ_g"D.ǃ +QvGlYMtBt"s+]*W5Fh+ !:i__#;?=G+b `>7ҁO=3@$fAb"h%[WWGmtp:f}6aי D @+5zq$X?r'j"Du"֕ +S g8@> JdHJ[Q+<: D3q,]bk,d;2{!8?Ds3듀UHXAPAK +},N&-*unH2 _x+lƴEwÆ؃Q7Q9/9}pŀw3Wq>&!?{ԯZ{d>@V#֊ArArUU=,7J$6^Z^%s^[%*7!q+C;Q 8/DN&A-d_Ɠ|Ň-֑{@w. …lٲt[R["WQT;KRgIO{[7c! qe#C1$WLhb- +#G4g _4egy?YH_κs[+▲%kҞ+o.J{IEeW@ܩj$>đ|)֑6UTN-g7G8/yZ\ИNn}%7,ܫQ=V!Jy27ңv[V-@g_Bidg'=6M%sz_e_- ~6K]nt^7 +r 9戞;O?O9$w&8|[ٮ]ٖ2h[ͩ㲦ԷƴwI dgQ@zlZhRjwZOkCf>VEuv$ٳ!}*$\KlWv#Ir8}`ZjMk귚}#ꆵVE}Ƹ|{[)!yDmH@6o<l&} ԭmݣFyN$,P}U.+*wWdS6g4e6d\Kٙ٫NQdsqYUDH$[G dΥ‘2VrG6O]m5n6;^.{vW6g?h䷙6 +[ ++eyU; jks?լ}0RiN0-1VU0.{$mJ l޲T͡ p<߽Vԫ{58xthWflYWf6nIY\#-lTWO0vZn|Z^03 iMqTU?(˷y{)L|28k݃(7x_h {YGՌF6Z +Ě*yeNfSkʦԒ4Sb:ST41L a&.&{S͠|>rǔmݭ%"J};uʍbBf\.1M),,ոLZ^ُĀ>ӐX:)(UƔLV&Bٜ3(CU沧iFuh:'ʿ۝j[W[Ģx=rzSS +nW&./fkIiViqUX٬5X9SY׺-CuyTe4\ѪuMBXEAaIXE@0qWzZD +REAPAܵEܗ#n=3v +cNUԞ,gg|~zy}?ѐf͂1=ŧoA4ӵV+ok2?mW{$QRYk+;.b}˶S"{qIyy%w,>{I@m˶\6E~у*!ݮ3FtmuM原Tյh'ly}OqOj# Ǭ;&a)*>K_X?+w᜜}md}=@V^`O2w  Y٧DN6 u1ֳ.3&sՒ"/jT6慮;TnuÛf=,=sӪo2/ UYeCswFRևD"_IUǧ M%S,\RU\,=㰽CQ>wݩy'G,iY5-yc\vSѬc{SkRNo / Æ/?R>*FGRGCo#zTFtb=tG_]ҡkT%^ 1MmDd+/d/>08g6;>'^:1U>>f6#9(TѰ臝Dw]۽j/qTyÈM{\]ۑފ_q3m,k |VS\1s6zڌ1יӣ vyŴ#>3D]!h`?Utr뮈ӖO}[8:>˼&<ت};hVFByCx]DFvAu:yDgD7#jnfʯӖ"kNkzżr =ZkCO]JOxVcz>Fȵ=U͊t2T8w(C@u752ω.4>/N͈V/y/eTFWfɯfOxdחa3/N׷!oc.܂M |{FD7$/!5Z!Dul+Xvv'_=7-)_3{p~jZxY4C +UClw~d5IJAlbY?hGXaD|K#Q;#JÎ7n:Z(3 +BHc?d`l.ATVK\_0l_Lj*P5˿C)EpVCԿ.4YEjE( "A% #@#r A("HM׫XVG+VWZ]gߝ/g|g]ך$i VcjD0!D +hzG[Cq n@=_\r}As}F} +ns[x +ϫAy9*Φ9|f9DY@DB(KD*׌F!.mz?2a4;Na1vk +ZC狰oR # ~H{/px*ٽ_ +LJjٰb׻ͷ=o:~y_#!|\qw| $|ÃQ>P@)wusW`Qn2#5hyR/ף5n3Q-߇/5uM  +N :!x\$hB6&P(APo8.S3)mOEHd`\iXf6iK'Ed Rtv阽';' :>|$l*@zg!U 4S V, =vS^jR +\g [ͨ.Ǭ="w99)xOHKU|%i t D0^y(ewE&:bh F 0$@@)=Į%Ωs?A şS~+[ovlLqɥgr"2.GRIZYEࡄc|;+#vl6Knsc$SA +j)0@7b-ǮȳCcSSfz3%쥓a㹱.#->J ;,3*o&e=d}06ߐp]PW%n 8r r`d0q-=-@Ѝ}M>*g./.qL'꒮O+IX") ]E7!=*nFgfONTF*=ERώ\>fP陕}z;D/*'Dˡ9a~5i(akRe +-D}/ +=˷Duz|o.5-Bg7߿f6x@ wqo]GSI:mu~nG߶a6޲z1hQoge!̩R^[.*KחkUM/+(L U~P^^Z6j`0pXWwT hu:yMt52-&bEKh}]m[UM6]e_Q*P+K+njQ@ɵgCe"y;B;9S w!!tC}fh@nj ՔUOguUMbW]CVm7ϐNԱu/ D{X[~|pL[V)DBwNc=fh rͲ]5gm[Gn˞YʆܠRzBNQH~T +Ș +Ht@ĖZYpـp{C |i/CC._-+aNn݉[S;mŴݭՌV"0G)js23^;B|3$toL>,u'{RFj+E^O?dr7 N07]X!@*Bw]Ad Bc _ݤt{+k/7ZT_ks76mDna-r[;~cx|D_|J>KˎEћԂEG->v8T)Nв@]n|;)T{s%35q0Ͷm@yW5;dd&GyS-<D6zvc_֍Yco,dYbjmt"\8\ۅHMkD Ds;^ ,4㹼~ocd 8= TxV{ .\;vhH5mL¯.CwC׏ma3>^gsX~G[BQ(e>*  MCraxayFc xGaw$xKp' l`3vog&_$*BM# |Ʉ@CBZ(( *.\,\ xH` X&c ࠇW!fpU3+l?D"\" Hų: Ix +C =q?/8T 籎簝'c??g5|M˾Erb(xS(b +DZDhĒT /j!8K"f5SdZm$=m2] +{ +-HEbfy"z} ];ҏ|!iү 9ꏨbD2wa1xd] ԠkyXzLVG'zB9 q h( F|?b2 ?ɜgfn3~_r +B,#dX,TzGPA}1a4{W#"f2ς友#; @vȨAKH?0q}5HpvE,UO ɯ)cI +n e@t 1W͈1Ҵʀ﫧4OmbEۄ?+[+M:VHiPv}>dj3q]3r57`g0o/iK9XߎM9#sdkQ5nBN y\8 <; ?QB+ y#p!uNxʶ [Ÿ] X&wg<%ݫ:0/<8S6|n:9@틼H뉸Axh|KD~F!ZS4.y} + +|&t3I l}#fr+Ȧ0k4f,9nD$s& J{jUwQ1k n$o<.x:rVȖQF"vIv$5 +Jst0k울 NeNEOU{JX( Z0D] +(ަi0E&pJהFߍyǷ ʣl2v2&%ݵI ť3ɵD K%)^U + +/ +Es +!Bh`/ {o. +c2{WTKEV}9{[I rU:]M/6 %}_7[͖7[|ĒC_dD[ :U7JHu!ܪ5*5LNe莖˜=jС&K<\YH)ʨ+d nQnz 1!Y*bRSv10x{J.7[$5; לvU< uSTbt<%7GEϒ׳dYa$8̯~Lđd"412D +Xp;O눠kXMaщԭq-5ǷUWFRW%TVzeRkYE;')O'̝{/!s[Y)(J"j& pk0hkZ1i8f .ZU*+{H˔Ԥj<|/_|b +.1]$[=gp{W#vVvYB{>bc'ٸQ9jU#'!@jYR.:S%񫚙'+|*'88|"*;R%S"h5[KLqf`34&w3T1Lz-#6-.Y(l5+ȼ&WdC#- n +Va#FpV#ZX+*_ͿE{Wp ``#6ფ!ly +@N{Ss\»JC:՞A=q;mAԣ͈zL(Auy{oq`w0@-vвuq1Q -q/xl#GN *v:s9>Վiq\r@ o/"s;ٿ}52GpsgN kdӻ iWRX0o39jUmW;'2w(tێLݒc} 9. ra ut 4|$@MH3v;b=IQ>as7[MΦ[sf +fjvg:`Kږ:duȎ1{\E+WwA'@?@ίXΟH m!f[Bਞ_l쫏^'1)i}g6Ky+wVn|8x8]Mh_ο-3'pC"HvY(9yѡY&/J9hZru3W/~,=A}ny;P gD.~gЗL{(m# a!: 5px7?ՙSa20 f`FP"JQ,X"q%Uc jtE=.Y{uƵG"%( +!;O}}'~$~0Ofh#v^R+uBW e{; F;m_ x(6Q}اD֍"j)]5GPps`|(|H?-"")bϏ߈5X/v~nH>6J-߳* .C4'DD8?( + + А:H>0ZArCOY +yJLX R`Ev%,M4/q-T{cDAD 38Ӆ㡽.Cw&]mqm{w'♯E^d֬QSzɫly]jyh'P=9]}GK4wV{Ju#qg|&xBSFӉПHD1v( Cjxm#TFtfNLPɮ+( }߆}fDTDDYaVePYM*X&FM0.59Ѵ1ihKs޼[ą3r { ʏ2hnڒ۪1Sb_ǯ*Ҫ=RDna_Y9sMF"",MB0R߯iPQt &VX) wj+\ټwIl徼Tʜl~Yv)(NBQj& +S(Xlaᮔ^;4>#80Pk=uL{Ӽ/xE}ZhBg./c$18%#p0U$MK]O=O>d(NGQb. +w`1JD}P:}'ih`A=hcZU4u kbMeՉV9iҊ~-FX_r'N>++D8E; +QB`4ԃs5ԃz{vH[Cje-ZEM+c-$u))Y$TzU7 Uxm];xs6pk +bJsS 5PH3@/*Ʌ.3rev.+k_ٶ0Ӥ{,wdh9(w辩KpBr_:lEX z.,^.Vô6T~GK5=Z)GvMw[n̳>\Q缮kD{xv;a="zNϤB 4MC rfh a]';m$gxF[bFl6_7 o7䴺)AU輺ɡQA5h8AzvV,Ns!eL83 Gx*NgLбB㐱Um +kpooȱ>^AwP~1?OH1Łi=3LL{յ3OǨޥzZtnT!ACӷyFsh"D3\p-Ds8I?DMy`%6U" lBgE b eJ2L^U++fMOe?Y-k7g]ew+bG)F)O+a5Xs\3 )ς@x+܊f֟btRk(j/˔? 'ODT up~ `$lF򙔱xV2eы,?xO{*PuAo_t?_#?%7j`X~|0^@0WANx絔Ahieޞ`og?hΓ|9g|Ht7B|{`'  zh%hp440ppX%B0H1Bo FʗRQ>= X=Q[LɅCy+)hEˉH #[!`|E~\BAYpS8RB7(ˉ +ro }bL x`B/Hb͇C<hƠ3̕A#z jAM,H`Z&)&5t>2L$U)}~D^ KK0hȠ ]̝ACo l`rI$! 2A%r|INeJvv :2hOZ1[•XB\RJj٨B: Bw,\'u}GEugqSFA"3u +DPAd230 ",BK5ZWcM=hbY-b'su߻}9(zy'V&q_ Nq%]ev^Hihde-r8hQA:'hE"[|}mqBLb?ǖ( zŨ-,rw( e}ow?$kxo%7WCgҋ_w?=߷{'+E;oKQܒ(['e8s21E3fNPxpz]8oW.Z ?Y̬ Y 0/2]7\ +g'\e +/p@w$@/#@oZP/^z~>+]}A&ݙ;U'Eb;w>3_q)0JƧ(:@38]z~@Iw}҆<4{~ެ>;ܛs\Z&Uٳg7'dY>=x5qχ&G<ޚ~f

#z}b!\ C a ZdC_E yN68=qh~y&sL?ݢ?`xOn>A]gwd-MwN6]V@A`Wal-pM9G2p:ҋ},b>H.p ,ݨ?$Ev/6߹r{Z6A[K:K7]`'QkԱO/&f~e%<疈JGT؃q=ѱ{#4=]7nmtۯ6lM%YK#٪w͡hOPc8O7cq>_'d$8,d_۝P=>Ұ;.AԵ$lSlEGtmMֈ6eY˩1sC9z:N(#5hWұ0e7gRYp" S'g67c{g7'upKJFu=1Ŭ-![ܪYĕ6/Yn"UVѩ6̥2+yy]7Li :Ƣ8н}I ڍ0۔)oS1ņ,؛m ;s䬞l/^g\Pu1$U)&uMCR.־:acE|sejkQ)Wjvţ3q$2 +ÍxAe Z!3|gVglnG^[΢ DY f itMuZ<ʾ$ɱHѩII'ܴI7r/Z52ĉȴI0.x82LcTe} +AO)tX6eiʟPj=VٵuZaIBC]U(ReS*,˶I+-K5;w01E]#.BdSc +PFF 9Pg?\Nay4;ʛfq+ Fuj,ĚqҘFYdNʊmLXŠKhLX9:RXU[<^H}ݍkW J8 +(8g6NZ`jNmzN?f`afnMPEESkٺn]6eyZ(*X +)JYYػہΞ;0}'MZB׋ǽ2-c$)nJjG%W?ō'=vpUB`J56<ցYki3d^S`gꪉ~E+߷bz + |NXc.tsȥձK,i)X,1$f=baoy-~KU^)5cFi(ޔmJצJGxiqoMnx$p̆; .X$lhIix^IUDnIcDܵZ"sVIdގ5^u+7r~v'l3`Jy*qEX[Qsl$S}Fna)kֹ9[V̭3ʮ؇-%$}0=5P-gťʁi\&TwWQXJ(W wݣwy2df3]/ӪKR\;-] lI6h )wHp8_\ɞ:P;`yVCNdQ7F׍j)3u{&կro7$1T(c1f`6ɝ.`2Wûùf6hXt$ G<gSFcwAUQ˴2-Z-~ˣQ;"ijro`R?PTY@Ƈ& cO!g|&_$#%;`?;}MCO"h-ݰ} `;+BgDi#3~n`k/b݅ F I'3@9=.ak[,m03Lv^NOй^6Am?tuނvU*3N5?evSO Hflo|oa1:w4;pPA7 -`s̟ɹ2;ك?e[V`'` x@7BdNqL9ćᇡ7\.,P.W/{rg̎ X>̽o,v$'ehB| CG{"$(C iJ0~OzJclr}jO][B 9 <9Sb(T/yf(ў:-TDA@'/R'yN[ߛ3?;nD$_}š-&¸P9U^x<~4^.0#;ߟi%G\ )PaI6Re١Ԫ֏ k괶MM6ѮAbN} :F9UrꧠǕiE`_PKufT :kA+i_ !7!q6Tt-? A$b@k"q$>ǫPZ%vٱDX}ب]ti;֨ڹS+D7Lj:##ݢ{-T3$88t%|t$ˉWӵ ki-Η=>wqڹ\wYsssy6%6{6&]jH`T$>5@| q4Ay@+#Wӝt[ZF⋴dډS5?gcb)+ )yLeKgMi4Hm5M'UvSUX*iIXgk{YjveVc5 Sհ|w cemyUWo5+ o" JbZE( K!@k@E(޸junkn۱vvt;ad?=s9s߰NJbMH k) ^ ك{x s%' 0!n%&,%^JR/5|ϹR3qS։ةPG2{4!xW!s΀e$ kg|¾Ct+J\V卵WI*9}V8=0MTL$[ƒۘI=!CCY=2/.H]r³ זDظTuYc繥ΕAt_fMMtfv<gTF0즎Їyj^]w!S[lϩ mn6gu4Caͤ&s>*Ie#YBCDHYCB>9Ήװ{^.p!g 0e b GP5&0z +ޝ,}`k~ I_Zȭusf털\;')Yh?P[xJ$  |s×jߢ7 A R7 +`LRʢܺKeM + "]`Ȭ3VVs͆v~YQaIH?+)/n(|+)1"4#Ucpу. {F[UQyнŜX[W]_]j6BJj9%m|cqP4*Ht+rޠ5~#0t`aB 8Y0O0{Ͳny\VQS +(2UXEj/-唞ה^dޗd3MD1AJ^W%fA=X4By#45Zѫ ޥ~E@C]S_kͭif!azSz;\Yu:\YHUITf"P _]AxkC?4 +`Cz'f,@w +;kW j0\Ž-nؾ$mˉuY [uMeW/ة)ZxM* u]xpNA{&q38;p;@57h~D@t[ۛ NDn^>pW BCȃz`uP y2cc}8ܻy3itu` cOx>>ޏ;x}~lFຕ@Cq \֥)bJr:ɣP-g< <ܗ\;JܖᦼUp8^E' 霽:'8^vMm -,U)Q٬jifM~/-߿-4˩ŸS۟*p-lQ犓|P:Ma(UOUϰfRn1MPm6MWf7 +l0Ԭ7m\keYb׭Vh %? Z+jslgXgzj~:J[EJ,6PnLW . )lڜk\]n^bԼfy\d\h,7W9aSs\ Nq+H +eu-??;w +WtX1QcJejtȴ* +OY4KTh;7h.?~vP}^P}n#~zБ]N-:3.mKvʺ{:+=TFiXCEqYZX, +SvfU6zY_L.4W:~Frǜ !{vziBЏdO%⹷7ubM7gjHwP,,ΏL떢u͌lsdvq);|a\NwYo _G=97Y#Y.{{3~,K`E=^&W{^VocvJ4yRp }بR=9$A_ٍCf =s c;eH~kZLtNr"}zpppc-4CJbe6%%ppj\&#}YI %)֘ꌉ!;_3T#R4b JIOde7 1P,,.V:,UHA@*`-k1Xb]QQD#UѱrԊ:k+ڙs@wŤ,F/(GFWύ8;jSxTQWc(a>_# }xk+$|dm8IZ%BN(If4-yYrR"!1ba\eLBUt|M,9"V6:p kv + A>0^舶Kgųf] ޹>-)9;r=$eѹ~Ȝ9aّʰ4$Khz: w=}lIV|(fYb.sFx <%!e3˦˂KQ~-'-Vy[M(Yc^IWؒSڎ]*lH!)6=g;ؖm^!I.I}*$BP# `hKWjlҪP3yU UeXxUYRzVnQyTWW+>j +a^c{s2|s@鎭WU[` |7q8P3kH̐ Y I{6+1n2w55w1lmxk:VXX\s;}FZ:K+* <moԪYG]׏[\?Mx,i+q1K6HVȆjdCLN2T+䃶^7τ={tW +MDofm]2 kPO  3CwǀPosc6.C}$NKE%q\[Hv l#z,za ˞u?0 &5M:0h`<c=F`ӒrXBz\U3X>"$d382;s `. 00(лв]:!e +mv0o E2 +N?!kvN}'5) i{M'܋HDrA..iT5/Z\/_\JyC2h/`pB/뭐yO33OW:赦;X_*8kx!v7\[cی@77,]N)KOgͣp4x0mځ=jz/ȏI~"r~T<</qC.נ(++7&F,(,ȲܖEvvrY˂+  ".!xCEh&Fmc6If:i:MSM[vڴ}z<_9y>|e >X6e7pmŕOK\@$ dXqu,xFVe +*U-])[kkݵMp={aj1drrr_w~ko7CfC $r"CkKGmoWkqKp/4 nRZ.GRZpP9E;}VC)g~֬(b}Bq}Lq==WΑHH둄CHW ׇG17r}G͛`!:)3aNi(-)>)wfi^Qg2z{88w}Hca kl!Mw07ߟWЧ>(U Qϊ귙.=CӞOQ[2 $<%b޿{?@ωlsc9ʅ49Lføv33 @fkזs5ތF~OF-L/jOJ[>})iNؕND"BWO_zp}b0L +&tRݱp@Gt>ի/`wg[]6^g@ێ֬@wV?Ӓt3Fݼ^wKZVw#ơ#"$9p7\G߷`=` +ci`@J0C1)Q0󊸞<+ߝ[ВrE 9{NÈaޒWޕ m'2H1D>O1wW9K(D}7 +A) iN3X&{m.,5V4 +ZE5=!8)Ae_HSGD瘃[xqz~\__z_ΒhlViI]lvcI>Yb9Jl5N-,+̃RaYLPZIXn6iH; \>b';(}-ügyQۼxQ}z ?jXxc^.=.vv)jdҐ0@+w(RV, Ư\2ZBm6^V{Nr1糨{{i'҈ߕ>j@k<ɃȣP]S!> kjX?7vy@E}eaOp}P, +(q]ՠƂADET,NPXh{,G$1qu]{Xۏ{@xgygΑڛ%_>`Q2l]f(2C/)멷4y赌A.| b38~Z9P rxë;<+"Q1ír\\p4éUp,2!9V3yLYǻH?RO VF*gS݀cju#`WDak261ZCcIڲ*K%\@]+!=bԝC݉Eݸr6ԯ_ȠAVh6#GdeYPV: S^ jO-Pwm.߃k=?CIl3Yw8ߕF6eل\dikbR5љ&+"CV!V`zmDQ7+|; R@.Wtll]> 7 Lb|II}g'&w!h!y6N(F{;Q׋]# DuOrLhv/C?[7lO 1yI#_ҐWhv<xռmּExD3=桍i<,`!Pqk6@kA? $#dYM6RDJvRK!u/+~xI!쨭PpW;H32$t䐍dur +.2i.'WG ƙ5H?2|B>N"u9RkC:k%2SVo>~CG7A8RWm! +GzjXjMf|tX@Tjds"@# ~I p'4q7F \hK_hZG9&ۇGx}Lԙ0&He%rM8O_ŠS 8tZ%#R9SThgG8A'5qU˲h%|:bN+qJ'98̃UYê +4jpHՀ&|W2cjAxQeNW^/'7~}6}pV7lGX3`?`8nsWu2:AC=84aT9F@YBz7ˈn.yJ\C;N;tQwðԹGT{$aL敃*|Tx{JHfKi +IA3!!Z=k, `;孁Pg} lʎcPR(bdl HVJ TX)Iy'e~LY֐՝FRK03Ov@ol=P4[Gas8OgHy!s!) !!9!5!U!쐣eOKC"#TțY?]8iG,=c~3XP7la(<`G`q8AZc"[eLeʳƕLFEq2ݸS^~EX(\(I< ԝn_>|r8nU =+LXcFie%-7e&2Lt\E)EjZL1S-0FlSϏ8gj1=6 ,Pe s :W|j +{Kھ>XX? +#e&5E\F3+Pydvf>6#hE ()Tm(O|ǧJx bca@OdFwƒ0XiQGdcNR̎LNNγ]mMV71.!Fh*a`+"}ccbuX2qH &̏(͍͎)K#"q4!SR4VhuGEyafav .D&葨((("0 ̌ (qh]\Q0.cMh4rZ=&Ic\kmm&A;8}}yIirjIjI4j{'JxU?3~F[6a>(ѠԦ*CPnH t$=WV^PVOW5MߡYgMYHc֋*^TZRES.qaQؑlZVudD9TfCi*LiPlJN]Y(_Yeƕjq&˸KΘqZqC&#CT ҏ}mf`69x%RuԘTfbK0ʬcQbBA>dbJxyhI%){rs~0AZy(R+‘R9HLT I\E4L6-U]ު^WY>J"r,JB2`y)PK8]LWA߳H^FB@̯}a瞂hĺ0ǝ"ĸ3ndX宖Ns/nO}M><<P{ + ~u@7hYGo ڥŠ$;Fc@G8;#\<өG] + <M hw=n];G;65+P`0^ہN``~ jCp(C!EAeaqC1}C"? 6je6րv1.Ao8]@8B{|a#hB>n~psynu󘈿+27ԝXg&Qs459=@{?0# pZM3lF{p3,?gyٟ!a{(pm>/д.d/`=fC70ԧ'J"H5K\~¿ƍ b^?EnD|B]k4RCIX= +(z%-BR&kOm?rw޸p0>&?62j4hGLAIþxq1GxPR*Ǎ+GsMԝPS20l<@?F-5Aո޸5ZxWXwq+0"<⢤MT8UKƱs qW\ %uW7hZpYӉQ\ňv ¸C8? ΍3n&<ĉIdGoN~:G ӊx0n11W&%atrF&0- _NI~GH) +^?`ST!|:lG0V#ӝ84ߛш3۱j웹 Cv`p>ݳ10v%%U'8V? _LHjȹ{<3&̬)8>'$r&cp{T`: 5cgP'vö~ak?|^ .l +>/څCք|/@܎FcyG92]ұcq6-.Rlw/# û º]bO~qui;X\/=R}F4XLk6c9 b r&G/Ė$W|ٱVW.jձ*]إ[/vI!-;*ޕb$7SjU=c;3Ҙ?ov$/޸ذ, +Xn}+Ra%=W.H Ƅ'NQ?RjjWr^\ Ekp4riӊ 2)I~<'yNGWJVRn0͐/BBl4ԉC6 rUe8T.j* w4eߓ(N*;STu˯lU' j^,^h71nFȘyP"\ֹ-B-΂d,NJ`/( +bAAdHyղ֯dۆ4fi,5L}2dZU%3_S11׫=W̽H;Xx:O#c㳪EpFIB81(rБ-6!Q"ګ{dwY>ey&& MCMZMZr4;ej\A+XEq 挄2r˲S/dSYlN)ݹINuVR55I4)I%)RCm|GiJ%i"ߋk$UNjr!ۥɕ,]]EBLHuW ]򲪣r|ը纯UUT +U+Wg`/*!mMVXE] k#ݳFz}IEDŽdAyZ8Z1~SIOrYSZU!ϸ\R㻤Ž@H55 IFJd$LEb<[ðu ⽉f`ׂX.omBw{P ޻bh'bh*6FU {'Za'|/^@,%#k& jU8"W-EĪdĢn+ºKuG|qXYĖ,$&niTUk_p +"$DԒPJ2UcLUjj:Jϕ:Gr#y<꒕Ȭ g*]FhI#tM#44B3`i M7-a *tfpY Sa*gC~mw@^dQbOE*<7Ps#)7Fay +믐 + +̟j_v;\y)`jcmAv3yf.fN5`={e!/b򥈥Rpq/R?- T@iڔʿ4A~kS>jmVҾU^#_WOjYQx?Vv&gR\)"K/ʥk%O<Xp1Pom$5qQ cXFTޕe) +SM4PIYhx>]B IϕR)51JjIb۶21 ocR P RCk(b Wovm7) + ĚzrjE oTK;$]++>v۽ c~ǏZZ}-ͥbbjW#0Gi%oFɺUh$/5?(G ~ŏc0$~b9EQ:_|F^}I;l 5wKa MchJV0E:\:Ǣt%B{ KuL/gds2y4]!T=AOI.?H+XMXPܥq>gA*KczM#c/v?>>~_zNo:ptp0JSjc &C0&51II1/gה_q0ބ10fXP+` -6ПPOls&\wV6= 0a&~j [Z=W^u_:Rtzme.4+k4xƠF +)O ίu/`@hȉ+f7r}!>w7%,gҹYn!Kktv> KP_ ٤4*3ZzCǪljjm3S/`R _Z- +N!Mhon6\[b6R\wϑc*=Vc=?jCZyF+n{>@NZ5/bF*#r#7i{YQǍԨ+ƌG(HyNd7xg{=Ê6Wvg"7*l.an ZЭ跔=Js'jvLbR53fg̈YaT2c?5b/ScSbM#I̯\%gˌ\}2|))enE1>=*U)@=Da)fn$[IcuhuX&L;by7q3qFzWhD{o͌ qڽ]iVK4+>B =5#>4`%ۆ)6ZSmD{d[1ѶИ`+UXj,m\Fλݳ 1g$b>ã0{ KHe K"I&L2IfLB&$$C!"ITBR, @!(}cVVc] +B_Hg3s9|/>X$E ҐcU8E5IsT@U-wdґ +G@2#Xa:Ŏ;BGYn;[ycq9.YK$_mqg.j]L,kc acSUU +TE<',ݩӣgFsQ3Lw[,q+'+yN+fNj?g8IK+MuJ,Ty]̈Qif3ȝ;KnEFk\mǽvo[Vr_\GF9ƱlMԀxꉧ,'r`fE8;J9SU3GK= qɔϛ\o@^o1Mfg<`9={4cVy+󱕒c}fCV?8+/n-xBRgT7\c_-or}'w*Q?_n0#b&w[I^+Z\xm&}$=o%PF0 7f|>xhA,BeVVQ2#*RzTVj|&)ԥ`- +V(!x lc 4o2cؒbی-͸"ۈ+c/bO~o&j`C5o(]k(FӜUʥWj֪"ͬFnԴnM=ɵ(zۚ\16&gJm<h|Pu<شZՃ4>\3 i7ѴxMmthJcuC2Mjӄ6ii|qkzCz[Qk`mD#hl#Yy&-)tS4s!&E:TKXܗ.S p8.jkaR3нAWe4ހRbc‡/L>e~>g|A`fNmh5@8 +q P`%:X>qBx_]}%~1%ޅ&V#7B%B70vޯեh>g^}~$%zEs`@}xËWbCaADA z,EL +Fe;{v0-[nrt#Lqjh8Чm>GulꖀiEP0'oeX׈?L0?gpjJU^lbPx;w@x#F7b;&"awQ\r㑗#G~-QXM7gQ;O-SQp2"G#q$*q`i9-2 v/kΘV#cak6X.#/a86`Cj~c>11_Cqy,$Ȱ31;VcJlYi$+6%90HAOPKL=PISA&ze?Z#tI %UoW9R2yWP~XaJy;RU496*pz9֧1ڌv d?}ѓݙCM7!Y'KG=2%|'>KL!rl/碗͙s1  ec [Do=9 V8PxWtS9ڕ{QNUy^ g#?¡3m>K,;&Ygɸl`\*cїyŸ_΂j +([ +OaZ p6¥jJ4 ꚰ>ªzB$a-@Sf4(cCO# 1.aV-EWQ|řh/΃D*.m^4aS$E0 u3J$a"?JE>Nśi^t!:Q%,r\pVhЬEv6VZk`n&AaԾ& EQH5咸Oͫz4KI='=駛qfܚ%piQ)CSU6UhԕêӣAgF&}F F@NZOIB[%*%qX'{j}񻋿UZLXj`-P:FC#j -1tBo Ag}Bcr:#w#K V5HA 5Їf$&"p|wHdꓰb | .&7P[M`븪oR#$32R$uHYjA\, iD"*cDAtH8MENLm]'{LwXǿ *pʐ%DqEׁ /BEyjMl`֓&8֪16Mn?H}~~=~_Y⦎%( )Dn(/WS:`ʖ@Φ%r2mKʡ|2LhLcx, W<$Rk3`\r2#s͡jgQ[ ٙek,3ƛvsZ+*Pb[嵅OΗg +S3`VjeSˌ[ۑCh(u:.:.Xn0g<̙+[F_sa +SyH1g`^.@Us$z 4fp'Eg  +m=E'{xK4bX94s퉮j#MCd;srÎ]ر;ر;h(|Ful]pwr߇ {)5՜ ݌>4Ap&B4hΏ{Hc_N`G#I#ůKuX4`;1'-cٮqux-tɞ%CR[1Y~ւ}8694.HbU(Mm™&>v ~fتnc8!;ݪu.4@W 9| -Mywt{>Sӆ#I? {YrU +nGL_M%݁{ց 0=&&OVۃAcYp drXw@0C̄9P eP`~aY̍;ټ' K==⭇܁uޔ_8 l4r9 scxƎi )>s]u ~˯| | \K68ش +/cHgi? ؂.c*Zkl7ң49Y}]ZZ9flAMOŢ:#WϚdDeo{g)Q~hAN^Z0UiEUUnE&herU|w+Wrm]w?<5nk0I!vßWÕ_n/*}cJ;U *4X;<1*J,{T\,POfӌov?)E]C)!*mU2a.mTAE5k)7Vy~7L9ɚ?^3kz7P2VkJ6Ҥ3J &=UjE7%gaz<+Ŗ7fn^ jzM9X=G(eJSF,BW(5x&k\A yOcB+%FXZ(.EQ6XU<+Ė|l%69i!]552{+w >4)l&MPjX&и /SJ +ج%E҈ CE#\ 06C9,{rhaVᮚɑJ쭉}5 5D㢒46jR'ktQ@#bjxFOCcNjH, Q-נ\ZZ#mPGjRRc<5>_b5&.R)qo%jd%ŧix|4,ޤ5^JأNh`'P-?<*?we1 $n "" 2,0QNHAA(MqZ5q4զM6mzĸ&ƚXa9}"ΡlX?m _fK1SU@Y(/ir'+; ,E&C2 2UZJRSdHPR>%RBNJO %$HrT#,g= 3 +boeȜ6RpeE+#=ItsjLJ26(\MG'qA;Nw(4bS:F @QU5IVcwU^56=VS5Y!r>><ekzP +)iluOy-P0yڇ>+7{4>]5o_pS$l7SO7=ϡ~z&j"9Ff3A(h ܚ4K}i~i<[dZ8ZL-P kygຈmlyh*^/|3Xs"kĚC 7IÚ%%m,1ϵxXE# C N01ҾCP"p8iFjz͚ 5Jc{Jj}?@?6f p뤰;YT':ppzybFcI7xZZ+ow^BmxBP\wFzw>{pbGs֏ ŜC9VM(gU8@xuq?Nx;AEquO/Nj[9WuqN ?%wŗ̺75f/NLN>V 1,vb{%Ө;[|;xR>prWJU}s_DщTMNΨ@Ə7𣋼:~ŏZu[8}D|E Bm'|.85go-/(t"шZ:s_lخ|l6bsll29=قldsۮ"G'#$:D b]Pr\l.`w,$ +ϓTVWUD̮r]9 ];A1B9 (hr4*Ѩf,Ry ZDd+G#r"pvrԾѿ+`ܵ^ Gk4:ıT-TiL\Yn0˰/2,3,31 $vcxKʭk7V괪*RRU~V.Q*Jc;R{;G: rq+YȦcn:JFd)ﱰG}VuWj폴~UeZr6f_T=/F|Tg"S8%S[K8]ͱlsrx[}嘽,Lr fÄce.vLg2=&> 1,wvi9Tk%?k5t2Y$Dq"nG9orj8`!E8\IL&1B(iK{SH9#3jJCq'_vDSyʝi%SK,'r %pj6iLU1݌2ьQfL4-0`tݙ2y_ d2LG_d}>'.zi{XdU˜jɌf*3Y&w/4i'p y-0ws_c=om)]Ɲo6t=&ezX✖.kߜ,ȔjٯZ͛ٗs J*fwa=V|En+x O=ūt?*%o^ΒVGaֺ"tQޓDY3%R=V +=xz1{GN]a92k=c`~53tRLrH[(m $`H#Ϸ\_!9 +}ue1ӿH4)$(~I$ =5XE_Z#_t ^}Wt,RT$k$S @:;I Th$9")Obp/ yvOL\Mb&&+#rrC|ǥĠp!ҮZjBVCq$Y!6BLaCSl aTdo1'"lgqHLݢէ9(Ji+"J_1uBp:ع DSbsMa}aܰnBywx fkf?T#VJ٭aH=Aa+\89JI_4)ҟMDZYXI׃(ORS_US[Ƕ\[U\=%=@vP5,O8"Y=%]6mzI0H_)K0l>.wR )ZL-vj5!/Cp'V54Xք,(z۩g C|D' z "9&5xZpT% -vz'57` BcㆎS}&Tyi0(:5 : HtRwKc)j<)^xrS긭Mz[95YiGcݲ9S OkI7e.5ӍB 2{2ceey(Kk]XXXv]`9DPEEE-}3Ѫ68ƨǚ&5UcըʹMG϶&iLL9l?qg~e}yG㣍 Y&FaV[O?r&4ݑ Cƹߢԩ~?pҪ 'Ki.g]l穋 LhݷS c)+C7`?vj $ur.{gxhV.37kznP7I7M;*D2f;y6U+6S|}.UXzM|;]jsrE5zH]< t9}" v@ Z3a,tS|=t}M>|\sOzO BVȆB}24FQG@Ǘ9 3ЕbA\Ru!u>}p?^0zݣ׽C.RC('~n>_~fb/%||% +x6Otk?Sn)qG>H^WBԟqsϨسu8Mhl6uF*ާVc%>V2e e摍ϯilJfSQM49αͷhf x%{Z1p"ơ4-6o,P +4jИTmnq_x y-5+8{wn}W0zh%KdhVWfvWc!޽LӺR8MI~Tc&X[Us<1=/gjjb(Gˋla5øph?YCif5iJ_&U}M (Q]HѸ8C5 TFU[UWo<=ߏ2pFqZ#-93#gjҔ>(BlQmp֘~+~e_UC,dlְڪ!T~q >O ИUEktI"2¡9*PJ4@);҃i Vgd(͑TG9du(9YgdrF wAF2:)SB}ځγ$:P^ ,g3_Yٲ5(ۢt%ggWk̮*\Jp5fuoQeEຬ(]EgS WgђL1P%PR]e`Yr#+sY<9Sg<);S2Ez7+;y*sIaSDn[X,4&rP ^pV,o4 P!2WdU薡PE#Q4NE +-ZE'̃>8dY]p9dj FEvǮ"!fRzD1j56$HӚ1ZsL5Gڴ4uSv~LLJ=}}}J,}Zҗe-=/kMي\!iZP[OhgJ(~ԏ0h.CM& lXoӈ`]~񣇋5顸{ ٽ ]k4N>brK $B])f:[`ki8`ogg~rr9H};¥{Ev$9P,z)YJ\BcU?t-=7L0cQq-)8ť|?ct$`]9sMxB@w~DŽ q` +a2B5XXQfezE|^&WT_?xNDH x&@QGՠoLNי1]e +?>Ǐ?Y>c2D|oI9d 88>//w@<)3̤NL ?>ď0՝?{wgROyN9%x%cd5^ \{%e3)/&.lخlln应wEVوvϓ:^<@G!.b(?hDcy2ĶuDڄ]?Sm+_qх*?J&v%} (nC +D:\fkmt*t3zs7]/Rk3ɰZ嶥jm\Lʤ"iʒUTZM8K[T`T}wj9ME$QnrvJˤ3i ƗR-gE)v8T:Lũ#5-u&0PiєA^MԬI_ ەO_ kx +G҂Ҋ. `+ܔ9"T0k#Qi*7eyG(AuY`w]`e]]6xM0xD⠉hhԦ:M4=$ΤvI۴;^37{y{wiJ>SMM,)O"t]-)n~]6pDo}=׿%؃ +M|!.oNP9M1#U3&_,UVSSE嶶i] u.XwzHb=xpgيlAS!|(^UEUY\QYM29m^a,-<ٗоY.e|9)-0pvӍ*-M0 &]*pĪ̑,Wi*-5,TRŮ:&5UW27j{/h*u]9rFc3e.KFB|P e;GYli*.RQyVe(S^&OF{f)ӡQ]FV>L+y>FG*^3T͑[|oF׸[SQ5SӨ|3kWo2|ەۯ4 \UZ FoTQ=Fh.& B +}/P06Fk[yoHCY2uLRz` XmJ-ocB2)f(= &rkxȧPPɡf%*!BCC݊S\bo+6znڌ5]0Pp]W>mĤX6&*%p¹J[4,p(.ܨ0/6&|f,4b96Dx5ƌ@=|mA{D'Rb45AC[R@pDT#EMaP<0iBSBca<}P{{$7eh6ugrј?v6ʜMncښ 0mx9c8GXfH⽓1[s)V)m)nql( ".ɣ=åM$wc:<_O&(ӧ &⩒iX tSK(kRˆpp [eg%yt2'9drcN/8&s-[ֳji'7UjCm^0}ƛnr ]"W4y&걙ztG7B=V6,Ԣ\1ovaM]QD:Ro ig3tt:~͍[`+<(f"$#I̯e'{5N1bhof=Cc@~ Wad 0*r޸ΞqM&:$fϼɀ$`8dA>ؠAd,-=qB~#M][}wuO|ʯ~g ryAXzEa N +n2.SY4yy]C4b9eh'{̻Ja,#tZ\S Z!}5}L>U3 xG;h^ms{V3]8 +Je|INS4hTO[}?#ĞIybZg)W*7eƻjArz}}Fwㄧ ShGV4\ԭ~b&Tb n_}ث ѫmM-v,ϵ'`| />g,ƒ8B-^T*G_L|7{٢mӉ9:w [iɨ Fܤ`< W;k,ExNT2yg?fۈ_FtA7 +Z9#9NZ֓I:Y' +\9yv2È?#KBh&t0UjgBF5׏p6XfƱZtR'e]o;v.p8qNlp9&MNv-mvJWrT+[v h5[@QZXA\1& +  +!:'}<_+Qˌ7ъFQ4$M,c]OxaYEVW^eN{{J;Q>!ctM:^FݏNtf6R;Iha:fmMEQڣ^C")RQXs< +uM!}*FjT tj"W5=dƲ7k 7,jpV7PE,+s_ܴb%4J{JCvJ.Ym\)Weʘ&+W*ߩd~ +Z4ZHAD˜*@#S4hтk"6P:MAZ]ƴwRIJfa X<1ٔ0974dnҀ9~sb}kIieF˜, WrFAeY*]YzJ9ZM `<ĉeȖ" X-V(b ֣.:c +7(hߡ} +Skj.7-}G\ܓ<:B %CYXc)O/;Qb-SOYrʫYVI6+^UrD~ǤZ[ث&xFNjr;^Ɋphƒ8$:j0.kQmRD5jq*P mZjj9Ffy|Bu|A5WU| qOPٍQ4` z=^0>Eü^P.Z\jvW]/ۧv5GT_?(g\.&9=A6Á23|43 #7964U_.4&ab1۸zsVW6t-ribAL"c+ǶDObIcN9TYPs46LJs;0c`w^@nwUf 5V1!a5&9f6Ԍn&لnތc+Z$_-xIL|1yyuz8c}:`?GgisyǼO& ٷ=0ۃ>9g4OdNi8)<|.[O+q8O^aX\ūÚRZ#u}g\"ӿ30+FHaW MqM7-:uqSu_qp?a`ә>^h^; s͌I.1_^ }C~w=ue|>r,!݆!ytVLX1K/W[e2c̦Z^ً@'~yy_=ͫ O8v?;NDZ%n;7zImvݺ6[E֪] Bҁ( ʠ*kT.T`@`m2sQS>w{y+8!hn X_8wp@7)82}]c^e?̫ +<߅o79|NFb-COoc\#Wp9/|^u¹|<~KhM^#80lO1|e.c_ރw&2؉_3/^P'=C%i/pZO~|1!} +"zARBLy,|>Osyx4c$csyy0;G{ W=hϳ<*wnY6e6NY]adZyN8K΋eT/·df }?edNaA{)tg"֣=Sqy9 ܯ3 +OTnawj~ m+'`6@;vahO0y$>f{;{n2ŵSϰހa<_֜B~c7EE]TK2/{]B?J5hgI8Zrs̜y)u&x"<参 ǃ-hQt1"Eo2KnB>@6X=GRff}6CKc@ ZbKI~hyYE6VhF~ , )Y}E SQiT]ILkiS;,>Dj+>V%%9ib"6N&!ˀXf2ez˪cU99Ty:;QޣeJZV2V˼jQAE-\RrU!u9Eqs mohn0*]7t ԵTiU)CjꔴXSҤZnicƄYEyj0*h|JTgX>E:'?'n݅=XK۳|ý49u_;-s)(WaQV+TѦhEJgάkpnr*[yZsrW^Ru pSngN5pwoc-u@[>C )VB.1WljtU(r+RW:긂 +ܫuonkUsJ5_#9ϫ}*s:Ļv|OA?tbqo&FxL +y,j+P[ZޠMyu7)6U>(g9|'e="|Ruޜp-ĺV|e:^$Z"s~|KwF@܁rҪ d%"#O Y_%xQgTxSJ}NBw3h&hڡ{Pa\a.UF|rFBt-:'kt,=2GWY!D.5Wi8{ 5سly Cc~;7zUSr cN1d5OQy|Lj78SEc*hct U +9?ހڣس^V>7CPǵIrag+Z +eʖʚpȒp1xiE%ɔL%I$1ILY( IpB'Po+h{$qh~\r߅uc H^"sʢ!Sʩ%) +S jV `V4NaRRRl֝Iّ]hϠņd6h3//LH/S/9t5Hu i࿏{vw #A<0sqsc,1|rl7mF1f#+>i<>]s 4y%lH*P_rsN0+8t&ܧH()^b)e`.ɐц?:񣛜M'х.;q+\̎ ')'/aS} 0Pc7!g y?QK9d% .5u!}0klVO)^ތ6)`{`5=0XI}ƏuaK}u\kWr@nzcyGY<D^%-ći 5M7a&X90Os6&j>괟d+V곟Xl!y}K؟6Sϟ!s=U|R</hr뭁H(!0 XBqaC*5?+8plI>| L}_cuM;9`ͅ9x7Z}k -Ǹ(dD\,FN?#'')3q˥|xCulb3׻Z>W]yD&Qp$ U\0!Vs%q@ϓs ,QTg~)!ĻeW9IнFsƺFA}pC&k@&0@>r0u-ys% kTmr YWIe{1܏-S׀CX5ȵG6(пјwUH}r:~\eM! s?ΣijOZ{$U1#1J ]v[>_mpmu })'hЗQ* 8fy +>=w$) t9Ïa|$љY;6f_)b 5خǶ&b{gbx O)5dt;mG/Q'*;)p XUf{&wѺИPn.NVjd ~E=Kx:\?דDtO`X >-`U2K@ +\gQQH/5?z ORz^Nl߰Ǩc~g;h$i= lYnl WP:l7`{'!n-n_%sŃtAzDwm_P|ت]>`tdJa7#u:IDQR-4,MGZYmbÛV͵ǐy,G1C,E'9 'F;5:KQL䥅L>f2H6lq~+93=\ssAOǾٚ5E^8BpDJ8jnV_D*P#ĸc7|8V3pw1wG6Q)pd‘GnRx੅M؟Ld4HR1è:g(UW^1DwAýxK#>6s13:mԐ`ˀ)𔰓U W\ᚈxC v~nw]Al}`hi`, Y̹ßI)&;U^U'4$yRTRLPij݊.V8uS_T(u)G9%RQ}_ι_m>@xV˻JP=Eՙa2åL2TYrEm5WEA{kߢ^y䶝UrF8Xʸ HjFJޗO4:Vđ,Y**U" 3X|WF\~96>>`b:ɧ20ہZyVJ)7WJI*vf*RRY N@9U*!k]S˵HNZe^+쮳9ALk=YHI;cQ5WR> BK?/M< +*ϗ'';A׃AA?L pew^g;n ,$$\ T +D8V^Bq2ZN6#2Ң >q;9oyn'[鐫%g+{ ]Il% +e VP!d"Z "8<<]LpUq-@ԉhܛ_! +c> ) $Uc֥ &Sa +(Hw#)<as29C>q-JFP .~1͵~L{ MHi 4 -JG ll+@5c`*o >40E70cۭ +W/pdK,1!a7fF3bll m B&xjG؄;@ |Ro.<)> ?:cm9&'4^6O/3JκsܺbCg\o3@jiy\g6^g8 9@/}o1DNQCbwD&AzkN# -:Ncnx_`='d62!'#FW?r&eRR;㚅ͬU[uv ~&v6IZFPI`%XEnE㮥>yl>7 ,f=F5\3KTh\5!%>擤!s`1kD- ^[csX|0>CMlFY} s$A n–Z5d||X`5?b ߝ%b&&ϰo_`aM<~H{xy71RX:8{WYIň%@#_&A%WL$u8xWXQ>8B>0uUJ &^pKd|G|FwUV3]6KD_PLpoFp*%U~/N )ڇGNvSO8jQv85mjd+~Ɵ9D!Mǧ);Lr+jOU,U*.V_ZUbRmP*Q!y7^'q~&>@^gUcS;Y))*wzT0TjĞb{*tT(Ѭj-JsHOU/Zl( "Tr O%*HV^SSSI++5W0*7BMJ3:eK1VmlxRS4Na\ɑJb1ǐ' A9J@!%7=A9$e(ϗP&#}cr?8ʫ +o6$,fwI6l~vIHBH&@J$ +$AkJJJRZjŢXZdZQt:0VvږaV;0/۽=s}o +|ӷCyd}Ke+{y3݌slP⼫`M2|ey*(!Uh+ت`>9ò7RN-F 6`|KZi +|A|lr :)wr(4KP +Q~RpBpNˆ/B׏܆hDѲ!|PNc%|a#hpJF0ߕKżbxLq㤸Sn~ǐ Ѐ (%]%\a8g|JHlHOq4di X65|ՆoexhE0W!Д./n{y೎Y|< scZlŏv0 :rEE0&u٦0k@3nIk%e o!ya|HsvB!'KA#KYd>`]*Y Ճr\tuL-1GlkKx_ o8I/9kA!h.\c 2ꄯMS~w9Xeqrđ&fNjn q/X6,ao=puV?&kyGC&g3dL(9!Qjgky?ۇG>-})wžk) +!#6ko,c\ɊA(fC~yCv&ړ{OK߹F*JyW=烀% qe#3pH\΀j<9y{@&/|N:gT "bc|'ku4Jg-_-__߃?[mrrz{ҿrGQ +-@t%"}v̨N|StLF8$P3\PEM/3y^b}"3ɹ#LV92l+C +3l3ԑ)eX%x?<>j* + +-tL4&qXsh^x_xONjqJtR{L(P&˽v+p^Z!3Ne8qY Squ sa(C2M~] +{mf{Lm5:'`6?)=|w|_APŎL籟.Li$_y=Bz?"kzDZ}p_!B%}'] J)(<5kn tb#BŅ9!:NwpCȎn$|_)nSV"xfO*xlyxH%k7xxSspd;I쯇o9r8+[@ +ԁ8cҕhC|E\ +;{Tn6ٻ4wX܍*ɝyyrgEo/(3?do%3$$`BH@ Ud(Q"EED +TPM(Ȗ-Z""Kw;=4s3_sg}ߖ6(M@rAk&Ь%vJ^ ; KgM@ úZ|u9I<9v,}l+팸 O8:C_ mk<b$J.!)A-A&.~OHtOHZsѴѪŭ$NVi%M["VxsRܢx:{u>4 gqYBzt}N}.ѽzDEģgq%+ġ~ŢNy}d8/aKbrg*bNE} +A3A "M~K[4[<~M [[%VA[rNj?]༆ey|1G@(h`*]S@K!M>b Gs)4 N_(| SC,u%7$ђ4ų `6уv-dwCaآļb1a11NSaȤϋ8!5F -ESw':{U!<\>y0?*>⎤3&C̙",\&57K?GӚ +4JC96g! -dSCI23!rm3A{Z"%I cfqdZ$-*<|6xcw!^"0Å("qkNƤ5!96"M%3 Cso#:24s4/%RLZJkM[f +ESjhrٓ\gRGB %xPEWjI],-VI^T0 GFZќ^IRkA#VN,c.'ZϕW:g/\hL1$iRUkkuRG[bNڱEAΚh˺نTIn}Rɻ@S3$( 4[f\" h /\4DSGwΆ݊+yލCF3gDv6gTT a[>u 4UFhF4B@?hI| baX_MbHДt%0>BS .z$f*|ըj@8:FF0'YPyH`pΪ4M LH9:KFf T{|jHh#OS4puddq'qm*i~RRB7 ೛%ljۛ ZoIq@>CRM}jP~D&%x8(D笚|9*Ŭvh֘Ws/wQqN2,AI5F(SB)RV$M׍luxUyd./(ǘn+ДЬB݆j>׍l[ {T38؂r99<cBvOUdN[`(Y9y +6izEqe-Z^Yqխ暶U_WݱSv7٫w8vC 1r17~¤Snco5{gκos~?.x?.|EO<䩥˖xz3ϮZ k^Z~Ɨ7ymn߱s[{o{>Og𑯎~}Ϝ=ϟ.\JJ]IYWQdg+/RKrR+kAݔ7) nƃe-ʅpa2b"NLUV܉w+3~ܘP~< y G+K<Ô+/b:&e+8fMy[sP>| T}<:I?().^J>\ͻ%~__b2lvǣaO G8#1<\|LҚ7?3' t뮶;f[mq&O6}ƽfϝ7 [xe+.j[ȤƟILiLT*Nhj~o'G~83gϞ;w?]pƶehbm֮-;zW_5a3Жj꩛sӲZdOG. 54PCC 54PCC w +u%^]/9 _ԏ-~kwe ܝVOѢ'~HPG VFծ=Ͽ1}C&|ww>/n{y /Mٵzo.Ѳ{_d'װ6Rk]/޳̾{ttp|gvzffgi;fiNд2/AoF)TLP. E["-)'-߶g/yޘᎀN"_ +)Uka"a>W~ՓĢ ?J!&vezzc-̣>$CkSFkCe\ )j3J-)|ʉ鱶d(;nZs>w'C71}fDmX4 >J6 3O;F.^hW}F]υ +{E"f(/c`4Ѭ7h^!}w>85KhʙHAΡ 5.-F\ |{Gq{im=/ZtUppdK*8+#KD0 +3{717@AoPa.57d0~DK2qH9yBCOmHLU1tՔl2"8dX2, K%e( %6@du= +םj^A\ˎ*$,!2.KGv[=ZP +$A=]+#zw^ XaF*bZ*SRD &^\4h`C͏@v~'x<\վAGi]8^@(WI<}IXA-edYÍDVa( e Zg:8QCHz,I^PQ%xI-02,탡2Ad jk.s[g-HQ$Xi}yJ&E|Ne2@ZFO AF# zw/؄9Ќވ0RYeJ($9J;C`M􂜇}0 P/69&Il됼:y*LYT~?W@lͥt%SYBfaC*Pn;ӑW_ހ}]M*'(bN)%O2qbzȅ)}^KgX $'mo N_u_q y[r=P"fUdVp=!:qܴ.K``ZJ s^9z5-&i *ઑ9u(I#ObDQHnƖP VKE2jVwn '\G&ǼԲ֠m0NJ\ɰuUH Z %4Y@" 5Pog1ip`䉳ߦq/g(MEɱZ,T"V $KM2TjA})Ï9;g/(Ė>Ȝf+Z5b m @92v~ jl̆q'G%7B#~̇ސt& n磛#XB. xю?S]1a^‹w>LpP8:H"Ol@H4@D E> Eߧh x 3{ =p~@bIb)y`o%65~) +}OztGr( yĆ_ x {L|@mT+5s7*Nȁ3GR]xڅ)|9x^d\ \dyb.pPdmkkm_"8'q*)c{&B?P|5 +b} \hXL35j1|%/h`?b!4У( ^@9 Sa6r%'Pb 5A(=)|FIS|F!'AcIn#V4jBkn    {C.bE aԞ=ag*"tVP*GhHLf)sUQ͚H%PY~5[y6V!zgkhpwK +Ly}\DM3 3]WdkijJ$#d=U$yA +7B-P%P_6`ׅ3$}N+5AIL62U`#%yWFSE E[V\Ks2[nh`ԱCbx. 蕽|Đ +Cű-NV>ߊ=jVy& ޠe=ή0ۯk@G +*h\̰O^LA m(U42fwO'pxa0|YPa47(t%1 Ο;\0^vwvgԟg oB l;e^cdUd ~Pb07(PfG?^;87rzĸ~_|)8Wх5SSrITdC!b@ As/=s߼tD[gnyQAA$LN'3 c8FBm}.)u#=g4b4~noUc[Q8ܾMYBy͇fBHOI8t8:K + |H{ȠLdT}ūoݸ\7gMӫ[e`Gp=ϡnO"@EdYs@\4yjlflV/o.=ٴBj:*n%}lNmg[SeJKn/T^P@QQQ@@PA/],YinmyRؽ +e[ +C>yE@)H;a#ssEfKϖ?,?_V3|~lEfAx8䌃XH?Br_({Jh3[^^0_S 3`p^AkOot7$磐dmÐА +P+6/ +f^ Gp1~)$T1|RB.玦TMI千.YoA777SCkCɦC ?#4wPO?Nfo0qZbNYLn~(VbOKmkZeu8MB ̵Օ??#Ȏ,kNDs:#:'>V\9Oe t̚R2'L掞8Nhmנ镡1!?mb#~GPqEfV 7UO$K.R+ \f9\cLu%uMXyߪoNhkGWF 5Ak(9ԁZ$)93Ε4RfiNb]6*MZInAӉW2v -&Ġڷ6[ɐiuL Ye>3YK@e6rU/"4 SjbMCb"5b@ ЇIUBEI*w:SW.+Է[i>9Eߔ+UKr7Se@p^*6A3x!Y!,!*y-vANEM&ACӫ cuԆnvC$e^X_/.bm[rĠyb g \)ƴ&} IQRVmz;hgyn46,bhغ ;WB;b>tv/KWt:A`jNmg\}CEŴ6NΠ7Ҥ}4E111t"/,1AaO\4FٴC AJd2ȫ(8Um3R HaD ذ$[n+A? + cSΙ# ͺvUD֜Zא )F/ +(F;Lj! +14! +rfס^w Y]1|6QHUU5gvŹ=utsԚSͳe׈2xRKFEMP81H|ZOgk15zq4`.dzXFPV(3Kd&Z/asbP+KVPBCǎOf{~4]=|RPIZ-` I-|M)z圾ЂxME os?߻IocA?c)ґ]쉗RtIZbAe򺣕EHE)B)2*AW8/1/o\#=s#ǒF#l{t%/NՓ % ʸtM~aB4|}MG 5 qtl^44ra8((>' ) 1tIDIz*5+ @};XpgӻG\^km'#!_ٴ_DTXrR,-s4A8K`qqY9UX[~M6®QUA۠]tw \ԮUGg<6`**9{".#u 7 '8́j');m{k&h ho''DX_A!NW1K)LY[FfZy on: L㆚ P 5ۗ@+@t =  򆶤YIVS~AƷST*e\W;^^'cF:/n΢wt@s[\d FPEt$H3>eOsJ0)/(kh@>Ӭn fvhN1{vgo'h9_ >u6EgZcin=aqWu7h4(N~ ="l'h0SFI721MGMl/ 4d`B mȠ84'<@sgV;5Q9Ts ny*rQ(FRiھ,&#{ZsJgK|ݶ ۷6@|ftgB&'=TeH[H}U{˚6˪Zs}I/S9K 'h߷ +T7P1!O I=;scPcƪQm%WY.(IM7ـ Ad|LgGX"nJVx+9J%rS}Zd5LV%THdHm/6%^AfdP] ={}-*[[|SJј*9(#6a"[R)|Υt9Xe*\of{{8 o@eЅ փos{Ȑ選 WtEi2ȕMe*icAfa<&ZOki*QCP:gZd`"/zn߽ʯ'mytSqф̚t^s4{g%wQ5g,lmEڬJgd୛ m?gz݋NP*|3I;! RʼnC䖸 5mkey_goMi#֊NǺ_ъbZԊ"( D K! ـ!!@BB "ua(nXQHU^h?ܿʪ@-g{~o٦w7iaݯ'^ EQG TŶȟEa|1Hx]&]-E"͚`^?eܡaWtLmqu~)~?;I _)OԄi_hY=A.3+ݑq+rnW-n/^2禰gl}'=$qϛ2 &[ftC2.L?+N +z*)ShSes s +)[+,vU%8Zyps T z;v6ُ.3 -#0l&. . x D ꞏ|ces`"5^Y{JOD'"E5 2p!8 ;Bq(7n\v{>F+,Uyv.5ก +.I- +vA@Dl 8p}!:.uXb,15(`ռbYȅK2Uw ׇ _ yC7^R@qX;o;w]8|6s\FV[a4,/Aqp[k=;\ȯ f+7@!H26:C6 pm mlO +8{q\ׁD!P@rԣag +BdIR&ԉqMYϢhc.ƓޜG{a87Nso5dX݋`J#o;A ccx⇿LNHVvL7(I sU g F3LcL.SITS󞞹's1{.bXܛ|mz^y3-9D^鮒d L4T ~m8d{嘳@_h[;V'(PJIki)%F'\WTonuwWIeU'z+fjol/c}I6K m+ΨU\f\VnFeoÅwE*I> fh:֥ݰ˧֚.n&(袔[1Z(>D$h $k+{*%KGuS[o{d<5mq|셽qj??gpzB9(RF/oeV[׃ZE-M]5rI@.i' 7crk]:_Szp؜q봋sd 2hD Ӌ>n_ҧʫW\[1(\Ax*P& e~Qaўw5rr,` )||dh2e"1!>LpW1CBzmM><\( WyPzѿdf--hxomP1^R#g¦iIIVD6)/D~R:.rЬ,N/TV ֭],[y +)u߃'/RBHoƒHgyQ0 +L=ED] +DI(>݂]+Q[W_M[f1-cC\ÿDa)5:6`5\,+E$Eq$rV7z߂jZ'W ۄpN%4X`E3@D߅P Y &( Nv /Wm FI,ˣF9"/*J~ ?*\8 'C| X d}51RL܁i k|s'Z8B$1"۳ uod8:;r8 8DC+D8CN@;)/S~l ZCDݑA5"*{&#Ud8p@>3Nl ]80 {`ma CVsX@s`5Qd3c&?.n)TC*בֿ$\)/]N`,w[V6/SW1F@g JUTC4$"1 Bg $*AHP ' `jAj9H7Z $d;A, Q^jC>Ak6*8$l(|g<59jCo_j@nEDioK 0W, `{kX3_*yBJZJEZ n $/F.D>y;5?5HoCIH>,1Sd{jC<, 5ujS h5<:y)!j@Ky4@ݿ4$ig>3MM$" q:y;*CaӇ,.1ҽ?'qL.\|Q&$NzEseP ONM%O_P@<Ґֻ<eh@!Z jYu&o5C\D.S^GU$ͅ`̐n1p=pS4\:9x Va dYˤ~Hg/$'gK'd= iN%  t=n?e5&S74!i HCJ9@ї^\Z;=z4C1O# + FI%>aOЀ~9x,&i<4А͛lG68`H7K +ANmtaLs)JM + + +.QY2%Y")u"bb] +q@$8@50Eڿp0̿bv9YCu7DrV,8dI6Rr<ĵH i(ߴ׵G>trÛV/,أO[C0L]5SI =V E fKt XBkUSjOL~Wi_  鶅 ^9k>=퓝#ۃ͑QqMzZA(VIXb>Yʙ,uIr- RzV]@j +齒B  dW'`#g! ƽßo=UǹC;|{Z#"[o]MIjRE6') oTWV(VX5֝U[++h(\Aj|l>m/^7K>fs,ؐ'NYJdXʮK2_f dzh F<ߪ!zA=P4;A%r@Esw]kЙM? _p8#,-:Ym+jQYņ<YK G*hez}I$jp^ixo\GJ9t[ivO=W{y{7QUmqYd +݄/4s +b)R$Ī8V}pKsةUu_8t#Tov4t_6=sꋈw]`X ҊsdU4a|S$$E#LMaT! LdN)σM~kcK_o}vvo8~,x8<⻘4j̒byƉ_Qy"Z4`k0mz{i4hހ&ǁqܵy 9O"n|@F 'gR> ݈6fYM\d2m&Vp73pp,gnWA8vx2 5c/OOp>D962{"1>m"S^gEYQϸĐ҂z6 +v|yl@jGr j`bCo+ o=]ޜ3a93WgC3"㧉1ԸkxI!/)uJTm sE7Cj?EXzf?l^s_);xًٳa'fKf`cfKʂCgy!$a~W}g{e(]P;# Q7la +8 +` xd( yBr&gp>;~`}juBR*G!lu))6<קix A;/CԞPH i =H1= bPz\Qoh<-^(eCUM-tZ':-"%,X8.λی-~^m灴\qJw֮ udO~q|2PG( ac>lpNj2[Ke8vGEłH "BH)$${$!H*(( X.l"(3{9W?p.Y{ofF0  dI_}Rb/Wx"xW]^ <|s8ųq0}<Nb8!cVx} sw[1,b]YHLelQuҬ`ZdY-IVQ¾guDY@< ␋ +_x:[9pˣ!5Q-e'& +㤞-Pq$FDk +(ܚ|9ǻenkxn1P` #|"Ȝ̍j]w{MEP[[L('1F:רgKjJPER+.4ŧ3M7XN-Kt_>kDP"ga^c'qqK>˞^=SgsוGŜ*OJ)*JS9ZSXW +tr]:ǐ,ȣ+*,4EC>UuӜХKe"[q`/j, +IgMk@76޺|tŦڳ1ѥ|~y +M_La˭LQM-àͥXL$}9UBȹn&;t$=)Y-0epD`anj{9vZkgoaGQudC g Kv1[F?!RS +zdH4%Y0aN8u)H d9s8g[lIJŴ\u]I㚚G1hhjsP+]ռ\}xn~sDr^G{TAPI =uz:ڬ5>tk7ͤ﾿Mw/uk zDs7u#)y)6YAO9e;푷T֦P{@!AsSwZCRs?U O>Rj&;ߨ}M[Z +W}^w76MUK,Ց=8RAbyڰsԁ ֫ uTqZV"D '(`A^Iyݿ20duQ琯UPi5w["I^OjfƵ<ɕawY9*y;zZ]k^wiT4لݔxwg 10dBVI۰ՙ!NG|=xa~iw\p7?W^)m,m*m+w4XƋk/ TA!GRpn .q.qst [q3c>VFn=RRL{ e"Ibw:C/8hΎCBh$3b\PpJx֮CyK2c~q_vdrT]ptInpF"Sp},t66!l"FMl I3Ff9X!AN{H+RƍQgSwy*wlHڨTG= cpsdX"[,G\Z $7@t6KH  +/im>MKH{ +D6XkBA2]d (["O@~bN{@i 9Z F?x9 ϙaciǩF9ݬۜ{1HH@?!i&Ri#g.Qi@sTnBz!<y1v> eJ ?Vެ#Cbhw/e=(}z,~L:%|HŞcdA@6}GnRŨj=˱j*n_J2}rcf32gҎ$MIٔqQ~7לG᜻ vfOJsE]Y*HPkPNaZnZweCI~T~%c"7*kHNT$Kc͢ܧEw/ sGxvt'g@B6$7ϰ&5oT#G:i)E edY$oH I؄ld)C@+R>}/Ç}07H^0iƟRO~O$,i,K0)QN|BȢ`z@`/A\$%%!5v_k]7t 7S.lt9nF f=ް|܁Uǵ6[B!ڐgiznT[$߮sڀxoʐ8dgWos0f3iApZ@bڢ2Mq? n.a~DX+"UP"  "d&R0 w~T]sJ/)h +k0x QbF-&*E jQQDkbaĠ8?R9Q_3kỵ@` ܦO_,Z_t86]aɿe?'#a dëcV[L:@?}b#o$`W{tC +5@; A_m@%kPkj~CfeK0Jjn@A((g4:I?|kXyI*x $%Rtfffjj3Q*jS$bZ\uab'q(\} Tp0zSs( 2A hBmT‰c4탱!]~^qD:M"!#M)Xag +'d&n,D#fa$ȋO0K!G>(B'j m6s+.\I9MD*9N` (7Fx!$fツ^kx]2_K,GT-t@B{,Z_]$$)\Na8XE= Ìzs\2Nl숄^ RMVBd2ePڠfV*`u}P\\cB瀿<JmQۂG0ց~Ӯ^ 7Pz<^O$B°7yi}>Ǎhc'|>B':8<WC𼍑2M0,؀oNXׂ䣮wvkʯHH|;čWH^: 4.x#=h1, -GrR:" `q'yq~=@$= &j ڐw c!o& 0 *r4bY0CFsȒ,!M[t=NU")3`^D`0~폰I𱤡-YI|89H  #D:#eDN3afȎ\E%+!_q U7xw܎ pN}!kH) +'c-uh&W؁/1("B`p7Yke9⬐˶ETxATGLroc?KO~K RSS?{i_c#:u6ᐼJUOjoSp +'r"Rqΐ1QcM#)'XkF/%mG{~B?d%KD.vX5u3Qi`slBE|q볢0H+z/}+K~?Hcd`v1n O ?dh=L-6kq=NƙLR +=d,GJfb *`[%ƶh>U^ذl`=>ԧٝG0odg>$nޤ__I\2s)pFn[lu4v?5c5vwֿ) eG+ ˙%5oDH:2p~LξɹΧ}⏰O2t.KC 7:y, TzdVG[ʾ=VF9Pis.)/w"`8P#~}bC:1J"n!ȼ=sSbMsF])c~.SPnrn(W%3ʓNcžQ[=T ,BBxyɮht9e5hp[Ԋ˓vja̭J9jsT}vi.|oC#$ +$Z-2dAC.q {'i:&C D,{ږ^;2(+r9gJ' +*GUYs[eu-FvAdOse}N6V i(&A;}_;c䰛p­s}Vt*YIVe˯W6嵨~[TsdJiujejekq@H[2YD,%!iAGF>s:jh[i~W#J:Q#gW *J-eٍŻuMj*UgirYB?uz@Q5B];sk:~#-4)A)ԡZ I - +*HDP]@?8*~Yѳ}ssv: {:,{~'ŠBzjZƲԨ3Y i%9ՙp0W(D/D)췉y@4!M?a{g6-—KR.~4qj4h^\:Y]_^+(.*N/gd)ŒԌ 񟱒@:mCySn~c+ǯx`q_8ΩZAd +ёTaiEfFajŜ¾#E%/KiG $I;8-88 w>\/~e*=3rpAO^?۶[cK8!)LjFU^Y\Q/?//[>_LRZbٛ$8I rԫ⾶oý؁{q{nvh䘽a^k]gOhV0qјĴdL^M0TWõO5Ki1oxU+q@6\ET)I}QFˣ{*޴!ݖ17ݶa LjiO$3#>$Mr,ȅ#q)MU2Cu6d7m\N ;~8I jTDfl\o,jo: {FeDzS{“zbb#; WקjHjNgv̦_ -8$t%diF4;$ݑFSh䑎T^Ŗ86_p& ׄ!q쁊D$߁!c`V761=/{5JqP)^^ >;JBf6gdtmB᱃F՜ACƾ,ǴPOhޝ6wBš(whñԉ9mb%~cPI _}8-ۤН /οQKrk{5.T@%uR=w1щXE_R^K>KC  />/iE%FoZgaAլ HkU-ɫV"WCW9FHՔ}B[Z~Z/9})gOrveNfB82GuRbE| |#5lYwT [`wi} ӣ}x={ɏPcMeC0cy^a[I2ކP_B-7:=P&\hΆ80dWPh' bpN't/}hc{6m@]Ĭ Pet7||ϔA$י T%OX黀 >]4.#`\5ƨ LϬ_9,P-R ,?S@5"Ib-adVp'EBP>0O]QM^[TzYuQ Ɛ9! I@ @ A@(rUZPE +*Ȱw;9]笇ظm@X  o#D/a$vla,|Fk~`We0;xۜ{!p .B i+n hkrx[6?nǹQ'q-[FÖ8āh=н0 D Aq1O#pR=%~h@m 3@ ҵ@ez$|e[IZ؀ ws*CfV=zG%v?&W0e 'waO"w6x   Æ9~/ϸnl$;C8 T7[ځ|فa䮛 N!F#{4i!U!_ٔ>oA%W;9-<þ$`ODfhl<%n|TQG wN::>r~u.;Zm`.W&<AȍԄȾD WA3JJb;D|IoKIyO%^H>J3*dS +4p1:?,y7s_pyP]yW~1GyFԦЎ'XGE6&Z,L( %;Hi{I 2+F,,jB&)&:Wn*J.eW{;i4IsȒVIT|(0g-$Z.UíN2 +TU% iC +nE>rSiT՟՟y z ߾C7u27ۉZ5/[|ٲ[WjʙN[QM*jmU-M-4cR<7U>42_%di> +35LA,ty ]lrxOgwۂ_;CO=aCAֶ2fS<֨ThX%B}0/D=$קUR:U)?RHӎ1thkuNf Gkf,ںkyWS:s-=hUR*S Y#0deIU+*"0$N%ǘq5@:g6t1f_Km^t?p#`:Ἇ7R4ԲwVW e2raS(hr+F$!ˬeHP<3Sd[X15@ cbfq݉Ř]K0W4t QrFVXY_aS֗pRK qb\&-O+=JA]4_8̗-,qi O +1P= f<^g̍Kv;φڻp;iSe #ݓ &ZJMr`:/2O_^*yNi7.*a^\W<ƴH=;af~.al̽s0W0}Wu8/l_t.ҳWl:j~IH (" ;BBB@aG(Vԩ#.uSw +,0EtVEq=c= bʎϼO;~|}&GPnj'Stbo~~́ՍҴ껥? eUe>6 S9Gg?2ɃVEnvK7rk. ^H +/usYq[[ 7sbMFuaӶ9Y k +U E┆u9&NMit tIn3 .3^9w^SǰVՑ|פЭ37\X%XQ"L{~:ܮԶʬymdmC9TeZl7$chI-if+ qA3$MScCV{n Э _}#/zq|εIJŕJ*-A#HOr{kJxBrA7좑ܭt~NZn2I##rߒwYQ۞7<{7ú{cDfknNS2KR2LH.$ &zrX艨Y? +^3C \?bY>.Ԉd#hݐky˰qooLlqd)jMlp-:2{-O)zIH8!J"HX>--t?x9g#0 ee:@i5 !e96̰p\C8hՇ" `Bʂ,R)!*Bk ;[s@\#/x7){4<ǃ.fqq!cBE1"ST,B%W"=U^jo3v+w)n࿡) +>HmW] f{!և‡ T\cMPCj1de6C!>Q DHhu«)5QʤL @JM 0&jTًH CָCR6 Qrq Zلq鄏 gLQغ|AACil2} fl)2HϠY_8!e+<8!vCKľāIp1\h"G$wH +.HpAFڕLw8(XahS-^dltf',rw6&`FQ4%oL::!Az;׈Qɛo%Cҹ7I{-GK+ D4ȝP*yLa5%B )mP1oL6Ɍ=~iޫԆ&7rGQo1IyCWW/dclLg)BCBt!ő,:飔c}!"LPƷ:̚ bϱMr6s_`kcN8MEqkKXܪ {H @ b B-@"D@D +A^VPֶ^u9ߞ3)1 ŌyD>$ < {>p}n0 1[ n32+$lw} b:XۯQ)GrU`0kq&LxO1 Q f#@O[ a#O}kTm=0}ډ}Bs"oףX}i$6hWѰV0+ +s~1e9XET2K^Q9A~E6fLH@S@V@((C^ +d!o5n3aNKǪ]/wt9Q~uqXN-Q1J8yj^NB03S?*?g$z$ {s羚P?llew]O~{GI=VkȉŔe&tir:NfQJ8Y9$Q)JRR^y:m<$HX|\^ԯsv-K.O}ݪ7rV>VANfgf1ӋjMOu^>/NPJԷ$?IIeH\@\k X +:G.5yionm>KWg(Kɔ4m#%']ƍϬfeiƴ$:7<-3.#%. lb$ zob0[=\&:7;/j;E W_v_U*є(ɧB-K^P•Djω^H;)ʋ*|˔|J d!"5.7 Eg0ri={vUM-ݥ :gv_cĄr5-4uFxb$[ܒ\A?LQGl2d=iv'poٻǩѕ7w6qiD>YP|]>&Q*4qw mWB-PA;?k#t{h5h0phUw-uHy^/;,1 +0idҌ,M6ɍOhoht#$1a-0 pF;0r]m3`fouw)^lw+{/J#E] J ˒B'Q:*(v#-3>xJ÷!a m̝`,߷A ,hrO-i~%s0ɇv9-t9(ax@!p`9 l ,n0aߌ@v;(ݎ[G%];1MοÞOʾ\O%(wƁfdlfGmrޟ~n^BL Ѿ"4 I\dLCpfbc!Ń5RlOh0P¡Ej9Nh8b#MN dBBgCbrDd9CVI;hdFo۸O@p꣞Sc>k ᳐ENCP@^ᆌE gސlB@|<:S!RԨ/Do/G [1|l hf;U:A=*$(j='os背f2N/d~~C]'^OaM)^Rq|m$ y$ rȋACrr]3CS2.TkyP~@ȏA~6dJ +|:a9z[ gBƄ>c8i80 :W=79>Эvc4ۂnAPAu,lȗQ!ѿ)^E*T'* d#d@G4LX( aaV4D{%1K튢|O"Ə y%~Gnwv?DsdڐT ߳`F5}E=z&L`dcn= +'\y0.+\2lZb憘gMOsN=ɪHӞK{*+y&O\0TAtLi/vNuĂ 7ucżsJ>?.\0s}Իym9,?-wnog\?]}oD|$u0R.`ḁS.͇=/4[/[$ɿ(*n)1wƎKNw=Rv<[7E)F$z".5,uL,Xo?T48˽oҐ17*fhiHRRF酒EMs-3ԧL4'L]c;ڣϳۋd)!J~r}EoY{|_y"űo2ksk._YB|Ʋ.͊c/5K9P|>wϹ%VKedZ n)J{4/#/x +b}_`߻FܽR|~vLU k,WTy|zߜ_);qc2i@Vs%dM}Q ỐOsڷYVp3? c> tF}i1\Ci`mrkU{*7iw<狹_(o3~n9h2m:oHXնf>L0?I8XUA)ғ`B(@( =jjA@P((2눸zQ 3{f{vV|>_NnMF*1&8xxot~ |NΌъXQuTY٭9.}|gWF>UVJoO&51/'&Tſ +NZ 4D#/C ++2TVkrRtLgve뢰%1Gz ;ryr)R~1)ܿ>YƪLa&KEļus->TC"{٘p#W7 ưnA:hO6zIw VzE':J 9U*%IeQ'Nt=h/L@ +TP![ ד`]tk 5]Rwҗ]&ok7BۣKq-IM79'LWBȎr0yL, +M1e?0Y~rD#CdUV&z 0_@]=hxVr⸁pD0`ƿޟ:esZdjJh*dAC1b)VO(P T{kn~x{oeFgC5='ݼios~)wC,D쏹k5t$9ǐ27zO17ml36E|blՋ6<ȕ~WNP0- 7HP5 #(^C}lgIqLO΅sd?8{ &`V`ǘ9f32g̠촋#:JR%n+Wq gC5(~/r!Z Ɯ% Ygf~,"/|&x6dtmGUnߣCnO6p`sY9P@ -HUY.B )RyLR7*71[hP),SOeNwen6sew,~^p\O;Cde.|-{2!aYb3V]5+ꊟJJMWӌV}(>o;6kb6ە/a+~*p<@k:> }Kې_|4kC:(r:k!T +5C^pZ>}w <H[_Hh \~:L:IvMQ" +ְD{P9Jڍrw2Iu|u &9+m8)@ g)kHE vȜ` dYTg;Av5&@ $$$6!)67,E*n8RA[EQ}k=ťӊ֭Uq3_ۙx;}srpig0 bɴA$ +ZH2E1ʴ JYec'6PT9I~(“Fp [83ؘǰ' hiCzu%icj&v&ON߃Ѓ`O B Jπ_.xzǂ6p0~b8A\4uxg3O>C|x\-,@0Yï {M;H3)W;=%wÔ/x0ȃ&|<BDd,H:τ(} Xict `)$- ?&^[?i >Th\H>D,Ku YB !2m@½V"i EknٓWB_ a5W\R'H#ݘZXc!F](#,2S֛CMʆd͔dpG#vg&W߉ڏux!px.S lH`8G!ք`gr{Qv4bgمD)t01&*4 _c3fE;v7{^u~%;4 sI\I>{7s~c +RV$4ePͦ24/-!E: >&ϵ|3So"j9O=w60G=/xߑI;vM +3 " D[1`@*&D3>+ߤL_$~YT|?V.z}nFs#b{=bwUywTyߥ7 Q> v&c a$7d;3,!7#ўL {g c NrPչ_Khȹ&v߅s1D <}Ip"Xˀ|ăs8Ép'4!ιtl2K %dsobɬ&?$3K/w)|*Ι=G :Pui㟈&LUw( dx CIb̀B R2 +{ƛ*WI5GneЌeJѢDNgN˽^w05@rp_Rhhɠj_Ȁ꘴?lww}Kop[b RH~6[EFVQlƯuNV+.Y*Ns:v(@Vo?,r=K%};;RC ˷W$VCؓ/M7&wУ(#Qo̩G06NX'3ZȖgaks&%C>_GT䷫I+&gRVRZfQ6Qmv>-"{9צU[^RZ*^Q$ސA.o9wGxS#VD5\j}\?!m,DPSO;!oQzR[3~:7SohUڻR]\Qo+/]%n.Y'k*ڤXUMYW0Y?U)aDm{gՕAP_&(TLf ֦CnAlMU``|wBmMIs2<;?n-_[])XSY/^],+oWԖ~*鏬(9]VrUQ.rՕT iiQohjl5M]_M:4:-p|澮PѶ[ZT.kzlXпBаliTW}" aQ(B @ؑm( ""PYdY(.Pjg: eLm 8ȢTEgǙ3=a>~s>9 +f?pfތ=!)B3&w7- :íT~!3߷1 ײ~\btqjZVWdx,ҬdX]~at,^}w:}.();x{Br%FeTA:']Hx uE:L8˄M|j2$Z%&EŹ;itK+L)(I:Z㟘75Qp|o~ ^BD&}8jh]π4\nAG byэWYoP|&lmM95qU;U.puVnTUy?? Ȫ=us5:r%j8Of.-lHa^ttz/Z}=b]Zfx;:ƞ͒G7(=:}B|BF:V7^:{Nx +۵W:?yO^T]ׇ^+F5);ǃѽAOﺴ4BU\ۘ{>ȔF|rT^^v=#}#mJ6'jEVH]r.;hHO2pl`)0?cWh-KjэcǚD&Zn*Q<ZG+2[2Q)'9O7^F;uߑ.> g_E̟d+?Āp{߆L3Npp~; ơwRL2,X +kmb>E !T*ք!>8^LI dlT,q*+N׶>~LW4Ӡg3s'|:Dx ꩻDa5`ɿ | 9_!(_SW"y֑vuc8aڽ԰ye=c\\tm2YYpO'-Ba -|P&(Pq%HђBW=iS `0F3 1 +Ә+{XY2kY|uS}.?@O߁2``Aa1 +5ZJTP+Л^4#h=up,08XKt0Ļ75LU$;x #0%uj}4d/K P@領F)AWJ) (t" EƖF;R!"Jh`8 AhyǵHsq'*.Zoω7r,ɖXD8(g?E,A660G \ QJ\ Y ?ψrȝ/j:YB(>\E t1QB0MƲ!Y 2Pͺ(EQK  gijoĨ;Kx,(RfBҜ0SD% ݂5%;_t߸Jkx(i ZG>b9 z }z3u< +qz:O|I~`V=.h` t "7N qQTM ֆAH$2Ī3l5c ~[>`-c5Sfe~ #Ɯ}Ƃٽ0L ƋBF cJjH}1@LIJQz#r߇zVM#ٳn'AF}xiۻnzЂL0X^W6!``U8ߐ4|3-5.!q1GQkG,7[޸VNa{rq&ՐΗB;_ y4F=֧#TX`̿6M{W"H7Bd]沼5_g.}ʎ{fk"f|*k1vWZ~޴b.#" t?>1>Kg O.Qx,ŀ^ `38xػ,|+>Iq峜DKm%8opks=}2f43J>}pIʡ^~3G 4@x{;W`2@_VBkcڝ"_!y٦9zw,;XýȒp>IdY>--\!BEݔjoBWhN(Ԏ}ɂWD+,z*2m;xBa"4hR~/C);ªțfc?]Y뫊]H[@Y1BVaߩSGB:j&Z4y/#g$H;$l61ױTW*H}$B%M\(/, + nOY xb - ;jp:DUʎ0\2ckY,ͦ&k\wUEbʊ:NFQ _r*(VP~[|(B0l5g>BU t]*щvutc%߱0Nkc,l 3R5n^Ԑb]P+uHd|&3e#30x=KvHU=ki;m_0ptn.>'n_Zm}W +>H[4@oƤ`GLspf=1Ze_LRs`6`a(nQ5 S≧3JӾU_zk;qolcoLc9a91 5Rk)C:{PWX\(nvW(hdDzs۵ DQ:8[3.O08ĵ}ݶYٶG1ֻ5]ƶD\"ΡKԼ +*/= 0"&\Bֿl!:!#ԑufq:': ;#;?:kXݵ&$F$W1h|~z=}?o ? n3b{˜XFӛ̊VsBs>)Kk ~ׅBy yV?Kv@x D? ŸBG0qLd0%c Mc{ xgu7v+{u+}u+5=Jp_A_F9\w`l7@0JttTa4F1ned8 Y8ebIeI 52@cs'?25P@` EԔP\ 1l1 l01LF>ba c/jwJRC,Hn!? ۞ Fz0EYf&\TOal>/r* QD('UDE +尢O\\DEM‘0Qn ƹ28_BX=&P3] ^"°O,ߨ[VeJڤRUUG/Tgs⧪+⇪n}Sq[{jVwF@/eP`}\zi=u\Ԏc|p<˘VtS~U*~QV@do}v5uv^ͥQw5y2FkHWɕ(az{tGh.R0#3{g$inuD;nݽov%n=N7coK;bOIǶˮޖ]}$7,5ƣSk<:OQ0-mH8&dհd'dXdYIgs3e]~õ5NW7HL4\rA׭][ަm}^9U3~fݐ{S"6&d2:HF'6Q7t̓МЏyTbq~t[]͙i{iBέ\ΥM8t2&}w }q_GRJEϺ4tKGtfmL,+zwNq›NxLdnG*/ZN~I[rMuG5}qIK@H &8L 5! !!!!B-D~AumγMzvqwHEӒԫ|90;Fzx5OռQQBgC$kP|sKMgZ;> .=w$e@q<;eb6tU!ŕFQ=.Q#U"tGr VMN|D#2fo+) ;i Dokvpa2v\wz`Ys:P{qG2ˬ6d:jH343!ZHXi\:!$;D0ut [8?^|WA ,9ai;d8У;^rji&F7Q*Vnbh +CJdCJ,K!).R.>H_RT +DQ!5({AW ie$J/wwT_ZIqae-Q(w=|kXhރk}twKfWvzoUk%ƜyTe7J| EueTam5-hftd֌W RUXz͏eDL5;hϴ`!@[+{} =L۪_9w^ܧHr+pڸVwU9)ECi6P3&4l6m&lbB&fBdk*=[\?ޅ;`@Iv0ʾd Qџ\ЛvPԓ}-bnV>h0-<m[8u{\r#?Z_#3M/eȐoewbp8S-]YrNaUy,"_M|Tn'UԐZ\&MaSހׯT%=Oz{U z9gIO1!E41C׹z. 銌hԯ-iw {=k aC,CRDNئC +GgsYg./1n_nߘ7wϰ_d8"i46[4X\3 嵄 37%_A_Kn^ ,Pisc ?\tN B`hDSEoOu̐&ʡ'Q <8H1&FTȅ?G|&^(=7ت.Dv6ltvS!{lOVԆ!aP~`*ZpӄqtL:R͠LCsR|I_EuqӱKO,^&?u-Ñ#w6N/►*♺2jw*vEME4ʈhn +ҵПƃL##Z3p'S2'2h,ď,Q ;mu\ݾU{w+igaˣlnsۧ.eqhWD>F` }lAmstl6+Bx4sPzd\yʔŊBb5e Λ]7w+w_cmBKI"KPUvv4 t6L睦y 4,B8,pc7p5aFrD{̔=jG|Ŗ6\!uSiz)kN>*ve]]q+aMLtX*b72):F[\B:qP?Y@PU/bT5?F37Y-gUYv|cVtbYk25X2}ۗiӾ-K;4NҌA^6 ru КHW?w|98/#j8g> ̛fM -KeKr?R|Z9E5.fo/u$F!@n ulJA@5@XYE#.`ǕxZjUlF2Z;sng.8g>>&u)1$~*2~DV]Y$ILLl'bopk9@[D;W"!+H^૫QMmG3ӭ>ȵNSWV:u.NLVH:.K$Mr"91{b7P.8EC`{Jm]inTśXVʳmʲ Y咢LSAFK^z:kQ;kiZ2E]\PUnZV=CU`QJV$YNM.)g')v'(ds8]ٚ&3&I*`Fga4g˨}=@W:Eh[+WV(DVerی"ԒJiRqì5Mh'*o{DZŜb'z|K}jpvAH{WALl:O^UniCan4:vfGɖiY6I55تzv++ETuQOL9DU0DR/i?WS (l BԶ۠rW~>oJn +㬖u1D mRUjNaug}Pw5n|5s U3b7%zCt}v=7[*J5PjfqoEz S:BL6ψiO3ڐk6V*Y%]ֺ)s`7΁-Zòf&^l'~L !߽PvK'^e.=ӑ#Af'OЏl=R-4+Y֕mYdbkufM_Osak%[F~mf6zP(hU((H"y5E/_fm7A|oi=3zj,}{=e{g7>=f>yz LwoTy#@D rH!O.tȇe|5r B<x GhfL{'0yZLA8 c< +0~2$o򏁜a?O@ ([@z0F=7 30z ׋z9cQ- 7ö́1j5򄌑+)?W $ïK(ۍ(0` +2=1 |f Lmo08qLJ8 ƍcGg 0H YG6.Yc \#'+q/?dyTSWK¾!/@ Z*,ʾHHXHԸТH݊8mک^ENw~NrOqw¢)^/  (sHlCbh&M+_<8 xKKO>Nctf' HbGZdAC6=|Gwѽ8}|K ߑgcr?F>c!SMA\=iOcOg#SbH5|'.5ԘhZz%BSE]3QDtNSEWG-M1fO u?Ax}aM>nۓO_)S 'zRC*}I d+d[}̛~?$'7$XW<.z60s;pv*f} τp-#k +,IK`btV`Y.u˻w52U&߽6]n|ѳMF<My~ozIfC޿Ʀ76# uAmaG-Ƽ\%9Zy%FjM0=favo}OOՀ)c>׬>~?l\Ȃ aha߿~}'l_o0'([wb+`50@hlFcYqeF9 3Йۨ(֑p< u}ֽK{BVq +nn ++ogY^G-=w[k [?0^c_t-ě:aqFbe=-V؝՜vkNo o ;(61'ǖg;͑ض9 +|/=7SЅt>LCO!l/5ѓc;)մ31bGں=[n[cm\L_&X'\=* 1X쁭! Bwa0$Ѱѡ 1&T,ҨCh-Mfٚޔ$7'V94%6ҫVovZC,nKCQQ}܈.K]¸c]"0Iiq' AR :Jm(sEM^ğPи(Ƭ Ų\+gjm܂RZW#P BUQVW-Su=#*x!Tc' jLޤQ8' •\CT" RFM.P1ha, 1(6-+Id,[MQPSV +;ej׻ȵe=nRq4ew8],X\iP%28Z2 XNvQSK髂X& Z:\Q-Qg9(J+FuiWIcn(YS üIwypB{a4ܷ 7XFU7(oE42 ÍbrkS,klEV^UM*U.$W4 *\ݢXq04k 3!A4(ADqpU֩Z +X+ +8"8KlUk+.D:Zu}_Z?y}r?hL1+'Ǫ$;LZ_3~Pec^:A?iÖ8g~&h;+Wƒ&^I>7AR9{u{d*`}¬4=f15x/j\jѫ;|v G X{EwϔLmn5l%$ ݓWoy?8lJeҁ529ega:__qڋQq=C89NwnXۚ]2xuj8QgCls4و<+al܃?/ b, q=0DGcr504/"~}Ts{re.r,EvܜGD7H}zQI;q-ri9Ѩ }>mmV ⭱5^tWtSYNq̟Xbߢm_6*m管;k莿+gs' v}8 .B- 8Dz 6PF mmmmdۤ}hͮnyc!xP:շn+9 +d ;H΢l@@ѺEA0[TV%=вdKƠE4++JDuIU>%Kſ+ +T Oﳿ&3{_3[_ wE .R.uCKɗ"ۡrAWY E ] ombj/e?fSXhf? rh^U?mwfpػ>pbP٭P؋!vI/3xG@S` +j'hjXU5@¨#񥤆5kxk ^]zB/Hf,d~Љٖ@ˀO&|P:t^;5o +@] a\:$dwXNR]% +RJ:RpUu~ߜ%Hx]/dϦ{̽j  ~O9^D.Ue纍.O<Otc BTPwk`w%襸MtlVGKf#d<3#Kwa5,Ն!]jr}va2v7Ἰ}[S-.R\ +@!nӀ\!Cu~a/ZlEY`<7"{n\$n q͸Ah?J ŀ2EyuŹf)4S6b*B:Ul| 2ۚ0#Zŭ i4UT$wT9Si̴MuڴWUb*PԅJc~ 2W :b\Qq}nE%󖱢2YQjPYl:e^Ɯ>iNs8ar8.hvO820|aj|tmGF8BF"xY;ը&(n1PO|3Bq"zQt8/ǃKGhE2 jĪ}Eb'{c\jl!B!$K@$6Ibر@ 8X$vl'Y&vL=i&I:Mm433{y9^+b?uUL$L(8/~?b.JϤTJ> FI l +|,Ki #ޖ_LAYB e"dDG_ŞvQe sIZOKB/yȝK3kFJ0}n3уL̽{T +rr\9fW 9eAEEr5 z!֜l=+;ŝ\2S cr0GY)kXP!JEBlkdJ'+RRD.0ԓy 5LG aŸ!5Gh@h@DЯ$a!0\̜/񨻍(#AḦ́˚Ͱy 4iӥr)uQL6WlzUDQs=\,+ {xw/\: >ulG<>G~=<𞍄r98 z1iVIEזƌ3SZPJ\ܞx"Y|RԡZoS'&>Ij){|K !hQ< 0*A-3^d hE0cJ!MaCqG_NU{ʭ.m#۩mv4BfFԤYJh,]KNi~ɦ[ڴ߮%'7؇1wޭF0w]żcX[kN&U&VfG TF4nQZjFn5r]FЮk/'Yt6~5F_EO,g50_.|\}DW1y+Zu/iВFEtUG9*=QYhc5T4sm&Z@bbR&# +ӏJ!@xU&K>zpu6͘79o=Flc 61]ASF4[˩ +ʪnX;恸Jqʟp|&]ՇȗIz"CG/_p3u8mx 8لǚyRHG"^mQlFY]gTֵL}qq:46ZGHX#*qe_k%xa>}g6ּ::1wvw ҠMζm֖Ljn=LnhG; +-Zeijg[nAYè>_b9Qe5^Rs|^b;Gxa}x&ּ+?1s [ܮhhw~{I6W*֕IvFVvǘ:˩ +zy{-ns[ +[gDdZ$E,,siJg|XHCBr<(ds r뀯hf'07!_R:WƊ2B_}(VM* 6U M Me0?;ϋgnse@@Ӏs%`-TMP^q7W;AT(ĉff>XxkU@c^_ c?\p/0Qz:Ue@+ n:ԤnZpC͐7݀3!/o)ca؉?DZڏCKswُM>0U﵀&Ѓ)yocܤQ}E.>o9G윸x~Q`:ϞWXx}ͼ{~⦆5i`M󞬉"CFQl`.~ <_ @]Q }Fi +ͦIٴ66*TL';1E;w<;A&W E8>UQ1=H?y,NxdJ<2uQ-R.iOeEBvWjz/+/ x=K{+~rK NX2Z*L-!Kel%]ϒ%#/X +|* +})v\UlSl}Mbc#?4esZ 4tU\q/Q]}IEcdOΔﰦ)[+ZW(7[sUͪ #s5oPtU]*60>kt&T Q?wQ=F*Nm %4N)h"/_WfWdkr6hvج o"nYo̠6ABmАc̿B$Q~<)p0EaWHiCxڰܰъ_({NV ^ +]dLk$d>=H(aAha^S}ZO#=vn4ݛjfWpj/s'Ϡ?FJ׀7GbCdr#H91Pf蛤^'Ygi3lz2 h8;8R}J_#6{܎~f췏l:lvژȉ醕1aRVtYFtbaʅ&-jiّ" )+G7Niq4%CrcG ;ғ=FYcP'pFnXoEF|O v"-6Q͠hfLΈIM=ߐe41zWCR[c@a [5{砚}>)8 +|`BV `)-,5!Z>ʔULM7]?1nݗbWq\>r{c ;ғm|/#Y.h=?goÌX<5/e GAkТ!#@ Az@TBt]OZa]-3umn~L _|?~i扫t$))2k89ǹ0ՒJT2k7gk[=LڃYSL^&3iH$%QS{ Krٻ>5`:d1UKkR$iAzc~97⚣[XVu'4i^ԛ4#uNpK J?sYIjeC?14LӱظP\!?kԜsr2\ VAZwmꔌ5I^Z Iz-Y/(bkی8(bq1;¬Ay¤c> xc&;b|G:1SYQ1#:As9|ҩw X=|}鄓2v q~ x́GO4=ˠ5½ +PBEE(z<(O=޷z]ɸ-w "N! t;< Ji7N}7PHI2$9CԿp;7qBƝIS0"@!tIeKo4pe" WX0/#tpL.#?o05w1cbzx;~~ 3 'MJpT,=/^`Q|9Y0y\t$o>r|O~|F!Dϵg/PdcE]cAnArKĂܑlX Y,?`/G|b‡hEE>{F)[6SDϣ̘.c x6o>&w -C}1<%ă=&YEyCp m49q42,&$ Ud=LZțNr qO?/ +z%qx:)$D-"d% d+APg?u1q +xk%w~AE?4tN"|G҉Xy8&>y;uvQ ?uR8ۃo>?pnA+r7Fx@qnT\9C41$[1jlf4h:Ӆ/u<;HT}Pem:X5$p 1$$"B"QmCToB +~ZC j]FҊ6\lU~\_qQBYOU"1J F* !zR}/&4w|kuWa\QƗ#.hVs|يs=1|Nw'#k"uqb  $?-2zp۸%Wb7;>ŹU8ӽz4Þ8ٳ'z^m8k:CO`kO]"_ǘ٧1-O$.E&꟏Q8ÑEOg`f_BfOr2lav lpxixm71Fd7w_AB> ' ]8\Q|L|4h9'6{6`ٮf:S-ڙLv.Yݤ]nnbkwrܺ!g5CV_>T-ÈG<&w銿6ZY=[|0,Ga_pҍ6 [tyجs0t%zmu:vMl*[/m[bJ,ѝ.ݒ6x,m!J? +O?$[FM|@380J]b^q!ވ,fM\2]WʶUqKiB}YHҤ_%o5OW̸񢔐O%RkL!jy{Io$('ClH&$%IfQmNpM$2BZ +P )Ҟs=n#ڌ2tŪh1hNMaf3sRNaC1,36 +K5e0j*` +G11E٫`Sg~+Ofz^b)K29sG1sӐc 7_k*ԘҐi:A/OL_LoWUPQ*L,Ch>rp:>iBzeE6l r1M4侍>'d[PJYҪ2 ܤW(6uy8ƓuE^W(6ҜN`g!XK- 5?OY=1#?ov` UyvΟ-R%(ZBe“LUQݭqZ>8,;9,?y™'ʝQxɷTd8GڳX@~*P`ڢQ3a6=$fb+ +rٲWZPėX}5 + .ka][׫m]NVM_jUTXE gܤ:![G-^]4:u&rDiי; ^Q%k}j_ooUwj,\ub3^wY Gr`C3}Qye1LȸfnowKlE~F/zGn)\)\*ܮ6,x2Js KtNRS*4~$'j+텒x|Q䋃7q2 t7畖Kr!Yw]Q{;TiޣTďQV"_ <3:S P4vNO~%npUFQ9FXҘlRir* J$?IRF*ErVe*IXPT!*E9!{:;)`Tҝui />aB0H1șldBLf(5\ZO N$I2Cp0]<^PU T$ +QSo&7h"i4L#UOs: {\?a0G!=p:c 066)a ~nL>\yTƟ3, +ʦ0 '-Dk$F5O465"eE 8Hpj%&*.TӨ(1> +&y{E +9^٬IθI&9]hBm^]u KY+ǢVwdX'!-'Y00g#YT:Gaf)r +/lV&TƜҘXe\*T%R=PC_7f1&yeVr dia=H>}BR8Ο,$}oɽX{c?&ؾc~RĬvywR@Դ`5GQk׋WI%0PCi4K+MA/@t Cc4b嘆HG;rX/usRغv)XHk}/q ;z8x@Mi3_pz"©G3*ViDhe +B*"r8*Ǣk$T͆U[U}VRS0\$1θلyY&7Vlc<.=c6$z =08WO] Թԩy$&ߓBwp_F;~v[.vB-ӎxJd"%"SB ԩN 5j{q|˿C?N?D_/b"Od +fRg>u p6Q)\s;SU[whWp}+\D ZBӅ9 H^!M?Ө3m&SǎXC56sjnݸX|8%:Uj- @oX ^zXHo2L77Z3X Ȧ +󸮥F5*phf,Nc'Y@*o1zuAS;hvcGbl ^;CQ T6`sQl +n?Jp!! "',Y<8}hHBmcj"G:rĦ lZDB4zT픊51n(T{GUHOic{WT^o}kd4hg7Pih2X8 PbxņiuBT#'Ib9/a2a"axFq-ENcEv:Y=k=ן@|U߶^pĦXcBIXcզQ74QZek!0}$-3-rPe*S,1mU,65*N*$Pf)盅"JCơqs5>}{`%v,iȵ2j/e[&IK-Ŗ兖 y%[a)-%yjťeyޙ{D K] qDpFf`fD +5.Kq-5zXTkĜ4mz5m<96ij4Iۓd1w= |zemA6G#ulI1kLslJFɄU&3-X,VUZMI[a(wcm<+1Vl y+6"SH"?7wg:xuH?6#<MXmE%4X2EZ +S,7{2 +ۼZ[b~^*6o]BeKa?LK^Ze}%s4kahEI٦*t۲mPj+KlbͫqֵRul:lsm/ԬkCzu]˸9Dq-빮l-#QW +eʔ$#JLHY"8Xr]+~)W$/U~Q)ʅpEy'<[!܃Yż1t7|ۊQBRu&T@j:\L5IRԀXݭRYVxO^YՐLܢߗuJ@o/K} J#Pdc:9pHG#KPX&.q5َ,Gjo2;uq.,q3l>P/^0GO4l^\NGV G3 +w><\$丌X]9bCJLWcqҦ6H&gltҥ^եOuo4gH꣰+y|'{X[rzTB^i$1qO➉ŞdyRaX,|!S$.TFO&ͽNkpoRrFIII>KB^ޠgS@-H zdW BVHX+' ; <)XTeʆUVU(ebNL,n{OKqޫ)ڸʐ6'.S8\>84ʕ] \n ~OFo }HYSs >Ź͚پSX[hbBڟ8tf`5 |?` 4HnX< S1?$0o.f0fi8Ycc 1Qu@fύC PD3I&s[1efƌhLoiqڪ3fL ((@Lс<؈ =x*)`|W ~KwQ{s+=o^[6 Q1LLjۢ0m,&MSX<`*30`1FkZن;aX"FԎG=a֐Qe۩BFT'%`^ v>ۣ0} ڣ1}t'i;w,ǠF ؂ h?[?CAzdݛX'$b_f1G Dqrº+RW,] Lz?]  |d8paD8vs 0CK77[7E. ̹3_oI}^3vi=EWGA a:-Dr:0 3G_l]BG>Z{#=`7ԧ__ DQԾI@!j{r aCя =aOpaȞߓ{G{]E Ybj٬5{#|Dc1=GO>g`|C x/y=dO4 rjbE 20*;o!"\>'ug_KH2kDT} ** EZnnhYDQA@B"2bM01rRV&NRV8ff\*5qܢo~T{=缤O~ld!Hu'3enDٍ^ӉYDdd"d3AvtS"oq?xW?" ~ 1 1tKlF3`'5ڨqssg#>mj O9z<&ȿ?eg7N&qdOT@EꬤF5j8s#5P{8g;V!}i_2:2G;C5ķQĝL%_AԌ3sӨCBjF%5jH-_'QB//} Moq~$7 /DÁc 9}r]*|=c\| urQDUԨF-5>V9wd4o鋫˴wi0Z"6;ٙ0eG'\;kBq5JN&gͣp y]U +Dh9YВSG|kwqlCyeÆo$O^17x Ұ,\p9bu,ǙU85|z6S 9G#qGF^Qߠ1] sh!ȓx吻|!+ȍpy~.)DpM1lt-C[ :jtmD6toO$xm}qoc<6WL7OfRߛ70L.Ot%wW􎝆|=^ }`M.Ůk:-ScJ O9Sylv M=D+4xB y4O3 : +]&s6L*gsf2ϴaR4{bW*UY[Q?kP7S+}]s_\uS^})ZO.;v{{bs%}4h1' >VlDoj|P[*BoηUX3P>G\=X6rޏb|Y,yP<\{-]~tS\ `*aRJ=ʔXLAҎ"eBY$,W ˔br+-]--YtI#e?!,CG߈.10vƲ1-Zָ. Uc6C}PUT:(PLy!E_H^X +1cx@k[Hb[fB+:q#1&.헥{Rh2q<3I+s#kvxa>Y=DlvBP&-~,"d%ĞXVjI 5bԴc1ZiCvZ3\o1\r{y{lb>Kz 4&Vq.]#4"!RhX0&>'dӀ~M}̽5G%]3G%>4G%VhdeT>` + 38E<gTJ&;iHbR48%LSh@jT6Q}Ҧ+:mҲ+3m),)tUShShdArCc#˰ Jsz2gکOzguStV_ٱ +ώS +˙МSPE9kS+c͹,2L/RXݲ|އB}0 f8*]A +, V@a Zƨe|,3mIU7"ue<-\GacFgWA+%r:!-;klql}Q3dcMW2UP +#[yL@^RE7_W?7Hq؃R)`+5okTg/S |!adg,@PՑXuw\ xº2s/)kS +܍>iޖloaHa1~R=Ci}_CP o,^Ç<OXI-A GhFoz<^ÒsdwT2GvNI8Eag0?:Ǚg +hrM@-H| -/:'֣?<ŕldllj֟%hMFg&9GEq\#dG(+t|+e`؛=vEHrsh@:st4CjQNFi-9c֋]DNg:ЙCGaoA:N:K(gJm5b>i-mP՝ U|ǴUl';cWC(NzM=~WO2|u{7W ?w1ԄZY?T}40VEq*  zM f*7h+;8WYEYy!GsC+-)%)a_ڸŵ7+x(0fl#Yik͊P- %,@=# ^+eOiJWZxR#2Q>_ +h- ZE%Hy!@$ $BТmN!Zҭ͵{3nu;֞vNZ!~>Ͻ`͊O= S&',V iw$uLs0^5K>[R)G{Z +6g-=Xaڌ +pŸQ ?|mX +o^:"YDX\f!U<ຒX`d?|lΞH)EkӰ:;9:rLh)GCN9u]Q-\ʰQjIY̡TP/*IT80Tf?گ>8b팣E5yhV-O j Q`e<y [v&*w _4#2]Y&H4cO79rZM;렂Ʊ _39j&c6.N:tpQæ_/'EYQZ' ̆wd%["G+ ?Xu ;i& }60(Ӱ9lT4 +a+,ƕ(5`1h(.z^ɊLC2iTVh#HEc[LyB~'Z$[s8ܦIpf +bLa5eXX0QRBq*[`4(0zOd:yc/"ɴfIJG=L+s3Y&Pa0JR si:K0PTf̊ʽЗ?]yX}"z\loTBe(me-rA/{"z`-]c,Mb{,KQhO|+UA[YJ*WC][:l1pYUD+~g9 ۀ}M.G}\fN*KqC0TGB_]"hj!&y5*P9P:+ZlW3 tu WH=*gDjUO!wIBFs/QwZǀ'Ɇ5y0(Ȑ_{8CAGL V;V߈Vx2oR/#{Z$y HDGqKU(=C$ s[*e^ Oo*2}QHGZ"țRڔM*,o6`YUHj"ѿK['?m$4CB$!s;ڹ'Zg[#cR3 Hi@R$bi,i]G[Xܪ ;u Fl 11man% ¼"EB̺1q}~ux@s `3]9 ;v#%L-[Jpmcr60%&^JI$"|HL8x˥^ȩI @@ \*""^b2T@W=j>gmt]36v[NvݦsT|?D~;K NH#H3i#ϑm%1|I1G,Cy|G3y~g_2)ѐ,O"ƯgFCldbOajWL#>[_0o69aOƒ #5 &$dP/:jTι_72~w1N.~vp:kߤ0ڍ>$%qαRgrragaoj^ԓ24jZ}\ q>)tvpgp//^_ğYopjG708=]O͙xԓ3I<87+]Jjbf@FRcn)C\vV{k4Wy? C~9wyD)B8%3/ DQU^jM]c:ut='ye&I-`SGch"x^Qy1H}^Y:9?"56qj66LubTZGKB<kW)hVub]X1eG;Kf ?6I:E1g ~s7ڧmFeV +5f4`Up>V.X6!QҌ%!X50<_EugxG|Lw +d*g> Iǚl)X>#"BTGP\,SEsajTϭCFTmCyTG@Y̋ Qo +O}؂ձ!|u iKd煕Q~X=u1cQl2jPkDe qN̏,Q⟠Hn (D +•>.SL >{Hh%kS'F$ $Ơ\*C4 z$d(OB܉(L\|2dp:F87`O9Ia0x'29gIigk譞>'B>e`H![BIFlp&9H*F^r%K))w"KyUȢ(S`n:ظv``볎>VG-}+Ǣ$t(#R#O +J٪\Rݰ#+F¤QsDyUd _Ads6x:ْ>(}T"O +:X5)hĄLm6KaLAn6tۑ? HcNAF?V'.w/Zd=F.V}0,9ԋa+`ԧ!Ð +}Bk\q=LH5|Q4@A4 " F'Aj?xK1#MQ2gLdL3a Yt +ZL ԙyH!RU2d"9k^>d{|~y0Bc{?wp$(^ J5ři h!Pۢf"Ֆ UlRHqCSyRHoԾsGBl$va3#{/u+9Tq/𹼜<\z1:EPyCYH΋D# +rGd $:m:!qAEk-b]g|A#% 9i?wQ{">9*VK!G%=B$A ;y @TQ `NQ#"7#xŠO!m9B!H@+9Κ~/;9_ +4s]QQXWeueߑE=-fQ(̸ `T 0q8QU bզAlVMM`L6{bCRc4how{ xmcb-fJM`PW`ŘՔhSE(4\ldZR[_yE`oجloCkiYΧ6B}3UXO|)uF(6VvЫ +dά<Ȇ3D$ͭlJabWS2mzAWڄf_0'xni]' )vba'luPC!d|R[Yp156v)40wIwvjQ:jXG .@Z.Z}-Kbna14,ttN_tb\KK34@ o/uahj!j6pENc$\bq'-%r?= kgY,zA&Z@q.IX4iÁ=9]lix3o'3#MF{- ~FK.wuNĐv>Q@$M1p2 u1(}\4׸7qț|m‘3}ldIƿ>_{[4Ү)yWP(]%| [6]?>FC#c61qF./l~ `0)`(bJzآ~d|isY;}/\pedZ AwH0Ŵ}k1˰_}- :55u]|gu N|OCx̹7T} c ضa{.0.S0I v͏C8 Zנ"ZIJa/`߈"ih~1/Ƕ \M?Ч<~b*-a8k7刦NƠABc")}gcfcߪ^N*ȎSD2P-T+nKK_ϡ1L4ʓIg#?EhXrc;YvO^Ö}51%;JUhi#:cFg1v՜\; keҧ.]:6k 8qW:Dy{+ePvw9] ƧimZqGiV9hsV8s\ +eJ]*TNuA2_T=z6k\FXᷔaw͆SUnZ=̣U9R%3EiI *4,\JhX|~C9>5fSvVfspN_FъpuQ7N :sh@ h;3bʹvK| ]9ʎ UVd21fF ֌=Vi)=MSf)kRb5)\c7+9Zh|qݚy};`sآ#;EXojz\kj|MV*%~&unS5Qr5.at_7W=hTbF&6jdѳm/uT@T@S2 0 ]`H䲨1 `y ^K$Zf*hY)=Zֶɶv:k%ִܓ?>y}}˚ƎL}%q4bb\9\0 -_EUG$+7ª\eGڔYQ5ʌ5EJTjl,5?NܛEra #NJ + q-z +)?zrX͎1*#&U,*-ήԸjYR)JNإ2%Șx~)S'FNm[q88GE9^2LTaJ3D)Ր KB JI,Pr\%ͪiV'4˸Q2ː.;?^b911AaaV٦0QG%#dɔ$cRf%*1D ɏȐRfřE[*| w)<@75؇~gא2jSHdd8̓d4*yS~NC@SKoޖt/*zXlȤ,bI&XP,cR4QE +*(M+NTV) +M-Ճ%4CJɧ䔼K>yC6&35‹JzYQ΅Zz-X҉oya+>J+)5I0=hD{&3SV$_VqOjlyʳ<˳:8e ,\~Zʹ4\SHl2y1!P&JOոJ? HyU%ʳ*UcQe{"n[FVKիUF.wZVmhȠF΅ǩzr@LI1Z(7T:B(GFe遺 : ;лX_mQg?ߎI~%g#=Rb|J cʥUÛйM\\k1>$mIgiໝSQ;vMG'$]0P`C@uQN w+ +}|7[ًO +FwJ]#y‘PRa#> eԥ8 t4v71qzjiW|?-/҃ +܏WO1xNA^SIAN$'gR,Yhmy׵u/`ͅ35b%Ұ>Z ҅\Opn!p8>c"5ec,ýKKf+ų`ߐoO!|z-Kp\uCѫ 7RnWosܦHv;; PeP hfh(MEyEևb7:󺮢gKp>5HCax$q`\,?Yu !yaMZ`{!`{9)E h̏Qh;:.iofp^'Ѻ7/}J3G~1`9U~ YKm@k6Ӣ?ڵzGOѺѩlS$8AQn<r_ w_pYX;|r"𓈏4-"el +ֱc X:V;؎t^*ׅ5h 9$ V,a߆};plՐZ| -]ɳ|kyF;lݘ؀m@an_L b -M&kk^5SWUv6ҤjTiViӤݴnUNC}>}}.Wy%z"Y/_{Ob> +ۻ3>wiJ>EOOUE79𓣛}!\+q~F6e;K 0"WҽMyޑ`HRsxx/Yڱ8]c~9Xze TtOҢQB|c29wxz8-RLSγhqyi'Ooi=lff1s c`4!F?јop4Vc:Wy,=|`oŔ>1 D`1*u`6ƎjLza"ΏnhF0pC LÒ{_CI"%M{MlbdK II%LTc,QcI%:0,APڀ!i H;0 EldcdsI^EwUtmDG{+3wLYfV 37C;1"##) /ՆCГք6tw`z?:GϘ2іyYwz ^ω?9B x6`uKlfiq'L) (R‚@v9NgѦUGޜ!4LE4?-xo s@Ïy uQD\, Nݿ{xmtMc[:oCxhdj2q@FV Z' +ܨ-ZKg1TΡRav+(7~@N<_&-7p%~X Rud h,LGz}jTpp2Ԣ؄ +c;E즣(3@y6uX-/>K%"Y=r`wps:T:&9&*Mp a7Qn.CŅRKlm$iXga]GQ"}opKcm*q-$ RG7u2VP֊&E&.wm  li&IX9㡭BS5uv۠T!ӆ^(Fp +Ho"!R䳈=%.p$[;xuwIE덂99r(ݬ«CׂL:|Hu!7 yI$lBr ҖHlI-_Y̷۴?77s, ijڥZ Qn Y8H!ůܟd2pAф;! !3 OqF_|g|AfY㼓#VA}FK=J} io{eD$ + B + +D !L`0!J{e7#bɽ6ɼ0Xa,L|qzJ] PSSm$;8D'!b8 +-,FI> d0 1y7ȹf{5"Iq[\9 N98|_%~ / .) ._\Z!,8 ]u'0B(5wN FO3朜>dPg\Ҥ}jCtrt\\ȯkK8D??8{=<<wrx\O &5y vh}q- t=! P Fj0ؔf/TdV [=v]Ku_}K7펝ץc+ XASZQvg+tB-l7?ckncgX>Ntho+|+{n* ^k踂?t\B{lum29wtt"w71pyG\Vx塿ۏa +]x: k %^i optDoq>!;p(cv;i w|-88,~>^rlWaد@Z=ZAXf8Z_m&:-D`kwp~ >szK?"'f)X~vcN^F[4Eт&tl2!'*,42"^q6Q{rר_\1a#bP Gcᨆc2pӜ.E(>;Fvf|¤n 3a#<H#8 +-F"t)rkKwմZ)eZTmjKU}*{lVEσF]W=x2undy>уnOun5W&h{j3T힫qCU1Bc=U9^= y.RJxh~Km**qtS>TgYB*ݨ|V {Sy+0w^s6|;:rT +?Oj_J#5ߤb*ꛪa}sTw+?\Co50hv++2*3䞲B#u jv}L$7TA* 2 (F588CB)7P9!_) t21RJq%ڕP +xwۜC^_IqD7g C"De(#<[JԈ +DNRRl٣Zw}L֘Kp(щCp`<9k6d>FBr<̨~J2(-*F)QJ+):C ׀r%j"ǭٴ]&gzWq2}61dZʧyo":*1CБTCd3F*'k\T%b.TLje΁kJJ%QC|`jK0~a||}XzfXd/,`0oJfJj_5 TE +WQ%+@3T.¤Vބ;@_Kڕ|VKH F7D`aLr_hvȣ<ȣ<iFF6wh es-**12eXI3b3Ism2Q"@zcn^NVN$)I&O/\T ypײ ~ h +x Nw 8 ^o7h:9ϚQL3xm\|pZ+>V4X9np 9 +%pb]79E|Fk.=tqߣp_ ~ @z! 8d +%8b&qO, 7G;[s}F7}#8>oDX׏xobE.!}F'W\G8?#} +y 7{//x8xB/?xxd!]ʥ?8 +Jqq`2ϓ9cʚv鷈uXi<^^G~_['228}@-1/i z]@"b#v91::f)d̲%8 )=`A}`7x#vL*%x[fEA>Nlb=Ӊe2į~xVav];aA-63ڧamFnf:iyZG1cW6!~>gbE,C %F3QVXn8ױwl=>t 3mIB6wh=X)p1b8{V e5YЕ(އq#%Y/>`ݍ.F($ p< +G + 68jȣZӴ<G UJ\ #J7á{6h^b{?v[!{8v +!J$D @2-Dʂ xPW`k,@9GY?[ԟ0G^m8rК.5~a_\0A O:YT W*N.gd m$VM{Mn+rޓ+}GXo|/DA]U9fy;kfTW5-hr,lSNCݚ;d\%X mh#aǕ~Iww[~8:ZڲE7*HFyb=41\ T3f(8NYɲGNWfd2"+Y&YMj:.,/>R+цhkknтҖQ|k9T(ƛm,S/My2̣d3[n\F)%fĬШW#^wh 8ӂ%mhY y>̠NSikTF.+_l# 0 3ΰl +(0.D4Dwq;hc9&٬i&VLlkXSi&=iZcܲUt=}kPqQE! 0ԩ,+7lFSNx1WUJ3nUK)rF7r+%.^nrn-d߂Y?=N#_<&0ҧzs+&OQA1#RVg&),3]Y +*հI2dPp<(0C9?(8/<39AM֪lTi&Sy?;pMgq$*rkPHnȐP`~˿̖qHA>+#C *B ܼg9G0s%\*(EYX'btTP%b_qq-OI,WWҍ1 %gحNՠ:iV4x i|U<}/!㤀A+ Р2|ˌ)h`yr\rYX +0嘵rCƠSW.jB豉4/Ɩd%ӛ BM +0wE=\.BD."c'1!Mdb61;-s8KpG`O+yɇK*a@ȡ3$x \ \5\t5\@5д!`u+-M_M;"88Lum6{&P\ U jbibh[6ҋP@/DG=lyC2D-\X:` +XX G} 35ã9p5XᲈXĢ.$ml||<[\ +nm 5ʡ]ֱ@!H]/Y@ & +VxҏVx£%RZq.|j&UL+q4+ZOX9HfF$|6K[w+(݋ < d۹xvzю(8r965]@:r;zgAK2>Ab{婋t} A===uh $߽V3u"o%9KɓFbvI9V#= u̐ǜc@E?eb(Ea.^zCU>_Z>QA\%!Կ_p55AGy1~ [/ g?>q&8Ǣ%Yzq]9@"g 57<Ǽ=f/΀w9Q|P5Xr*.S 8yP  q-M\׸p@E~_).: x~B>G"QUmpA0ҷx̯5c=U K+<.$;?1?R>@k?eέx +^?ni 53|5ezqA#_L +^.{8 3w𗿂8#=C=:n$2y?t,Y?8VrEr?أ8G:rXD^]M2m~A馲.= ݠ&救GZq+YȑLLV8DDRKX%_"6cvv'iP6Դl_+u:~G-rE.9ϢB1į DWc Ğ2 YNy: ߰Z_j%yWx=19v-{E'{Cf$Ilq1 BjrԑdkL76`0`n&&`CbH'@B(HB[Fi.K@%Ye (mfi6AZN]5mӺ}m6MӦM۪}ؤjڥ4G.S =z?y99『w f 8$7el{W('ߡܿ$xqÖ8 1Ua#f<ߦg3q;cX5#Df= MSw)h5졅p$v1iL.x +8K)gYBDim` $]v>NK<n'2LY%u )tY='e*\v/q~J M5+ɢmIښQ{rڒ˵9%M)aES՜USj61m"Z~D XR(j ?R/1~ +b:m:r"8+GS IږVQQU6`(VBZ7֫޸Qu6Mݪ5Ri3)yNU +VUX>T3SKH'bCطEȓ&K"L3TgU\Z_5ZjUm(hک_Qgͪ,mUb{Sg;>S#{Lo&Yg{(C$;I!Qk,ekͭ*[*m媰W^2GJ[SI39OQsWޜw6 %33IcuKZ~vlF9{IW3SNʜ.*8'"WH>涩 Gyv?ʬQ5` Q)-[J&RVj0vƟ^Dw;X҃][K> 'dMSfI,kr@ ʨVz(PRB=J +)1N0uR;HfbM ~f/w_ዾKax e"'q!a$|:xĞqbMG#a{i{sp mx AY2`͐ѐb: }0q8k]A(nbL4n"LvLavL"&i0bK4A<&?åC){1ǎJw ցJ9>c;cܘɋ9.?7FҳB_Hx| +:;_ U:G;0\|Hv,bb,R(2 $y{8G^~;?oسEi㗩WH*_%p p Ǎ' 67%X,e +2X&8ҫ>_{Ŵna"r܄*_a |n]M>gVcB~PW +Iʊt9c/ggTW6\ۏ_ݛ¸oo=^I/G!R6\{tƟ6%inmzK4IIKKEZ.E\1AAȠ ás)`e2q2&sӝYiOs~/<Yz,GG>ۇ;h +{mf5*c?,ks51#ꋚ b԰>_8?@}^Gnx7u6v̀/b@2(CAw6ڦq-gҿu7g8?R<7{{BGeER?.jK?wvT=:uч踂89,C%tz gz@{཮kz _>/߈M_p귪һܷtɜGG8qyqa6WqR6K'Hz0v]_p|ܟ>ݛ,::)tGsc88#8Zܬ}d/ _R@m!B#_y \b3e'"֯MzGek=:Bt5JR=pt±nѽ(\Sݰt*O.r?b̘C"f'Q~mmIG<4vPAo ɠy#ynsmEo + 8,OUB$P]*,Od_ 2\G{?vX-s^tSsd+\x +)c:h_P +~/k$?fOyF>OqmrѺ!.sSc>;\䱧"p᪇pMdptvZf^w@dG\ȝ +-a4uAL&cjHָA9ʂ͞*P}LHuª4Z59_'`K0\RE-U$Fp+mw_ղqlI&&cqjHNQ8:CjU`b+4$JUI +$5ȗ4VH%oUqOxBwU`BSDEOƮGm%#P1i(bPɨ!Ft94y4T*Rjܤbs +*HW5r[)\ʱ\zD $#F#ϯw泥8!7#kȍߚ +YJ-*RBK +UX):Jn[rm3/T}RcxGi3-»[1nŌsJnFS'R*U`cO۞<{r%r9|I );AY㕙>MNgҝ+*{^2^5MlkH=Sl-~@ Fy24+iSө̌\P +93*=+4L={l]< K7#L_O̔zvx75RxeXՅ|vꤖz P#6(e3Ǣ49\#L*Yek.{LddHO*sLIs#>|o #c`;3 mcHrSCn|Ĥ* Y|vY +ke,K)EmJ.+x U\Qy|;rȻ chiCG3#t27^RL%VJe,u) % VRYH 2*ۡXxK^n"/˴2K-pg]9]m jF_-CF2֓b$&@>*-JLx_b}^ SH~gCcc ~cUEp>4q*=NsaXFh11+)`bA MhPi`0MA C?Vj)x6{LzӐأVBV7q7 $K%l\xa0t\x ǸcBHuhcC걓zCON0yy@0"dF\1RkRivHMdM4pġӄ&45GoLLk.Khhh k\ni)![ 9<h#;?;: 6+Xy#tp 30hs1 ; 9tG7&4nrхU]Gy,AUEpܳ:^J<a<2h6ƺ gGI'M/uE賏FG.Y'ṿ; 1pa0p{Lߐ {%W@Ca!WқO c *r1@_RqpfLtLRl`ut^o$6hVӐq -8.sfp>rFqخR+_W.0Y āt0Rοgjs;pH}A#GGs"^@ aG>|Tp!X4T |pƲ~kg88K8G<N]zS'u/ >z:=E;N*ңn<7U#` :._ORܠԍp/h=k!G!^7YJgz\hDt*bn 6^ 489x,؋h2GM>:p6Nv4#ԥY EfUR0we mXu8# teDt2!Ue/Z"\B.j(fmV]O{ jȭ7\~t \χc9)2xYŮC-Z@泳R\ ,F}9(48ĵ5xW:EiU5YJϨ.&j$ +n1 BxS(fYjC(i>'{ogG;k}+l$n9C5rxxK;\p%'/\p k4\5hr#{#PN. +idgqedY1@3zMaL$?r2C&X5>ȡ1A.%jTPFgiD a!w+'tCV:7)5C)O( 1|!OwDt.Xm)1PANO!ǁ紆*dT^Ur .eGxGRZySbdSd{< =ZQ1]!2YQ,jLN\r,rNi 9~LSeLȄ*W*,qB=9  +NUHO]pwL,Xߕ|VLl)f9#'CNPEyLxl2{2yeLJUD0(-U3Ui0v|:ɮL1v +ͥB+tr)D]᥊y +ݸ~0)\*ָɽû{Xfmհ2V|ߵ=růĔTMT۩jEZWj^vqq*B˄ΆKZ[µo5c[_U`8,G bK^2ٓ:hh5i|1/jZVXA>ך_,N7Ѧ _\[=_iu`xD@yy_2%ʹx>r؏{Թr`jf>+Te$9 `cU: I ~%ٱ/袁/h _s)qqlK3[j ML_>7\;ֲc4QkTT((kx[w +ሕKk4U@{.J1P╢4 ŗqE`ƎUn\ɼEi]l'${.yǵ1Ja} !Ϛ:mfG3m4I3]4E35q^'$;i츎[u r@ +1T<ȸѹm a-߉MKvǀz(j-|BL9~3p.Q3 xԭGn߶dN;|ܛ}6'Ѷ$3'qR<%&4S|qJ~DzR>ދx/9f |ʸ'yj= kâٱ ]0!,ڣp~ӳq0rN<Qٗc;ޥ`|<\^\e>PF<?WOcq|xiorM_a{ u| =&RK忚6W$dv}*1?X߶i{#_\Y3Nmc} 6>|d)];__/9Գ +3%OlOI' 3d,mB=E;bW8{; +,g_^U*IltBtl x( $/g :{'iv6l`gv;8hûCQO)͠s'I=. \x)9)#+yJ9ۉxs'5ۆ Tx>)3tSI/ WB)t~-vk~ƻFvNZMsEp]z>Dk;ddI8,ybi|ENbWVf{crVրco5(Xe1/sSG j+GYvꎣ7b%8pTȊ*J3LJY–ٲ_h9 +ukTz.?.7i<%oD,!`R8\)`. .jȥHB@H1%폎@TXb/&f:.cK4#1wsb=8|LfҖxxCCxt $2N(mt 5&j0T?CpmG2aEh9K(U/0q&{@AkX = =Y&zfͺ uЭ>HV^iPfPwމЋlxH9,4ٲ5f` ,x808!qM٠)]I l"10BTI##P$Ccba܍2Sc5#&F&G;Τ-gҖH#D >[3F5b( Ab${izз9&l^}p"F;b2!{asE +D&x#8j$,byb!p,dLY]ّ!1CHlp\q .U%NLH-Rdch +^@D3Hvgxq|Dp*жhcHu}67jʌ +?R#3I3< PS,> ؞Eq\=-R'6;9IAzɆٜI6|XdA,@W־+Y?[ړC iBF-(ӊ -A[(oq@j ȡ^s8j$,AE$h~?Xhڊ>ǁ-•a0|!St+R)5D@*zmahCFnlV7qm͐pnyQњ+{O#Ok R>5y]Nbs0 ;P^84~EJcil)%dtUY#Wq€rFtGz](9dj_8`]భKJ7HKwsؗ1TT..(rۮѵ}4f>z{ϟࣵLAϻsƌzfzkfL(քC ~h?j}CJ3E%/c_TVJ*pT_xEy\_^Hڨ;Wi YA"ҭ[l!Iv^يR9$Vd2nqy>=/<y;s+Nw $ ӟmWy0\*c<0gלuN@B! +G[Yu?R|^rrH/坑,~$K]Kn`l=Z5[7q|gUnr"~F8ߛ-cY đ\ೖ-K1Es)`[>zyH]PF(볫ܤ;dqFV Lk-zPߔJK{wWy~P'C8d,ߴ. :J@7 dzqF@` V" 6X ##  ZeWŔԃN~a~qfu#E".lйy.?Xϊ ;m HK=`(tu4G!gn_:^!B@zhCLZ8l$@ ++ @ e!OAx C8~ⷎNs]=/I֣3ѡM*{q6ljK~!}9Ym!!_7Hlް(Qppj`0GXs,D`+/xGF@ҚSШ +s=t##URuMT?|zq+[:sMnִ䂹33o\P7.B *OEtO1o,N4GO\ٞ~pc݌)GR0XQAl(f4 M)h@<׹L"]NJYsr,'%hݹv + ݆/U)|JnPW +x kFEQ`0|=t[ 1x}fpc3A&ŽpJ ~ 7%1,۰PRND,^HU0uf>7웻ñ]zQZVq6 S d`0XA#GVJ[(9 +RWvHo^0x3 bx +p`+gQ(^1ױ>9ږ騬*^x#qb ,Y2aHwcVMOb/f=-ȁ/} - `=瀾}k) +4`" C!)p3:mu@XoQv ngn3w:s+*qBV- M$NreO{}v R` 83JyMO4)XZGyQj{DM {_πY ̸Ӻ|)weUefᨈ.A]]dciI~\w<8/t Pg+e >*7E`S# 3\GHpχHn aKS[K 5uk;mɶcVރ iEHD_+߾U\'9GVXJ¬9M<~̨փI+qijL9%A0pcF"((`77Q#'q h[:-H,n#*Z_YXO +=Vy!pLYzY*K;x2}{"w7er"Iw:GSy\V[<6'Rչn%:溬'5mDtbZL\&$ +ܾ~vן{}߻<%E&gINDHJ"NƄdD] Q!c@ +d *>7 8PW% \ h`3^l:93cM|;egA :܂8XJ[7XI|0|N7w[{EkvcJȬi%J-Q#u|FBѵ<~ԠVTw|_JvV{J,͓ɯ)l/` R|Vxfm 96pL1c3Y0ߜ,/NP[@Qt+eKTe9ۏ-p +Ȯ|BpW$ %IHO޿y:~0?_(gD,rE}KcШ+)J_*=I,?!4l=Å[Pծ=Ğ [ }g OZO$o!xL=5dbBC) Oմ>RIr\r"#;@V2[kclzi5a#*Xm?;62.#:ĉ֙Li_8L+ +endstream endobj 9 0 obj <> endobj 18 0 obj <> endobj 19 0 obj <>stream +%!PS-Adobe-3.0 +%%Creator: Adobe Illustrator(R) 17.0 +%%AI8_CreatorVersion: 19.0.0 +%%For: (Manuel Jager) () +%%Title: (Untitled-1) +%%CreationDate: 6/29/2021 3:09 PM +%%Canvassize: 16383 +%%BoundingBox: 0 -1080 1080 0 +%%HiResBoundingBox: 0 -1080 1080 0 +%%DocumentProcessColors: +%AI5_FileFormat 13.0 +%AI12_BuildNumber: 44 +%AI3_ColorUsage: Color +%AI7_ImageSettings: 0 +%%CMYKProcessColor: 1 1 1 1 ([Registration]) +%AI3_Cropmarks: 0 -1080 1080 0 +%AI3_TemplateBox: 540.5 -540.5 540.5 -540.5 +%AI3_TileBox: 250.799994468689 -952.500030517578 829.199981689453 -127.50000667572 +%AI3_DocumentPreview: None +%AI5_ArtSize: 14400 14400 +%AI5_RulerUnits: 6 +%AI9_ColorModel: 2 +%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 +%AI5_TargetResolution: 800 +%AI5_NumLayers: 1 +%AI17_Begin_Content_if_version_gt:17 1 +%AI9_OpenToView: -599.268292682927 149.073170731709 0.82 1829 923 18 0 0 46 112 0 0 0 1 1 0 1 1 0 1 +%AI17_Alternate_Content +%AI9_OpenToView: -599.268292682927 149.073170731709 0.82 1829 923 18 0 0 46 112 0 0 0 1 1 0 1 1 0 1 +%AI17_End_Versioned_Content +%AI5_OpenViewLayers: 7 +%%PageOrigin:234 -936 +%AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 +%AI9_Flatten: 1 +%AI12_CMSettings: 00.MS +%%EndComments + +endstream endobj 20 0 obj <>stream +%%BoundingBox: 0 -1080 1080 0 +%%HiResBoundingBox: 0 -1080 1080 0 +%AI7_Thumbnail: 128 128 8 +%%BeginData: 2039 Hex Bytes +%0000330000660000990000CC0033000033330033660033990033CC0033FF +%0066000066330066660066990066CC0066FF009900009933009966009999 +%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 +%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 +%3333663333993333CC3333FF3366003366333366663366993366CC3366FF +%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 +%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 +%6600666600996600CC6600FF6633006633336633666633996633CC6633FF +%6666006666336666666666996666CC6666FF669900669933669966669999 +%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 +%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF +%9933009933339933669933999933CC9933FF996600996633996666996699 +%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 +%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF +%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 +%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 +%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF +%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC +%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 +%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 +%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 +%000011111111220000002200000022222222440000004400000044444444 +%550000005500000055555555770000007700000077777777880000008800 +%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB +%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF +%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF +%524C45FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFF +%FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFF +%FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFF +%FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFF +%FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFF +%FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFF +%FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFFFFFFFF +%%EndData + +endstream endobj 21 0 obj <>stream +ywO0Pg + sẓ S z8wgwܸ-"3~y07XtA=՞Ĩ6O5ɓo~HLflLްgo/?!ɗF}UlctQ:gt[pXP0rMg}T|c݄5 &l$,i1+RVg6Ey=_;1*\юsTؘ$/cJZ{5_r[IuVN͓p:_&mnx֒6Ћ kOB= Wt}]FX[|cv]J sW-Ú=a5=Ms7ۉ ic1حat0 :5r/ :jAYY亡5'<簏)OE/艅M' @>Sȼ-/zxmȄ) 1apALXPw/>.g@! '+*dʙY4vEOض7#<]sfx9j˅!?S=,򆛎w][jD֟6Jim <糟RA\F a `C[0%g$>OЩOR!;eNmZVo-??bhL{3_%ɇ}Onjͩe_hz6?NEvܟNKEu}ĤE:9(9&(8Kmjy 4SeS}4ؚ[3J콀ogM^*VM92eBT-埕"ΐKRBoZ(%7$)c ꢎ~qз+?5%nx7!y Ф?,=Gw=U )-a^^0>SzűWǼU OEcǫm^‹.r/ulDՋGdz> +N||t XGQa5-641E9|?lɧ \0o[uAc 9@CȐ [?3?&'h'dUXiF:$D5 {^._zju7=ǥҩ^BRXG)?<_s?hyfj]CS'յO҆c,&Njq_&{ >L}ܖ$,j09+ZdUz|RԔzIm5O)}T!-QVf[o'8*dCLFɬ ش5]{ڦXt?.e=tAbv494I龆W*t5=侫+g%hb5 GR^A&:NzwS|fVstU{ZϼL+ywBUJfi(Sg^Vލ7%~6"Nͩama%(z2TcnkpҮ)]Ɋ#RᅛPxMJ[s7]ryR\reYU3}ݨ73}v6|j{6Й͹bhKvZv<,NS2xܦK@9~뮶 9VvUdN͞m{eV]_m}$Cr/.Hek6!ೲ KklƄʢ.rˉX6 Bެ#_6gem&z@ڪ=/qL5; R%3aD*ݰi%/#e8Zl-=홋 y3%F&M o|C;^yǭ$ݤ>iKp&#o8Y8/ё)aSe㇛' Ĝ7{> +dl[C]=<Ɲ|/~v{ m/^AGUg,Dɇ YϮ<#o.17}4>9-}L5FG=QϢX=owD6Cac>e?faMu۾Έgo0kZ.B5?Rc,i iJpLXמDx0+Vd暝6VЈ&_ Ko)mi^TGTx>I#ȰoA*iGE͛eBKZrvwNh!G7oͣm[;fD'/zٞcG8iDIg>jMZxgT}3=ϞRGٹ~vΔu%MiKfTlX( &r_8jEi"Sm>k7Q\9]XOٰóg䍯rې_ 7v؃{窇K1̌e qHYA{>gS,QAז<GY9%#rVK]򦇰2BʄRӦ"fEZ0I!3`!r +8Y@ST?ӳ u [~yB]4qf, + Uϫ>DtPvQO(SQGȅ:j(&_aWz 4nt쬶y?i&z&ZF (E9,GeoZ uZ먊+D^dե pG6B墝]vu2FU/ӚW-d#Wّ9aCsL֞# aimPQ6M-;f5nzɭnbڸ`c4y1^fr 鰏玛Դ@Gm dNâՋF#hy8.~Ye]TpI>P(_K~~y1m7o}v'LIe_ _g:T–nIvËmzB +z2 >=/t˅-kbPL4zInٙ.Ԑ@* 9HfNO;hvVǬ @+r +0UkNR󊃋s[_MW'oHՐ Y|Āyg7j &E8(X2A~LugQ?MtYvw#\A[auqRAK^b# Fjŕ19<%,[%75\Ų D5?_6mҽ nVYq9.ipSlmSy'p{@Fx]1fW.xMPmJ jH\7&iS5';ٳ="u!3f"jkGowI9:1d,[^ɖMA2֜ĪyiN (N)mzW=Uݣ EX|ӈbGY)-f,{~JIXfh,Sm W-Emc4ON*T8af5zI h~hW.b65:dBkϿM&Xe `~.d{dNIXtax?jhD[n|Ն)Zj_⦣ü:ݦH@kmzcU+.6ia.˟Ru?`\:Ľ{\ݺ % eN B^siҷ=tԪxxf p#r)TpꅪKv$4C..qRO)^ #ͯUϸRv6qM)& tS=]OBŲְ`'Uܺ }/1eKz$aٻfVˈ=aFMi3H1 C: ,ݴi=g `-`Iڗ1+nl-\0v"fGtbK(\2!A)4Q`ł.2 :\S{kAC=ѻglDFkYqEƶÞCnp4!YYAʘ[?{h{Oym޼yȢWqBwg,lٔZ1ʥM۷15N!s/^ЮxS~YSIS$}U66D?t-tw;')gw۽5I%/2M0TW?)1¤>1K.:tAl%{bTi/|\[-6`W=D8;!l%)6wDlly; \36NsOtѪ[2v;dcΝ \n^~e_{@aY~>.Ωd)+A~&OJC|f(2rQo\Oc"θPZJSu(eC,Im[6 q ;7=y>(Uۄ9N_ӟGRJ~R^nzd>ժ_?Bg1(m +T`P4gBh:hZ +JPdw+/53_SYpۿLBWU+u93rZLY+\ +I}oEf8yJI;s24c]fðOS=Z:GRTCpI3nƺWA~5+))!u|q)>#8̙U7PM&u!H>Øk_uPbD a"b/ j + ?&N/I 8mu!fa&fFrْl|#ݛ59Sn2mK.|5nC0hB +6Y%q4MwJp:/sN;w"p'zʍ e! &l崅\5y:߯*t%J>S@30 akIe.a~JyNE tV !uڸX +pdxOj ($T~(kG_Ȉ.4 y4L)Y↭tW {U6E'@gEܻ,a; !ڢxWdu De.䶓O'Wt(Q(_lzˀ|Ёs$(EMൺfm8i"ql䋚O/[wѳR#.^ˎx@:rA}˷cHikV{v^V9,7 ߈M$xxB}\:{$:qݺۑ舂 +-+dB(/։Jj_ILw*0Io+#[ѶE ՠK ˹Ox!&ݜQF?~;#5h>-=sU5P';},z:tH3/ 2IJ56; ØC r̛S?RLʿ-`Tl|n~K-U8f6)~K"M$:5_~q^~RĽWs"R`ǩ8Sh£nq sl*%V=*4=ӻ$Rڈp(ɫQ#_~2:2E̜IK/Ǩ ā +ĕbFo ccgnTDzPH=>㖈[mѩ#QQN*Igݝ.cs)]ϩTk +U6x2*z,!GkZnױ"l>1s\6ײ"~u;e_+?=$JQ?0=k9笒1UB|W:U!IwZhˑkMM3ESEǢ#(&sWҏ~ >JF ܖQ+v*XHrq1 #/w5F~X :TDd +/f{BMWZ /),ʢ`"]ziNDN!DVgؓ)3u[8fLII2Bvr͂4L2FLڕ-cE(%h{ ?ȭS}H񛦟?$c%f31*l\)iS\!MDnpA|҂5ïnsо.iE,i|WRcǼ^%OmŜL12D-RtR=cTܺk1%raݑ Ţ#}ˉ +4KAzⱪS:\M؆ZᲃY3 +*/+#G㡴uћ9Uw59u&5 67N_!QG\PCh^+6BZRОIXbPPQD~#dԹ΍ZP&Ua8I1.(5GU)d[?YJtG7Ig6nt^c 0u$Fab}ebFGЕDddzh[lЫ!lP*/hKݖ&K"?"wa(5'IH>zZB[07|AlȸmXMސn3Iy X#R~HK-uxt +я';iRaݑ96=dHȁ*ٱ5[qb 祋N&^(Gѽmdf,ڟofr ULۑ)SP{g TL Y +_V/[_ }ΚnH{~u繯)oiv+kK{Aw"F$3}k {GLnHk\b }g }c`~`q.OӓsMvȼGZW:oEؘ-!0LJԃ]`MNN7+&ґ t}N5]!DvkwvUִ'bUNVEL@cYo݅>+0yl`jnHg7 B` &s5t|h,d +3Q3G!kysoQ%aSu' IeIT][oA)s8a/3j~u=j:28ٮ)z"g`jZaJ67V;wVUצny"|w]feϲȰ9v1/M37c^ t%v)Z?IL0{2VB'tx7/J!0Ӑ/(-%:Y7cSބ^hDmG5*6ǻu^{QV6F +W>g{0‰yxZR7>&b&LjRA[fmYom6'aQK9Wz'/%Kɦ6,r{Z]zg}=ACQԎ׎וsQ]e>&D1&,b|<5{[@Ιf5!2?/0>>ӵHs.R +|Z&ʪbAva`G_z,.=FGŪj9mY9YSVēH-'ƭ6&hY3KS2fUpEO0`w7böFћ܂ \ Q~-Q^MɲG|-k}Z=EJ\@ c5q'qimߜXG ]69e~;w%!4-uk)&4v^mKwٺX ]o.t`i7)|G7b:xOw)( ZUa97΅ΐu=f'j/rjև࡫}au^gWk|3EJEydP0ëa@119|B`K>3p99&]۝wk'8`-#}bS\u51hu[tv*%oU?ZU62Az(Em$fwfqŇrl{lc[5mշ~hh:wӣ8Zkޟλ]x8^"Fǜ;WxģMOKfc[;Qiͽeu==;&ifj+lꑖIZj~P= `A1,#K*Mצ:\8%yw9 +yMxt l\"r^@A)+k  ̫&+|ul\a.yhιz8[ +«j[XYr^%)2[;Vr4>$ 5~▱%1DFCJ+^BA7MR*&$X'Q6~_|64%}!)xsd0 6'%y扩ij漋bzJs_p>RrbRGά\IϽ#=K=ed8*ʏ<]{UR+y.yKáo!XfÝrx{5Px4&#U]ewV: 1ykR a%S*$$f4 ĉqH)EB|wUOC}ݮkָؾ.Tu8kl|e⒓rR|Eߝ5 +*dU 4C LRUS+LЗkd{z[BM!߬(zuGk ug,2r]/=r61&1oK!ƥzj +) `(.-/*}g&.`Z;,`du` +HRqygu$̣7))+?s4XNcaO,Zr0H}usOS W1*WܟhKeROJ8xѕF{/{#aZ{Ib($*`s0Qjt{m{QDwrnow#t4Z|oI0}.rGe]]cՃˣE|&#i &ߊY?,3~D4X%![N=ƛ' yY!&?4Fh͹QRFa7Jkyg㝊!cyOwoTnԣDǒ{#%㕏4Mq?Zq-1dwUi`; 1?M=?QODp)V+cw['A!d* },*p&dVSb3 +ۦKCNtbu(*wc v[MN.:V1*2b΋+\h) kCLX'!*f%1!{/A r7(|AS)j tg\){Iu4 !)<庆orhu4m?w_ߑvݖArˇfM@C>Z!UzJPt'N4Ґ[-5 H4(HN9!!؅WM{9j̣쵏Е)+{ÄH()fon,e2{c`Gtܞ([K?<2cy n!#bf]H4"Ô %1WJ#FyvSZ̺h0Nn)}(T8v%!&gE\s~"eZ'PQ里׶\=,Qft8~uu)VoӃW;+NT]=6AWJ'!BZ}s}o~\j~?X_7_"?~=ƢWrS-1 >0 "b(q9d)ڇe2֩0+nν~"|P6xU䔀&nZ+GAs$&%A~XBV;BXMy]=ՏSd>&&gOP3/6>?)I߫|Gfok⯰-^?Vsxi?+x>9Sc_mC")/ gnI^Ƌ&(cII)^bzj-y[ dcxg&)I< ~|0?= `Ur"!?YCۼA<4 ü+9^$+㔸oF1P48AK d_ INMC؈̛?v\w ;Uw?FEaO7: /o\??t nR|~Kԭn y ?bcLǸWgyM4O;E1h .8 o?:4hvծ:%5q EӾqsi?E74 |^;aL3_DCg]H=jKLjJ̴!pKB&P3W!ck^{))o/օκ1Q~ +@ۿx*DN)QJ }h1#C)`Z<]j-jʿRBr[ `odteYrc=뢾=GeC+o?Onzp{㨤R |GƴwIYJ#w1dGpY'83/Nc/:ƠaqhEl\5'U<$)AX򻢱ROٛPLEeB[Li\dL4k-9-5^m˽HCLf9W5Vi)rLщV!š_}i"ƫ$cՇPX;>zTW뒒s,X$hj>/c:}oWugb$&9YZttg|E]-iilUْ<)$g(x=1)Gښ0Mٟ Qђ'E~7C:%r/%!+=`yhnuzGNXlFX>?NGYnGuh8g9`7T3PqgGwք9|[`_௾Pqg}[!t!e`E%kMq#邡75p#vx…~YؗE\_6W?^oߣ//uß13')1HJ@N,= f+8lM3q&rgfwp21q!粀⇮o+stmGK!2Rv3Z{5CoDO }ﭺ\ sҵu9\mFW{v1!.-W>Iȿ`}^?ְ1vaMR[=W[2 +kV>@O&O#i\V +u=ͳ؅ւHuw^KS hGK/S}-@pM?4OŔL ;SY&a/ #9>*6MRr>6~8sn)1p&-+eݷvj+l,|d3b)}Yrӳ@.pJ)i^p7,Z=lmO +h(rG5PcO1)%fTLC&i3u h(:Kic@H˛룔Ti]/rFХ~5pl.m⺼7a] g7Sϖ[OU\01G'aZΖZς3=/,bm{ՇTt KB$~+oZRa.h(|`+ >oe3J rs/ ZȑT;sk)VW]Pek;BKQPʧ`յ%n).Yיs}6;趪\Z2wS'JL}oK-yW6>?pjKF +>ae?.jVe2Пs{]/k=7G/ =_B ^ ?O9U>9*Χ&h?[x.$e)yMr-l6 Hit\mi5\l-}B=Ye6nM!&ɗbdu_lE $_Zκo|b2#HXqAη[OiЧmY,zdt65ýȪp*`.>O@#RL]YsskV_=""c@[ f8ѿ//a&LwH )kzt8Kv-RKRFqpjW bK.lvZju*k9Z$%c&xGjnymCRa2od!9|j?i| }rR2 |a¬tu +!$h3Bm"je +2~r {_~w/^~8OUO3 #bV:7CC=GV wN)<ɥ^D$0|es:Qy\yݜdc76c#r0h#!MݟFi9&^0hkHKixOzBmymglwV=_= +dxc@c5XdԈy97mt" X zt`/)wd V{?+4⭏Mдsx8Ln ];u\lȺ)'JFm%iɿ!( +uiꞮ=w!=׵;g:bve'<#;dT84\ 7ՏdYז{"g+z+dVXQ3}%&_^r> rDv dAje&r"nkڗVm{UQ[}W}: +³ZWll/;Vc.]j|2\&{Y}$"|}ihiRݒjg楽Qȋvkh5ӵE`#gyCr~&IM|k0oLJJQl[H)(Y0p]u3FHUj~˭nȫ{W `o==^fѱv<2 }f@A9V0@n)${ Qҿ@+uᒎf\[ty]$8ĄdRn֏~w5][*f"/+ڋR4!!UQK-EH9vmWas@#A\Kky_w4|$q"&n9!~Ivu f٧qn>2N0 P9\_[O#.w7K=`U‰ +@>^%K~(R.Ʃ*],]g>-)G]=\E6 y[&WU׼2,HE|*^ٷxeaiv={# rW̻l.xxg`7|dmJ\Ɓ 0)yGBģ"ǡ'. #@ޙDMV?]{y$ۖiz]R2M1RP좚ؽ'_ r-rL*w l6HŬ@a@j כ vL#,5a2z驊Op˘ m/aySG:b^`X-`^dF[㸌ӥMLV=5/M%=;Tc|䙖)1;'+xK)7F1Q>t>Ra2ʨYw]V?oj+emw7GZ>ӯa:=MLW$%4;Tp[Zᑳ>5W*NVس5.@LLA+=>c5SPO}&JNc kwMU!L +pԴԊ~6.%%ǧ0/˟gi6T6wneU!8ޟz1(!*BVûz]*T +k}`<-JG'OZ:ܭLZueϐMx,9 +@(OGfj"_T>+H>+!mBZKN+됢,SMCL@{%Mho7)Ӕ\y DGOwZ.+3~vX' 9kuM~%WR7|6p ̭;{qlq>Xl̻UR+uaH_;rXf`.IU0,zўe]hj=R~GZbsM,ֽ@CsRL%j.jL?V`j_M*9Ye= +&̫Ct\hSmKEmSƴ[=7e#U=~ch-|Eb4}!$POMe *|jugMLmGI~P"Ls̡.S&POś&PQk~3 / +DMॾ=QmVkELX~lgkc.lB"7Zޛ lY[͍AdOx$ײ>-Sk9䔊}cþwu*ꋁEu8)0-%{X{m^h˵){"Js7x>[՜nBX4,ٷ]'恝wsS +x5˭bhT}u.9ylM(|֓}hۍo:-Z:ϲ7 x_jo feL̒&iܖ-['ұ wbx9cqzyd(Z2{9~㗓 L35)C\iϾ܍|5n~:d[c($*%8,P pWOmgG`3MݝBGO3LT,1iD=PS@ڰF/$/gT5_Eۛ(^Na+kpus=IIaq#ñWhuP \C5q梛HL,]N1Mb5ݕ +Zkm [-XugSxov?b\Kޭd!*B_I79$iCş2[#{ēuէ%W񊐭W{?StMyZeSJrtdhp]= ?G+ lPrV1bzUC?񙾥M5ok%&8 RlWMЪ>MF@Jѩ_v}Q[엓܋D4D)qk[ar )7pcm}ڮk>pWpevBNߖƺƓM&é9ԵUt'CX@!WN?7e-'e&>[xKB<6PqŻ+ ~310^@qzJKN+ڒYfyPL/Yh##:ud\NVEx$#[^t{~Z'J~/Ը4M?[2Yfq)N9 yh =1yhjO JPEċ*<08#'MWSG:^՞rI^8 ;EIpj:Ŗ[JsJyǫ "PyhG1T?c U=y[Qh{Wp£YVAY\JW-t+/>9*aOךm4$!d*?ƠRR҇ԣevSGpOCu*kE4RԖ5l4&ɧ!orh>5XD-0^=ZE8оR1{=~tDosԧ-&xZ|٤D@klsl{qk2_c`= wkǛm~ӱI)` 2ڷD|]cyR0lJM(1B +fE^ĿL!'Kud7CJ8Bx[y~8]lcUMNV8`(#yg6a*/Ubſm1$\ޓ[W)mZՀ~ʹ _ɚ^-⑾x|y6.e\znr8 fis َ9LCG㷇1!=ʧdވG 6)%@ya}Z.!67gu΃B xw%JPo>u&ھH4Miq|aX`zlMLL n#{.]Ţ eTM,irAV|X䑐Jϵ M}̳2"tͅA%!fOt_MܞBGj?q@56!e9 77''.9|hE)/ןxKG(? KVh|n|+Z}P3^녆xi?7[΁+9ipM +*`"1JYs:*\_<N4Bp5ٿҽ1M]/wDCyHGm_èlhhr)axzoɍ\[I(M+qn,P:xd.mEn|_oQaӗ嶞O;X?sk*6˼\xFzM,{k E7>@_*9X} 嬼/F՜''>ロӼB`wiFfm|0CNrHإE6%%xO|?{~ski<;Xo~Xfе%ꚯIt*0i;ʇ7J6d*~#滔9=i}5ջ Dr( +?Qbϗ5-WQ+6*Kqen-*%$ ٞEbƑ^u;et<>&5m35{UOb#yinqO9VlD\[D5ѻ#7F\ k޲5JMue\X=1 ̺YDg,IkV11$ğn7~24h#5.*({fɸ\  ,:T ]#%oe nHDPv2ξ@tn%tOd쁄Zzsһ7O Y+=zגA߈- +>z[%d\SM (096յx|6k,2Nձիaݪ/yu[(# lhzw2b?钮)("Pܨ'[K~1Z|⫪SU>5YŁ8/unu'`!߬Fއ|~-Uek]vg,&gG &qɦWhH ĩk~^g{T <*5sEf_kns-6Y%"Jѿ?mS8FoKda_;66rٖl$8ٿ<['B5Ufi둎/@{tV,Ġ*tTO|F`Gf5tb h'PEF[(?`Ƈ떩֙n)&ٵ@+v)zWE;:4Nܷ=Kyhsx Y&19xKHG^%1ty!2joQ#pt%qWkrԽg&}4mnss}ׁEX3vqQ!9#NW[ZDkx4[N{RpZkCH9Ã9y. 4g*| z5=AKt|Ωk(%ʧc]X@}ux'Ge"uU}]QNX(x~KH=$Ω@VM~֡?EL[@jܭdavHOWh5xkh}x_ e9gz择GU5.`S,J& ';䤂>hky €9ϻ\ϻ<v@'1 % uZs#3nPJjϷ5eF7k)~RkڧS|H~D>[f"NԊO@edO|O,1)ソf/b0p jw⒍!KF;1O_eL[f I Thc}]YY1!ťdZ@}ffl_nOt=7V9UjQj_$geL3/RrOVyuF`҇9hiҫ$d9?;(BʩզIPg?g+Ol'][牎U{&ŁzẂ}5P_ȕ䒯,Cc_XE9$⯆O,S + Ζ<@!{/ 3k:_K.j?Zɣ@;7{g+ٿn9$<[%d7ÿ&g>h#>'$,&8 +0)zkyu?^搾l't]\?7OFSd^ڝBg:'m@t,ӵ:F 1sb,'@g}1֩n5$v*TsqDa8v:55RU +m[ݙ\O罾k9E+JI19 ʲd,怜33n4)ݙ/vOkwvv[x\TT.NwkҮE`cP:'UDJ;^+˫Ctne焑^CZi8hqO3ʳfmhL953bv#$t4|mQ5iޟ脵3,HZ 3nlN\OoZ޾q ۍ/kL+@ 'ն>UR˾b, +@lh ƅK㊶K%izj۸T9o[ӵ2)yM=4ξ-օUYU{Ӽ +ZJܤd/$M'L–QN+걄^҂$=e ﯏I+Cz39L6;7 ڄ鹚 +Q8axs\[vgcـ\<_›)}'fp izﷆOxJ?QZ9uS0Q +^ NuJX@K8Ĥ]&-xѼۚv3Y`/-[_MJBbL<qs]E\\^VWc5wuV'qĪ`} +*>xRPvcv\0ڽ3~čPsx1~YLdxeI=22E΃K/GbZq#bT^3~kfIOq=(a :6&Ϭ΅ݒG:F>xXyxq1<yE28r̮QDWc1Z6A+r)t$a*;R~\z%T\$mb\z'?iey]4_ qme8BD+A"jTNfe]2B;+՘W)Oڥܸә02*cNb7i_ύ?r?a¾Fҹ߄MW[o<3/GC;o#ޫn'`Tf4"po.Ws_w3V5Ef!7k)3K_Wܫ悈V:&Fxx:33vNCeFU7{+q]7@P }i|bm|jsq62+˸1{/ ڈUT,bB*ŵڔEؒ0 1#6a4t#aU$#@C ƙ7cu_'Y%LNMޓq%a%gpO|Z +Zx^q\/%Dv}|zwz%5bō*F$cLR9vd,s i xڽ4duWK/:-^X}-NZqs(@MP__}M=s*=3#\}7.:I]|la tRq[Rq&V/뽽0^NӘ3_{nnqi8Dt86j^^j=:Y}C:>ʪKĬ~/ +D)GQfi)1t:p7h6+yYDnV*N7O. M~w ?νh;xI\UWj=a]ryJQJN)meZ0髅ǵ_lh=I%yPʶfr#"EAF[G':ƴS[YEP9qو5G^IEN @Rr0;W%L:*jrf qQѾwt/I 07aysRX9"mX,*t5|<1+Gb6T3rjiX_{0ZxTsHhWӛt *4P݁$4q<8F89q~yx~SMj!TK3>qqĂM zQ6A>斥m]&zcϝςmǒ&veĤnLk.1NnxE9UQs3[ŏ"3 9j7[7o/8e)j<4t*j47K:7:Ooy\|w? ڣ&N3Kk#ŠGBcP; b2&ؓv7$ +ꔸ}9+ʉ1~fU4R/fg$*N~k-Mΰ_`^ "-fzgha )1D,pݩ>`Q0$b j{$B֣ۋbV #/uFRFkڭhmGF[nLNƌY>?ǧnێ-ÿc&mWF+9?ɳwB eyR\ z󪣣'>Ro֧sE?>n91Nw). 2Ҷ36%7(#~)>g׽oa?O~1Q9L*jo 5|?nS$1P[LMŝS@ōK3Xv'hIJܜM,=kKbVq;xy3WGAql.7/tnUmм_v֦Duq>=Ұ:PWߍj$"&m2Ƥ>/CRbZmݷ9A8QΧF^mLK9.&B j:OdpƔrmLR<,XxB>1i? +>W]F/˺m=8_SHl9<ەS܊46H ohgtY|z.La^_҉^زZPih<8N*_G䜇O:Zkۥc洊}D>:ppmbWg\bǥ%eԥ1-LCRjy(lɺ"V{,ſuI?>m84n2)H{ .ko⣺oCu߃gr[ w0T8Ժomr)fS.)8v,koOm;>q*P)6a+bPr*1S&jEB-AJ:C:n܃%_{5^?1s{P|(͟GR^nVݛɨWmi=h`Jdpn{-a= -&c":A}J+O0J}i[[By4)miy?jHE9%R&QS|I':qtcjrv68ɺ1kS< etFu+~Mҋ0L͆ϬJ#|Ы?l4 N;&$Y#A,=ʥ¬O&%_]&XmaisIKRӳ*3.!ǴK\ Ocv1H:qqsF3IGRzkI`M')8mOݽSQ-l~64x8x*jf7z>acWV~#҆ xvrsX%gCZGHVQ+{fΫol/hnnjeʌׄZx͡ɎK+5GF'fEګ=7{6`zZY- @Fƚb6f-u&br1Ӹ5+3" hEe~MX Ax5dhZؔJ@O& OWQ}r0mYDYs t!cCB9:Ϭ6}?InqX.ݞP}Y$^tݬKOO8rdts3GܴwH=ne쪄q_L[]dXx{%f6b+܊ =а7<.N XfvYBq8I⋒//|Kl\Me19u]%d^1~(8N-Of~h~sop/:cҵW&fjmD\@Hyu1!m_m]Zz^jY]~E8[sl觖^ .jK8h#۬Ls')NiBg#:M_E%}:\uxz&grVaK!hXy;f'E͝'SNN⚈nP*s*6CZ;8^S?L8p-ྫྷ^9BIn9`]4 +gĿ1i4W&^S-du :y>5VU?, _#"qSG{V^VE܊UɺU␉_F{=nujOx|&mS ]BB/c3+4?t^-h-7oQ+S9Ҳoq'OxyUwvFݝx~[u ٞY`4$DQĢ}1ǒ.U~^ѷX1 "3"Ck |oBWO}xSRtfXZA-xU,t}GV^7:q0 \{E_xE>>KیR7u]?%-LǰL_KA; [UY֣4㇐[]4C?\I>b7Mdn";-viNDvZ&b7Mdn";-viNDvZ&b7Mdn";-viNDvZ&b7Mdn";-viNDvZ&b7Mdn";-viNDvZ&b7Mdn";-viNDvZ&b7Md!I$~woT!K~vIUPD|ANѹ|qg~:phU֞oQ{t*?&v??طg}kG~觃GrC/˾G8z{G<>бcG9/ӎؾ#Gߎ"(ڇ*?؞oP'X@_ tsdX\ax.v~.$KD+%{`ݛ_copf=uρ} g?9>oS<8B\ n6V%+aP#ZQ]h_sVncêC-1-b̮LK΋MkԂ4rx[$UD-JN HD(-+k&%#g701M+Bq]ljMF[ވYv+B(xd /@:䔠ZY{ڪ=gU$-֐xv}ʛZJ b&]rHSCڄUӳW_:^ö+mFa+bs0iulL2 +޴PFǹe)K )%m㍬ H#K⁵ _-?)$ɸ{1R9%OH\#NnS%B sPrLy_!ͨ{R1iNZuF-iE2_<ȅQc:e1V_OXRXKZz]4RSfV->:^O1rV('W&q4B9WLP#6:bzjQTG) -sC+ S$ \2 +fvEEmIF7J;6'|p8:qsIic +Pa wO66QdQe~͸'hM{cY ($)sIwG%y<)"0 "fq{k/xBƪ]==1quko꾎D-GIik X)6ԋ)‘׭?lN1.lJ8ck/gs1/Ŧ׆;1]kIJ yc6%ۆZ5(NP{쌫Z݅T*jIX9/îCEԑiQ5&%e6m=ώk~ZE|DE OJևXg¯Q-p%>krs#EIoN.?o%)iRP࿄ߚt:4rytQ~Av7S +akP':S"Vv(0~TT*YZ6[θ%L=\Oy>Eam/[ OSdG.in'uEMM처VglJzoES_1+W4υU1J) ڑaZɨx"#^j;0{uߧjA̭kۿU,1-{v^x;jB͇-hX|ɭODWz +;z?F* uʣ6v%tdv/jzSn97UɶfU󪞭Y(?'dгEPW@=p'1 t)Y 5SJ9Fz5iV.?s#Fԥ,U8YLm|ւ;;+dvcf^"feҤW #48+RB*[/tE dܵa꩸[3nwYxNg7N+:9%'D&%qdl~!:M/ +!Fzi@03+n)3j`oNtM^/D3ç;~-ڥOz-3.iZzQtZ4~8>ȮjkM/1Kk9.4ۙv.N [ZF/IX)7:q't*qठq)baEWfE8GR}=d"^,h܌ KJO@_4$, [V n/({2^^[J)Gasn Q( $; +2iTt~cʮdL@TR|aȲ3*MfNcnx=`nk  mJ8@ nڜ"DmRڥ̭C,m[DcꬿWv8U܂ߋZ- #>8eSޫ' q3+>*DljQPo7qᛤQӳˣZN(>!-B6ɺ1)\n99CpihiRא :[OKKXUs/*?ܭq_}U +>aW:C@X(p+j.x!8ɺZĝYq ;k#Vq+Ӻ| xx|$^)XśI®J;I+4s(yEд:ܶu 7HGZFŽ-B,!*AήQerN,YC/ydܭYu_mX& =݃Gz$ngyd,{'k)X;03>1+f7AͲށ4Xs&-ΣVe=W3ޛ{]+vn&̅% Ȅ']8 ONlF{(iJYb%hKY1`)7뗉=˅iЊq385ʃZjA̺1)gZٴS@L@WOگP`^ykA%;헛+0,< z6^ (ܔ3qpow +;fz xkX{W-,ꐞY849Ww_(h`zW"fNMXϺ}_L-is;W R+/)1$ILrBp\ִRZ:n`;ܺ_ᛘttqP3Qde0bܣimQrcV`D1=3W_t,+/?P= +:&4N9mln8M9N?˙;1Ւ "S?"Y (c#K=QAD^Ԅ% `_'fd~bMY¬JjQS5frIU(@K9A3lqrW%Ǽ7'0i_t |xc©LZmK4 +B3W~%C0 ܄14~; xJQ98!gQѤzssp̬\+$)v>oehҿ=f gnҐ*8-I{ogAgJavEu];Q괿;iVPFz5) z@-\Q 6&X1qK١IĤ5 G5഼mmRX u( mUrA{Kk]j>*[mٷ`hUi[o_mR/mL*6jוZҙen!:A-@ Ҏ_V_Jd *$ Ԣ7_?(ct_F'iˀgu$jMh&oI(YKíVt:T[ZEkMZx 9/䴫fDKHᤎUߜ-9ɸ_Y_x?N~̼Z|xz'4q]}n`5#Gu=b=Iƭf\]ʔS-$ĥ#k#ckcK \<긖z)݉HiuE͗jxQ1 OjXS|T=%T\ySq-ziۏ!ڹU-|VլhXY8Ԁ4qASW'/n6:ū9bCky~wYͮ>:r"\zE9H s* ՔCDHڸ-7usNH# @(0ULL4„֝YĜbR+f}"Z~N$[Q6=:4Jx.4辆cqʭcind"FF,µ-f FtIښ@d`$'']jźQJMEYB C1+-;'bb^uYQI+v1 R?4-E3{ޭy4?L9턭jܦ槽޻ٹiJhO)Y'^EC4wMw;+9W5-#A󯓫ۏ{kF5: sCƍZEm A{)hM8E_.gBz y[ nͩRQ+' +f" y n[o4lπl +v2foDK+]"]~_:1)f,¦i^kґqfiQ6^ʶ|jӤU>|q?=؃ a=by dl2VĮLMtRӦ}7? + 4h(x[1!Z)yymoj'IQmctv}t&e2BvVZkOd4`TZ}jixriiyy+D rg<"f7s':N + 0#c&35rt &ppHQ*S Вg}c+}ݢz2b6mQ<(5W_fޤ}O3[8&-ӈQ4Ġ`֫(hS-@[g),sJgrNg-}{.x=F.aqm3POBV>a4jUC11dT$ -8&6Bxbg3)x qqӾ54&ok&}5ͩ{GTRѪAt=qoASw=軟>y>->k;:Ru\b-i9!k*7 PF^bmňגݛ5ǀד69= |c_~sk^ݛ!WRĠ %,J,f.wqehۜX1l{ "ž]^# %M4fׁgiI7*(GGs +~2~ q~S4Q;=j1:uȹ]ƈ MДuE,l,]jSA]KޯqvA[ڡ=]]P6G_}23MbQ2ϨUJNH;䜐Q2D: `fPϸ X4iD 'mq`|z_DU2}UȨ̽šdtds\ڌc&빚t].̯OT_&`.IjGYJ %+=3$3{>4bj]Ց/Q]kus^ VVU%"RpIZ|GHc^BU@4pe&H:D ـLL׊5}QʩvP٤AuDIwJXI3 h"Ft܊qVh4 +ܱ2L>t05͂_7ZQfAt_#Ip >qj]zQ[H˯yU1 h\'KYm\ׯOD; x%?nג;PP:y[~~'$_ +骿MY8 Yo5_ }5#j!]\*2(N 3S"Juɳ#˒,</*y_*Gb=bZZ8cQ[؜f+e%]W=Y0;A"u ٺknE~N{spZ!ZiHQ׍7y`6 RQʥO.O)׬\߃嫓;WBN[.5\H 't 5p2 +Uz/aPJPo4o_&eI'>/餀P7[v}E6V³?>ouIPq̪>qH-/u [#zb}0:Ny%ܘ5lhUgC߯7Fm_W7bdW &vy(!& i9>>1;5kP v#nA¬{QyxzYi9#EJz8ͨT0;)V ,xRu(%DƄ)91>-iŜ̚ݔ Z.)]>^ANz9 #(%@Ob|h+M;Lm^"@ n[b%HC;3>k>lqu_ʂG(Gr>ѨŎ+oJRAA?2Mkw&r&rK?{Sl=Y?J=fPY'돦ͧfi&%1P %~OQ` +L8.do\>Ѥ,5#9v %+X6R\´̒]S z|^ 1ۆuqdTl⾆44%'ӂs +0ky>]s6U\/Ugs[^: +Ncъ=* +tgIkV @cOF3C}wpho֟/#c4mߠO})Ei%VW0)Xͷ%E(%"pF1x? uozI&3m#e{*9(F:ɥew6-=O; R4}8C=,=ԖH̤/y>/=X/w!PE?RRNDe1Hg010H]zfrNfr2\$H4 i>c NॲiD.yj#l9ՈPGTL?`^:Rq<<9KكpwJԏ#ƘcYz2/$ԥVnkO/^,k y@L`cC7 IXgmI9-:݃rvT FciF橴\7F [I_mOOuv 3Jica#PL1{U=/OR->3 <9kA8 W ʬg9s|~wbll)3]Џ ]\6HFxV؏G# eq8H?o6mL +3Ul#kH18˪>f& Q{JBخ GN +zf @Zj<]O D|k8DEu¥I6? ~OƜݓ'=7G!@Yr2U}2S}8ɣT\T2OL,83>Nʹ?߀S>\}>{MKsO'xc_1É3egs" \c׸ 2. .|*l*Lw>q *@Fӏbj{TؑY!>j_ŝO);r:j pO;%"D!l7H!m!1|;\ xcL^ ] TMNЏ<3u/Wa2Tg@m)gU9e'JgS/?B=RQ/S' +N"xZR^ ?M*#~a +vSJߜ`O0a_ =Q1*|K3zH#TM->a>Vd֎&skNʀongY6؝OJ؄l,qoz1CLNi#Vwό~Sk_S_ԍo ?Z.\H5ȩq;wֺS5 ~>gr9~0)S zƵqc˴Hl\=Z@&G9p0(C5xh<q8FӏpRwG@rpƞ#p8AM29|ZPhx8^Bss@|;Ӥ[:7X|v$1w8>ZpNP:k_Ӕ`C%Sui.|3`]Э!nqXL:'8m=B>ŝ}6gP>Ӊ +o\@>Uf埨JΦ$y9])6أ tژ_p n~x>aڊvZĸQϸy)h>TVt@U\q1_;ua k0c9V/*NJ4:3#cӴ8yKcBUu5y2|< yA8,j&Tá./HOg%E G2~ͧ^ S<0% q֑&xO%d*22 heD#8k_dE#mz>zIO9RSXNK +wAmDFmxdz~ChмC)9bwO?꺩Ax׭NǯIhX101z~r{1y]xΉr"QOd<‘4~O;B6Xôȥ.Zr;s(% ÷G)Q}]~؆pX3B~MJ&j$j'9~w\~)%J +Za}st4cf8%$\ #z;U3Re؃qRv?0J~aO9Z?DE>VЀ QiNveHQǩ<e \zb7E]9$N&OTJ~L3pITI8UPbfr煒_U@Հ `,5uIz)K{<&<Z[#LQJz8\*W4%Gڬ2=Hj}&d_.'~ +׀9u:Us2ӓ5\ґ4stfdfA*T[c5D 8):$ +Q圎_<[ꁂoD +0+~sG8TeLw5&j>R#j }X wt8r#bmܛ!DNJc(%PJ?RA&bN # =jx7D  X~fr'o@^6p'7k]DŽ8xp0ƀ`{O EXFJ]h#Et<}hic~a8i3N4F.Jā79񡊃=Tcu#Qbȱh >i7N 9R!ְ#=h y YT٬Ppnߓs Q'Y4XڰpW +xTžM1`2~ {eύe`'δAe,46-cx I# f# 5XE9RRo4^%Lf.q:&Mvet6#nJAoPgm cZߎ5 Fߵ;L P#pRg@'s2F|#)1Tʀ{LO333Yg <Du."lZv>q٠2'Eϡʍ8/]]S~k!-7vzp;}̨6|]TqZ>̺nLHk@X=!FF'x^QE^i"8 2:ދ诺nqmvJjvaڌf$H+]6)po`#n|)>rػNr'p?rNE9CFQZ~ [i}^i{z8o0_?H + zC<ρ p`d{+-ɖkp!8> 3]'Q31gqBq?0H:S +26LDQaR~)x@EF5Ȉ2ߖqaԆ_i9o_;L 2Q1u|z;ndǟOy2%Ar )p7@¶{yc\aEZ8 N,au0Άyi_ŧM#bn32s~(%3D+90q/`=\A)pܓQc6Al[.38B-K3[nNv x=O`G ֶRgZp{XN׉@p?̌3j10!p;BZ7/iWo )GRjv]?>VP=ͨo h۵Bna#@maol׋ L9vgP-EY.בgQkxV&A/݌zz+m>Tu^^AMiz6ILE«ȗb߇KIN>>b7GKMW&\KׅvwcY|{4LV=;).l8Y}5$ Es(L^ZM6]hLv5Lޖdږ r+Xfڄ#Sw<'y=]i&r2Xz*?J#VSvh9luaC'w ȝ!JSlYeajkDIv5X)oSW>VE>4Stpl2S['8 _i ++0_Toz~w[I7gJ6NF[j@ZO<ό6H@v6 `ב+q6+UqFUXգ4?^DhPh1S +3Q焚VACM' OmIۥddź䏪bثQq}uaVB-y@Hf6;i+xPgkR?k 6 +zlvfVEqKTre^ce^ӑ'"ݔ5Ohf*жu0 mEDaiN>B$uཌ'YE|Y1rd-ʇz^'%pZ#aa-7[|2`9 D<[J 3.7gG?M ,:m>x{{vHrW%!ou ck+?yɄtIJR=to4+k!ϋ}E{gMsLuj[Aɒga$^()xGQel-E}*~6_d0X&N z,5Ǿ]my-6}cEn⢏\iǻ$}(1N3t+/땕zde^~FNf!QNf.qdz#pM2nЭ.ϕQjrdtn~ 9r#LW-Z>7i&iK}ij6SVXe-}_Rh?_hVleȯ +M(F ?~0mDYi!4c-6Z.%Җż 4 }8YJsԔH.HKu!LS {#͍/{VH؀Xnx+φӣL!rXmK&5m{n#^p^tqo61]o 2;,&[.TޫO.|XvnR!+֚)gʑ_ZfGf.5=U%Чʢ3u$NVQg YG٩@S?d /f~|9"f@Zq8d6SI(|Ƙ(_Lb K^>]( F:ȉ} 3D8C!o*IW2SU4׭G`~6 I ۱>3@P|mPqS[X[a:U }@Zf'XawӈVvRE Uf°t'+-DFT+PBo*>?I+H!oA-T`lg0 uheܼW2ȯg]h DqMpx4F| z*/7sfpߕJ?.֠檰v=@ioibL_E~ԋmYǃ@ŪozV75r x 5-Ԡ D8ZQ[}x̀״WW"MZ4{˵ߖ4%4EW3_ԥpkMi~ eSXsPľЖƚ0neY_=)&=*.QO#Mz!ˉ~+xay!)5_qnwzh{w&iJ}g{ޙNVy.J?O[i$/c?-Ľ,xF-;ȀNW"' ^-=gjR|V1׋o!_/$y<D- y΋|T,u3Rn>\VVV%*})3f ]~!zOLo;i<'2;lyarXgf#e11pgV,Jz5[7 n@ }3SN}egw U$dp7UPiN󉬘?GDW$Gۦ#\mV桃bJkLeǹJ ga90:vOZ~ut[%6tj"z\bW;rk=?=^z$扼 T#XV>NaAsVb7_z< + \ڲ7ckz&U ,kSEF x=('}?e#髬v(-IƆg+R,W+M@ BL"[! UH&Fl%E׊#H) i䢶SU-{]𻓅w1;ˆWJcF߃ ӹ2PnuNr'/~)O!jYs8ڔթ@ǣFrbLW*!+/Z(g[=ܠ]ʹ-( E5uǗ HcN/'L5?_VK_y]/ z -|ѝ>WI#ď[}de=YUjŎ]k,T'}Zi~hK:j͗7]HՉTY`,C&/5D'MY0ш(A3z5咶nB Nz9SNbxUc.nH5ՖwHðXlgƬ&K̘G{̨xt,I"ˈ{>* +όZˈ/AKR xm-z>Ahq߇%bF3"ɲ.71C(rjc ҀwYkf$8ĭAN$*3uf0-nxRG맆nv2#n!m47MʈB}ċci&XAqQG2m "nt+C_Md|6]pTH>~DE ]U@Ε%}oB;D'+ jWj9!ԓ;FNo4_nzH{BB3i/B/73yvcuG2>ngNSUPvsӷ6xֶf;՛ p0]W]rW ;L(\PvwSUHkmݷ;/ɢxCbH^k!{.5aa6KMP7HJr0!qaq1qõN:UsF%H?-6 ;"6zAR@5_`j0ߴ?1Xkm1V3'~#*yJ4,}0h6UI97F;T{R>eg06Y6r(\I"ZFga.tɸOvƏM} y%npQ3I7gLpmC9nPAu~aFs^RDʉ!5,M`#&QLuכHgϔ&Q<|3Wq En y#%xXI„w χ=ʒ6;q^2ط6QӍ>* ]z/TUTTJ %˻zHx)ML=i{Zĸor|eM(+eԊw^j:O/#|Hwy_~Kr=w;֝A^vǘ)z9=NeBFÉ(~~ODTVoj[5ݰ;F-&~=ȲiZ2Gq>]Ez9&mwb #&|#nk~SUo BrG[ Py>r磓@-5b]u^|]$zA^ ˒l d07r W띴JgyaFd X&Y$͔KП^bJ7!p}ODZm,7zyqhN>ӂsC~h&wXNRB|Hx3[JU\^X%2LHrm ܝt_WY! oM ')0u\'*!)%_z6CDQA E3EVqh5j1r I;c R"f+9!+=Zn$u${Lݼwb'Yy/7x@KX}^m0ћ#Z%`OZn%Z3쫺(Th7T}6[LjV:)+$~r8̫\),YK.3gЎx>VK8׹:%OO4%[-֒c#iAJ]̊xK NBBVY }(qfֺb}ivԩ +HzZV|3F%zO&/$[ ou|t +?lt#x3b+#r7굃-C|lz]ޙI0_i{7;)+ Zv8Ӎpgyi,b ;NM Ezen٪FӹK},L>Hb'Jqyؖܝd`}&`EY&(EQJV~JK[a.U? v@*>a +(:ּ +"9V;P\K1MXGMr'sh76&Is'+r1E"sX;.Z,WE-WC& +}٤lk˥εIR +q_'~R6 fx%w$d4#|Y⇭VnTEZxb,L ߪB.MgzwiOǘDRIj0akʌ[CM[ټ^6TYq@H[&/"i+3c.ЩqT}Bcmc^ԡS*tZd!RW)kF iqgO [Bm.H|PXGlv:е Tu.I5uلjnhF3 +pGW8,p{Q4aXL +D׹Ova@Y®Uc"({-{ZfN&r%{>nz3~o\"S 2>i+u1^S5[֓~&Ȉ'bZ^^O^FKn\n!MWSƲ̗I~$?]?3MGg=V ekd$Ot=ph&l=][N&'(ˋVQUz(hx*aE9dŝzMN^̶ͥ +b^b_i2p[H ~TJ׻>>oW~z%2]Gt0lJI 'Eq#Bg+ëܺr ?!]\$.ErKSÇ StZOwKWӜA-+Jsbs\[8؝zbC=Grdw?s EN&vˑ3 ƎMY~&LVύ?HO5q#;G=|a g7(X䆹]{;^"* +۟|9%lIӸsݔN|&l8˴떰(jrԳx{pׯݾ_7{ykrEVI9)u(Q[ Pϋm숅6Z֐'6ʊAIX[f| p 4_8o)WW/=n +fNzz搘1o&L᜕PkaKˈdG+%q!WXa~׼-az/Cpܸ1w vqˡRt5LE[|48myFVzZ9`{> @/q\{FJs^Yq >o;XHO1m=E>Ž4(oK+Kޞw7w n߂{pȵ+BjnsP =L?Hؔ&W*jʤ,$'G\Ɔ]{\p3HH5sMϧWwO!7\x"ܗě.AL;U߻/_PΠ?%¯aBB/8;CBm!ff<|q{  @ ;]~b +G'L]N6p2{˲}3CbG^Jp`eom b +[?X@D>c,zp+#@MCYv‘4^ jͦ|(ħܤG^B{9_@:@!!@>>ܹr rKWn@q}r>d(R}5z=Y }kb "7Rݝ 1v!~B,LA޽1wmk!W.]>?q10bzT=cs1bq>!oހ߁}D]Cˠ:˱6C,ƈmO+ZRbrP/b}.|.D89@>? .!o^y >˧ ^Ђ]B kJ\<c%0Hdiq4{ <9L OޅUȓ!_!I Z,MkaUqO21WI7pIQ=,?C^><4nȣ[w!|=11a +Ž+^%.p x'Uyҧ^FC0\oII86ؚ=X|||*B^<6'+_.eBHk=LUUF&/o^VqI3[P !l!VVϖOCt5f搻xq aBͭAf?'uW.(łm9Cζ{ (_r)an.¿@->Z6|+?ܻ7!G ??ywqc2OE,uf>U,Js)3&אOM!/ O@|]65[W{/`-?~Itw pm{l˸1 s'8;ՙo_IqW>Y| +b9?!o ~30_]`FGDUTFD?k2,Z֭ty&x"n&{]LJ0wy~=5r\BO&uxἬLb(ؐ\ZfcOr?H"svI_o JD-rp-Nh +  RW^ f`Cu;ҹ6eB:njLxpGKOn|38ax1=",(I*l f>!no$=G/Ӎe/ FR +~SϒX[ + ȝ!_].cc,ɼZms4yvx-wWP3ȉ`$%iU?'%{_udij9{WoB=A3'rx+.j i b+3=iaC*L_(.fqm]sg锹i6m`lq(۲e̲ebFKYdH>C<ǖ^s^1ΓtcklLOq4H0~9rN53 ;V3)RrP2&xW۶z+C`5S?(٘-gn`"17.c@~=:[A[98p( |ʑQ 56Hfu- G +׹3$>PӧceqluÃaE;f *P22}Jo/S4ڗ^-/M/rfi{1jmimo]畢JR{ G)~d!j:<`LOluq%{,XIB0%VU!,8|Mg2o 3wFiivǣWD&@6, M +v(Hu;k\-1ye[8۫_kW3tԒQr"g)DOfUiCzmw  G̽U5FKsJnRM+Mz_e~N+Ҽ@ ijMInj߼#!d<9\d+y_6=JX1SH)u- cvmzd=[\XdJ8ةXk7FBbUͲ,ӭЧA-蒰`5Hڻ͈aR54}=.E h&O:`'Q V3ML[vn@a5 5JzgH ~B7o~u𕻫C!"{Yh3c'eC@R[:l]LosP^-mCrƥ`,KK yT&ܳ9ZD]o2corя<\/ "VgLť$b=gqɉah>BC +'4E61!G4<_B4}}ǧ:}!:@re LG0/0Jm3l^_I0 V+ +|S@ +>^iÊέ\~@B{l|77k&sʩu{epD}03'FĦF1'YѯtTh`~:&YDo93!%6H2Zs/s3&'X%= 5$V-L$loڣ$57K̭TQ +\CL._. ˈ=T *@CNZq%$/*H:^ Bu\ŀDS 1P'KwS~1^_؛yLY4ؖSQEㇵ(u'O +:-⑆Tӕ5ybpcaWa;m30Q32РQ#%FWe"p}XL;O/AlXMiJq.!&w{Wϴ=֍ta<[RakRdaTC qy8*L6VRtSp5bvީqx!S|"Lk[,ݯwoZ̺Uxe00ь̄Tc~fz8t۱ҝWH`yxOCrrbb=zTg%u{*ې +7znOIF4=̨o ꡄ#4!H9NrWJ怜@C@Bvx&'BVS|,9ѢCs~>#sNЦ?7 N}N9#UIX?ys1=7έ藣BSbI (ȝd}Пv&VǦ^+f[z'*bc lk?Y#sWXw;bBMᄙ?3O}@l1b|([qphZLG>X#4g!i ly@GLf?wbzHɍ3?{$&63=̔LЂÅ1-#!Gja%BdS#NWaK9r׿b+|2dѡ^ҝS:VVȥQ/,_)*5A9"!lyd(dY1|*Zg; y5,G)mu@Ok"p܉mMN4cg&&)0 Kw.AηVr+4 +endstream endobj 22 0 obj <>stream + rJTW>Z|Xn{ڂe<΄oc=tT[`~;bX *Ua5H9XlG26,Er.t> 9gj&* c)Typ[Q2> &UP6!'%ߎvX4 +ѥ~4+E.aSW.?+Q<69a\NiJ`#Jݟ\P+t-lz`<#*/4zu@,J=ޓ5r"gO=Co Ɖ pf4 A)v=W-zK@T|GAG9tffQ<# + = +LYXk gƾ0npq{wj`N ƄЖa+NL;teްShx-'6 N=Z&LZ◶5= C:hɩnTD >HB^~XMG5΄[J)XhXǣ1X[5Qۢ"\yX?jb1/_~9Yt ~1x;e},Ëm%%v{ˠNYL o[C@쯴<ڤ4H; +lHY"4誐s22(&4qbɘb"L(797 mtۉԒ{+>KJ/ӽlZJn/! >h?frXo5Rq=rjd3n%\ˉWa+?,蘪 "ho\gPyMdchL[}>#x10'f%u9Ԁ ]fnoDKX>_Cɵ! xT͠;#,v6>.XƊ.[H;ɨQt +)ᅮM/ *uK~͌ +t($GzĐ%㘞A?N#g$f홈.5P-X +RhW 9 ?.')Y:Ͻ{e"`-wPS[.0]W_w.?ps +>5T}w N=^ kEݙ-Dq2'ZY, +.O?vͻ;fm5Ͷ[A0+#[Tʀ jU]4 _+/z+/N6o +*{g hOsoteاk_'ƿ."AE\WD+Ƞ3h k'Ѣ+ؔlw;ZƸrhȿEmڝ~$@@-~n壿p\l(HwGٴ0 }w=/,5Wk{|A98!lKu +Jw kV/q޷pb!)G +<\CEE:{%qpM@e_ +şJI5jؕنkoB׉5Ͼ+E""a.V]3?|ZoM#FLk󾔑v!'"T*5鿙-KFzȑSLkQ%`큁[,w?o1%S^o{\@Ϲjyjb΀>33Y&s:^)[+o dHX@yd䦣MlAPM t\L)%jxYH +jӽ娍=[( PuV6u{䦰s AO \V^\ɀ7u5L}[wZg{ ee_4F`pJ]+︆;3vwvtQrϵϊjh]!4sΆDD\BD ~r>csy+]cT`\ Q}kS-wBp~ⲒS}׽ }cfiol;譄]D;Ċ,}S 2deX^W8|C_Y눌@滟8M? fϮy<4kx+{*~}کf.47Bل?x߳X{79ձ! #Dv7\,O()nc@@S[EUHՎ-J}X@ԘZҵ'+/.93SP^$H*o*i'q)MOioU/ukyL.ЬLe +B\G:~W"ꛏ϶5q]O"헲 Q9**|hxl*޹ |g=7s~y]:U,tB_Nܳ;q)ĖKeK2jrJ*VyTWkow;eH?a4={ hw*,!-O5ewYYwvvr]j#÷@omLf@Ex؊:5q{}[׻SduϷoY߂^}#u_Fhv< l}1HyD,q#eQTI85QeY脈WT +j|}P9!) ڮ~X0Y߶ſn"#BDNDI-:&:AW%N&흵6$uW H;O d]MtpSӹF5P˃k͎7uPLc9=㰤:y]hBW:dߡ9CAC7WFE,m\kH smeDi?'Όn v}ѩ: 踲[}pSPm0V_wu1}&Dcב{9v/7ݳ"z:8A<8OAx31vm$C#Dž ddp#y> /u>SMT o ДYTy\­: z},m>^C%Wdr,k}М/9 䀌ݬ3~[ԔFdʄ;|w)qb*&D*[/o@^oXڟ6mR6D;~} h 5\t̂F`[|ٙ'sa˃kbƫRQmW=QhR]snSOvwˑ%fGT@ou=>\|t~Bd؊#!:G;rmo 0:5#ŗUo>3W][~"g!7ߟj|:Ĉn\R@IdOs`}6R\LLUX-J=?L^e۟Ĵ4Ŷ֩ɺm3UOm1k*J6w]`\Gh7UfT|=\ŻIm 裈M愼?Us?gAߓc֘Kkk U?L'5!Ό2zX%xvzF– u䙁NxkjbKDxwoa?0qsON5!WR_ӧP6qA5-$ow%I+''I1[`j .,}~0NYFfM2?owgcZ&>8Hyb|uO? KpkRwٷ%Dd,Kk88K;v%&YAHp9C +:r Y,}# +<' ʙA;/jao*ûEkk-~4chavk+kZtpZ*o蕗]K7113I1=0̜}qR*=[ P0;ֈ%Rfs꟧rxDφZ>Y|mW*z r_$=Ts4$D҈vK)6#:xyH htUXM4'aU~1ÿ(*r/Cv`^/,@VMd4:[`Wz%p>^Y^J֖܄d6s=2|u/Q0Y~9:YQRdͣeJ"H@5 {)݂: +P2G +ޡ䃮/K'kǵ4sk&g}4 yi_y.;5̗ TĬwN\O#pFD@ ̞9s3v. - >fƼ^'7^N@Ҷu.u}"CFi섁?xn *ݻ뤒zwR'۟ߞMXU2+cwy'S~ j/ g^SË]7[G~2jaۖU9+coHӐ 3Q'V`3pbaLDDB {CJ̫|RB+p^}&, Wx,HeC_͏I›aPK+Bjˈ/6_Z|p2/2jwT$%!߭$59]N;"佥Cblk?aLW&;^}_%o5O/=`cZP. H)ȵޑ3]yWýGyowz~ՏSM5Î<37޿/^Ge섁 M# ?;z|k}UËk^}bmhk 5 ,$㋽Itwչ7p^rQ[6}~=Ox%+F4do'&CABLk@ I]';mPBVeBJD~fZXfF O=\}}Iʺ\l}בڧ̚Gi/eχո]G%6;K.iuDb9`k cm6ܝBbg= 6->k"\ 8Jjm~,Fve!M#2 n0`>5ЍoBuP";FEohDwe#釫ybpyDF$ަRV)Aג<-IXQ#%%1Z:%';T3C`P)"I]6Om3 u/6{[oƀVs ڰc]K-7v.+Yٟ9O3{y˿^|^G@^Z'n7v l`6L2.֠nbݭZq+:.동8 2kw 7/ջ7o&$Bbe\]G/|=Ƿۙ>W/W/2ߝiI1v<6L p9>9ǂ15@eتo /3sX':>[uc:2~*,6swy{575|꧃?]VY{YxyP^1#x$£'GTqQMʁseH F 2:]2h.zom RCrbz:*{wԱH,r UKoI?x^Խr,Q(eExJhr3vb€NDXl]#u|w#gb$(g[^(o!3ؼ{k2 :>yvd=b [5`]įɵN6z oQ4x,ūanP3?iNp3;Lsɸyo¾67qhN1kK؜Paq#m]%_ )~-ƣvvo iݖUBW G[6k:m?]Ց@H S* SgȢULbE^ӽA #+_ZX@C9U 0PQݟ+5Jv,O9XSi Y TR]Z.#>hwfPEpw;?9c uCDUВ# u(G [I_@l2Wp9B|ɧYJO@n_m >v-tDJ܂ 1l"wƔA x=ME ,b@!d|LhvoPvǚ~>r/xVpWwf^ +)ɺ~}*%y|g馛4}"ڇĬlt|^]gm/p^XEe|;sx_UbʃbTcb{Wy?(eLWuF p^Falԃi\@kڇru7 ?EaN4d;`| uuu7[kn1Ծ eDX-P(AP-dtܐ\a[rI+>,4F_g_^ݓb:>O w7qI~*(A%+d}urDCMt|D'3+WAW!~Ng3b@miԱҜb(M$:"FIp xp+ǖ%J=SB*&eϷiwܷ& +ź_5F/+~y.k7ҔXKjLN+=Uפ]Dz[2Q Pq+fPj +T1p۶tHOLWǥ-dm).o${Ndz1-O'w&bvoZVNӵȬԜMgo-=\B3d͵։+G]Bj;ݡ#*&`!b67;ZsBNȸit0{Uk-D|U"gU\Pۙ\_Mpl!87Y>` -Br I"XjIJ0Ppb\H { c$3%t؆Yj#wU') اzRGX=ZA,.C2x4JHj!W*{]{5\闀n{f+|u彸 LW27_s_hzUP1}߀z,| s8礱}FFlxmRyǸGgzDNla:37eހ{keDNPD +QA),(%tv+ù3x֠ZWBb;+"AFHH)JRK@/A_x?_L_}9|bKk^|_W=y ĥOJq˰ +[ + T[BIz%{ڝV`t]Oѥy47EWJ)xAi$d}$^hGm/U+ouү~k5xƑ1;RTm]2:˰>Vo;D)Qն{f,ӳr̃;ҏSjFUL¶Բ+3H`u?J| }sO񷎹gtнntgjyW}%׼AY݄ Ybْ qH15,&T7զޮbF띉^SyhgZN叾SX y>9 Tc:BGRS#5DNL}P:czT'AUG :&.a\ڨEy4:; +^ NoI(I)=tkꞚ;;SYIhZOk#WNd--i`'8Q!%ەWBE!#O-S3-tbf*Yt񝨑5 +' ~J=t忮|B W//ڦ>)0Z3纾vg%$GA}=6?/$GU +3%ZYL͠4ñؑz f\7?H(1>gh}V5(8V[I= +g [^G90ž-hgkw䒾x[}ߴ3mG:N]iKK[ +-4 @$$8]?Gr^k}ds*ò|mo儖.러FH7?ͳDGg`D*1~sH|g}i2}]xAVx1mʶu;y+ ͉'{jb~[b+KðX5Okg)ϿS΅Vtr˜v=S~e57&>r{?aŖX`ٟ|C7`.۴! +>:򙘦fG@_6˦y cצc< HWU=f 6Ia>ě%mFES`LtU5ږ̐YjB5/? N3*kQ;^6nNmYRS5GgMߦ%72pY+j[uyVR8ؒȠk# |<ꓭj^hiM8 YWu$HMydn(I{w-4}ӆR;Ge+|H^ѰkZx) ${ >Uzn\Xw%%'ZiÎk ͉q}G[6!>)$U6=[sfՠl~Zk5 $K\?sl~^GWc`v#rp⚝Ѿ;N&_$"5`Di#8H+&LW}#o}cLw+?3I;>b㺍X1zl\`7Yxm ~!jghVN!rlyw€.8驽ea@.kM{c:E#o8a$8!Dmy;<ewq!+:UmX>JB$D>eZt,nF٠FHڒ0)$U ʦq/X8-?fޖ:;~lӿxlR2o&٢|IQ%}iepk”Ѥ%6]UĖ=gKҖ!~Wއ0bS6} 䁛eU] uPtܤ9>ܞ,Q>T;xbC hć m'DS}Վ4Ʋб䤵- ūVB.vA>_a8УzbQC3'ZDl@}kNz1~Ź١G:LjHXЏH 3rρ)]c#'6!_3kgSʎysʄ1qAy{EukwAۨT0ڃ* YkPyJLmn]7(gVVcP@򮏉 +vTC?1_&O4Vc ZHޞ 0ؔmkQY{ +@g%5nX +p ZzSTM(^Ң2bZ6snfYp +tQ_{y30kI JƸnI#.[:7΃=Hs!:tpӣѮ++WkVd_c5bN{s8N{ bZJ^571F"G,p#llny ´3",Ƈs>b}5A'7kFLz,^=%ťDy%8}>/o}i~4h}k=vwV ˸USfh ٺVdMjd-OٌXLi-/`݃'D6GVh憛Xb WLb$;q[I7 tN*8;"H:^A zlުT;1@`gbLwtsc96{޲j6b4=ļv?\t>4i遖gjL%#`#AӾꬻa3swIyo3C?;I#"!8"(46OFt&\)9<:낏SygՈ:²|;LO)btfU!*&5ǧG$ͥƈm9%< + u8-m~WDnH_ {fdъ=qzmjxg$%]rވq"g56? Ї(۲Yi3fr5;4cωZb M)4YicRX_%-aJm0c:d_kTޣ{L~i0("CKzxNXv5]R2/q?YԂx(uQ}\"&A/m-;vK~Y aY[.LՇqsg,u4~f0qo{uLawC}ꎗm!%hQKikFfӲ3kRRyqIOUFz/fPo0L䜟Wxn;vln+ ҂rDʖჰP!}R^hf9";ꚁR9LC_X嘬W^5z!bz֙髸2!)jvk7<40j ׯX1r諉 ۣU& .ZH5N6~ˣ[)͋Vz˨]$uUoq׌8#/bJJ!^wZDݙ^5*wZhoG6DeDe2g187'6smV4ܞVy_o >W&lίZ1[yy͍ +pʩߩa?OHreGq.';idJؙZO8 |wl5&e4==ΨNB5C-NKιYt5=T)yOSO| G>b0>}dž+۵" p nXU栦c<. ^ݙdOѭ}`fT^bӶ[%BA|`wCe+,oΊTօO6,?[uOm4 b<4XfՐ<{с)#=ԖaQ)4>f5ۥG}3tLj Y;?!|y,=[ݬX9DĊe78ca6E1S۵?Jh_u!cclRZ4Č W8o',9u#tR5V픦hXS*LY&+0|e^wsE+1&"L)%" pJM? PП'E+`N^2aWmԖ5 bc_o{i{yh5[uV\O(c]Yf{~AU[n%m;_ɱ2L֚Ը kkVTi&V8n?PTɏw/lYd3g^qqqݑ!tqً{'>85J!bW-- TA*rcK6RkG+ZQn^cspNVj\GU^s}TȑݒfA/aӽʦl܀BѩEX:-R]ӓ 34cHu4: 7rFVqg^欌Ilϡl^BݚSDM֬}?r͋,1#ҧ\={Ei޴Rv2`gq1ycG0Pq Gqx{KjZu˖LE=r_*H+Fd"_sy驋W|&x馴uw\QbrS̀k>[mIGâK*#*x3J`' qӍ,77Z1 27E볈rFڋ]~v1fLE+dFҾ?B}`1wjn {\2 ׯ1+Fh Uu;hY zb3&'fNhk~}JO*/r"e,[Y14̨LјY佘^wtiqtgM쇘 ұjf-Ԛ }GbuiłZK2jGT\y#_eӑ}k\׋ ~2#m;F큛eC{g֖ Qn5jr LGq eLb5nN݀J=m@eێg,wl 9oWbd- B^d^.jZl@6ɣ\ɚ1[] w ^_!i jԐJ>g`7K +tشwE"tyvSϡ>\ɲPx -8%o7k}TY 0+N:pDzea݉*\1JǨW@]@$ز[\Ժ޺tH5`7||8k+j sGnP! Y& :ZÂowÒG1~4jJX6Cr7}Pgzp=mp'aYc >[BfP40 +G \qiK>B#n!۾ o&dM!B~]ߙtݚ [99IpS:v'K>mFaXvJ]+scD?,7$z~ +lOh_q`dઋw :[n~LoRLԚYf9yw`nq +Io'-yX`gfقpQ@{A6D~#>:4+MrEJvI\!gܴbRV} V{q\(YK6BfV _dobzP \pvBBw;Ma>us5mg[eV<ӭ0ŗ^ |nDɩp&>d'|-y 8%2Jv&̩aowGxu77ݷ3*:$]V.hCMY .@/٤lct,zk~5]wINjŵ/A>+3旪W|}Y A)-)C˚Q+<ܴRatq_L5 6>*ЏJ cf[>9g ):}9&75_7s#y-/ ?AgFLs(%N -wDRaqÂaD)ps?'E֬'1mdbF2 ̜"1NL\CC'x%sHѐ-矧Ȉlޒy81W}}G.tbqP7|`F;)mGu1헶jy3)`h{qdLkm1&Qz9X 鲒I>k@ bHPyߞ{Lnv x1&fL*[r`K1[X;a=#\ڼv"nȬIF3fs#&!d%ΣFt](zePb5U|ig=Wm;^nX8;]B6tΤH;%E{}ۓ4J +͛ ˖GX 7D"jlF,WFE/2e"ik{DzʗGxYrM{cql$ۣʽ07!nE)hBj hw"0Q:L֜ز3M!_`ׂ4(;%wN;"T̪_, +`!=gyjqX:S˩2v˘NktV'p ty^>4ظW\bPO-q+E.iЂ|i栓KW ]>Qp# +qC4Xh蹃 閷OPyz-X]òAee rT4aPrr2FI魥=բ2m`_",濧ق^!;b49-By:Le1sv߰jQwӌZvK# ĬԸ;œy_L[}u_ {#^gC[zp?%k'2W> )nK0A=jCTO7nfz;B$_q>Jeg%2Oi?7bmٴyoϤmC˞t"nʈZ>0w'Efڄ\ۡ~XhELx$,Ţ0 +8L)W"0^Ki8z{- +LBTKvplW5u#փCyߐf1(hdJ"WLq}*l[Cm*|2Xm;sX2\p-h '%'k7 )~)h r54@ ,Aʑ&:Lg> yPF<(#.~c2t"gD@fCڽ9֫84o~nwgIF4H%e*>?E/+mq?eս-ÜdJsrfqvg$֭>jO5nĠ`EKFׯj r$K-نmC ki'"uL nhU^<'Z0u\٧K~ZU#~d!7 ^+Ө֍JEQM-ʈ,.xi㡦-M5U?k+~-~w+6굢4ҷ D8>t7tAFWp3\"4~_j?9Wc_.pa+c@W ='=ʮZX[%ytWyD-Ә Y|D lzMi_1DqK_NM*uL-)UDPV~@DKd!/!_%Hq:YR%f{q^Ȋ; E*؅;qO_OCU7??bFGtpLἒF\Ij1+@#:J-LJmܵ;qIic^w-;!8~TiH,Ve|iΌ{ţ 1Ne߀c7󫇿KHH-]sOeѾM)R~?=FuDdj=63 9g&5`CȲݖR|3rR|rcr7鬓Y w/waCً9ǞH.Xª2 $rNO_z瓬Z{IS^!gy{{-!׭ڸ)c ޟ>ƣ.Ik}#6Q34C CY `\FsLiM/Ouؕ-q7[nRO]|hL[~\\m6d,'=Iݼwnc,ס3qWgi%ZW(nKʒy7`EdG- +հESHX|jX5P͝'OgfϿ99& yu5`@98|I&7Czpvd5Q0Ctӊ8?$eN&d`=sw<9ި +9?c}b3Ы|hXCSFV hݾL4U{4Uv]~Ǎ" +xk?$N>J}IYq W^YF|ڹI "gfe=yrg;wM?Exϝ&ihMDZDv9VJv{[@::sAJ-@Jx[aKz8%Pl=4x,i2tf܅qjԣt~\jT%vpYԮgoSUj c M7"6+[(;gjLV;{<µۏAqn5wa\+رB +яgP\5g-:ɍsb$Yrx̜M7Ij:Dd.!r,{2LvC)"GMy7usMۙ/VE i4$I c(NquV~]J*U|[9uA+kp#)tÚ6J,;+{Y>Eeߐ)$bʻiQ।<7_nӱ'o'S+Ŀ ^\CSJ5cT]M2 5/VQ'bS Py&`-> =v^ݍGm~=+Xnn9 %Jum7waFj0zPfj葸"gkKBuw!(ͽ&Jf97y+X4}S"ŢW6ȱgNa0jԛJT2T@ѯasLdi'ɗP&v +(>֔($&pmA7b6]Ȣ#&gфЉ9dд:5|X$Jې&ޅ E7;h9/MI߈2TR]WiG-paV<9v ,!E),FC$v鼓U{MDVYS'3Qߦr:VKav/?cjn^vk8vIUDݭ%4#x/ykqϒ^g"~ oqHWvP?XFZÂS y*)аY2Ja[H)]E/hǩ^Aב$#QۯҔkuN( y*_KL9@.q&dRtjIo'kp?W6lj):TjWyfQkňgS&jż_pPKN6 yd'5pic|ִGHĴvR>xHSJ6u7ۨjhO:7rlow6Eؽ.|sԱenm]iwiO{5aĐBo(@̞@!AjI说2ꭢFԫ!v .{*lז؊ +_s&1bTU}I[۠R"ST3[)}E'zD`hGmU +4}æ*SiPL=T(T\T+^O'L;KnҲW_!.C!*&eU7#+f\=cd5F-t!N{F+긮w\։`]%.]ǘVaӣ֖GnsW[Ҳ͌vJk^ Z| 6c{մJ7X.Re XjKTwq5*Sӭfˤ6eV@a_wYKfB݇ѮQO-(?(pCaR愋ckU8Y _kA˂.SՐPja yAOwP4>X B|cbc֙N\O9@kSLK>bD#FystڇS! `f逸g!O;{H`'oXuE^pf،G&uQւLܚFW=|QLS>>!¿Ή,GߵMJCD{5&/ N!:VӁK[3=JS1M{X9'm+|upN;~N؛Ft[r+z8fbI Л aRq0kFI`?F5/ AI9M`72}QG.us*뱞ކKF],U*2ѶM*7LIJE њiG:bɍ C/$wׅ*qJGu?qIo^ >#t\,+Wlo7]\ݾp0Jj1kNzqk S~Pޢծ<L Xpb"B!t<|hٰ3;mXx׋kTP~Ov,M zx꘸%sٰ?JlHC-O ORa +b7ZxE85AoVwdY2i):ao}熗gڝ',IJ\y7n7ܝˮ7>w>R-{.-nJoOfL1cI˼qӳoz=St%Sz50}^S`I]㪾N3Ϊue⬢jTSsgk'`F5/`R=fCLڪ4eMpc=ËxÂ,vZ(i8 k>, ] Cu7 X/2qŷwM "sǂ.\TiR׾qtY|Cj_xuOxO;Τ "kuw .l8Y{^J끟]'kƺg ꇫ9ZA,YLj=7~ZP>ov`'Z^Y43 "s͙n`n\e8c*>6eal鐨f~ivE`Vtm#’֖7{vTYwkFX',`#hہ*4A`2bc\ +sj,)6Hƚ3c/r@, '$*s?mLu" `L3Q}e4{ mfAP梲-aYNٴa*w7,?a<( ;'-"|2_v{A^v)SDUuxm#ϑΊO GGю^ruA۶ _Fd){X0eݾenzi$LAo׽4)?Q4fwF)]/c׶55';Oˎ#/' +Ue#ggWhSk⦱3%T7C~jgomXA_l[i[S5?LɟFH^lPhnlJUw6p@y!ei&~[ߘ[V%NT8B#HВ=[ںU8ʃfQ5VpL){~Bǒ-iRZ~kڜ?J`PN CdEicłcq2jpރ9z˷6v}g2vf*S7*k!F]^hq $$Zk{|`B:c%%[CX4M9 Gqniٍ +sLGiQp\wGpO!n)n' ":~ʫWZN-2ޠn vQ{Չ!N奎aV[. +~3,l+%ęk9ĄygڒW$}e?OL]9bMk" S~k47yQwySSGqaReM9Mra3WiK{Y=Չ.p.$OȽRGxmV/1a]ݾ̓[ꆴgر?|{졪%t{ ~0zPv2\zXKLĪXG<g`|S*@_]0Cl#wsC=hϹ4OHY֊= +|@ђPDWD\i/k55_VxTd26hĩ=TU>dYez$&E~&~^\x q̦|ެitIy~9tu/}WtS$쎑Rɥlj,g~2aH^ouC[?{q0>5ҿHTd[A*<6 A5`$lwO S2 #5OXʿSrRZMLNN"F*ԭIfq1Ӳa*._h,?g_%ESw1k];QBuWzm=ִ!7bB¡LuNs{&ib8uK e8WS]C>0!٦nwU# stcBGڧ9IzV?.甘n7J1[rtˮgyIS}{y}UMuie:3-(ᔘ +eDSӜ}{ql` :<\yGݐzv30zwٕ7GAvR,('f{q1}CgnBo1?}׋9V糍OΎP~v9z^̻_sMZ2c&~KK=16€ +Ѱċ_-wWs ot$<?&ٓ¢_UaAe/cW8&a[]g~F8$tm[UQׂ7x<\> [xqnt֭mW=_~i&8TǦM{i?>/Yv xCɍ`mhl5oBeh86_2~hBU9d?3G3 ?{4}y윁'zd?7yLi$ytkfP v +/jb먼)_&þYD&n1WF ߾zu?ļ{k .M .nc"_]֤6ʽj)hmУdB̓ä%$4n⓯叼]sPz2<)Y;7Bz37!+7 uo + c'GK^wz-3y"?OUKеg\?Iߖ}^kȕa\Fo^ݕ#Y'7&Q_=OU^>*~|̹7GA/cvGȩvvt9__ `f} cXq=O/8Pz.j"oFC̹{ /RN=Ǖ^ܳo(I?{ W}𭮴ʆğMV}|AqwÌ^) f0q)t(9X,MG%Ykᯯi\ WlTdPF/vKֻϦ)LQ'X]{]]sEKueC77 9%X_HY1~55Eݳ[Oٛ &5V|[ot#8$ z;^j/ȍ.L:|,\\~m'!7B?e&|^t2d?2"O5%XB0%^Y_|A^GQ<:VqTeC#90gz`&Dk)7]ce}K҇l1 QILY@ d/0*\*ly]B>nַT,*ڭ!hbH@͍EW6"D~o_Y.p;4GL֥ͷWVޔP!%VqYm߯wbh=m͹eGI29QO7yBڛߖ_\^﮼Uu_ +\rZGmϽ9Ev_&1/Ε?EwLs{k䞲.Q"SƭZA[F7Igu8V>;U>(4]G&013[C>Tvx29a.87wE7s+34M;C )Wz}=뗥ւ_;K.P<*}IPm3PWqW^g^Nf|maR;=ԏ55g$Zi^?6tW]B{x-f-CN,8YOViP`:H8e@5G^9*IO+,ꡁ +:[tɭ&f VGHQizWCLRjиa)/cXgE;xL3P^U\Z{WyerMݚxZSp6 1+[2)!,XwF6 M$TSSjhE<4cc"8)QrK^|5G˷KyQll0v'8Ía V?B[[*n[?٦)>bh42ֺk_&X1?IVY#m")>m@.%ъkJ~3Nsx3hP):c~⧝Y9Y#]SQhOȫxQ眫Au"m9_Za ˍe7w +nl >k:~>)9*RݓBó_^]}r1M +LA\W#"*jSBHҶgF|7KU\xY +/i M/zP\SpyMה{n] Z_%uk4Uq1hzwŗY:.mwPODk$B,1`W2^UzTl[DX_ ar%8NIU^gp0ͪڟLz+/ 0YE5ԯxIg?j?mix) saG"nGqD)(+}EWZ9re<!:CL#|\u.+k]kyviލg?#ۀޔ\sx :4lRe :NNҷAnLP]CG9!m~.]לPN9 + oqߊӼAl|]շwA,*P %SܔwQVvQ;*i[s.Lb~^z}HK.?\R{K3"bG^Z}_yKژBgi`nVۓSQwH%'Ic8e,UsT<\fFupC^Z5]'ƨУUcwZW/-xV[:yS-̈́2evU ,`3xjJQߞqfO%:iUlW?Ӷ$KN& +x 2Iyn1+ҏꜤ\evsey8=gsj.y诇k/ۃ~3 q;w <,6:|d?铓r6)A/ tms !1}mόÈH<-6MJz.d__jE>XҶ^ؕ{㔔QR|h[(1ۏ~䜡dxP˄2͇,a'0/S"@ZƨQBsbǫ#38:@Yxx҅uWٟɕ= yS|a]3^p  +z2eV'Gݳ3S.b6 fSoG(%ȧSO~5wbb\\pAjDhsʌ i rTMkW喒2ȵUAXy k/'fN#}3.5$F=3mޒ-;批~=\䓺XYK,;uKU1'EcceSTw%[})1Od:%?T<¥墎.ͭAxǭjkK~9{;\ywMOƾJ/FYYVqmpm=rr|걚)4!,wïu+St<ыTLhWꘫAvֵR5f3 3M#6{Q$33m+ŸbAK,pM R\7{ϲ~(ի=;ke<1H:JGO}_xy>+;m.үVB&fw#ﴪ.?9R6Ф"YruRsJNu:Gjrcmd)l064yJ"Sʁh:!a=ڎsįi-/Ps}st 8φ 釺:eak/]v- t"\e3l#`HHí(piEY:>d~S,5HxgcJ\utmUի_oK!jHPiKg~Ush>5 ŧF]3x4&/K #\2ڣ⣽Jfyp?Z)+},ebkG躏cmӲT ȗ%#g.-9Ӽ *|Vtug"6K/rI]P+^jl=:>!#Y/'eW4ǹ%cRDloy6[) 3͠JRN`oVY.o\ǵַE 54;[C;N LjqYJMè{cAJez"=@ s!6+՗sK gh#HG& U?]zSȭIquغ;EM?\k0M3˗n+2N_5U7;:{S0Gjx4Gx3 ^4M1s/3?s7_ܿO)YlDŻE>{bPWqenU (hES |!khz;ZbbW)ID("ɣ#Bj@.؝ꗯ[wjDf$nmϥ*3Oß쎔\wQO*fi@˩g;f1)TJO{Џ@٨ղ2FQh_K`A7wP .8egMQ܀'v!o/䜞a&|-' H fҀ0{y9J2ChySbFye1b#.A/Qf}R5>pGSpuCB`ᘭx@mh9J>%g(%:qQT5л lXJgUWƆ2WI*{:zWU+v0=ya/)zss0P>O0j~־^Ī /ǪݱN[';ø8kن_̀}M3ܕkKזV<|U +skPu*(TU l2Tq +i;ҳk}ۻ؄ಐ*s4`yۂ r}]6M jEiu6JhE ?1M$ .2+>j@&9`S>mZQr$4{^45(:{ ĥȻ7cn:٨i:^zڷ&. /v9/S[5UۮT^<\q63ier뻿yS2JGwI01 Lȳq1)PSG?&m _fS6~o쮺}&y_~U)⟪#Xmc3݈ޟrwQ̓UUOM:x~g?)(5PbI=Zw{!B.N UhO .2* fN퐲+7+n+&ֻs[&O:fEhčqZ"rk'6`C2r{x{SZ7SL*.*%XёsKm.1RA5x02\!J?=Fݐ)W!.UͿ'oj(,#=ᇷՑ VBo:TBB/!jU]\H CS-M +V]b7e8+.l2C,<%6Uwֲʎ S<9G?\2D\=/KX!kUъn§a^W[wI!dgJ]x 3nP݀f).FC[h/]++{ST SKjzsQSJWLYPsG \X+ y|@< +ml9YzF->*PA֦",3,As]b]j@C:դhC0pn3~1>X?7_te"gX&+=E(#j^򰠮f3sv($$shwI[ .9~jFwEw +6ؤ'ˆvI=4Y[ ki XژRg%|y0-B0V Pw'骖+*QA#,5ӯLʲbmjы fG>(؀dmsǫ94FIY[}׷zӯg!9F[*uHkpꨓu6!Z);QSA!rm]VЖirO4$2ͅ׭Sx]qqu k)iA=Z2Mu>{4ɚZI=ɚ sW:A0ᏽjFepvsleXo:=cMhgV`;B(;cJX5X@ϖ@3ҠP[r'ħyW^St:&0NcǍ~- jWͮ^sG˝䝷 NG*EN9"d93o.lDk\Q䌝q\Jmz]_˄U,x齭s9Rx?o٦ofus+Z@Z`cs Sz"&$x,S#-DOYn"죵YRJ?4l{} #6E؍qnʠ(nmS%oaKJnZ&>9.&7gc+fs*)t8[C+QS @ՁeU}\oxW( 4b;!Z?*@X@L5\.j_Kc ~%:'ʴO<+1ءcܩƌ2i[v`wj.ҭJU3B'lvZu(dW6FW{`wIarjw;4 +퀳cX 2u둃Z10џW\I%[-f%y, +ڪ{չ2~xH jiV @GeϽJ3ԫFq ~=hU>\屼LUFǤʮm|\JBc:1 +hЙG;K-]s$x^^c7 3t?4IA]-4]%yxBCOeH.UG*pLe륭W?4I8ya側ڭ9T"U·MvF:G';CLl&P>,)Y@cMD$2#(5M23̓8OGwi3xL&;e7FMPmyTPeGRs:ngq}u pzuqPExIJrSL˾mܱN"l}j%$yT,H`YOk%*FGȅȆǞyTC vgC렶 \M)j[qO(Gz_%,Rӎ \wfo;ӢS:e| pm47ZZ[M,+mN:c)|hWz$߂~3|uKI>z +Gk>Džk~ ꕑ]R|i +5TexrMB) U>̥F%Wׇ ߞ nCzĻX 7m +kl "a4ӂtiۂ+;,+98^{"~ڨ;Z{5mW6+on"7m +Z[M+r)v958t c}8CzdG9Zc| oL" X䢿ԛyK9. 03qȁ/(%D7v~WΒ?66-=T\B uC3 8A +j69v0+ajq~0*"= 3#C\jѥ#RAS^Oq) ArJB_Z:υcuW^ֿ^^~e%VQ~A[B3@jBstԠc]씳`=CVf5f77tJpI9fCϱ +jpk8iUb?b!h34-5MbXi[53>\`Tΰ61πCJgQ)1)v@=z?4LѲ}}XۃIZK&"ꛚHɀr&)cAglzl Gr+y~ yMvq9MՆ2UӋ}JfGN(hm z,sFoeYLD>yGVS |汖YyIHxxZ=g" kcS᪨N/{V<.۩eWf)TLSܞF<ޞFG@N?\{nT+_zUӦW +sL>}ک\qh ?m-VxtS>NK(^co-/B +q &Nm +fʋ7K3N9@Bhk,gg:D̟{,GQuʣP(?RCç^Dܓ9?ANK0 S 5CgC+.>.#;ee栞[Q2K@ 4hPN)9GJuIi@ӭbZZ@RаvE-٥h Zց5~`G97ySYy*fT=1O߰LAvGkW@.AVrɫltn/b{ lbrS!$,aOesIU~91#{@ݟm !9xWǵj(|Zjluqz}뮜Z,~UA~`4^{ɛ2l`ӽKPo-4sT pQPl' wN@#j/3**ZqhrNYʯ E1+݅Wׅu9[%gf%0IA5RJݖ ϧcTg {yj¯cŲ#6`2t_MGs|Z3͓=}v9&4ySs CƯ2sM3訕vo.?K?z|\ +*RZELJKyv xc7٥Yщ~s^]sMf4&O*DXƙ{ȅ6ޗ^s3 @.^.ڗp05 k˨yj$!UVOlX;77FE1! + U:8ɲI_n7ͱK6ύ nQ|JJNPC)-ey"e𰔞7}j6`c?)x|Cѵ>}ث .q0GpS *1WPKR(>棎O.v/ri;c|G_8deKi@oVB$154G6*=:\a秙R/< 9#ppl ERF 911>4r% iY ^mJzoJcT|Jtq*6( .46['8U^5,ʷM ,rsh 4E`}P;ĸ°aC?^Rw̵|+|*|7EGk-z.ƿȆ_2rtu%zձ!4? lePr$m3?6#%>c'Z.b> &eg]E:]{ j*ձ dC]Kkq v^?!Jޘv4Zǧ[I69bOZ؜0N^9fŭ5^ ֐hsB eG[G7Oo +.g)] xo'c;tBb/\y +_zpFG΅c{cXCCIL2MEuG"OjhhTQ + \ˉ㵦ן[> +VLWqAn.g{z˩AW ,4£tk0Dk +.sh=d[J/.:ˎ1E;O4z\@N;G̒wF+c.9!ВC=9S4:|HFjSν>wMo[~Z-w^ d|b@,F166CJp1N?7?YC=%dYZ.X'$xeC-S2Z&h>- j2SɅnN`k;ˮ8('z.4PS<\$t uu| u,]*H ) ˝/* xP.U=ë%yG r/msVA=rKó>|d|uP);z?i n4y萿;fjso#'J٫nyaG1V_^>%U@ʠPSg+o~YLիVZ.պLSt|{:j[Ŗ:@zu|f ΅zGp.)%5LѳFIj$+wkiqpf疺%J0NRSV?ý*! n n:q).. @5w~ϧV,u)Ӡ+u'/y̓ಈ0p+j@!ǺUAX L ̯R\m=P5ϐs6ɱ8ˮ @6r)UWy myyFu +,68jQAm7FqjԺOKHi@|^}Y |IO_z6R8d^l_6E£ kyd؀^x ZvEpɲz,tL[MvXeNV5rM4R +XlYS3˂:H/${@뻳/p[ߘ|ʯ%g¼*.֩`WŶi>`& |V67N=^RV2̣sy^t&\ȿmb +%[F1|jnj rs+ʡQFUJ*uc1bMVOqU)||SiA׶IJ! `YlHoɿ7w.=:\d m-sJCJGpI>9`o79@m⣤ eWޔ_ (Ϗ OkG#$H9.E-!kf9M)\MޯWyg΁^.=Yo +.pNkxG/^mgo0IJK!@ P=^Оh͖_6L,2mMɍc hQCۡ^iNE=կkj?ek}PZQ*l8Zj[N)8YaWU~5`omVm[I-*՟c  #gbk +jɳ*}26z%;շ!APA +,P?{o%G +s~n/an2#3rAAj1l-$!RuuwjUW64,c{̀gAlhC.<~/.fVǍ7n=n]"ms|k]}sEӽVߵ6<pq[m~~ʹ]GjX//䦥]79aٜ}O|ts~7]/.GK>l־.z{x;?} +k<1kٝc}g_{񓻾ï<<<3O~Cn8bs?x-kFNfW` '&?cOlY +{t_,x]綗:}/nϿ=?rG=vןXzzpʁznOf##`s9V8|Zо_ܸhW{:R?c==ؒ/q?/Wm?tr{y-C gGf{uj{ߝgv?kY~c'^]5EzØ-7zaز o<ӻV |u3WoYe?=oJܾorG]׽pM?Ya\}O6V{d/nd{nvsN\˹ݏ|覾;s /.7^x}}ZƇ/|2+J>{dg\3aMv}G'w=C[*WXbG.蹅/.7twr|?S`Ⱥ#4rϏ}w |eo^®eٸ/ͅ{P~Z|Ù oGO>wuٴ3;.\>}l 3=uo9c쎕qo^|l֑疁tOϾ݃/}}^ydV척`\x} oϿ1:vYȶe6|gΟd3hmsL늝gwOo[KO=>`߀_4phYvO,F}i||׳hC-Co]3ڥ3lM{Om[r33b/N}px޼n;s {J]zmYyfޟwv;{/`LJ>=yG?R}.xGw|rˢt7~ M}e~V<8޶~KzjC7~C]}{Cogo-;ok?{?ٶw[5?Gʃ>;?pzCr}vo}c?: v}w] ={šߺlMVV\}iK?aw^z㡗G8m⛏Wы_ z}cAe>ʅ+|v!q=/=S_6u;oto_ݡ%vܷ"/u_7<~#/uOY_{O^yoc,dE7/w~='6o[?G^^~4֏R3sc~͟r9<7 +p KsaϪ]+Nn_o_W=αt^Ywuꋃw8V8W9v}i_K{sG'v.[pfײϢ/-_)^\zZsjGi+}=c*zSm޿9?YuեZkۻOozmׯ{̽uJ[1CGA~iGFm{tۿs7qg>~i_s ߺutm#^Y^x~}wvvGӯ,̫Cm <=:ȆڪeU=o- 2*θuͲ7Q鹕+N8r'..:C/vpx]iȮ5>oƾ_t?ɭ8x[O.߷{\o19ӽ+W߳bK3=13KV]-ޱj%wͻop7cݧwu֚=?[o)W[!a>ٽlnui[=/?mC}ߖ#<_}ss>}ʧWnXz{u_Y{n犥g;y-Kfɭş`< .k+v=YCKs/]gs7nMō!l?"!l?"!l?"!l?"!l?"!l?"!l?"!l?"!l?"!l?"!l?"!l?"!l?"!l?"!l?"!l?"!l?"!l?"!l?"!l?"!l?"!l?"!l?"!l?"!l?"!l?O&OrP\%wUo)nrOnR(_}]ZtreF1_)rm7 vrmmT۬r89@ڶ٩267WauX6=Ou,CJÒ! a Saym~jBڎc|t}uSk{*=bWwUCW_uWm\6zow^雝B +/44\z|zXa73ohm~%~̮J=Zm׬l KF+Z6Xr.L8]. ۇ*?*+yկ)-YZWF׶]P1́z/F՛=<[;CA~f{]duOkwZȼ;ͼ;ͼ;M;S^+ uOdbt[](fOf(vC=0V1o5j / &qkntd>:6}_nCktD@^)TuhZYH^32Z f{Q<8!K u-cʺ0p!?ktgyjFXс\åP+~a֍mgih-4?5SlU$ZӘu-TݑF:KšJW]q뾼Q{KV6&yfbVILvc^Z}PH+:lƉ0[j  r7XԑUoE\Hoe7YhP䍆:I`=/k"d7*YRfu,VsʥẐW.]1ѥ0]jڥ]G!jZnVR=|2K[4E_V.eKYҗ8KWBR~.գ9ZEfK-,ڥ]ghxR ZgQh=|3ioVdl:E3֢:ce< +,5oWTߪL,N@,:Xr&3b2@2c1 I Ŗ /H(fb&'P,L(~nͰ-`)[1˚ 47i +)lOhWs2 3J,+B<Bbo59S5ԉdFvФU_vFK,r{U墊h,R2,Y6AZB_5\( Mk0P/Kr{jt!96~sj oE#4L%zc[UsoLoQXLvMP-!gKA@]1!&ʈ1 `c2-?߲bz7nKOp~,EHT"QY$&(De!q'DHT9Y$ꋊD5ΔktvJQNd]Mg&+!6[h>8Pjr4/W+k6E4+CMd-jƳ Zzen͎^y=`n^ߘW)aS}-`}W2}qA bsGKFh@j*gEth:Z`Z\И wE Vj4[6c\) |Nsp[~FЙwy NfOk2?mZ +8]Jk;9999Zz_[!;m7'ZJ-փd WƷ'Q_tɚ׈QGDFR dZW~qϭ=_(oX2OmcPi8/VVPO|rzQIHOZiRv-ヘ,nLJ?W׬V _AI¤Elj9夸^$:H%7 1'bxry_='v0> װA&k{rœ|. 3V:(ȼ4t}ޥ0/yaɪ]VGI,/4 +;Rn oeYt3dtՕɼ˜ɐ.eQ^emIR߲b4TK>sNn@ h}gsԦ $ϚL+Wf$[[<]|QWE?N=G #%0g[ #%0C7PJ`ZZQ1'o̺r_ o83k8?~k&7Ź_Q?qpZLLsl-lG\g[[mMHض,?B5hկAV +슶aDyuFnc/5X}{t(O+Kˇnveq'6%'WH %BaWHOW4a3i8 4-NON*8ݳ c֮&2[L42ܮG0EwfWkYO/rUw wl9+0R(/}F۴2/N+\}(Ŀ-6mfۂF[77jLMXozm WPWj_L۳Zyy(6Y6?)+뇗M tHw]M0:'GH~f ls,mkw8&@) !z~['tB[#=iuX"ı\aKS -)5@tSeLö`28ϵk=Zm$ Sԗ00|1 XPVH,-e@$]mk&q eIKNZ] UP&k!0Z`$=hIlP{E[2dQFAA s)0D(r}Ӯ'a,ϞV m_h wlV0l +| CzYV m1En>"l41I#^C VX,%&H9Ċ Vbi&0!1ymM [m iDу XDM#II&3PX hK`h0QdU*]v̈́,#, ͍E+"lr-ژ!BZ2FQr`ў`$b =L|Tz[Sg)|:iФ/f ieI5<2$ %S4X伂Mr c7kDhK **ϘFj)l(_DNFP].OrUp,0pˤN:;W@ixؕSܰ%1*$\\ sL ˁjڢqU\%Nqܢ/DŝCKAP+)TD0c24(A$C=WgPawqvvlT' c%2}2,.V;"aaFZA#Y-ACV@"0=Z=?&ImYgQ0}hAJ|KQ# `3y7²<WYE12j&(5Ph)j + /LNB, y#djI|'P4X3EHLL90R…]8{~ѢM +GtP̚(Pw9TF "h E,Gl*08D*ӳihj!_/c1̸!r $ +%.@JXqB% QEn'y O!k0",_φM(U CwyY&=1c + rL4 rLh?LeJgÈĵgA$z  |6*>mRX_PbrIIT'UA1, h #qE>{BIp+$()Yt,LoǘbTJW eAWP/RdmSг]w'a79eѾ9X b@0Z? +! (6\`)%HE|1yd]RK7O$Oc1< Td`_:ع*`A6lXwx9MED'0ey`0lh4e +)9yCͅ0 \h0>U,*'ɮ E_@".0`/u2x33=;/{Zj,AD6u kP\,L()t47t"d ",B4vHkj8. g,s]գ{W}cjf$tD>.:mcp myDs{IK3p -=Ċ41̆XbS8(dZ_PpAK;UѾO abF b +0)`ܮH`1'ś%YbEL2|]R '`!\, *$* +%}M"\_ϐmg[_enQR:pi(^2URy!;Q2NAuV[qtB:%@E2J7d^tu .J<-'Q\`)%m "|UQdT_2X%V5ЍN@^B +ʻXQǡ(&~6=;~ lU"6FN̥w$Y^-9@R׍>fjU2UB蚫Gh"ZE>S [qTr,*JqR+KVsZc1KT{ALAuJ3슉v<<?Y5z a0Tݶ¨7y;E$PXAm`s9>IUN vgq;ؼ%lU93Pd𳪞•&W蘜NHa$DL:OK8D*!GYB-Sp-fO)eH温١bEOS 橸diMd5_:ϸG*)Y>Z*r;~K .HJ ;ũ~2NFG8 2Bo K)%re5 /2I O$锦eyB9HAb\ FUPFI:HUe!m_^dySl\t:_23z Rӹ ŽLesIq<ŖA:t.I4)ZCQgsZS򣠳R: Ψ@)sbg5~M!ا*delI{g"9J'sy(lz*0yNNx'q6cђILU-&y׍%ji"s|?ܐԷ?U E k1NVҩu2HUs-(~Hߨ Xcb0h+?~$_X4a|q%B/ C>yL$mPUuj)!?ɾr>9z@!pT(uEae4A]G`F(v EfS q/~4KE]L~qsġH`)pOBT1%9j#Ֆ :EH-Sr-U +HI`!]%akٜ +2аb[7Y]K%UcQ8 dנP*N(.UX'I.7X[* !S3MXp=Vc(@{5JOlYW)΃ǥ.AlR u1J^D+gR5%+'D KkXʭUhsJ(:Y҄£bL \婄=X.t"Mu475.&(JrɸnM՚TI dmhH$Y>ZTrG1O!mP +,Nݘ/ őMm2wRLLf9J-1vI?VݑAd#/q1T L@̵a +ɵQjR#f鶩O&wGGzp'1"IlUt"t6fnl߁&K3:9"~L_`k)UURJIr< +$ezjliK226ˇL7WiW*#kS/- +EcdVJU*YH\9,g_*debsݥlÛ+<1;YIm)'p_Z.`2Aq&DMρ$g"5|pITUvb':|>awpp$d[3ƪ*ch7y_B3 BѩN* )V ',U1,B*ܪsd](/M*λ,7K&.Yu+$1OD`1S9t`*9OHrѨLrțkL<`ʼJsY)C'Sex\tKV%xMxGDQ<9w . e8L6 +&JJvgurf1ò aՏ.̱U3;R $s +*4H/i (R ]{Gʼnb1Zx_0Q-ؙKAQP^V*oq 8O +0: M>V|,HUp<UaI>Bԥ6-*Q|6VsU^OT1O:$k!KNBR= S:E.+7F +-"}xltAK 󴮉*5b4z-QiKފc +*@U;RID%QTFZ%y2Ŵ2P!@ hW.U{C/sRJPkCa,>k. +! ++q3<G5kH汨{ +klvKA$yJLY(U^{NG5npφtK%l^sH=CgWOYj4mi+?n3yBh)CSӓ+=8Vw>LL7]1$ +lD`tUyܢ#l3hSл+| +1w,Tz/~O$GxΣE6bd`Ԣx3I}G?Ue<:&`ZRj,a-u +Vt0oaݥ ƥ*jug^gQbGWA2A{3OqLɢBSq2V$؊,E9![r`:PeЇnϙ +)3ictUWMS7;= ]ZyR%L IgO0 +E_Տ! fcR-:Fk1ᵮsibJbrZ Q3wS ax"OmjS*q 6x?QKm\@jZW,e@:BQCpSkCr.MCS<(T;b +u9Z*tU9|mS]?\7.<Uy5}``t8fsCכpf]i$b&vQ-oJOqE'yjO۞A0Te7vK}@ӗ ew{,wsP|-lۘLuȣF&UƢR`9T +d u,jρ506k]D1GCۦ磣Ր_t0!6=K +p,ӄÞ2&b?1MbG9FIJ #}1+fy0 S4iȨ>ݤmүb +!1RXٟy==0XuO1>$v?;Jݯokް5.AHaE&p>sǶ'x %1.[r+IcXR +9 [f2|Nj3ʃeKRsYB'N %AnC 0S'4x0L˦ϸ(hH +ڨH vJvMw>ī"9ZJL.9m9]x\ȟ!8Uؿ'_o:H{j.F7g0"Baji~@La'PiPcl:cu.w8uND9{˰vi`LEx$tf^=RW8eQU +h0e/M)&H)H#O;/TMݴf*Byåreh"@!bNjqR02vO!_ 0&֠"ZR_A|~T?hj-*YSȇ=t%=tA] K~8 +hH0P ?:W5$].|{0UЁLVŵ%g UϠB]rlPCR})iO_bȰ)aYBL`0zז6 \֜!C~^BxDȄ/t`!KN2>ԌGG;]a$'/!x] ?;At)7($MLC3nY +ߊgB/xB{j[QP" 4sQzt( iP5"toM;WF}Gz#0um+ϗN+_ +endstream endobj 23 0 obj <>stream +xLPoIP"( +xXQ1;m3u|1+4 wK%| +D963g@7M#ܸܻV42x%g&Akܟmٳ)"@M8B+_s{'S e+ԫP5$xYOb`Y&?riCQl\my nxq*>tɕ#xľۣ5Nс^a4xT1gR@ޠ2 +&7'L&?Wpy#v~YӴ&v lْ/ӵ>, TjY`FB`{-SY-'ܰEmԍx|Lv`c XN؄Rq&ՈĚ&)->AWx|r#11U .4֕a(!А' #tl.Jm=ẎjrGR #.Aabr2cR) Ѳ[0!:mb{]X % +ɬ;!쏁lIusK0(k@7b|;"FIG)1'%֑cueRd5x)T6~悸tAܦFnbvB2n䊽:$w:MK)GkW& ƷLݭ-ag~CȽ.IFvoֶ-RG[)+S5|door4:lЋkw=e|;֋1gs7dLj"wPL:)X"]Fl VKuY!PslLji!XS7r-;T+Ya<\JV$OԻ)ľھ>3'uPNkfgC<>EA@ @YL T(Zشs-!q=0>W=fM̓ŷ= $*mk +`m{=v M%E)^Ics)Uq8 *+u%LdHJŞ\6 %qZt7=Lw3ʷ(eoB/&*4GI-3e.s×{vt|l7.kG0$7ėdgPVЦq>I._/`aQ~VܴeI!Жe7Î83bZ] w9m{<A Nř pڐ|Nu2d`HB6yᱩJ y*V)Ԧ.F)QRäLjħ3 h]kȑQ#XdM"յ4'b2PIob'GEH@PȄ K21aҵcqS\1:ebVp#Ce &\'T}:RPm{n![DE ns]k((ee*_%Tz{ց_u݄ԑ_z*fs=s%]ɱ6Rl]+W(U>Lj- ʀl V`ot׋T*M (b;VxV ;haUc?Jوd8ܼe#&OZQofC!!) Is:͍Jt=^OzEY,Խ6]Eyys[S@]÷'N#L*lj#igQŰnM~oDGf(@,E)R|]';+#S#h^q@Wp.93P7+q| +ruߜ-йBO˩ tsK`cJGJ `4A`f/?C0NZOP3Ps ȕ@Vty{^{n863Wi{J_>g/e>'2;kN;_Qc8N;{o߹ Va2~7Mz&{-}*Q&ID,v}nLZo-3~7ML^%ߌY7M?{-w7#FV6Vw=N:\ca gz-$ Tr M,g@?`et%3HƤсl%5V㡅njA({ j`9zW5&f(/WUoJjcJ~MXQ){Nﶾ*RaK#Hp~F'0W5ȏ&rfnlc }g,B m4%SA K4)P$* u/fL;|ץ0Ճ 2yLLIP[2j\ IYK8A4˞BMl(ъdhzh_ IhlNds~7:R—{v*3-!AtW#A0G~/V<7t2[RgoE3JbP#TKzgr;cqY1@}c(zsz݃ &z +-Mo9DۺADnHi"KQm@‹&Q$%Qw@q#jR25c;s-E +27TePC(^<:VXY(`H*T D0S8aP—Q|*)QL"kKGz3oTj [v\^8eGveǞÛRp}JZ:s|}J#=x͸7u5>T?{x[Efa+- +&`z.nJec 5CoV$J$X"Z9TFɖq#p[~ճ){4k3ikA ' +iJ` 5е$ +2p[$2(TBC,Vu^BCy܆o_Vǐ1rD(U2t !5DW ՋF! ++jy^1"%pΥ\e||* 婘^qH-Ξ(FH(˃ +b]DV @]ZJ"V C9+61񭠔Ӕ @fӺ"dVU_2ᛓ5HK7fca2?1;~1Ax J0ih~NC)Y4x,]ߌ:?:]h?1ڦ?g81^aM30.7l+Pxb!'u[ջL jڴא 5a T9[Fb}S\@9&d4^di(rE?mnL;@B|Bu>IQPPkJyiEZG-@-Zm._B"S6$_g;b#pڤ1acBC&6M ntE,>qCCL\T)C+N@,ծV704;%KZ+Jlu +h +˘Y:K=MA=`=߰X|hg^2QPuZ]I9t"$x5 9RE$qҎt0i(bb#LqRbsEAQʄЀk!Qc LO'$Ź ފ [tD{RЈKh0Au}LjRN@8eQ*dk* dU +SKx%zՁ}PCt$:.4]\=@СsFY϶02xdqt*D7C7.:PfA\F 5vq PfBL:#0z9A~AGXgl{C,^&xt A>OgP)GLXm :ˤ!,JؑدǷA ?+Nh+d4 >EpԊ#&LCZ◨Mȋ&"PhD$߽HI#TT@*}$م@+ǟ$le#H): ȂF2٪d}!֠p8^Avs~5:vaY&tme a)Y&h,u +Rz6"<2\fluF`RM6%_ D7sLtFvTrmWNiʫ]EAf~@:ELi&j2h+9@RGy3񭸑mADrIVTF$.B1n҇C晴fH(%cXD8&c&Y>C4ЦG 5ԁ?1(vDx0=A.Մ9BU^S۟T KrzU+'mF a,'Tq/[I~SZJx$L%uM{P~Wٝ{i/1A}9 ܱ2HZZbK5:[aqak%t/X(h.z1te^5:hI0D+"Tr +]1F ":} ?6'Hy.C !{5 @Lq) AeG\aB hHSg%R!d +E9RdC\'TedSA*aVD$#9ASW\$+CPXh>8~V86}qa(,DžF7~ik-Fn$#MC%XezxVaNR힠s2QPhȈ,bc8 +_Sp 17܉.Vu;y Nx[}NhH,)]Scmdvtt*N f ")PŠa˘dRI;DN@{? AD "ybaRƤθ'#:V"zVWf5t%j\yҨpY|}FqƣUqç+VV)FGC2h!r.-7jar +Bw (LA ]=?H'"BI肙P7.z~lPl-m4W:|7.%QMCɅt혢((RO@P;EAB*ъN</R'W+`?ŔT%9A Vu炛 .M!nt}V|51# bc6B\$a>%p%JN !pJ9 )%AEPoiDehfCݰ{rll)pږ* +\. k+E5g\b+ڦHnuZHD ;7IB)2MŬf%TE[X{lqd'zxY̮h~6ed`7(!ib-PJD,/&,R~Q`)0!($MPZQ/ӑ +[Fp% xz (x&njRusltEbs^)d!tQ|4!(JleevxsV4Jzl,BVP ř8' lgo&MMRN1P F/: ((Lz5MȨLO/fCh%\ĸâ /1ISD 9lE,c߭@~E*+BWLկY~Ed!կ4+BV_2U"d~Ej+B&WL֯GA~EǤuY!կ_2YBne +WLկ_ZJAG8YB2Y"d~ETWLկ_Z!S+BV_=+BWV"d~ETկ;Y"dկ;U"TW"aWD윴_v~EةaW_ ^Rev~EUW_v~E+~%KDaW_v~EaW_v~Eة86+NկeT"j+Nկ;U"j+Nկ+U"j+9)TJ_]"TS+®V"d~ETWLկ_Z!S+BV_2U"d~ET9'υ]? A{N79IH? }kI\s&sbҸAq\Cyuc {ԑik;\T?Z?^5yl%?נ R?Z&s!S[s&sTq bc) 6k?GP?'/ӆO)F4ŔNs8I&_GNE8{(Z?O>6c +nbteȔDvH9;Ӓs"X$${$&2ydd)yB;]QP?0Z?GdzI<"TU$w'm4k`|I?7#>Hh{=1|"Ln`†\r|*\v`9z5ͥd}sl J:c |RZATƄ^=ͥ2󴯓!(#P[rB+g!\{Wt!MGBoH_di\V*uǴߜcP +kk&d9k}w[*} J(yJww?3 wv:WW*EOPJꪹaC \$8p^5+1NqocyC5GED3"} +mkܒ7ƥHj-^#kNxCbX<EY37ꚹd,*MP#P,Rr PE'PӏLVڬٙGbn@uʔ%޴n$dA ҖFӨC]%!<)$b +/,1q"CXh #:0 `8n:"i5|9gY(ݻ4\@L瘆'w֖3>Rщ"vN+gQ,<}B;qYIR,+T& U:ꙋ,k'h0MLb~Lw_Ȋa?`{kSׁ=ŮAv&%~6?< + "<!FY( ڙx[ы׃yU(o𴘣6kԘz*$ +F,kd=8 ft7Q{Ed@x@_)hBD-% MxU|gj GHkXRL* K-$HيGŘM@w1^O~?_:K7[Zloz2f ሲq_E)G32Z@jnyB2Dzcy" h$ + 1@1x oƉ#Qf:21~zttTӑ̫aƪ2/uh63PPME3۬g 7oڨ3@XPЏ; ߄!FathŲ~] E 6ʂίVZ0RIDaEoA:c2 E΂ +֟G;ޞ=Txzs޶|x;o1ptGbh26_QBKT8e'K[0 2.qXdnӳ# Up +pdhE$p)E\15,Ax/=% pRW|hZYo+c$ ‘"@U"/w +}9H%ocp K{+8$ǃՂTpH1%GZv3HyDıх?= ugB,Sp*,6"<OlWo bpNov_ "MƁox +98@ XzRpk:IQW$R i?~--+g7!+ 0dFE(i%'+!:сC$p}-tCm" OS!z>8ۭ[E &/'$`7=)$JOC+#89CM+MTBҸze%O1aiqB")#)Qq顕"8Z#,Y(D-cpxk p F#)  B _/K"銮.X+zT|x)(B/:[&x"F9WeeS|tUpCD`Dv +iKHHzq LUKF% )\(4`hqh*!Wy %Yj sjT#/KԸ]Dh#@q%n@ +Kx,v +D׫$c/دy'۽@0ƆDx!0^t^b*$@% (yU&cJ(# !J_ Tbi9_ؠeq +=sJEr*Vx'zD%, *8hd^#+l=/}C@FMAIvLdP!EF|(dJ@ p +Pr!*7y<\r @PS',`w"\x`Q' !FrB! ~0dx`(a^bhb`$,K 2 C&T~c2 i|Ca" v\{ԕ *!p.W\\B$GbAc ~C!wq@a +Ɇ1#&A6`'ҁ HԖqj[Ȁ2XOr wL |8p l$ 4M be,_BVF9CMp8 2l&p) ;éc"v(@wpqfrɍ%4fY!R=F3n 3Uq6T#A7lWU@_'܅Dx=G&ybd*H f.+o𮀙!J%MrD@[ 'S\A9 Tp6WtPEuzl* &;l0+ns1ѬsW!ў s,w0`anJ,T p mx:Ǣ) Iu}[.Xhl[0rü?`*BkдD-Q< OLSMD`DqU"(O:O#m$^$+JHK#& "5$6O4xi"N3kԞ +F24pN!spBGD:,rDDE@?%m|P!>m?iG#@zuȤ,IkkD[\+:4o +\va(kL[L網֛6aV\nHFaZJ *@v@@j. >6JvkD$fADRv_;c!l`(l~[u͵M"Qp6O1d6R:"B6`E +'E ,X9#CO92y>Q<}@/$&#A޴V׮{3 q}?77 lpӃAO{ H";g?gp˟عiI3g3}X~yQ7D)_gӋȰb?!tvlH~جf_OGݍb}*3@櫏ݭ<܅LC*ۯy G-S6Mu3 00[C7n"?n+%EPppڥ e 2dpزX/A[,//̷T'6`Gq9W~}IKL,Be i,21I'A?eJ?$8u|R6͓vA$"ſ["W O9IgJ0ϲr1ˬo!R@ެ9 k?khW?7: N~:/H5"5,,v e8U|2ܜ0~e{ϸ'$כsOݭ+?^vz'\%&ߪZ%\bWE֗e9lݔ`v d>oi@092R{G˕< %; Nho=9_兔gN Y[oZ۪7]`]K¦ fk@vP΄guȓ7\%}m͓lִ@"-˪nX-ך7SpW<6p_6.òY?q[ 0E!loѿx'L^ײNaeUݳ^p^d2GT]U $o$I,~*}'P ">VUtwӡ):$X!Ҟ!X?Q __j[{r6퍵}m{9:)݇bl-l C XN9sEɶ wXd~>%"?B/rfP٣ +3Ca JҳGgeod#ۿ!wr +@7~C}mz76ζ*,C;|5͈~wZ0d{LjVowsKD춖8 ']-s'طk-?end,ZxDrödi[IX>5l_=z4΅#cZg;4˷loԹeTMCQQ6`324s?~ zA t )T+<P"@AV0^|3*;`Ia6\pyC:0=0 +')n|5[!m/6OAUoꠂ8c[/4d7J@Qޭ mx, _tߡuaɒ~+PU gY%YbN +G@CH*HR6#!*<$MF8ޛ ɾ7yo2HdkSS򷂉|(Q8Y|#$w 51C߲1>gjZ^6oKAE]Oo?VC[w&'b䆄^ uETuU9 Ft"5_v }Fec{twT/Β2 ޻u_[oTA|0!`7G"zhoӤBՆMk.PcK6ݭp殭VXk +tFnLkl:5"_ԋ n0ΆkmA@[gv\l:?֛kS4O3=(0|ؼTB*͖et?qHZW&pEr0Q3/זb +It2;"|;Qd`yvr?E6=gFW2:ʛP 7mwB,|>_4_9}iJ _ϙCJQcj5/Hhm~=Ew#B`X^- C@\Hσq K8g&JJV[O&s 3*v~VIq|̾-ƻXJSnœ8jj2zkudᙦ L/^B"q:&KDֆ.x\L[[N Mգޢ]D#/{!d :iË*鮉[YeY") }C%v?ɍ>jjC|/{KVn"K 7npr{XyCQmkgsc"\S]rDc^mUm\Hm̌q`Tv_o&0{:%[Ckc_/ ˕ >(giS}vߟO4Nw"ϽMٲVϚņm?M%%ꀒ>@@36Gϖެv~]c|lF_db;Sv6Vp:m6+{"tٶhUuE` ˡ1w;bϪ7/ W1h!|rgh +5"=n +88vd2%h&gei86kz9δíZ'x|0\p&$hr;6d:f~棵2u/"/~[27X,g墇ex>t8m9l2e}T/:mo{޺ªM/y3' Xִ@~VVXH3n "2{+82}8{Ca[hؽ`XC)hS$lg;Eb ʆb7o/bsϲKgO[1(>r14,ߴZ@f}D?{_1A^0ZhmyGx_.=e+]XWphE࿸zղgnXLa"e u0X Im@0Tg o;Xje[y\Ԇ}ly}i N*D>&>O,&\$:] YZ&,L]%@r,zd |Ϻh? cTfI{mTolf8(h3Dek`\o<[tDtu5E~+&ΆTȏT2: @8+-FE+YtQF= ⻕st|3m*n:[K$M L_mM:+n۹־F! !|4!5>yBC8 +w|=!!=:!y+8[ w<}H3`8 ڧ?2`5 $@CF@[Wޙ%ڲYo堀MsJmȇ6ƃOq`:,_N"胁Wi y@>>`@>"3 -B|VĮ53`3c4f#y$Nh gPDZ!mv}vkk1/OAxh76߁+y'*'x!ͤ4(m ~=w&|VlFN@ԑce;H GΦQw=r5`Gۏ!$!FM8_{t' 7_;l[ >B0Dm&/pba8K1اJ`n\U_gk}[d=|mDݜ#,^'RH7濾|&%It͆=H _YA[C%=q^)և~WDcNP {+e83R J{ 4:< nV #ɤ"F5dq3I憏]wRTSpёWO*wWoo?''n~rJQ'OH~ n]L诳 |܇{<)D8]-l[>4SR"|G?E?׻V&-u&jlKu t;=es9#»np<Dz׫2j4S7AZMb +cb9ה_=",7 ~&;{Iv(z>80jך5/߰N)=pײ;BTYgIlf9wfz. ݥj^Vp'ŰS^qΦ}݆ܟ7u ö:lmwr<23ލ"|CRqQ R5ˁQq<JT~x +V{t\c3>ɾi:=i׵\,hw+I|Ջ_Kɾckg5`8ԆB<ܨy-K{;zZI9$HvagM);^d1=d lvhϣ|l@,IoY-_WW>_ٸoͩݺt͹#ڵ%D\;}>od/WTa:9yWi_nƵ.>P^WȓU/v;k3u?=zo‡Q5rA}yB<|}#ΕB+;z*>J0DžmWk|J-%Wu%y +#pi־t"w~UOCm8v'/Hldx٩#GآYs/:qD8&OC:eS&l3di&ެ>R)8Q7ОorA>e Ϟ䰘IK;be),~*;O9ܥ܁,yzOl=MݥvzQw|3+TaG=mkb\j\s0yּ{UbQjʏRO$ˬ +S?pLsz8E+&iK2drVY&u#]#zQF.ǚNjW; Cꍝ?͓NJ>1v6]28/¤/r엽۴w|c6kΊ5r'r1Ƶ}lSҹ;ϓyu|CLCz(X-1͞9H;[4 g> BH(t']!(RI_/uSql_vDԒ^I_uw7̟]=~ez]fq\z ++5uʝt&힣&${O끐֡>LϹK:IUKrU[>ǐ=_Uc~qL&#zř^Iuu#nj\H?>PXY ?W'f y$pDع|817JfԒsOwK/vY.ʄSAouqٵ|~*Qv4xĩ?y;I"$ zu3bSVSsuZy)s& ײ'i$[򋾜AAr?d/;妐8aXF%.z( Y9VM~Z)zߗOWڤN.P+l!ls\\6%?n=Ǡ_ϯN]}DدNRu/{9L^+m4߹{|9JQQ*l_8o7@:GNfZ\!{»^tu6MkgQܰ쥽 +_ɫW |I].X2ܯ+dי̦Nn" +`|fSNo9zW›<,_7z5x}JfKE-:r$j$y:ƶTMN|KEkgiR1Mr(-RSnsZR^" r$^Ar|(i^.N"LGm3$N}yűteٝ=ڪ$ /ҵZRxWd=vWa ͐E5g3+:ݚ"߾˞ϻEgv*o\މNӋC+-Nu͜FDOOT)=ϦOl^=͍6|7Ssl)'9%c/fJ>UbVjOrWa&l3y{y6mb\hZvtŨ}[+dYS:2F-9G7=iry>6w`p*|-ho+Wn +͓qKW-w8_{>VB e.k0LjbeB24h1ڕXXϣ8z3ФEٟvwUM2n\d. Éڛu:@xw5ӹ3[RN +Om۱5W.^^ '=W g0lr i.swV 9U"a/OOJ"X9*+ʼnVNL([jzi.ٕr U֟q]q!lEVܗ.OAxyf}r6|rŷQ17~>ԿOni]u{7F*' +/mؔUMJmw3"rzD/_'I!fsGyɤXR.ミ;W)ƞYs:{6*f*̞-);o.8dTx]&O dB,K+oIj=R#Ζx6=[YzH쩟6fnśr|dpzb.+-u%ћ"\lhZ-V+eכ P[$JTY9YLrX*pS4?g+dѕ.^S2xBs%P.x+֏Աa55;S| FZu1'BrwVTv/WܛDe*FVх'gR:GtKs6(j959e^y4t%>݀U./o^VNM*NJ}V"y$^.Jf_Sc</nZ\I*g%z#ʪVN +!k|ɣrir.*'ivݗ&׷ i_O#z^vauVrNӓ|mܕpr6Xn[3Wz|g׋!s9ë=S7KeCVj*zvoB$UrUZ?Z~TlBiL̦WOZ9jǀtfsnlֺDzv~*g^2`Gv1 &< /,XN{Sx`/YXO|e;&'tg¥7W|c΋bxuų^D{=䄚zݪx%.3?*szΒZOJY?Ӫ_-/pnNO6؛Zd"|`x)?-NI,PJχ㋫x&QׅQ_<gm&qk 6q_Y&UrmLͪi;8ӭM,iQVۧԹ^X!=d@i]6ԫZh֨/kKTV'i%PXצd\ܿnDswu/ ,TKG=_mV^+A^mxl%v3MNCSȣ2HãbmUrmLnYʮ*S^|.UR~&y3wI>i^)z~vRz=L,K?[`O$  [zk=KWsq"]i<6PY"M\7-2|-)]{dܛD+:ɦZC,(| KHNOCg!SϱSBwumdPՒϏEzu: + Tm⥴l g).n%ǼkX|blV.:9-]b%vvs IwSӿ %]%}XFVϞj?LGŮܼt:`޾Hi8sE!#Y6Vvwή6G֑*`;=yn93~/etZViD;܆5޹ +$Sg˴J<[,`j=V~(Xk{O*V>Et),yY+)72*u :yyuD]l;{ +u |e6v`e:X\ecnmCXRqem>/ʨ6 +FgFԇ`zygbmjlUrGkLd7T ,Wet4~ ȃ;As)dtHZas,žSptybU7S`0^29 {=+ii |o)L aGO|O)EyGh^尞wr,3g8be. +6@(K첓1O%Ȗ&det +.\i#*IDZ}Cr*NP{#M _5_1ҔA+ _J-IͷpDysu6*Ixapݴ[Q&7|cNWȿ > BCJP<TR#sh:;,"**U)&CMm,O/ԦAD0h*?b +Zz#bK}C2]jA}#i}rNN~VI=X!jϒZL .j7,Hf 8pFrYȉ dVedZ-oKhzPQ'A~ 5+!nW7kDS kzeZ8ɧ[y`ר&SToh4ScV^KXr&eUi[zZP闟IR1N֊Tȟ/hןPU?+Po k6cu-JI`2iŪ,>[]_k|f3[YU;hm^<; 3.:܌5UĶ[I>}2 _9P5@]Xi\Dk1}\:555fUi@ᩨ)i߃A p3mڥ ]2P膭ޔ^.t8$k9w6(Df:>:x4Mr#vqM,~'zI@)i&3ah]]Vm7PiUՔ\ӝb 0 Қ{zs3>t& +dtǐ]!}f@4&Q^Q|s&@}3w)֠ +SS0soKKAղO3KOيֿB.tjDsa P+C7sɼKZRkT@"OÙ"gjy6ZWA2bP5CEiU AN0d^S&V1Sߗk1`y8Wq3neB.l@0g`|EJo]?6/8’i^~!%أnaE:F% !]^ d/n~p`_>]ӟ,a&AgUj7V,) +X4@ @y>/fhRuv﫠Wy},z{2JubQNst ~7zl XKf +ki#3c6q 4P6n_ۛA_2ҥa)xS2f_߅鸬deUN4b'S[ɏPv0x~-_ұ=Jh-*e+yԘyUq2GYU#3|fμ|/Qr30M0ZoPjrxZE38v46 )F6M_Lգ.?j3HWD'\?=ՠPX h[G1.mr}gĠ١Z҈ޒ1VD~{|2\ll@+P1~ThՅÏ&Q +؞dpQ%/]ϴiTN=SI $,{!"*L6rS<:o('$Ń|٦gG8g[ί#}aw޷-YӵbUTXqWLi Ftgсyv me"*D4l8@BccbGэ>DXkد$#7 }Y`gr1_{Y莬"P-VR@G"]E3963%QjRΞvR֜uj\kl9pUsĝUlMHaS鳌|PE~FUS=(APzz5va K"%D8Wm-N&1C台u[ 0ZV,U7'輣Kr+Eq#vK @AjP :|똎F>Ov{Hͥʂ?jz]^ݐ^%BDSC2)B˛L9eI2uvB%Hs#Z0ٷTX4%ЄSljķ3o f|dԛ|d|ןDסS O){=%^oGȿZJ.n|?<ˌbf}6?p'yK~K$=Z +F"r;=z =[xya. ۯυ\?k/Vސ8ZK.gjAŷ{͡] b%3@m^WnytwǂV,`?y xMik{Ilx1|Rg]3e2y,V::ePUggI5MbV#Ne:glRuxI+}pR[RAji%[Iit*&Iwjp;(q漀;JU)+*BNyϜ 262^(ЭW3Rynl5?dK}R7ՕdP(I;QN,AAV'E^l=zcl7w-E d$ꈳ(8ћ)}jX saHըbuğ7'I}}ND0u/Ɗ6{7KPHk*_4Rj6{Hs+؞ LBjiu>Tji ޼85(xJ *k;[:;Gb(`,)n?S{, u+6d>eHS!GY0ȳ\h\kY!Z +sQInxV%41{)hx& A(-*77UqMbeDYg.P QaeK<_?TT HYsWC߭sJJS ?b"mv!݅Wۮ3]݊ڨ=~+ +X|f%JEBգ\5195Eu>DYMͳH~wJɫ*XXO7R^_~\v$sb!_Ϭ* ς]>[ R\eyRjضr CJ>?*%)T*t\jL.rbM} zku\B齕p\'1lc|53U]yT[I[5߶ž +Eop1]֨::ejʉM)M=kvdjrS֞nK)5ͤ =Y[?Ej(TITV~WWF6f l\|gkێ ~N5dί jL%R`fG!_tĕ=Uf~x\n$).DJך>tl}䊙"${Y_J;D_W^+VGѓh MTwQ`JUVn-"m 8ӆ +ժhOfCNuy;Zo%P9|AΤ~j!HEnK)PNp@\5Z=%NO;SWSmZ< v"(z" K呖#Mc'J6s[E-xu>m@+W-g^6O(E+y:BVD%Wmhx>p/3#w#/.VSt]ҟmXLe u¶nAogTEj\#ŕYQ:+Mkdiڗoh;ad}78:.A姙O<sX(m 腧?ckB1\~?O{}j,D{gv~'cS?T+(oaGh'wkiK[]y#mru,@lr",mzok{2t=#o2?I  +*͆T kC9+Q}P&=ueUjYF4&޾tֱu !m3ˀ,h{J9oKVk[M9,,zLXU5v{j3V4m[5ag7XN;i evV+>c>z['om֢x,jz +ǧ[%l1).֒TW_~^"aͤ76 qvp o+ ƂP &`嘉v5ɗvv`k*RNPqm(2 3 Y̮ϊi38۰y\{S=O 0tG xL .OBPG&;׷a-]\iesa5V w56ϹpVy[qgIճ>>J-B28t/VKS{K931nD yM *ϏcKqz轤/[JԮc94X4g& &q#/kXy YɛR-]ʵm1m4f +Ĭvms%1>*S]CSiRvJo$l(\C߶H>$r/6Ҋ]ݏ?vA~ʼn= ƣ4hrh`Q\DHj>V: ˻ DqÞ1Kmϰ\H(AYXDm|g7*lbLj꺨u8_Ǧ܆ n_ \jZK=-inKVI4/ w*y֮|`w:O@u9VFV9w:Nׄ6\x4e塷bk2.X*yvm(=R(ݗt)^*P~PfwIg@UWDWZI34Z9 }{/te߁D +S4Dk/Ɍ>7FӅ`JɂYǥ;[z.Y;ڀ{}?(2WݭOGZh[վ[}Z^OǙ|di]\uXjR"pu%ll -At GR8Ɵxen3Ɇ8{ [ux)h g +n3@űw* b#8n`6R#8_LtOVp6!i,s#JW|^R6=m5Zypv /Ԯ)!N5bȲ}& ;.kV459۔(T D/P0+Xs"9/ bHS3‰fV CךTOwE~rr/a>M\^mZu67 Uخ +2χ }+p}Y;^NM{SyZigee+o"q8Ӎ"۰+SsnfS3n#FAP=eمa ͜RFVKeR wGgq((eaYcpxt8cpj*HK]Ȇ~;QzՃѾ]n;~@=bU[TSƕS,Mmk(B~ +w6@KO[c9gHs<29#tu{|oFxX~]-AV}dv6ʓe`ɍD9sr5H~G'nzU oV +ndD ])%wzRsNڌ +è lN_ٵ +\z+t'`)3u#N^lީ~Mk]9"NUP_Y2^MV)ܞlzlNd a[dXk϶v?xF ˅k]eDʀcY]׆C?L[hFBGxsWE!%ƣ)8!׻<jU]_)+sssq` {%#"3'g +Ů-;6mN@}<(,ڥ۟jE5x7&]##&&v:8 +[8*s4`?h3Ft߭yYs [s*5s`u'۹ςZNAinj]hiN;t7$&nK/^/z+U5q\>98߿)53B5ER2jEE!+7].Sًk%Q +@ZAʖYcՋʿpZ6jPJ{P.U L~4iZԺ?#?=Ԃ< L-\w7h739*[u̎?y ՃzCg|7TfhvodHѤ_íZ3 䖫ѩL +:S7n= pq&ﻓ;%51B񲨠Jn@ɨV¸4Eǒy5yQmN:?y(lfkr&N΁˰1( hs-p] Gⅆ%EKc,zY)˹'A@+4^-юb/z˳r{Tae6?CDX,;^m>Cyp-[s3Tf N~TE)=nUD|?vl嶤ux"-[K"ub"ll8wBlMKRV?ՐƘ덽*u(wT(%.}Ód{'-Eu^|Cd=}$[mWX*tpe]}mpR3 L8$ I`p;%1.C[!gs88t쌼bݨAL<{,DK:Nj"saa[mRd/>`CbwX+s[? * xx}W⪽8x=X to1ir{W'ZKN(xqDH<`/S <9;Eᵢ"dg(>w0ຝh>b8C%rLaW_:3Ѿ2cTBK6zkU5I'|V2Dڤ{Bqy7j3a[vCS߂ y>CQMH)q'K%VG= ;3%\ @-]PDŽ}J|ƦƖ'}iX:PQA2cWQ)T7| F,Y"fx@u|ӠqV5i&IZ4ֻң|y7Bʰ~Jd4_֓g/9|XF ,0w@1"Ժy]mᠼ/͉[QN=׺zC־-;rE)d>xfʋ5:tkA 0C"Ce ++$Gh}-<0vw$6C m`'vXO_G毞4˰ktpX+|IT=38/Q 6Oӕ;Jr`AܲCcid:_-Of7jZl%au'Vx@Jx~y-̏^64w䃯Ioy= Iʇq(Ң+Jͣ($zq~4GAXdG,/VϦm6ga)ZҩuէVLC=Uu {kd t ҇Q3 jTEƞ0Jn%NQgQ,U]![-ttOWοeqwܧO[nqR7AV[]è_+'9LЦB~ ?YsՎ_[-نRܨEeՏ/D64.fLg1|Q*FĶq{PvBW۲0Oqc o5qk1b4h)+ M̹̚xvd!x2ufubC/<=%Zna&1lWJy/cqSYm&͒<7p8M7.lϋ-Ƥ g[sY|^<<yn>V7;dU_A\)}u1:P|3~9+`z09+<\tbIB?L=9~Wf P4Jc}gʙA8EymKzZ7QRnn5:%>E]na͎!ݍv0 on.4k3d"KՋGb4̈~.^xLgAnTjmY(-l`Lv85IrwkzT3^M/6h5&߻CFX40W?> ׫*`\48Y-ZQQ6UEJs1"j/Gi=^Wqiuĺ[vm='L>P#u4[_J>@X9.ldM '%'p{B6C~-FՔzl`k- ~~qzVM_ /{L]陭]#ie㳢W&_as]-5JU>"@|6eZ$?LBc)gMvB]m o[X0Z۬?(x =_j?VIKʵ׏p0O5D0w#]j?mwĠ`٦} #o#]ЁilL`~K  +P<\7'?ei&)" O#g[}3OjSlku,T+(~Tf'gi169aЅr^7,m+4$ߘQ2vZt^[Nd|L?ɏ3i;6_.eĺ ;0 QSʲ[T!p^d:yJ"عZa-m +:uIÏ\_;袣~Zە̜|Xc?٭]ܝR,!Nbeyu_&wTyj7pcFPR\Zd+ +4trR$]{egf?:zk=ChTךNY#^㻉^3x7s pM勖nW-bʐHuG?T @9LRw[>j^қ<{!F6gF]NiPgURCQ֟?dѫ5B(rnr`|g'|pe+C%)( \ע`x,dd]nWXL䗻\ы ? V6\H1;RRTS2;P57ВL\_E\wqvPИ-^ +1_Z`Vg L>I2(GO=3*KC %|erif$gSSYV/6d{ca0AQh}7x؎MK+qNd-F, +} +ӧfn@oVD=uKqp#bxV\Z %Cak^l<V6>YW"M/VdMǁ-DMG(*Ȁ{lMПyU0w:iNk,[ځxT,ID5 \X6ԶKͻEumHiGM>lюSV)ř*gh^ȵhH=3ku} + 96:y0b^dR=GO/j3u j%vԼ^ssll2*gpI5bScL/VU?`F¶Y UӘ\VT5|FSyҨ/qD#iÒS'>5䔏Vͷ~P-X#| HT٪#V])S>JB 3IUa~\{) h[xi> bozq^h*/KﷺIvbu$d3|6ެi>7](hZ6^Δz|ﻵnJeI14>1H +uz1ix~/Y@1j mU0t3y'5 +߇m8v.mr=X;{ #d|da#wwG=^Хh/۝ӋG.l:TFa>]h+-Ƨf<tt")fC:'r*`^:uCpkw^v҃9M=[k~"wVLbj^.u q7\6<˧j:zT+K+"Z=| 4Zûiq2|~sn1d_C>J'!\u#lvшh]R+WҦ6MV5+WUԀ>, ^ W!ɚ\ u)lgxGzz˂?bm^r*޻+/{;o$p#ŽY#lfڢN̖@{-?BѼf홀Gw% _MešXxe> iby]/yZޟr랒6>zP幢fyykor$1JF}HD; >汍Q!)y syxaG-'tEzCWJ d fd'yߎ_bN6+m;{k P̛rxwҺ|\8]y.rI=mYX#RBj"n6oDh_apxFj蟃F424+ s!aTKE_!~ޝiNrnOۑoB?ѦI˽u囐C&y$mݔ~1D5S w7Lւ;ܯD1aJ1Nf84wƁȘh+_ާ u Xz~1#10I8)7 b:4 Îm'妁L3b+oh\ɪo$~BHF9z]d\vU`2+zQyVn\^HV@T;>!hRUdի͊jJY&ȗX ++od]:E[ᡲ=hpkGl`.FSHBJӬ#_wu㺙Za(0$Vc|ܕʣu79^*Lʆ/Q);4uͥW'QYۅf&3軮ӷl[_0j!0[يz_t61cj *smc,eRj=E k㨢@}\CkPxM'\xݚv!/ q+ MNc/#3O=ʫD*7IqIGK=55+[z:Vq@k@)Gk?Az237ٗ[;ĩX as%/P8Cw0zD{PXo$H"QsMr!7x=iKL +ގj:#chnWiz #&Wg==#v†kqx֢yΣ Q5CK#+9:fXN*50}},TekFsԩ }NLdC~pT~kglB&!='o(?0+e|uШ}R0ZaR Kϰ8) rR_=ɰ 3m/;IQ@荖Z"*i>O+WװH{;׳~.~"ޫcT>`uW-TK= &K>zo\yh=;_0ư8h\XĭZ +m5N[b>\Xqb]퓤f3G|qV_u.ɀ/^ +T=d}QJ3;%5\A/-"y5CCbyaJ)|CxHG(n~=٤{bz@p6O0BL𻬂h {e:Ճ:= +>܉6} +w>cp{7 U~gI_єȏ&Dcykť_BǒT iz“*>eiCKU'E!GAT8 ,9oVgNN>ժZԚzYӴkҮGiWEVR9ۯg& )2$6mmHu$, sw/k#dǼV43#&}vE47moSZ|X8*B|x%i;l]z"% 3,b9INj;-73w]P'&Ÿ4w/r) 7.U:18~Y-{h9֮vpբ'?⾀0[%6gO4r_P Q}e]jmFCw`GdÝS?Qh鈴%2P#=:{":!0¤/YS0b1J+/P1H|2f9#w?8./8j9{P z%@)7o/YuA=ѯ$P2T0_옭FWJ] dtSasUZ6||)X^lAۮ7quzcxu/R=5F+;}W:JV$ D6PgsdYlןIJM ֬$eaP$kQi4{g(mŋ/ g-or$ySf.8eN3g +?>tǭD<YVxft>B~TPKBIK \g.؈7AM.^\f9z*3*PC(' %o]{yd22#Oc]<=엏*\DQON53JC7D=FieNZd'=ay^"%Nn!SхK hI˶Yg+MR^9ƜD1'Y NѾ4w+ceבX\&zc>yv#-jy[@jsܺ3%"x0`HG +(ϸcąTBvCK>-T"$!u= &*pk]Yk7 Vȷ <~׭aUm^6_O/x.Dl1faZ;VLXxm:5;:͈ I~Jr6,"'M\>֠k03-p-[iJiM~u4˝&i|6c;N;Sb4M>_9ΕAY3դo U;x˒Rþ?Zpi%CqS,"U]Hdո>4䊶62lԻ52f]C:V#^'%JNX U(FCL[NP{n-CvTq}< Áx/_ڸ4,&, vkwA Hʡgkdw%hRh=AźwmD+h& +CRocd (rϣcWiHj#fEy,X(zh$Q vj5~9$.ۜ9@TqdzPǐ_Ԭ95)Ġ@o8jeٵJFx 'T`x="E3c+sApK¬HE ɲ'AƎQڢ WcFJF Mċo`_ԋu qghdu*؅84]]i_Z}.ΩjE_黠4b=2KSڰuX,$.jSD?HY=CR v/Bm"кtVP.(BF(W,XWn{ᛤ~IwC^L\fVX^05lw=[=&C@$KεII2HrZսj?\(}(3_bX&+L&#~#n3$_s엊t &@^mArܓv^'/&![wӂyoXov>{R354EsHηgHK | +{Rd'.+n2] [LxլYxQؿ6!<[ÄlJr5[Ю[Jw-onv.k3ԎNKpL2Iy?JO|?I u YW%m-7F]7ϕm{W[Ə$n^ yYM:*DDϢ4yzl;ob֪m4ߺ=Fd s0hS% z <3EpȂvIJzLښvݣ`Cq7+A VNV~o}rf#]+y+oi%LC䵰^iXUKKE*/܄?J +%[^}ɠbྫ7C>AY6Ֆm23,#*w9|~muܧ#}] + կN_=Gupg.vd.W\{ ^3S'@r${/)~//_ko.m]?p۩]\WmN>Hȋ42I$g7|/@'xjR+);Dsx7)bm]™Kyzzbwy^~w߃lr)Po۳\kCFɫB?m +j*cL!Ĉ.w""i8j!qG\43Y)؞FdZjӃ,{ Vb1(C6aY4j8߫(N@"=g%=SUT=aɘl\#tvlvE,A,x\#%aXJ87aSDCC8qrR/)۞L8LU&E;ˣX6eKg p9{|{wn7[h?ƁɣHC>vC;㮵؀SZ_0Zq` z +̓;o!ض}Os<+f3!OFՎn$YGLd_a%kO?L_ő)s8NBɂ+kZV+޵1#zm gӤ ;xC#kM6&ʼnl ;YFT*F;]WR&PTגѓ͖bf /$5a@=SPc!3ǯ8sB* fpobʳsK>sV]=KͳPh R)?5˜d~[9vOʦoFի$Hh-2/*I( ǹέ@C:I̓0{r\OZ!|? x,I',Cg JBW TYόC*U6AX9 q{2 +;|srF.A\J4~i=],3V +0@$Y Hj<ԗc{c3AX`/@EP9r0>B|<4e⍸ۛ]GXQ;ىt1󵩭cr3ێ3E;r՞݁и2zw*6nZ+*}oCiq7 mecsX {bO +| '(-lyRyp\{A7iC*FlZ`İQ'Oy.)n# +d(VD;»?Bwj^2uz=\ZޙTnyDimđR=r#ؼ8]4uQ9V_ɯ/gF}:r,58NjBC +={N"er6]q[\}rk1ZRJK:;Bww6IUطdt"jT,ou`dLj(z?l Vvqϗ6a|BܧT;~t[m%_z]?>#\=ZMNlO]/ 2vqУx:Zji"r#`}GeʘmxtNLdJf /L*J]&Zg!҆ Lo VulehGjE#lXqȿx|R.뷌̬uQ8їڀ55u~ +ۇ婥ILhWʨ/ޔ%(Twv9~O`AuOS;|d\h/VV.L/8ԛ֌="y(p,kp,}^m2Se4t3$sp'&B%:wڹIS M[;H۝Iu.97ڀ;T5_z+{F|H4Z1{iqB_ev)'ࣅ\N=^!#e;\0[>ήO[)faIQ{ѩ/XF|,?{ 3y+znYfQ:caw,})8~EmZoAA\_ϭ:CcdUV5>?=*k!,k`ҲNJNUR-]Nl)tB&$x֜\I"RH<?&w= Or 2E*+YH*caT#ƨUVQs}}rpX &p?:ZhoZiɒ4.lYb[V/M8턼~~NLWO)Yj1ӕׁ1/䬢Xmٜ=bQsn97 U OWwu6چCpt^K݈}3/R[ƞVmmOZ0ѓT؜߲U5#5 nQD]n\/Fv5k^nwŅW@Ubk c[Ehqq`ċVbQvSpdEv5ٗb}lOٺ3H1s腈HIV|TQeinv('wYYCܛr$)6{~eD/p?Li|VjHcW|@Ϛfc{+xjݨ +nnqOaN#gU:\GVpT8: ?+~V70La 6_!G/T/S^83xꬩu`$=JDtk.pL- ^Ʊȸ(q& _H˥UmOAwbt,ݴӶ"v;,jcފ3xNnG@؍Ɂ9a_-n_n >f%~Φ[V[_ory<6( +K_. J#?>c} P-a'b:Yvж`o뀍R^[R bj&/ ta={ʯKeq{ދ=הzxYbf|2Gn]tě]YMv>Ay\m\tsjzag|;]}~b̹0PD ;dz@Ă( tfJ\[0|8u}NW2FO:>`5, +h |0yՔyjv7Xp{:\ c|cnp*ߝ" `Fe]8Mwǘ]of#k^@uf5٫T[2>G ^v| A:NjM?`Բ+x?'ǽy.qŮP1|" ?&% x3wV=yVqKrkHh1eIZe"D,(,q-~f.Y Xn)aXNQdje/d{#DMk,I voM-ohiغr5vgyo&r{GtQWvݻhAnA@f8黻Xnh[r} ѧ?puF-!\V@Y%=L  #_H/9i:xTޯw F2]ߏZ"2pnYXgs ,M~RA#MU7剒 ?TEaZb3gz}V +Q.-tWhZI 3NmvWrH; 3[P;ݮ $$ӣKiB +N'*5hjbq8^(&zײ\z>d~#ht@hӒp<;Q6 _]x}>r!Uֲ-`~JO3?.8Xٮv]A8݃sۊo2 jf803I&&qXib1Ȣϣi@'t=,u[1jq]Hŕ'>#˽>8Q|,0A~k}7YXjv7M3#ƒ.OڕAŕsmeoBa7%cc ߰؟%v4׼nW~OY$JA6VnϺpTZj|sofR+LێKZ[I4娼I#Y4o2MS-D~ X! TX XQS Ge%;_.N«>K^M5V>LJ6ѐz5b0 : T~oT}ѩ?')x|0f؛j.̺ey[:kbX(:{[wamxvI*jЃ,5;Adą^!=!!̱hH)#)oY+ u{tT +|s,5"N K@$wĴP% SArѩ^ǻO70h){VmpOwb9< md=JX)^23ԩ).҅-c7Nd\m"?&oV5irHd( Ƽ|.JXEx_mk:Ѧo*nex]Dr͝¤ mWSy,yuԑ7[ +a}rXUOe23*מ[rHBRZ1}ʽ.sJ!DqE {gOV80 _G`ae&޳!Y3gڎ'U4 ֢ _nga_+"35-k8v~[i?,ċ!FE:*$+گПɄ2PPJc\k]k|ѯQ>J&|I8Z~uTEX,K0]//OE; h4ߖnwl 69G56Ӡl$*;q:gr/<| 7{T¬u(ړШzxUj"\g.M8\nwf> +h%?Ų}Xf ͛fdZ ;RODHIw}S974XEx2|Suzs &8 /6QUn9f `UGa#S9Z[U( Vșhi%_n,̦ϙ/)nq^kk賘l 68&f?c湩@V&ɟ|[h=p!\<U~Z~jG3^5@Y,-cT_ֺ.^k7 .09lIoަg1VɊq!AV?M?uVخeV҂t劣߭o`Ӈm~N>%1KS=p|d%[fV)U Pi:Қ^s'$[U"X*wj7~4C4r> YG.\JԑW`u ú g7OWT^#hOE]ЇFh zzO=QpgBəGL[|Q,.*0[R]&d‚>`US1Z1[YTʵrF-í)ޡU_^]k?4K`mO 6וYWk4"갠vU-5>rlTs}h?OE/+xY|GL82dRүzVqs(K?ˤ&3??O`N5gq4jRU7EpFf%I]X*K;r$Z5^~X^SͦV`o{5Njbi's.?p0@秓mNLfܢoW\=Hf]ge2"5Q)%}:mv}l1YG@܇qj@7_om[ "W*^BFĮE~𻟈f{ğ6Y@?bkDD{_ѯ}#ǦZY5f&6>MOQ;lIIY$ĐU51 /JK1o-X$ 'wU9.Q:z(@U3E[`W]E#RֿͧUYٶ??^U1/3f-ucP{{,ßLnWU_/CIZ$?1֔ʈq͙),{v F0'|kW:3d=ֆȯCރ5 3F֭=b*kiI tsWA%9'}/&%̶$C+UAʹGqW LN!'~}1!k>N Kdq.eS3=T5^Դn!!a.k9 o; }0wHBCƍeQ2]¿o5beP뗰hce̗_U10^kٷKMkrE^ 5۾%TQRmZ?l|'1Rױa㽚FlٰhsֳԐR$SXX 0_#.Iգ09]֪_/h;Сnh;i=ۀ;\<"nnq6;uǻ鋺 +* ب,Ab(pfyE3mWkɥGko&fi :v@5{Hi +m4B`% UbSVR6~OZ%j@ﲪ-[ܙ_.}e+2PG񼛯Ҝ{-;uzv}ʊ{WG-_Ǖō/^v0dtt򹧡+Ors[erƷ]&0SP@]9HΌ#Cjxu$51pƖ'C<ɰG7EWۏŝ۠tGhJCN)}.D}yRQؽӆ{l%S|b缲wV;Od\O+hI-}/m-S ,Y:R޷:2ogu nR^`lbkn+q$K- /85s-[OOM.7;f-lgW:ƒO!.x_d"7=SkGiOu7_&soPH"8FnL>J++xz D>myQY*fl6o";hxCS0,'س\)םKZbV9_KEN /b|նDh.dr IϯhO!bs| +3MO|.⣱zAX}DmB6ЄDJny]'}+h].kF36A?heHZ/=.λӽ[5v +$nzW'C{8 pP.P `0O}`Ccs(M&|<o +nQ:GWN>^?(s雌gFNg~*HMǕRYةx$u"Jd1ο/F:T}Vn[XcTf5q(#miVp3Cxs`mX6'' +heM^ʴVS2 ޱOZ*F nz/۾/j8l0KayT5DN C H>J폏iYiJ!0+uFiНV4p(`_V2 w71C9LZm,-7/m6yVfκ->|V7H^Q˱;+iT ,s!)=҅5*Y\[jP?WTI*5{Av/Ʋe%zPszz!;M +yfʙ{G&\P)|2S'Kyh'=_6Gc?l&BrfqNR~\Aj\YW}-شܬTd"K#"iD/+$Eoi`6nmH[!lj$hٙlP9^WF-ģps8)q<'wjo%}  /~wr{NcoT*. iϭRˊi7/ΣﵽwެOz^(GK4ݠ.;9@I#Q^훓iQgQu gV_j݂jōqkA#̑Q6ؤ!Jj?ܤCp:̘7Iu95'Le~74<x tź7a?V<ުq Y q"j]mÃ+!>{+lp\S +ʝx _eyp(AKhs~!<`g™UcfrMh W_ + ʧUNlq:îLlW)] +Zui5%vE_jFRWwgڌIKs s+?SP.[*S ۪v<ǃ Z9UɬxвjS6,Y4g`ao=@vygҹlv) >U^X6O"0-eq_11ݐ_T7G"ɆWHDCZ)s9u.!xpΗȁnmqRH'lw /)6vmpPxZ)l._èzd$mlZ.)?%0[5|<A18.\ږd7L|j™FLzώ;M<!hErMSP~vQ(_~D6}op-A,o^hk%쿘_kY}d_K@; {<: ,Htu&9w'V1h8_xs\)❿1 +P!+rq\h:"|neY1tU)fqAE)g(]FH\T|yAJi $5luzgd5Ԑf"w7Ɣx(!V!ۈ,8?t  2F?&@V=9Ѳ}Z*īz$t5t"e/` X_uҺ֬yP+k +OfnSK\?d ԧ(J/xt6p+ilK&iI3k4*^ joMO,,-a-q?,Ue1]LDec'1u!T[꠿]P܊\Yv׺`7b[K4xU}27 [q>lFCE;KDPuIiZ#?8,/ݑb^˳<>?EzZ:4$tXn:'VI.-݌ ؒ"i);F%|iWߎ6)jFVw +]-LԫՍ׸M;6ϧ=jM Ρc].Iޅ/ +%v~t()0ړʮ]ʋU7ݟ$Â.=hw! +ӛDg_,gOfՄVW %0D ZVogzcqR>n'*UOlAx@3Hb=dn]qWwR}ooJ-ی֝uK|)h/ "K:/Gw^Vnռ"jO]|Q-$.Gov((C#IJ~EE]z +FiPh6$ݛ4""m 4؜[֬†%o}UGt8vhB*"U+o@zP̺];&W_Id$l +[?כBV3;73EKk<ZH}Z-_Iѻ>Mh%(EMg¹w̛ݵuw>3t,WeC a Qn>Ӻ94GCqi'a},=x{d58 95Yw]9>yS\JRvckkW9 LDZJZϚ]?TˈP[TϓVDEM6/.3JyţԩZ>stream +Kb;N>mb1oRg Gyo2b"r^ftyv޻Ls4ixaM4(C xz =_6FpcJ+F?s_;Iq +4hTzn$$9INgglX95h~(yO#{]rex̫l=T7֟&_|&N<*T7UhAR ;s;Zuy.a}ҮA=٭8>< +v}RQG-:!߆ oU<V^"Eι-oڡ%;1vԹW6 çHbg=5;i/^ +i=XËTpCFw#jw Ꞵ+%<ٗ5t6IdA7T!A?u4E5JTō E^%5Pˍ!)_ +I`D* b'9`SbmѬ +sw(  $Zjն3t;;/2SB*7{fd.л +ڏN^(6_ک8TލIw?>S}PiRGcɈdKZț[^G#A{^}qoϒ G(6Z@y!S5DVm7J_(~n>3S[7۞mm^ ިfӎztIxF|CD$b<FdBQ_%ijl+exT²zMN*vj|rx235:2vR!ūaLKopڮnj] 2Sz̫. NOS1,>o3ۻ0rQU2uo0ayo;'"nWϙ@F}Wz姑lmTgxz}s<7B/u),eŷWRRzAM…z'e Ϋ 5E~nplaruBd&p!4۟6SGW>L:&M~#EԚ!P>#l57q﮿S_x^Z>ۃA}Zi*5-Xڔ1tjRZUFvNv˟U,Ftr;+~$]ǡPi7mL%UʸV um&W#TxߤckF%].b嗃sEFךYyk<-KQ^6CO'SgiCf=̂JhB;\=+u~W~\z)fZv_tT^sJtuNf/v*χ64[a%ʉ\WzHۣ*MGqCJ}kU 34l : jokq 5~W ـڍɄlO &N眸_=g1YЭc~wl{VQKg^_zՓ9?=y:m׶iN4$7U#{&@u+ruKgUf8rKyya p=`syه8,4ȋHHxN*{(})%wR"n׃yDVipk4W7Kdɶ0(A9Pipfwpv_K|\_pt%l@#|k'G>qrxe C`/a#hNJ:k!yZci>'URE&seOE`МUl1.;c:F_xz<t79u|nfU'v0 ss?/,kg\3|<<ۭB,/%~UF\A;4X_Ϋn=tCQɞgW }>? L^ +E>+UU5M1LNvkcu?4vѴ}r}eKԱEh)g.#fͷ(0>Wߩwú7.%;CӜ f?zur3+ED LJm6UϦ{q6HvWYPk ]MApXji Tzڽip=v9m1+k12x=nf7XCy͵3y EvV{A_Zu}LJjg} }B|!;35P=x.ـ}==vl.*ib\U<T]D7oB}[n9{ofnlMLM>5s0Xn#o"ǝX~ NH&\c|:z2۷}Oݝ?/Ϡ0nӯ{f\*36v>mƪO%4("'cofS7.Ik71";Nx~#ؐE7ˠR6YBN3y.hvZ6lfv}Mŝmf?ᜏn(aܳ`ϽC̟`U\~4yUNa[S04 /fa9#zum JxBCN=Xz{my<8Ļwk;_fFgYLڪN]6sqp0MՋ@8cڻ8°5գb@&@#ʤ'aVtV^cb0[PoE'Mx6f:KְN;Y&In͵U{ ây졌CоͳMU``>iU0Ji޳]c?tVLשS1BB7O1Xyb0ҼZZcN2f8Y[`qi᧋KYn&mkmل􌮖ӍUq#Pl[nwbas `>ByַMKnnYOLNi7U#y- +bbڙ= GhP[HuzyC%z;>渵(a@:9,ئ[ޟ0Ew32j1sNN#+Zѽ1W!&>8Q?򵒛NkUf`AN й=5kJǠf bq>@-XIum,͒N񝷔5ІS!洒 iT!.&Y LDfD)8m.5enVpzZM|;%j CǖZjyq (cC6f_w-69Y(*G|^gbU&7qr,{8ܴhx{9 %YPƶ~ zMf!.h)\~rAp0]&=Fj +]xbT}3m +8/<~߿}6;Fr.RvG^EPp0w+Y-9Y:hϋ.8z.kb*Ywk2%Ԃ8bױ5H!9$xDsӹ9~3 :Glyë&Ťeuy #-t&WgYS"B54߳wk I/xWϴIЙIKŕCoyN ma̛٩9 u^STt& {0]~.͕G;CյDpbU:(CAŪQ7qQo@A;X/3߹*rO+Mnߣ>20$r[W'{NkT9j)gd^]V4%6ICd5vgN̢:SHWJ4 |@xӅ]MaL.nnP >VMZסϷNt +d;?t1Yb8xyoV=}Y1:)L0y>-`6s䇟M0=v^}ڍvJAޚDRV?"!Ҧ_h؞z~lJ-^˹cs6:ЙvXJFlA5a j]1t_JiLFW"Pq]¬f(N +&GR./o{d0x)wIv =,mw+ܮlzup{nr/NctXi C3CK mN[QrQdhO*e']иZ|I+S1 }at'sht#Jupd$QuN k+6V{;ۂ5xs8o¬a 4q F{z# 'vZ8 ECDxVl;^G[Y7XM@g o>fŐcSCn`H`![O=R6 l^޳[O8!3..ߛ6! ͠42z_$q*ZC]*4ڏ$._بF7j @%U'c*#2C$azY &wNV/pΌty8{ J`CrŻeֈf"UX~o"jA "?BIի'ҍ] KUͥ)rvlۋU,Lk]VT<&\sHP '{N (}O^< v4w"P5…d} `6ppl f\?lL>;|XL>?{[s(oHg}荄>ݒYn/4U7Q:C6l?O'upٸmn85 ijfԍ1Ò9j8Iiݞߌ[DbI K2qΈ.h1Uh6Gj ?mgC6Z})VXf{캭$UMiʍ%Gl#ۯG3e~Fi0kh*A /IceLV0sB6iyCU6-cVL-UP^cWi-j/MY ІqiηYò潾ڴ/ѴvzJ1cp qǸڀ^?0NziO/FU<Z]Zxg"Vд*p}w9:4.Aτ_D`ut--WmOKs 1]S-95>^ }sK.X<`Z-XXs!9׿:#ŽF[ԊW9`!S Wܩ h6F2CߣdL|-փuz!j |Moԙ.]x)Vc ߭|z W߾L,W_Zvm}:4)7lxŮ#%|^~(Ęf (;[Vl|}Z[s_&}>&س/%ʗ?CͿ@nmd4+ ̳&U,<>\WǬmj!/]y╲[pz6O9B;a9bHO1X,1Ŕ#lF6}Ϯ`2}pow>~Gچ5rjZeƆAV9X~@V\ f3vhI5-7A\٫^tPY}{О"a~hP-cwrbBĄU ^5)Y}FTݏ(yrF/k?6c=:J8P} vhz^乺Y"Jr|ILi +Rklu FOuAQή.JFmNרyCϷ C&Wޝ`shHrmqϦ_ڬ{n}#t /=ڬ*Wӭgeybof&z IJ*LV6zSKvM=g`HL(#[5Y0=w WNpwc)[峦6/^cΣtnjqjeR7{wTwQ?UV<ש9w5h6[g^/7UksRSe\Bx2S1~e4tkK<1:1-)@JtWɯ؊aOs!7UqRIv񝣆DSc[NLþe=}]MU ŎZ?v2Ӧ:'9`mSvB/owg2@[ng\O^BpQ/wM쥈AHxkwܫF-gmx{LڳVW=2.a:mvԅȑ kRu׉,#xlcCc<]MjT ^AZchyetP?U׀AnyXm'G̫T<~yؘyaa磥 it [y[73<]s !Z 娮&ޙ{#ᵿݎX7oMhPOL8[H n]6o$K~GUb%l)o7(+NIpZY*.NѰ>yU +gQ A:n_sٙs&ΔTYӔs;C D/荪bU+\l_.~J">8`tӃ6ph7l$Xz`Z!Rv3[LR2ƕ-D}oV7A\*du// .;Oka57vrh;{6FT& gzڔՏ}A䢃',bs6 +K&pBnx2wZ'C$[ͻ:לQ`eP8VYouF9LjkGwc$m=hujLj}J6h(wjIgT̆8\39V5q]/AJ%6b;s`d^Gs7(꘴yz>E#: iE16Kc]գ+ŕQ~/j'(N.ot.jW_hX3Nw'2n%^?=@.Z}~h mhhr?¾_AICqz_]I`1%Ap:h2e7nPK T~ݲ d&G7b[K&??F`Zs.uno#WTO /n,{``>#uNu ȧhlנ> [IS?>$8i[7tgO~EO{qb| NGOoӚ@jAe!ey/ ! \1[jEQcxݯ`?|ieݓ ʠs)v7F+`}ҽt/F] ="jAm7#n  +|6@o7A>gP_*2b%K :&₮wXFE)=bCrtPF[=na$k쁶,2hqy㠬˶+^Wr텮o̼x`y;/7iTo%[[7mǕ5AqrŮv xۜRy#p|Mz`\+xKL]j,àM$ S]AMᖞ_-Ì ۂTl9fӫR4KĒ+5 P:[{RaTCgkgM~v t4XhRjzN[]ыrґkة^dd2cN%cmB4~Y_d]= hG} eUB: Y?Պ!gLf~E+b#!tq)@cczrPcaME}ncvRiՑ̈́}erA?!bOn9.-kuDw9#Zs굾lTʕsњ5^ ݺFg=֞:u-;j6^\ vE +0¼ls_[Iԯ7X^y띓nN-˝y“0yg\>٭mY/F]^m +_f1Wp5[n_,3طC0w{hlսԁ&? yh,WqPX,gBOEe÷NLIALt}I5#Tw^ m #! 6UŦ`gJk+}Ըj<[aP>܆VL^ٞj[.[3XoO~f564'_zReիYf~w)4wi @(ex@L ǀ:1TyA>gXGȡT?1z|)3^=9|Q CY&}{Uba粚g^d^׍ +'Շ՜0Kƾ,S/x4n6?E.C^ғ_mjD+ 'f_$[Wq%}4s/h ?(]`Oh-D[Dܨջ}2RieT:a8O n'&=n Eض r-d$|NkU5>Bs%ۢd̼%u;{5 j֟:[ +0a G]XvK?XJvYsL(ƒ|z.S%p.A1wqyHf36Vi\R1q~BʳXn +bSgZqr:*/X ^vmk>H[K5}K +O: EH#oG,kٓ¢DͿ4#|F}YKҫd}3&[yB*̣!GPWqК.>uRCjMa嬨g%Qqъcn?-zVk,#8MdNkjՍcmrS;rzكbIбSa{/h]Z'ImkBNnٚ&Ipݯ@{w0d wɆ@fy^TJ<-tq[{4xY{_ _*^S}̍O7mjuZ]sةs<$$o&Tm.R}3B&42S|.##y3:o5za͛ymZ}Qt4GX{$yd9ᶲ {l/ Om>v2xzWl{EQ +"b4//c^-L"+Fad^xYem.؊HYCnʾ?xeyP<6B/9϶+~/XTM3:x49x)Oh;rjB_`#NQo|Ool%YѼ)]_;3^8G}nz]2hcOhgOv}YDA༷d^)`TxB_՟;ۆͶ>ŧ,бa*ϩ93nꏸ˰$bf}Ó؇{q\0AKN Y<]e[qk&u7a"̣?kR讁Y2,Yܰ҆Qe"]a$ݦ/jNlڮ:q+8;aO'lR!$Sg^`Җj9Sbėppp.- +b Q?'6aP&ōwGPnBz1{?ctTÁ5(ZTϼ09iޯoef#nrpG˾ڡRz.M5V)/1`h vǍ6vpߜeW=iYI,)bmqû> aQAFlo3KSէf_ۡ6v{q`j‰~ȿ\syh 4`4^$N!~2y8S`֘Ej#VXh5N-cB˦s֤Z\Ai2]%͵J7y_G(]<f\k߁Of-muM4} h@4BasgWS5a|5ΦM l ؠLD5;ONԴwiұhj|gIM3>%T{ul^鷍[M_?ϞT*-qq]ĕây6.L$uW`ryR ruCdyY+ø\RwF60/kP~zx+f '_gc /ݳQw"7>=Cv}5UZX^ 600UgO{Dj 3A(@0𜙄.{] LEU\\Fy sK#?d:FAuέ/.N[ܜ+@aydk@JF:r{z2Y4$$ nA{J]T$^˕qU)Snll|ūVo^}E0x%Y慖dgMFBQOF<"34^uԼki9XI[+B!%>h;rwbR8|9YpB - X77šbH^EbL5%u~Vb[js~謼:N]ʖްvKWD[1tdpKLv_ްj]U45"bԃ͛G#w!ƼKD7gYzls=*]F<7 e07 iijT:W"u!c0i|7 X]l ZiuU܅t ~(e^)™]54k~d:c{񹅿2SIƳ$wZ Mʢcez' v,DP*svT7 U"㱟f# fvut 5YvSNcRpoץ^zj[U^uG5gmQ79=oR+r[M0YK:N'P{ tU0]-;Lҭ۾5^~XFC?WI,n{p+_2#ϓ(X?eR y] =K <.L/USZ:c#[Z;ތE7 ~TUE?:~tkހة{s'Vڭ]!66^JYKm6~AT@ɇD}xFp=E/}" ]{]ͶѨdeiXe;[;a`?|P}XeL.3/Wkc}ц߸I/*j)1 %|UK lt"i@SB@mO@T {ut /4[=7ҿ"g)}/8C7*P$0Qr +K<[yN3:oƮIZd׎ۛV|C&NJ:Dbr0z^;kEJԶ3/Oܸ5T0r5G.S|V.l'D~}<}|@WW :GkcG}5ˉ87&Hs +qqnw[Rs୻O2MOtnݻ\Ǚ0XW+uIGb=V4| b'q-_3Йvñ8ըMӱlgF~YUi<m5^y<s8L@ joFFqW\՘u~[Ғ?Snb\7eV&:a\-xo 9\l J=FUߠ+fuR\L;z2VW+f/ti>f2Kʋ6KqEsr1϶%T_{Rڮ07'%rǪO | Ƨ0*s[9VSp,D*F3~_i!z?X1'\L[ h_J}_vT[V`P]<ٱIrgp0 W od#rAilAQhƪ3|& +b3!jӀv} +wYRHG io +<@7U~m P 'aфf9rצ,ŒWW)kg ._V4("QAdSWZpgאǴes70 S7. w]-;Qok`H,|[<nZ IO5pv.e;Y׹ˇ;uˌ9h%*070-9 }w{R[yZfb RCxg5]#2Kh5"+5+*g`}#&չ\*TBZdZ +jX&@yJX٧C}0o[ۜ;—, +eFJ:ʦee_V5(-(&3V42B4ϠBhZ}$Y7-{~J0~2a &_(O28NZZcB`Ղwf)JGLYli#.kY$}QlNnީvX,lxy1 8+^k-;J$. MvS]vcjghEDğ}0t=: +?)0;RSL +K͋]S xJLXXGD7qt[,&mvkB7{ =n})AE=`~2NP=Ud.SCR)PJ{I޳VPﵦ]=L|6v(x+arM|2cdjYT4mWc8o;D/{D >68sl,Մ(Cڊߎl$~|{su+igk_.{V(z;fqG+ HhuvH[\҄~37c"gh5u>gqn$gZmkƐT6mwׄ7#uqz2\4Pmlq{:մ>ݔ +ң$1dQ;ScTڣ_9QvFQ'٣A,؞DK +} +.#ި^g\t@UWjw4EMEUGi;܋$ԥD{jZ7hl Q2ht:ZiEë)h٢`04msa9RS|-9zQO9k(&p}STAI>HR.^Fa>_ 5_QbᄹmR҇[lKq?G(O/UkC /NhxnBjIUrG@EB,\ˎ!R;$S漺!#LT hTTfjBϟU8X7v/ w1 ~҂vogjiZ4~E_?yޘ@ؿgn?0JZgcUh4߮%s[s8VqMPfjT =*n=u3fEՉIY?EJFu\0ތ;,sѬhm# [0M@IdiY 7?[IĮ01 zHDbT{ {DK Qr8fxDQKAB9/` 9kϘ{&$6.d +~9>.(b'퇼s˽ +V,B%/`fyFVZmD>mF*1@mѴ___':?UM+N.(,յիX>pvj(t{԰^[TDe-kbW'M,c]mXw{7?I% ¬ȈzB`GOg#Cdx=\ꆗL bu]l5lgiw0z8 r"~FC.q2ݙ.B^>֓Oc)+iׄvͨ{_L0sV={r0}._`-X *ҷa>q-!_d b_;\w2-z3%%7v熯6{&ȢdeI ws h݊tg?.q|5҆˭s +zRWIj4X e۫}kI\~&qfն+n|4c\(u2#}=^-4P- VV ۥȢMgCT4W8QJDQ_!PϤ}~>1ͤZqtxС XJ1PTQ5.̻ܙ\ \zjl]࣡XM`7R5znSE> ,"3N04 rR Śq~dWj%:zG 6=n~8#\EZh²LIֶe dݻ}jTom蟜.2qQ'Hyރs_gd^u6&iΦ{5tkMzfM&7K9x`s⛹!3ɶ=FBqUgx@WJ2ً8_gDw?B'|ehA~ۚzqn2Fl >x+K[I/Xjp}/Yݡ"l|VZU/5w:/7!;5f8 +|-=Os@dnZ~e`iy, + +a/zeۙT݁b5V3.]Ҏa1l64mjQuB%`AOh\uJx@]i$NaRߜif(56XnVoS P"cs+^OW{Bf g)o;ULe,VܵƟ YKb﷨}F0ۦnۇC:L Ȟ)J[NHMÕh^;v_a|Squ. ++sRVH$a^)zw}MbP}H]"/蒿X8;+C2l2>*alk„!^=ff4C3A8Vq"АZ +JN/i%dzS\dk,'mSzer^M/*CU#4/Eob@yJ*{lHpehh>}1_U44lYs+&vS~qwpʼnWF=WCMy{^%U7DدM]F njH'n3 P_a%*XxXVRcDĻSxtFWe +*,H7U"pZ(f״nNKtѻ<鱴Tq? [3n*[/-V=a4YDH+%CS&bd H7m#rԢmkW?mg;y\&϶W^SCa≞˼zI֭IPO~X4 B +zHo8w'23U5w֣/|V7g+cB]wG^7}C܍M1zZ +%(xްGC;v&^,K TN=C-UTZNz}d+G"6~8F+;G &W-ӄ,dn=c$>%}u+Xmm+na\$[u 7n-IiهWf5eYPn0dtR7`d9<4<2=ibkk4$ovՉ}pPya#I?ܪ R⒔>;VQx.יM[lâAqB}iP+Tcr\3PA"߱+W|KPZ˵yڷ6O Yxyjvdvro삞PJz7]tmծ)`VΈq$E+1$AR2=4(rG ciy<̹RHS{j 9{Pg;Í>.2念#D)ӳ\!>fSde]0o_ڛ>seUyA/Ek xo%cˣmI|h/qYl0[YkIg 9H+n=Cx']Vo-1+5Tts5=Vɦ!jhUtbp͚krcI`"ΖЦo}D/V bT +Wm{ r.ӭ1_󝸕aAk)"k?r;y%> .Q)nݟ*̑^9QrEӤh{oͣ VB`a6ξrK$I +1cE`^Zw3m}iM0tkc '8 ge! O#32!3ه6aA|VP̴o8Ҁǻe!Cۦ5 J +EIsia~湾(=YӼl7]'r݌lp @Y~£ vӛ/+CUm 8 @O ҳT OB0&GMEb!mEl Poqh"yH繕pw~k3#9F}D-ģ0m+&2Mҿ_v=*:ًnYB;WN<*`x gqj#Ēe2N@CoAGGqzh"jUlvȤjf"p{+/:ȱ9-a]rt WؕitN>Z/cxzp+7Y& 쮸v.bDQq]qmY^q'aQ] Wi%:̼|*%G.zKgkE"__pf +{&.Ke )$wtOQ@ tJFjy9lwz8J:YzV~rspəl~.rG + FڈJvanT+j +RC`yQϺXCM[:Ѷ~A Q=ux6l76G_J1H?ki4'ͩr?BC}ȟJS0= +߇耩XA?/,2[֔4A_ߚUCwZh9ZK#i+cf> + ̴u-.+Q{ngA}{+AX_Nv^o|C.B|dLi;rJ=[Pr6 \̼eRiw'Od3k'6/ eR +/+uu=RhW^5ޖK)ru(1YEĪ^v4Iphȃb4qHBl`f]K>8ݜE1tr᧠NJ=Ga;=c;5: !zFӇ/e#}W0C_MN̆`مv)X53^1g7XxJhҝ=N˫C"5sB?.4$EdC׌ã`-Ktb бIjۦm1LsS}깛`^W%uRm=e-?YO+{^:V(3lva:p艓՗M~rhl}mc};} f4Z9i R5p[u\SALs K& ƞP85BwL?].5< #J_{>dpy~F7XEnl(䢣$(r+~(SkAߗZtl9j5X$MpL#{dQN :kIl{BXoZ{h6HlrQG+9pB.MC +n l?By˝E, V5t îzRaUrX\Nz7vr6? m,|=&mJ +CF"Q?]3Vz~(D%6'q&o +{,|8J+ %P1W/7gkPk>_\oE~O׽Y̬էg2rHK>#'Uh)SۅZ],-Q)!F K+VD?!ȼTSzіuŃ-{x0tp/6I+QD͢$:0.pSGhy$w랠};4UdF!ׇbV3_CY>GLRYۜSWj,^,S§C"@v,͞ +NZva)NzN؞:_bד3@Oobt.yoZZm?F+Vԣ:n |{@C $e@ɜ_.WX_*6@c6fVUOooQ˸!#7U%9U<C;xep9͉dj:5;ovz.:n94d{c[ 8{-םG1pnEDm; Қ jqntezJ=nLE*R4pUwtu7v:ϡHY[]3vÃmw:|(P]2n_jV{P- KL~WL8.I^ajż /.{dVSnAlJ;H/~حkd ~\ÑtSsXtyu-m[ϋMFN/D mb7!GS|̈́r//n nzňL +di=X\o@S+zom +l~<ß23+Ai +=|~Hd>=ZOl\0-cݚfGᓾ_F!i&2^PןsYU<[ji3)5GC]N] z E}(\ԜaB<8>rk{ dq[OimNjzlyU^_TzhYmo;UE $ZuPCGp_^ߘ?cZ o i~CHNO.o^.L<0 3(d?cu^Yhg^l6R6) n"6\;ԍH.)nu,ye_HW˨rWq3vKG< 1N%);N+ r<%̱dc|loS{${VYwnKg1ҙj"hT s/wLg!>Y;Nl3u\Oٞ9S [a 'lBgcFs^''ӏ(|)﮿oXel"o6-}ϼ:Vsتvވlevl\1Wz͌*b,νkobugt=\G$ʅcD/cc^@xq:dVJcqA=7⢵.Z0w1W_q7¶c5Sڸ +my_4&WIG4^bw{1^Y*<}OT zWNP'yoրnOǂkɯoyhiLsTȦdX.`8>og x^~Pun #Z>G"}x *W< siZ+:obך{&7L4B@GNtZtE'k (}Su6%ɵk$#@jV5xoծ+fnK&NUAM069nA)N\Ĺ3ppgn``+sJc3[``޴\sjb6?Z 6:9[.2UVG7jָDCx:;%6{8WA\j*lXz{[}ߺ-NpܭPlVX]4q62#e;(kSXJ)JRĿ,VRY+ЎE{º~ <mXgbEWD%#;=n_rmV#W8zvuʅ[Zڬ +F7/ƶwi}6HN+xL{IEU.718~N:("%,{WTchJPtXc=dW{ʃ2SnYO?K̦ƦdG3 XA"fQ5ׂq?GYE=UҖ> ncO%7nwWG,3kE Y Y̨|=)dwAíuEԎ|ri!`KƩ7CxBd;nynNS g{'m7w][5\1&9S$! >W|r,җjSL%#L%yxۻMZ9}@ota޽\Կڗ`QFn\/o\)L!)>yNB_#P=4Mn(pm-18}KcEw&Ů/a۾FcU s=:_"Mg?N]kZhr Rl{~@Mw@vtY!lQYQBh-C~U;(YH˴-.ëɸ$G c({bW{1+eZ7J!ٗP,8^ ӷ83m7Tu+S_>GhjjKU<{5NPF/OTꢓkkhD vguߧGEٴڧ7-Dzvo&?L9J|a|%EĝuTG7ɵ4'_˯'Kc(To%Qg1 hR&HFCihjV@TM|jſ]R}hwbvǀi!< +eN>M4š *vi&䃍!M->6=b6Dnhg~L_u %ʝQ-x@1IX#(Xִܔȿr"ZM RzYlh㸀a dU*$Noqz{b;[BB,L䕊ohfn>n2* nH&P 5zgϔkqaT*ԹŤoι+4Aʣ&*QPS?'_o>`8Knb!,r=J@J'*>VRI?묳,Ք?[sU{K}OK_뢲T}ف7m]N=xSZJ /mўŻ1UFmupDvCe +X9t}z̻-\7]jigbYDo| ;'9 +` ="ΥS&c(5/|HR}nMj&xnW$:uy'8jodEI*beӉz"Hy:սuRmt}׎'c$'Ĉ)+%u`eC/(Qge(c{RڞfUV̀lhyuyO+9! H=ˇx)hNםB.I—l@(/`l $WMxL_X!/y=)Zp4|W=lϑ)lg`K/8h*XY&>4|_dfU-KVC` siR3^95x"no̔}:\,@jr-vC4KA!uw3}Z0ƣc6FM],*e[l=0u.Iuay?Xlzm9]WN g}8Tmг$+ulң>#x` M}d 6򦭢| k)VU溚3}@ lODPD-EK2z 2gZGeyo,l~25qDυ,ݮC-^%\;*l"G7T/rw2虄cpU_C2V4]=*5#JNj&5)վa>x]&3YqZARw­$L!X֔D`N95= +aKt{?iLf"G}YL=X6(ոQY7׻ofnj G-oK7s9hʡǁxK&FSLBbE㜂 S o{3ї6z„L*+CRoCШ圌QON>i=?qptP搪rjXPʒnVjO a6L C,/x\@c 3nڽbƾMcN_& d>I ng¢NԜ?"Qd6of6ܺC5Xt:NjLDnӡgi]2`iGlmI""Nnj뉵8Gx/['m /ٙk6.Z14㲵n(r! K?' &oʼl`?@WY¿_p{Rxm!vY8ظzQ^[|شg.Ć,jL/{PwEo+[c;4HJ2:rcfC +\GXI7eG NSow{vU' E8,E]oxkuqvŰ/qV}{6ny,L{ZתGGVu9Ys*IiPsTjemʅhO0Bi30g%JDT +Dʌ8J;m4xipy(/qznnmj2QX@(}7GB0-ޭ ޼sNs#`Ct gT~]Vgps)P1o_ sԲIRt6{+uHv@Ti7p`~3}Lb rTe6I{5=*@ɌYԄ)uX +WU]Q즲oL_ɘ};B@9gOGjx`'%-8m=YJ<g1VKks Iӡ] \8\>.Cdo5hMZ9.gzJ+hӁ7",]u|=i¶`6L$ +c[S3?{5$ڼtm﹆Jx̷]D0V:͆ēpi=zƀuoePxut؛W޴)" Źî /͏x7JבOcrw"I27Rxn7F%^9ڸB>Ds>w΅_彔zmсƉ}=-W6hͦ掱&.5Eq U0I5+!a i8y:ȷ, +ӊP}g]t~S|µPmS{jRUnhkPB_c CFPRFX0ۃo1x8g5KrtV~(<ƱZk`րkT.? +lh-T80n(/fj3kw_{e1օ%$kұKy#mms7syG$/k,|CXdC;淪 ֶC+U  OU}`J|D`كHH|HyVchHmb9Ξ,dOIQ}Ed_hHJo?  uWʫU,_1(}MuvGـ/&kbjᵻ>6 5ux|ek +k_|{1s II8ti,:pVSϾj˝G/ +,?jekӷ-wh&1M1r=r`<2*Uݴ2;ߎ-2O[g鼛Z5ZdWWXcaFiǨ9~oc}(*~07VRIpx=n{\&v}40G6O{\x:eu\)S}xX v2Fo\9N]o*fҋ͏fnk"|j''T/Hb٧ﳜ CrPa*ݻGuh֫;J1OzpY¹8_|bvZ;<7}4ko"}fN5+6~U$g +œ|GӼ?dīNq&&*!5{QèGx4"`R$YV'v}`}893}RJ^FC̾Ds5õ%[/]M1_)\ 1N +iX % l W(=JҪsW X$l|A?s^Mn/8./kUP${# ŗzWN*'lk]Qj&>hQ}.RTi4Fױ PCyo9$r7,Tנ=)1lPɞAH g]uMd`@HSfzS5JPo$\]I13Q:L)5;2y)t~f)ƦmvOvH8~!pn @NK +%gl9IbV5,6۪Ez9AN:p#bt +:9!Th9{W͓b(d JQth=iT8ԅ~7 @[Vi7GZe.EکgwK}q| +b FbNlA{sQ]nDt7xq=eάdA^h>=Za(۵EچWS-m&`D +~ppb8OI<][4$=>qZ yi:@]qaI|ѷIkW v~/οV fWZڦ b6WATl٭T3p x.\O5:UNcHL[ҙWXq Qn8w鹗A/$Gdri涿W>UM,8sNqޣX#td)'mujdY~x# h:"_}n{ )|.򧕺\ihxIi'RX{p+/r;KI+,]Cma֥Tό#GD]=heNH +i=η 1Xث087#.,Vj.(hk>'~WhP0"p%xl$ʟp)_CpWb=m0 sۺX?߃*/{eK}. +3yXO.(mkud1OinfS:8z:nۙ:.}fioNF;'YOD润8.pʣIfY̊' {QgAl1եȎtVQeG~އ"n ȳ3JyGe۪zef>Oq18 kaBO@o c戾_9d#*w s@~ +V͐I@nʤKA_U*xLT^єvF%s`cG[S ᆮ=Q]NY#?{f?yLjzȳ F3ܓ2{U^.f©s6dM8U UۣRw;4ޤ52l^~o4%~Uw[Ƭ >k{+@H|eYDbw}trŞBBp7.|)ss';XYhTt{O .Pa@ܶ]y&ǭ{x9GrV..2ҰlecN2q.ů2C|5u' C޺mYca/=ez JN$WzxL./f`o L|2ȇӯW3[pڢmf{K|Ct) GHb] qʗ' y͐#oaV$m%݅n4V:NZ یι1g+d}vP:o}‰>\D+6g11 ச:Ʉyb4ypMW_E43ijHZڴQ0R,qݻO=XoK!u0^h1Ve +j9a=g1VF'H[fBg2L'?E;z{qZYKĺfΠD&Uc|'}{,e7P nirͬ P"^rFEa3eh>o൙]5Ojυ2玘I=of `[\7O+SF'FN +m?τIVBfyYg:1V@r@^9umMr 8ƚ$E0ri50{&mh +]~aʣH!$(ˆ)jO)ʧZן?[8A9jC\xf2jdtoꤝwƂf.dyG8{YL5 ޮOt>\{~|cT3N"g{{,PoK40X,nYyגX]ϚQXcܟM_nFw(nZ+woAfY,Zf4wE[}3cI^N0ü5=;^KMnz5uUFVbF:'Ce)UNY&չ""}: ԨA5˵vxY32NP\L0Z2V^st1S&=}jo'vT[.9pw7!I휝u`4JK>-{˙q^j[h-CD_hˋSo._UzX7"^dq^7zB۴]DUXD;{Y~Bߥ]؄ >S>LZS֘)`)W3'KOV +Glwr?cy,E^EoyMe\_m~Ӏt+Ig '=l@4=qp{C:h`k)˱wf;*B+rZ+)e£#_Bq2C#;dZJX1ޞHe,[_kHǽl\+n}v7lETI+c.AnVds^Ҝ LubkBhojh0}qdɬ9hdw้EwV&J'5\wD^;'RL{N&>|(H#Tn> B " >Z*`G7!.lأȍhB0ܰˮ52[>Yn*-bѠţqrVY0RtZvz3hָQdz˕*}r&y;BĪXB$hMͿή"ǣs>%#<Ûv{Ng,/>3٨z#-Ĉ׭{s*-ژz jͰ$a?O8VCj3$&[iQ;t~\B5D|!85=9 F­~Bt^(ZK w5. 5hn- vPGX5aOF~tWq?(l̤"pMbp!RH9es9j?ǣGeڍ]Ƙe*a~ LdQ e[V\!NC*L}Q28ՙ!Fq1&11]إ6_iX`+GHjnO1˚ꅉDVM=.;f[2'6hxj +L験rmF+,Tp\aR}]?+Nv2rsrǭXmtQTMSM!$J:>B^3;Ӝz:JI&А©-**=^T9!i ji!ܙpvj]s[`:z孡1MNeh 8Cw`f lku0ZID>-?#vhB6Az@ դ+|~,Bֵѓ)Q#>f]钓Ƴ¨Q:BcE3"wa54+СB.zҒ`uBEEzd-;{ LU-s{D\Xê7I|W3= /*ȌqlÙ|DX +@%C8jY'I9Smra6Ǭ_sm9ƚ2uNUX[F7\>?AbLaY(u?vRa1D~ ޚj"";>N +k>*ĶۀyޜL"`ۚ3n_])q|3_ nl* MXo7n{<_t};s/qwزe*HBt G"tDW ~^׈b~e?r +Q^ڣ;h lt)>ڡ՚͸%@A}#vN csWe|T]źeT}N=0Bobܠ޺(slg~  ݗq%Kzc/鰆 chb$5{X}(V!+a=$}ݛówmהi -F97JYwjmL^pWs *4 +,Ī3 +,D.$5I?jRZ :S(}mC]*`, N}hP +ٍoxJnƝ!Hs31iR=T+$;vT`5yqH|7fr+:5tA./+zm-G\c эR>r]籦%df㟷Hܐ|kn|CjC@WS O1TDZ yrޤ,"wKaXE]MJLjOm5ߐdsN+cMKX_;a@vKAo=xӬYΪh@ [ZqE#fL73%Pj~gq³`队Y^1+V~VѫEfT4?H2ȹ*v,w) [IJslw&Jm =SU qڇ>jәA\uf>evA]~)G䨰{^`^07l]hAX4P}nQ盈nƋ lZ22mlU7xVx +Gx, ke;Vڹ#nq 1q3PNb{rxiCUtew;ХiEZ9CY +cboX–rc@h/7fmmG2ŽX/ҫN<_qo4}dEy%NZ; g42R>ĺ!|˨1ݔݱFۃ49E HuY9#lq*R2n`#BTjC M?[LFrnd횸>mvCxn? ڭ4J \!j4pcEs6茠He̳kh(d lcQ5ηv<1UFiq~t=dL2UOK} RpyXheG5fDBf4\w1 }[lz[<9{*L8>jUs7\[Un/5:fOdP'mڏَ-yz//I(4Q⨒Z{, +y…6.[;PH\2MU,҃d@|ƬYhUʑ5֚gInc0R)]NO +gA"*?2tQ_&޺8Z ^4s?br/T|c7Ѭt?D7%Ҥ_ԛ(Ҥ_//0?4&b7N?g/wE4b4H} Ax^&ቿz]/T=Rfd~#6?Q0vOyKHdyӼeإ>_iΟސPu:q&"$A;|nu]i{,sr{{/ \aKv >-oLZ4=ηw?Ry-U͕OY?vR; P=uNu]=zT^"fsA%Km uc,z{kIU1 LMފ -饐<:c=〼Jy4-8LҖuv06֒o;+Oܪv+avL^CHK?P& FW_ңZҳ{eApO|[RXj샻kԭJCGz%<#N7@„꫐Ps8ϻU7Ow{MTxO׏D/zKb,ojQvԒ9˘Z VU]V [gh9*5[ t3~ڴ_Fwydl,-n-]N9M Y4f(9|l؉bA[5 Un:Θj/ +?pG樲g{i\)z|@űs@$,"8J (QBk.؅1Lŵvu\[6 +~Me2#}[,\Cs)]&9Yxv?5")I9➑:]q.?=e]ew./8\|썏*2RmAY\{φ;-$es密^fϸmu>f_d}^-݇ +ׅ3-~Hm /;Ul:BBUrAurl^{`W +&\L?wL>]F?Zƒ}t';AmCDŽxNj׬WIdi\nMcGz[s%{;40]*N[#S րwS.ֽsX M&דRtBk/Q' Eio]Nܽ.(>bq1&Jl`V+-:Χe˕nH] +Z.t.sH9@EDPg@d QhмTfb|?bMUnB` +;iibr#u *$XpfTVTh<3*RqkFdNzںrm +]ԦSP,*%qIyk:XA)zIf͟M+jH:n]#Ń ,]rAyX qs8EC;&Ia_Aѕ!CL9#r0uISۄ䛌[=AosiwwwjŻMRӸ/ sQ7c~"rw o|b@aq+KwvfCl0c~6~9S'\ Y<0ά4a025 aut=kt~2NDV\M<_k)AA7<+5֖ +|;&Z 1@]k/6!Kwqk+~wOޑM*I*18" [tFu1xQ]&b&!C1Te-r`Y%gt~{sዡ3]_ +n+OcvH|jr[MGqV'FⰚG=Qo؂8 +/q3$nh]\ :wєk ~uE5nvIas~gZr#{sxxcpgg?}OsS< \G:>>ڪ=(:iJ~ ՛7-wB7t.FmN*{ܱuͭubbs@&Juܖ9TxbɅHx~g5ۄdPNb~>V{"n {h +TiΦMn<5S\䢥slsQARw&Vtn~jr73SiES_=Clm>ϋq mGZݞi4gV}yPu,}r#cQQ] mïޙ-7S67'nV_)\wv6%<*Q +Mv 2mݣ q^o_P2!*mXR`P@6 +[cw 'ӏ@ܴyʋ0<"HV6=0OP67n^^/$UTph^.u* ႃk-Ȃ!T4{T"R'RY[Ye{c[.~.L!%L4}!q +n⸭)ss_| b=Ԛ~em&g%yC̬ +,gvV0td Xi_>xf"3D+* ]a!NyuF4k{\}Xєm :f!Rw[qk6ͭP[ trm ;eV<ܓ<€0tҔސ8HU:q+THUdF)5ik$Da+O[m:5|6ey%^qL*elG +WILqQo3Ҽ%};/aݑ!@e憦cjEjx籗Ŵ,a +/oF?JYo7Li?Jx~/Ϥ_?O~xm&"MJK)7.nVkGոC;op̽CPu%^3c]y%=Muٞw +,;З_F7篏x~|Tqpk&R RCuu6L5tm6^=Fm*c(΁|n%V[{+͜kWmn:',k_uGg`idig_6nN/a"8?ѱywP]]Hޅ=\z\ZKWJ/;ՏŤEz#s64⃗ /?x@hY_k$gJ}DZ}Oۛ+l b߀}/"" ؂""jv[Ug害 a>0"$ph|+tw%wp$Np:*+"we%Dk^1B lE+ć~"/$(֟;OŤCtAa!jzF;AK+fY swvH?v +ꩲINDjY~#Uw{nvZϭ%j˗VօIP]"d?j>6lrg+wN\/_<;wБ#|B.zv9)ܴJp*6H{d)Ver|Zsp^2f@L:צ7}f}yg$,VmĭbcXg2G%i K2b +Vqy;ZKblz\SS;XOf-U} +jF4mcx^^ 2+,X;޼TD +S)W#)r@(D7G֏:?M^njq٬f=kԷd2OY9\)DKUrlKr笈W6~t椅=y<!_H2!.@IĪW/jOv/s'=϶m`m( Ng)J}ęw«]q#,<<3]Yy'|Y rSRL~vB"IcI\5>+QP:U+̄~5\ P9RX̘1wrmҽ˟lVW5FY/@M*Mfvf|4cҮKZ÷>Zʘ)Lط>l6y ޕ`Ѵdz`Twt_`N) ڼl>>K\p'v'e=­b?!XxumQSMzr_^9LVerϖBv5=ad]kz)cwSwĬ \%ә/mpsq^SHbXg1z qBc964!la6gqC9!$GiFTs>/c;uz,dR8Z7~ v/ ;=< gDg\Q@}-8o~jִUZG*cX>q{eP4;~Hϓ:AJl4l;$'ć` *QVOz0"爆kj[еY +}yC̚ KϋLŸ10cƓ_'< O*5u>IzE=l}2\ߩVnZ5S>+fN'"<E7ŘYmTߜ"=7oo?AR6/b0sBgPhGT9 Z*C + +h]K=P]9~F'<&8 ţF?/b-D6>>.IAX*K'O c;P Uv1rX5 [ۇM_j^; {Gie<]yv~JxLg'= OWvJc "BR5|qm}T_1 QrzT]$wg$Qj&Ve$Y2V5'PS,W}Q軖=!ޞJ] ,$_4%KwYtӦM..vG~s7X$yxNO!CT1X =X,vܘzF62RNtG9 Bۍ]Zý:Ӻ,SJi8kyK"P_۟\tU_"܃x?}Zȅ{g>fB~tIO>)hhCR8JW6=wr^Q*Dz $ ,OՏ4Lٸ6XU:s*kK}VWV!.wTJ)M\֟YgrATZP +ٴǯLA?@d)}b j{9a1Rϧ|mH&u{7S,-N!dqmœۙҺ/K@p7eŞ͊"9$ gŽg~Ӯjɹlz +4{ 'VN擧W wqJcxD%jU@y<]KnҷҗNgO" tM ?WA zN=]*{!ҹ˃dFUJhjNxGG5v"V$qlųMɳ`Q//du-<~d˓MV畯$lG#d-޵S8;U8nke|{eYLbEѪc˞m~Hωkc9ӫSuNF2ZSHfk,[:vZAo@ BVrNpowg)٨^ȣu(p"ve63f}d{>e͆0͡2tbSH]TС#q+z; ԧ|dcw]~ͥݺv{BFMgT[>tLGjɚjMDUЦn<~Uz4Nϑs2+rWu' Y, ,UT(j6Ƀk#SJe8fM.ר!'YXum3 1tlJdmak-pnVr~4~,37^r/;C͓HR0ISHh9#z*ŵlz7o []LL7ssyDv ]h.wnEeO1vNWr@wZi"|R*%AJGfh|,_!>~F_ou(Nv_tDQhai{fWrgrRy{SX(Tl*'2.&alG\3ޣ^txh)LC_ƺ.^mP4pqkX-o!3P/B09*cjlZGJ_?6܊[κX&\FzXg:˛n46 '?|NrQr \D#3 Ix6o4c1$ 94yx,'_pR@nZ|瀅WT+vn-ܣD6W]}*t~Iry"ŸT̤7yox&Q ϯ`n/0UǾj1d&Zq/VRQPUi=ejc~&[}Fdb.__P*F+2'[hx.Na/F +2q͏xzٽLJ 羬s2,ckʒz+43+m6LlY bbZ{BRm`'gXuƑI7s!C|_J2߯_+ۼG/nu-]U}3y23jfxDmGq_G]$ U +?P\zy + ZO^㓽~Qۼ1CDK?U]ܜ1A::h̰jr -_ ^ZIKTIĵWfOT2:7rA!,IxTdq wٟe7K bp՛@7CW'Xo1%r!L*3P-g-!F/o?ZHIF$!d9Yݫw0BYuT[b:w{㌎VM1&=I^}HPbd0]զt$pG~{~ƥxZ} ?z=z|.vUjz076p+U.k{}Uk?LEh,Pz;?~ +cUxuNzw'PojPs8yggЅqi;**.Tees_:ǓZg>s87>7Z~ʱ`HBQMjgjͧ.P w'(nSVދrwJ?/n+FSy}l(en$. tlx@F)PYf*U.Ys<:_xEv0{@ahOTovm\6vVO@24쩑Y,l/FM< />tGk<$Ŭ|[`tiP}v| +qmjZ(}Ґ)MC1q[ˁy&EXSxO ~˒768'} ף@ YE|m\ŋ[w+FEنqe;k|Qz!'A1#^L1sa47I`] f*#3v# pKsY:f4@ǖ /W"3V)r\dd1=6o3qG_52ZG g%/€COGʁV6}=܉-&/t.or0 :w-.砾W^}On1[=s8;ŗg2LVa7< Ϥ o[@(:Sg`UOVޑdzـQa|̥;13Ɓ;n^u⽪ޮ:z ͫeݾ !'(Qe~l/nPNJE8:|ޑ_($3Ǔƪ%V=`cnVoQˋ{mJmơ`ܼ~ˎOzI=mpJ9K_hrD ;oZ@?|Eu {J0=Z~. s{~c{mM677!<κ :;g.G:~ +VeAL:[/rw" s%؊ Cw$N 5>&z]߄IgzLNE\ptv$-;y:EU]qqܸr+xAe_}=W]>$#~FqXuU)z5W5߄&Y;$DX=?z\ӭ{h$%R_U!*OH8j=e |tϡ{cS{7_K~4?jw;i[۱#oɜht ȐW> +~lqPE<>\!i8uݣ ^aWͿ\ la>7T!Tce}3Jb/$/Y<=JHe)uAԻXGzT{%΅%5Nd$vp)bИ3m.ȣL#zܽF#·Y9៑$\[fk?T+=HVF$OG'1j^@!9<}]J]Wr~6΍2p}š7:[8Hr0DiSkk}/#*{ @~x׾=2 4)hlx7ZLc{pjl)#V',& N7Z||mز\EQ^(y0YW}9>|U3(]-cլoW+)R7WaWm_jV7ՔehH*'B6 V( 'p)O#f:VeWQT}˚`;jvKkZ/Mɔ$5$:zP,,)0EXo$bON)%y}P;ޜ^kq-Gj9#R]oet)$bNej;9]sŸ0Nt$!vXկƪʶuƪ,ڤb@Қ˵-ޘe>|9{i=l݉6~I-zj7Jˎ/tU{;颿Ob,마Z_3R|mĪ67| m{jgigs;܏Yqr齙?DJBZrGl$!yg sٞw]ĵ,iAy=-jI׈z 2kMMu>cdk{_]籆dzD71d߽5'fB9oUn֦Noз'Ŝ@Rcɟ&R= ih+Cu/OԳ[+olMKSB%9vݝK @|n@1 $mocu19>FPnᛞvYi:᜽NG͡7&ǃzPYN/|^vuⶢvvsҸ)u{J[2ns.q%,bLyq*'&7ua0E&aZH()qJYL\G:'$/O߀ZniŧQ=|-׏~YSXv@$oEW@]nNgS8M(i/ JN[k9ckzw`K_kPwI/DҐuq]^GToVTFΧp-HL&T>{~d_G[E-xԲd4\itT nxH}ߊGveNSG(MUIJ2VK|t>Yb9H}v{q56քHS胇h1l؏' +I:$M|z̨\-e& .#@CR.zPf]kp|"$=vkW`%ÍE[0F=[9Z_KUMo+`*G>E9 6 u|9Ч]~0PyP}8ؤiK]G@ţϾw~Gį?#>;[6R&b̈\t><^%$ǰ%:Gkk=е:ߟRM6Zj]g9tt3]-nz(F.@@)5A9ksJq+x9GP U)hU|gBxtR jiU^S?u,=}y?1L; e9Xi} $oU7LVPcQ +@,tM _F-Sms^bUiʸtfk GxH(yRFOgeʼn6׶s(e._o3@9s +@BAy]V/ KW<ܨ'uFȅЂ}MiR͠~>rA^3y{a=ݫw}溷> @RieEڊUݚ`ҬxSGKD}1@ێWzak4ORzqꞼҥR0y-~žޓw3YK}4@cǞi;hT>j?az0 Ue_GߡॱM'ļq֠\(2.%[so'7^U}s=]E>}:'vj5 ɣ$~Qŗ_ 6d/Y)֏z\U ae<@؆7c^M\[%3B:Pvm L}E-=<|ee,zuXy}4.e!VcXr}-UO6G= M7^~fR֚߫+sXRp7*#E8;H u +c(3 eQ17TD,YZV={ZU_^[/DA9hѴݹuUx#sPazcE+Vt`as jFiiI%#>Ayw8o9&5W%[dm( +ׇVqW\BRwҹtEO^r#X\Z<{bf;bWθ=lQ+JYs>=ΛGV?\5{XuZ zˉ{%mZpIDyJY} V7BMkRCl!3hIV*q4Eenm<b }{E)#PmJp@-v;(4OBs Q +=l/WǮ-#vVe:u3T.}טWb!?K-DN N*?oI2-"F;DQP`jSJIl? +׹#f^E* M5:?7眾 +6#pQϖ%Ir["D|qysx5?U̎{Epǒ_TWT:l,էW5i_~iLJL;\vwHvJNtYz|Bݥgҥe;v/(&tэ%[+R}^KCtsP;BZƟ2,U&.ݭz_t&n\sz _FIg5Oh ;P 腏@eq.vA4W=s轏f45֧vI) ++[ F)m۴ف>!a&,o8 gn[ć}*\Ū=Vڡ"X˥repl8OoiVe JNwth_i@ƥLb3xȫ5\ +ŮaGUfH*XZxP=%tM m蚸a Ǫh5V%keas3U. =>cdgnAkNυ+ MqlY i}wyl :ylrOdoH\/ LLݸZ0@EKUDuvs@yPXP/a/RvZ g_;N\-@yJ2%&ZsO 7ގI'Lawy}@% R!zuj?|n2L@"qE"Y"+S^ni.(twe$"4<|*Vޘ^G3`uza?_qQ?(0%i@b@Bql V4ϭK;lE@lc%h3nя.=%ڽՈ [3m +pVфQYGfGl(ֶ5mĞ|T!z`P_EG n}@׻ݾw>E0:`]pۼJǟOć _?5+^ jC\lO*Q$9#M~}dz(ic S:0X Az՞|R,uM#v= 銷e*Iv rREKc"{H9v+5!_PG7VA0WQ4#̙dbo|&^-jxvoM^2yuۃB[}Pi~nrsA߀C>"QU]^wk^wZ | p{u<|]ϚTZܰMGmy Z/NTc5oުWfVdk䃜 a(zP\;([B]Pz&4V@qr_g|:aiyxu EluX7<)Ou|#b \bkTe~%T(*U-5_ϫ=+- ZTЅpuU'߰؇8Z^6{72\nx)'$Y,Eת{Uu2\A"҃LРoDWTF|F͂CwtÖ$$CG:Lzt,ay[ּdh(:^ϣ(mzPi)V;[h Yz JF7VEq%_\u(tJ#gwG0fчGAQ<(Z^e!7d]j ;x"7?Ґ;+輋˦(?Tk1$WZ^8! Gp`uO9`7`\(r6Y^7Hp!sՀ"Im +iʕ@*VuǪn8+vZ9/x~ydCa{ʵkv<"MKi`>{o?ysn&uߒOY?zóTXƞ}/O=ycr'T@ ߫MnӞ5백\ruW'|l_~ $bIet%r ++4J&ξ#'aiJa)x^s |27p9>cMTU#Ž־EQAF[@B rרT? Fdƌ6T~ݘ NC;ն}J*>;ɗ{«Vl+Eˆէ-`Vd.v>;zmlKy*ױ;)y3k&k094=s3", :}G(ؕ8ɃOMtږf%]/Ku}dqƄr6Q4w`z$.A54ȼ53{N>, +endstream endobj 25 0 obj <>stream +^JJcߒeǃ>A +OK:mFrۺ%ulLOVX1\J\\kMWlrT+R4jM0Ld:#=o>^8XlZJbݷ[\53Z`>DuN2|g +4{Jen庭^-Lޣz b܀!H\o<<I +arvna? ]rT@b} ;2qKujW^v<iWٌ?8fY&6g8kcPΑ׉Pj]S4q>m&Rc +$x/}?qsFVSTZW8!W)bwԭ`d.[ŕ5{Dgz{X(;G>iax'OъsZN eFd(ʈ0bV(BՇ97&(z¡+a`d_EϳJEwF3Aas{5ltNߡˉҺnwl3='.Ը^aG^e [>_{ӽ1b#ycvC=&vdm_~$@>7"/2Q&'kfbCz-̯`i'Wvt)~ᇗAn*wd>ͨֈ֎Ԭk^+S5b*=vT$ނHT}8X:şN筩^V׋k3{T +MϞa:`@rċ7{ {h ltݍwވ +yߖm^?:L;;3@(ߋί~Q8J:; o-di?Q5/U+O5aƢ5p+dTkta::ݞ :`q>D}~e.$k BE?Oh5= ~:;T.ZlΨX[]PεW&_=`^,U3VdZ6ى;ۋ(~w9}7zGe- fH1ֵ|g7Jm*~"VYܧ䚸O_|&fw9M;r.tX?0NU['R6c 5 mD,r,Rvizk,U7ʻӠ=|^!E$? +r?˻#xhƷ oxpXBඵ&@s%+Y0:J'HWo,+5e? w{Υ"(@z@@ +o=om::y5/֟SLn0}sWҜ\P}[yI- TC(vWbEz;nH h{e;*UP5U\e|^_ ?cbYJA~kakJɰH#J5[X+,(!bDkk59fbķ8&nt!ܰܶJ3 pLgljCLֻF  r/k~mkz@/@(h5 -T$c>[Ƹ\oX?;K+ϰmv1losĥXnae`ii@Q z"a;밽` ,w,ɖM,J}[h*č6Gtm6\ Wǎ.|g@]Xcno< Tӳp! lG}DP;{Oν=~%B; &o"kZv0N z2[Li{dL X(ՙ&A H7A>*VoDw1185'sE׆|*e^$xi{5gxi8#~#ԃw{1njH|؇u&2W}+Gp7|5Իܸ#JK@brm4Y_Š3pׯv}RW`ȥ$=k:ߧ*ԺWi3o@/nϥg7[;f13VX}:)2 ?PI`7_F/KOeg*e-n6I8Bp4Axz:rp_W#5.ձ&ͬj}U*PVTWA:#L#j[ђ&N^*AckjZC>|N-mN*B/gErpuXX`WPWt ɪ?K*,L|+qKѓ|;):r2{" НnNjtumgg>zG+VbME'f4x5-ߥJN +0|שU du@jkwX^9lJ{|d,F[:]a[~*8#| ;6I^܆ "7`Ý؝;ǢI|Xԝ;/+/ml9ߑ^WX +sZx 16&5[ݚkJv1m|~G^d;>GYGu:;^z&B$L_h)AπR- yZ`i7yxxe"KoF-koQ0O'a,WA4^*}pC.i32WMZZ,r},MK%+vֻ|V*{";nw+3=|)FlYi-*Z%#\*ڷk,aRɥ7+j?wL5/MLN(qS`H>9z N plss_KMDa_y{4^n@vdEZM^*-iUϦBWnt1nnűXNq~H)!wԿc +OX:_J2Lu7_=r.~1Ùuu!Mٿ-ڥl)a^2[ix-'pH. Ѯ1Dku% sgQzo`(.9ۓ^NWyTvwqКZ0b8R̩STFN~4Iͯu em ɴOXD>pR1G 87oPA۴Íx?*][.µ~[6Rg.(A5?M5M{ b injԎlr+Z9dac\uP԰ +J9Sew6uej_嫦OJ=/S  g3\Hݖ__¨rhw86{[kDy8z?O|a-b%3_Bt8<Ʈy 7l6aqQ+N0U*Pq͸wE $ {v2?#s66fZ +hdXe@ ߠ(+QΟS6>*WfulyoD~4ȉ/ǩe5xB^xh Mp{dd.Cm ]GKvuMY"'}_$4(5\׃hڝ< )=+m~2_Z1B›ۊ/_tɩ$Uqnicax(^Aj*./ӺSoD-%[g9"J.H;|:Gfvnf蚱:b"Y+ +iNMRmyMgCyrޜ r0UBAQL敬:ΰnuۣ(J'뤘Nt ׹<2`nfظ>m[W=/M5ZWҔU&Ao.pfxvr|MΫ' J kH:SڻVnŽ#RL8:eLjӽAJ}y}eJwC2yv)ݛ$֮hMU,-j3O\gҫZ )*{zmƽмlZSVfμ!Fv™? +®6 $E06,衶>*oj\}|Q9R{J_ԙ!݁BUET5bGRH+@ݮڪ})dM1bV6ћXuZ4XL +su5DZ:ҕDWƺR*)*C-ѳNjrٰ(5[ +o^DDk+^WqT\۵ʠf-._8XpI`!pMa6z yF)WKRaF_5$=bs{ա#j;b[0f`䒽Q}FĮ +qei +p`SWTJSP'+{P P,WX oM7i3:Qj G`•UA03X%@KSMoc`*-U{P/glՠTѻ@Qo7 sX}*ؠphf=cfRrğvlGY\_/QXjs8.cŔ\O<}k +}^T9crr6p6@<^:?6/=6ʼyrS?g*{җ2N ;H mv>MdcWԯh >W?B C@`% 7}+R_ē[9wnbH8;.vhBNCu{)㯧7FMu`5Ow~4\6m>~ VSlX Ze< /j;}z^|P4Yt/M>7DI{W=pwLo?~i!yCf)Ӫ,VW6fXAHλ[Ӳr9 {>q\ +=rl&mݡRۉa=ug?޴MũמXZXcp6XzTOŘQZIdPkqR%Mu$W8yv Jo2.%cV{U9v Z[/>_đ ̄|2(sT_f<aPht͘/ft6_vSj_}[%^nk|4=LYCꎮ6:q٬FCM(QtrΝ1:>;=l&t?}7`/i/T+^RES=MXBsa=)؟v֨UQڼ=5F+_F|KgRT*-p!fg.AWhwk;Y@2 +i|qP#ĊmNmy/n6&2B:ߣiZc2tT +\[)/}&&}|ȟ6N a&QOBh?K ćv+I$e=/׆p]Ni'Bv1&2YG:3;*"{\oXIt3cp҅1Sz?ǩO=3f*4?H |G(Jm[@ng(=i:26䬱Iގ%~y['WW%4Zxe:;'&ԭ['#qx/DlR?C\IL.%za+4s@>AAVkZo}}2ѣhEw6ڮWי-k~ `v~O}[H)8~nl'2>$G_Y)~B4s>\`J=H%\{!J23im5|:&b}H:}֭]`#˟]nY~ ׸g0q<2uItUGUAx \2"'|GձUc_P>\`;_|65SN򑽼ǫ.ʬ̭.UQ'd_Ϟ&tOXߑZbæE90)^x.%\J"cn`Nފ\( '?|&g|Mo"*҂eڼP"-eAiw7ۍ Q+c&`r6Sni%'$T?둠ߋ*_= (T 3}%?rGʼnXeHxFy'c#m57b!ZxӍbwto/p5Ɏ0%5c@|^LmYү|Y҂H-juyŊ΁L#ξ5v]߹gl|]j?ٜNӚwwH{Α>jI*\v,k'mлZ6 >\6CWCwm@]N= +Uklk7Z%4Q|%m7|I8NXTibF- 9kpO: |-+`@|#2n;5]6=/kvsMk~Vì(7xLxFS9=8~ܭk?ZJNO,[1^6l1ֆvc=_ fgߗsune$nWO+7l2kȱ5ᑹң;pݸ[WB K<7>Ki؊Īw6;ޚf{4m]G|+]mNW\610p휱NTYvG_Zqħd5(Խ%BSJWkE4dhyB좻5e?]Ǎk{6!UVAnӏ46n5nѷqk=oҍ[1,7rwf\[%jEMwÆ9fYꟈ|S~'EjS*ȝ-]0~[Qv߼J٠YPawZ{Gm] _v&TbgY#2ByڴdKL2ʰ Ry1*bkLk+ $[+ۖjߚRz ,m$I'^U{JW37!_q}2h +&6/4˖kAJՉ Nu R$F_YxhC_-ۈFg w~>mfK2 LZ fmſ$JKR +(S:,cIꪯR{JY,Ndo~^J"c_ h .qU`DΔѬ}ZkU@frB_j+'~ [C;[:;x^`sjwJ~!|<2CrjʉJ]{}(kچc$Pkz|Q(vRb !>oğ{fEG d ıBB \5F<KJ_:EB"/:5onX$)[丗rL9{ 3T:_C:˃Y4f˳W_Oor+@J ʿ|-++j,͙N5C,k\S9-rTrS #o@ /hRwك'1"Oʬl/*c8`70Z=O$_\HivڷblObn>#K}IW>U_֑Qy$^JPWܝ24C[Q,9!\n;>~_YB49rt=T?k.˻O}T=Ҹqyt۽:E_QJVP^ÂĮ {2 q\IdzA,XWuZT尦;&8ȏv^YmzCFU]lm8?33;)%6 Io`פܽ!ZGzK +"btLһqIH=F۷׃LI/xӡ<^߆cV_J I.&8@E9J!(_.JS<;vV]@kՑook#=mov; +A=8?T':٬f9ByU._y{_@sV WLIʘ/,܇YeHr ?S{0 K2wVY<|VF}"B\ +OH +ۨ4`$@S/2{ޠvUr6P9mArȠ\'U ۏ1HQ.v`Ӭn{G6n(DNW>~m,eTY L{9}kfet XWKǴ%H g,7+t'[xaPKs@R[NpFģ],+>ZV~p v2t:FvR q+@reME|ةz`Q`,,v, 3:ݯRHP>gctRc=mćZ +#|xȣ}siW2kvMs6F-f6EHdՑMUft3O\*e _P1xɂ:yuȟPRջxk}aՏ}z y-Fe셝{՚βB[Cc-EJ]?nCfQ{RA{J/L#W;ϻ6+mf^m9=fgA` 9׵^G4?ZxR"9.#pnW)R/Db+@ +d>ad2wL.>Qב{ՆS|c`Hh6bw*KkW[}ӏʈCiޣ#T kQf ]د??NM ҥkI[^'{z}g3텝abs}eZtWTI$(ϥdyNƙ$nC ?:*.%#B|#(?F׾z狚;Bb㯠?.Z b&1]Օ2ueci}d&*IM Ϙbe-Fs?JHp~N%M`;A[urz ^_>lTۯ8"*e6Ei[uʢU/,ýd^L DKϔ+\rYeoKrk' %%o6Em~nOq݋[.F7{{{)޹nT>deqw>2ǢaiB;j|r6i}uYЫe4'l2F}-qOzwRyCQhax{?;~:4Oul6Saia]DCCʹSK_z㛜Wւ0E·EsUs/Sޒ2i/i_|1i+༄iDޥԄHIZG(8#Y1߯M?)&ԫPǕbR8]K#1*ɴ0X)X{+VC325.xl)U_^_qOvOvT8[Ԅ*Gmt{6 wv%}#^UB.ԻV;VavèԹ&w'u? HBwr1֍O"Gw5>K8ɕӗ6V'-a3!Z$6O"9/f1 5{Ws{? gЙWL,/谮,K 5u2JxXn`}f@fJѝLQ_գ2ωN-|CpZRg|lN,h#8 DߘWa_\}1m'U݁9`CeiB2ݙwG\^Z$kh1[􊾴)w42ɶJXY|OƵՈSԘW\9W;*㯯SmΜ4(|%#_!K8!8(͈Ռ[a@v(khgϞtj(wxEۇkzo4|m5J^Y ʅON??Y|[N/{/'RC'[W =n> m3FC%ܜFܹzܼ@3G?a*@303loڼqO+|έwߧe&< n5O ɋ޲"JSc0r3`ҏ9sEi:`?Z`Vo/Ua2:g_)3wȚhɆ'jee&LaȾ0![oS@(ºL?xX5HS!V~댛y燌>܍chāBpdx1wZL|vKX[4V,0`ƽAs/':I LS)qPB(Ƴ0{wH'h-g' /YJ:K1[j۬n~W3Ɗ?QjeeJӛ ؠwumD: Ϊ4,7k:]| 2H%qਆUnd}kAC[:jIϒgX2,4&`ƾҪ؂l~uU z㽊Nn-#Ar.~v"A{[|k/JpҁnxCq0#lݗ=77V|MdMf1xs].ل#5fBi˙h,쓅H5Hf{ϗb/4"hrgg5HW|wʹ~,3`0z +"kDq3Z|;RV_5̪.lQ=MRryԷ#FႫ D22Dl&*b_jx&إ|dڤC)_1=oQ}vZʽE3FDXf٤kE!rs @\o H/$%5MP/zwͯw'B2߮ODݢrˮz6Li/!TZGr[72:.K'm֊?zKHQ9Ih ֍Kځ۹.ݫ({>jCZl8QilI?f3BVs9O%D}$pkx 0KG(.)_kM@ZIVnPj۳YN< d^a#xj@ZA[@VcB;¼ +>+1"y3oݙ'6GGopcW%x6?e평TH[P,OLa|Cx^wp0}Om:PCAӮGXgY8rK +w*zbO34dN/;Vm*#tKw ^S;P{BKNgO'1w'N}WuqI5ebfRCň)$'sx2r`nݕQD>4r;}g|'68!fοp6uNzōiE37Z~Y-`ʉۤ˫kn_#,JytYaYϦјzs*33/ZK %o_Y+T=ߞ^܉r>/C:(:&Fǵy> D.K|ax*"6[SJVw[_PI~Kxln{q't]'޳^t8yA}߭6zJgi(䥧*!,Z. G&I(>(j\ycw8.HBܠ>=c2.ڪڂtwhwI(?ٖKA㪽E9S䖹^ҞȖ3]-Fˉ[Ӏ7M(Cs>ph ÆNAEs/2fYiu wrxv63,?q{fxtَzռq9#B piE{|9[N]Gi8h{c+rJ~ޠ$ZtXd|..=έvl˭+-)VuBݺELDW+ -Y9`B۔ϱ15m +? 9p#5(ls=JWVu\tK/yg֮5;V}s4޼zrYs/RM_?kzu*n%Nt> 9>ۊ +2'p[SQ"! C%zg۷[ԛ:ސtJg-߮J%7~s9L#7];Z)Ң9]_U]Nrz BQH׃ a1vLWE^4ѿBKrUbNOza|k)O#pXpѺ6$Y\eccN~mt +85+EMl俰ﮟ@2"qCV5|ZR)EGg.q:oVN34RE> +:ky]#b-C}k,]k |\? 4%(C@1`<w3 p3r-S@m7\)'`l9=־'P>xxX6H +hc?/'5ƉD/HQe'> WY(}&6K0h;@'Vs0z &[  ;ImgH3‘OHUq7@H'u>04@@NJޒ}7 +@۲@^;lbap2?WCq_)_H^|HDA^ E8BH'=wB3:ƨ@k;ĴpcEyKsa;ȣ=YׇC9BCBBi +HVHt @zpIyU/HXdhǍ's,U}]W5tU'`". l#} YŒB^O?T1_XNtD"|u`RP`h#5yQzsV2;k}g8ϦǏ'Ïlzw0f3vZ0/~.3Fϲo)ΧS~d{F#`^e{Hxarb>MAh#jOkCU +eno`{4uJGԝs?dnN6GY_,':g`&4[M< +Oݔ7/ 9-!c.:mv':cEsSu( +w/ϝטlfewZGX6j HI~c!qTV'{>|>\((t]A)u7ݜ.6U5Pz,eŊ-{g=h1V3'堌L=9B2.eo4mPx_1T?G69w&sZ_;"EbZ8hcén]4`Q,#ugNհG։H2=LPЙkRߋ$:9㟽J][гA[T 3֐ { :zTAKk\c},.v<#LPz2-5n{,SL ԉ<%vVz)Ez)'rVIh!zRgM9R;X1]awbXݻk2,iUi%B\%WR9cզyWj17NcJkL^:{\ͼO?,7O`.Uⷘkږ]^9^~e4mVnL ֡g,LݲwNsC^U1x$7˺{Jvp~>، kR!!G$ZK 8(CNyN_ؚrki3߯ګ))`5ǝΕ\FڋH + O|'m_Tf`tpI&GPG~=g7,Ռ찔a)@'e\r?Vg|nח4qb:YdՃyoBq5_r}E9_' <éDNUkT a8Z NfKM %?h1?h"ux5wѰAbǨ*_rmFl2*|櫃 ,y^Jg( GIiNcaFoZ-0F ʣrۡ76_m}˶ |ΰ'\jne1[wX#矧| p6h;0{`ږf-:0_9mjٞ2 u.vĊ3FM';S}xnb̂XG%QOP9wD ##S힞T#lvMm9/%7dwULV}ڶ5dg~ +kW +/)wO,N&nG~nv +YNux79n 8?*NMWErΥb-.^_īu5;գ|UsOY),qGQT$\xyjABB?ܼ K^I$v;7VݣȝPLklكwo:_rw)ʗ\~Ԁ: +:WK>#Ci3G㓇gi쵉RNJI f׿NLTQM,n/ZMq66tޮC^t·,Ǘbm,z0}7y|x6A]G#¦}=榌K h@xaݯ!ڵ9@VmUGChd,eM@vd)&x ; .  AaM~1X@hcZRV =PS\ȺD*n(. N <@iH?O3*LJtd_WN0pAv/]ݾ jCd7C)iS͔s̃kOר.qҖS~G?RqP0Mܳ +<;"Ut1J-$P!a ›Ӏ%E9_ zy}!r U#aS,t~"D +itX8U# pHV #,Sv!~kn̈́;檑Jcth_ǹw%En*5%4kl a i 7Hb< msp3MbLIF嵊~xJ ?MPE{oX_|vϷ~ ?H*ft+ 6@9pUf=SLG6fW)|B~ľ ȫQ{;ppR;t,v^ptWrŸi$0iw0< Qnq. COJnGnwHU )b㽚yc ޵\ٴ>B==nLԟcҬmeW'wGsdZUC4l"H?(J:~QMd,/Ckz9m*i .s!G[:]Ww3<-jy'dzy;kf4A1/4CiWwvm=5+ +oSE2ͷ3٠,vsԲYJ|Ue+ _iXݢ8B WqktQB-npzX3JHw͖#Y@Vfpip{7Nnή]]@_nZu@: %,ui./{=qƀԀJ y$22sozU-m|nšo1ilP4V34ڣsb[,{Q7s (֣R>?EJ!|'Bz]4cr.X1N-C1RaaDfb*>8m/Z)1+/1U]ބ3oϪfAm,Ll,,3Xd^n0l4 )Imyɲ,X|)rm+ @0wruT:EJzpv34uVk^;NZm\ԯ+;|/*pNu|~*$=7~:ǁϏ_V!Q4"h,{W̜BWZ +Rl$=l"ꣻ@졈'G7NS^ykl& ' X,.`NO/$SV<ѾU/eDTĢN->ۍЇ, FMItګ62"_C\Z,WC^eSҒMOȖr>?/YߩИ̬,&rNKXR交VZBOE(ҒJ1/5u,^y+L^/X]/_}[|֍ͼm@#4_೥-+۟8r8~gnOfzpTYYgQt<R?%nxxƼNp-xV1|q:]5br_}tr7>|ؙyMu o{˱K$5)6<3"\90UNDvJmט,F_ƞQn{y !˰#~KTv{z B\;?/28\ieD#Kџߗ.b Qƹg0 +ʹV-_MEĿ8=7rW{}w?kZׄvDxɿp]~BV2ϛ6⻞|;]C3i W㸃jػ }>b *PJofe +pzCtlә|tBcZޓ^j _n>čVr敃 nlPZgQ6?܂DF1lݲ^wM &1fbUK dXRH* udV#n~Op ?*' #4.{?ho̪oL-,S;XOc\"-(ld'  k6 + +6Yt<4A䓻@'p_ dd`y TbGᣓ̣B:\^e^%]*10E͵Z>h34]< x@@v%/IKdR'( ۋ ۯlPnu'p9xsֳG8j9OGSc; {G zӒ*};uwӰtF:@=eʔT$zILq1vʛiZ7tLjA*8W%u} +(E-< -j0j_ {ݨA Ms(x[n/5`FmT~%!Ud"%z(I{֍5 /ŧ +aLzP884ҤhSꕻ˥ɗb??o$oz'׉NVPD~ n7.MYan3֮ P7},;>܎dΣgkwz0noPuNVNHDe`h_l{T,xM@`v˷Ӣؼbw-E|g ޣ/Z+ڹ]9٭\H0}VrڝOx`ɇ?M &U2&"GM,~Zx +۹q\nj7:7OɨN_e즓Ei2#o&̈́ d]VVᎽ\(+`2dO/;$ReYɣ6vyvHO)!["5CD2}>+G c?U?3ܶŵw=g~EMԶ5U@^:az1bc͍*qipz%E 5E  [X;ѻjb}65pYTMs16'i_{C]]PgZbK]yV(ӓT".;5dV}-澸Xg/{))J)@@-0ȫ&Itf* {QޭkUѝ}Ev<\-(_L8[{r5;g ]^_Z4szG]gd*VM72 3/˙tgU6`ht$9+@DgZyav>rg_Nm;zZłJȭv㵸qz6cCpPӓ' 'Xc- EvvUՂ#qF(BtŠyWբJ I&RP ,օb*Q;XsvY.t k#SJ0uKA5Pó&3]Zpy0y6|Et2.Vkk!+|Z\wΎ%n ߚ)!u>f*>_nh-#>] lCjs҅MWGh=a?V-*&.\^]W_KR{G$&Yśq[(rf'1ưF_O!:\OEAiEfOfZ:q;嗏ԓpޮLj!Dڜs;d%^=~ ^j>*Z`-oe Cė͕7(RvCwҽLW/ ݈j˽;;Pk +ጵz^f/]W&|9]^-9TZ± }x8[594Nl+A' P IxЉM-ojUMQ42-65#/6Ufe/[ȷ4FM޺/?q)8ּ&QJ-qaUeh3tG>#]O_; .H͊74V%E/|"ʽ\kGގeX=mp>TʛeemsiHb>߶T\$.m\*ڱbf]6h?*v K*Y"ɻTNQWpFЫo=/:ۦ9[imd|(wow]:71s:|k;qVn$"6Nf, : ;dWb^/$g'8w?Vpˮ =:N*6t3[×yEo)bMX/uץ4sG!bhEjS\ԩs(-\ܦⲎno9?̠NA)Ń9%(R!۷K aVvi˥f.;˓ +PK_-2,23%ltjlBZF]w*% +YpYEPPPdPQpoUɓ "c=Rp} q}q}ec4q}X:p՛5̝-mޚOBY6gzR*~.8^9׆[檳cUPQ'\N[AfQrJ}@$Jts۬Ѝ)Ef*\/Necu1UӯUCQ:aXC.^ S]OEf>paE[΄%~W lgTe}Jv`(e7{Q{ yZ@y sp9,?xojzZp83E[<{vyuϔauLv_̨y tҍW|u$$KQ:l]C0ShjMlz|ؿ "FޕٕڕqmO,_/@֎M\ }̧&`I\ZP\?꺯  +PՙAمܞ:vGѽQU))X]e0?V +E[yf[򵺛WMԉ5h{V}oQ_Dfz⅖\w+`A5HپCh4{|S^g'! AZ`#MS7%̂OP 굫Okkx֤ ]Xk#Gݠ#κm;gxE0V ctB$;$:1jowּ]7n\hFݬs׬{q*Ɣ+)FVT>'aEUNNW#ަzÑ?w:9l;k{}6U<5sj\7v\}fumk T]Jtio0YXl;QʹpAI|tMNt)^&֡)i撶r݇עUÊ\@!v?e+%e ens +_)[W$&c$~C6üumzd +ˬ^g I\RH: Vf/5 +UA'V5t+gx*^?giLŁKEi8n/'/פ{8F5k5,FhE>+[MNs}jK8c冈!zͱK @V7~7o}`ʢroT\ +/ZJh'䥨AOw9mR֩HZ|S&An^ҷ}5$9fPH3i*7.5kxguL`F +z#ҡJ2ƛpR S}޵\=?/[1])'ow:\&AtjPIr2pHw'<*'yRTw?W;B{L$In +\ ++'Ÿ/d +{ ʎ~9gP뭰d^?px|wriI~_& + _($ RouB }>Ii./q݂C1<GG7`a!̱[o3cVݷv~(^Q2 1Um~4rI $ɡde/ex5 ƈfs?a`vsn?ջS;SBnnE@&]#"\.LFqV[*CLjwu=ګS}\t鹥ÿ!6YbH<-J-/oTL~a97,׿\<[:SxO=xW;Mv}?Am`CjalUx{v&=->uߵ4᠜l%dgr>F䝻; EOƑ,8c*-S`Fe_/qdwk&q[[m<жZDf>Mk?L"gt>UNJ>cַ}8 Czݽ;s*(ܘFWlОT\VZ6N -B+X A~w +F3m&*X5VH?')R[ _KJ~7rvhڥ5Ͻ.S:7l_ua F8˵:ۖ4ybscRlVfrܴ ܓ&>.,4JCcI{ӍU۾m]}^ a|ܪUvm8]/bO8ܚ.Z6ij `VDb)|X*MY5K_Czl.~VjW +朿{rmz3:959s۬ 8l #71;|<͸t09Ucԭ. _QYjDH"Nf3]vam$r`ig l }^hrфX5r@bފ |8!3Ky(0'>|]G\ d*ǩ,i~JiCooҽI"w-ݸlnt߇y_*ڬoz,#ʦwWy㻤FBi؎-uӕf6"=yWq51Θc:-e?%)^a%pѦv+Ykz[݌r֑'0lmR[#:+_?CA2}7T=-ϮIȉ%2#_00BJ0IRj=>&.A?X_ Q~!rm~c\VE}DnԜ!RZݟFza4y\q"\a} eQSO6;6CR}mj\)l +^N6GkY}$FT'$4E$1K wGyY#|: l"&CK@/G{ȮCd;=\7>r2v_ղމf+ώ#I|;5ʐ uYبKr-AiZDvܲbX0qy7cbJv')`ekm)ۣxn\Qt.cf={7'VUUK,3LWB5o?4.ΝgC LV1O8Z6 {5rR૕zOKh&jpQ+nF\`_YEsvf#WUBsbڔoх8ygSG.j[] v?(@;=Ծ]nׄ);E'lW}1[T/ ْ,8u짳sd,2 ^]A߼U.~A02*7F/+uZl]jC5A@5ғ{;8~7{M,ZtUm gRe +x߲&]]~ ԰Rbҹ~lY79"ͩiIÝ@\Qv@to uwb_ҷ}qUn{?lC $}I2o̔Z]]n+9x1/%ʧgCu0dSl6?FH#g=H!dO=xbf bd`10h11|bƉp"%oMl$oա2J +|ͪGT +>pAFS\h/흷`ix):G5p!66foW^z{97*áx:|}WrHDLqeA!@jz{X,{zL§=Rڽ =M 7d80T2r!elyF 28ŽɕQ̃")+b#YG=r#z:9BCq֕<<  W^ (\P86V} ~ճkmIt%k鮁-83&%BK@zc}+Z>,!Cѽձ 8oλ;uV$j%Y&? k[+޶ceFvpsvڲp90Y E(6Vޱ~xgP`>tQY*Edw5\+k+Nk|rf H-  8=y'%l:dxi\<%fWJS V6@V[zRk\rR y@9ڗvZ/3->_0IQjb 3r·G?PPf!ł +RU6A +P8K_}>~⒟u-zT&#lr$qjfueӪ8ʗwS:j;EiG Ã{iWP]pq)r^tR4N2oqVZ,{gj-0Ly>{Ig +'gkg\RC!A$NgCZ)D7ENC"岏[(z3.{NTy@IV~1ڟ _oPsq?1.>^[+݆n&tQku!dMs$fiP\x Mz >]Ռ:-yy>Nv+X).'ǰϖJȝh`g +\=_4Wsɗ-VY8,4@6 ݒϤYY:y^+Pу58 ; B3d Y qm1!:ʦZy_dh}[_ͻ|_;eɹԁV&dY^4F}' *ϫ-+.*]O:7|?6~tsQtSVٻ.Wz7fؽsٳ' rV[6ȩnz/X֭50{ +:YT?yFyMHo7 F]A3{0y>*-0?II ~ Tվj_5_ҽܒ"LQ;\˝&}zúG&vY~xw_ѽvc6޼E]5G\)bIfA|dԳ*ǬV䫷*HrJiO{.2oMrln X0G.子w2_Ms):w^ +r~2Y v8X58Hq8^f@nh=UeASݚn^ܴr_RwIStV+MATGo}TĢod hy|w'Ľ{6!x2>7hf.AX.ĄfgMB{Oo=/~cQ4vnLN-;9aϮ+rڗvCmm##TW‰o?QYt [wNҎt\J}OEA*5n+[:>c/SoѪ_u=9zc !EV}HZx;|J,}nӷYd6z-;Cσ%80 *#x~éܜ!~^!N>(6ؓm2+l|ѻjxcL7]Yf7 I˶ИХnw\|0ivLXXpPSܱu;16[r=KWq_-9P# ٟvQ~銽sf{mG{_?T݇f+L_RX+幁$FԢl_F*6^F:5 _ )Ԩ_ :z/{ǒB-xAiLϡ4n PPjh3P*H[/ (_-wS׭:=5]G27;p l"0j. k.PmIX%_DOsU<`t(P&!_~^XRt_o>?a/շWye{)(^]mZcsP8-<0?y +%i4:Vnsroí^H ?[]7`ycİ5pX,5N[˛_%f?妖sI Ң{vd@$b}BE,gWW}oQ]:n'"ޫ;J!0 5;O,gg/Nufu_~-1hjuݔdEqSt uj6nqj)XhyY{|Ȥjɮv۷ CzhqrgEv6Hm`OoZ.xl ɤUzV}lN@k:k|tcq+Oh\ ^n(Zu`0T}!JlWϋr4۹hZ !8f`C0~~mUէ7U8֢4 '}"Vqr>w{t(iVb`[ ԯڤ.}ޞ5yyh=:՞?`<@"+WVeU3SiX^Ϙ7:?%s s_^[gl|D>@_~~*9oX#TοDi˥,_ġNKNjGj(B}_q~Q{˨?/W;XO_Ԛ[Jq7c)Zvl|C:Nf]3q nΒ@ +o%%ޓJSm Ѻ]l,h:MT=12ZJDr7@O@;hbh@E^55phe@h+XxЋZ;k |GfUnn+)(¥Wf#ݵV5 C$ŤRb [  %eH$@k y6HK9_)C5Y;vܿ}>QhUu`u[U[P@Sϰؘ~~7e ~s+L)RvʺɟmL)7>eT-@ PK? +oR/Sp/VnNiOE8'y.NFhaJ(lj).p1t8i EIRޝ8tI޼ ur|aMxJ}C5i0 uF( >şS>S88¦qKG(IYS`lA#AYzoү=3:<~!]|QSg~] \=}Z΃vYT +,eivsBp~3]dk_ůOz)rMN4O9; eQ "udtuN̿hK`l&}i`U7XG8%:ux)ft~N4] \Aa_ ά1Oݿ vz~[.ѿeY-sk;OwOv%nyնI.='< xta0&3V?n})\rttYjsfejҸY G'q <yʹz_G! Cw/$'|$wo)g{V-kD{hD wpvճCW'EO4qB:]Wi\8FujN{ΥS͖4rZb* yzbzyvܚ]mr~YnlK 3Y/ pJ+1 ;}_a  zck_$4;3 +;Wog>hNy*uvT`bj}wրuf:H]JH#̳'Wc$^6 +WF~,5X-[ўI^nmUX}Ŀ5Ƨgri" +̝kg]zX6mF_s'%QujRPG(]αePmڪTԄ**u l#MS@vCcλjC{GEI%.БN' V"6ݬx0:Om +d3x;F4b *ѧsvng +xUS1˧W Mftl6?$ _qE4t4 0]*}́6n6c9[2tzFX["TRg0=p^vyR3}N<^têYAaPk$hI0YU֜XƇS=9hwY6~u"ְ"1]Wʶf1_CVG5nҐ +gЋqJG)Ah7U=x&ؐ$h-PP%M̷꫌ӤIE^_xM*؞넲arzf/Tkf8B7zQnr/UnO +lTkQq,1,1q]>ļVҴx=\P,ZeGH[O,~(L9rl^>i3M2xmpR=nLȽJ,G1ioܿMQ16f" & »K&;>Fm8Xb4~$y%4}?7<|3k˯VĠ,% +%M?zjOz_̤dOQcOBq7 UصP|u.s۱3aΤg7r> eGjQK9MXY2ԌOC`sm<3z7"#eO)jvaS9SKnJCDו~CX,8:YwOu{> 7]bbsO-$$Ug195+E}/deUȩA>JX,+ W`Ij;x9,5ܵGw<j_1?1X?͠<ܕn}~*=1/j3_sɪxdVpmp Kx)x(_Pw9]ϗ`6Xb\uhbοuiQ]}L;M]*F#'b26M%])~-G ;82kx/#تwb{ U#)4hҽMɒ] gSrW-ryW>P`pzu`NMdQe +; +7xCGo#~2ct>},Fv+vilDGőZIBm\\ɰٓݖ Ö ަ-{bƺRLsȢ8,z8F@/ouӺhg $>^kG~~] ễY_ipB%7z +}Gz;ɭmέZZtVYnn ~ eSFK4mw/-.\7QZqx=rtn \R&Cvym0'{k/Z@Ϸ0ȠfT= T\͎S[ߚ6kŎ%x^ckjW`_ +iѱ8QUfʏOsiciڢ|HV yB=J[sU%n>5 bV3SPelQzˬ^^sy(rU앜fRrS*W۹Ұ_J'9ek抟&2gҗRϓ"rfd*б.=*UMsJ#t(zZƅ(k9 7/L I,4pYh򴛿U|gIrѹy2QsC ,I6 L _fBSTKdp}ˉ0n2]@'Q5[/ ûrmg)%zɰ0V 3O[7Zg8W2+$Ņ_$N~YfӴ(m\ȅJSͪbn{X1(qh-\*}. ;/r?~  q 3C e .@  հ 58݅9}k$aV@cգ\㴏eZ<29}8<{1E.oX6a9sU5ʣꅇ;yzI1?:h34F8uqBtVqضnqL?8]722SlI)jv^Ww~^R}P =E~qeP!ZJ =# v?T^'Vv^p0N7y5~ NC݌c6E15:5,գ'.q{\Fx:̲|Y#/Е^a8As>*/XQVw=:ğ"m|)Z6(zޠ0W=?qE֟pr"_wo!ܘ6]wèJC?,W.x4.xc&εBN7jgW>Dre0qyI/O!o񗿿^غϦUQs$A@EA1at쩩¹TĦyvJ: R;xqHMr|+9:HhqL{v>>>{fv2Eu*,Ui$Nkt ٧@_dU:.]pJKV鱴O +{Nov/-.W#WML֋a[^ *wBu1}jCV0^\xa5Gv1uWW\=^[{b3')Uwœlk" jkVKkʑ/u_v6OAa<Z`?MojŸ,Χ<7U\anYL+G_<Lw E^vZ'`*(_]wq_{1'T[g͟N3OF3Vku~|D t#ٺɒvܨTllZw79Pwޅ`0bLf8-v'ZLC+O=t Iw&&+x1IcNomN$Ao`/aѲݫĀx+j +X&Bv&٩ +t z)'*F,Oe;jp|)-H-y^>fǀb?z߬ɹ~8Z^0za4.⽌V3(ꆱij f XSﱧND%WKyFCHA[ Nۼw4j=4@\5tWLnf'à=ƙn}hbf\g5ZH;G`(էP>㡒QuTrڬ۸_4[yp5Y_IY*,5iC╈w˽0"R-OhY 2bJf14K793ol@tWCҘ؃{Y⫳@Z+rPZE]6~Ef$V畨1GU_ΞbZ!/ؓ72_<ۭ:zةV>Fk6C4'v⊚zgC0q>c$`%5l,j@T xxTA2L ~%)sÒj5q'Іo#o}خGV NU(G5dYm)^\Y;! 7* +-{#8*GT 6<_lzlzŸ HI; +q}s2 dEi$ngè̾:t_oP=>}aEiҪx ر:atG}A7N:;NN7X<+/ETesn0C>&Um8,vS4?jOJb;J@CCr_5~=,~YV,W{Kn kݡ>r#7+:|7-wu:]sF5س[h@?{_ +R,4$Za V\$rO~;Hw9b{?e0Ej뉋׃t@jxj6“5p2cң_l2M,WrJC'xV5%8zgTi*L8ϲcQ JMȐF +i W=QLsf7 /\ߔjމU$s5'l2P, ksO7Yi~xq~)ٽ$Bd4qJ82<}ϝ(?-dUH5y4yR|OBdnV.$h_٥ۜ!֙}1љĬseyhȞw4RV8 ϏL1VhBoB_N#Yp +܄v#Hf`V a=>z|N?iȏ|_~yY=sY38V^Sv]񳇺gxEڛ|( u en ji/ː13PB@Gh$;^iZY; 1oO˿Z-nZE1i.ͥbe?|Sߣ;%[NOQGRADK̃\>3|.ЋNm:}ri:=?7mf.4yAZa>V6->H F5&n(ʣ0&=L=֒6ZQ6M/S84;a2N3:ҩy`#tLcw29͂{KzwK=Baym@|@B<|ޤ +GZ63k4~]+C; "qԄXq`c娴B9y2 "qolf2@N"@ +N_UjjQ,t!(kn/3+@wv/_E#} 5M=eq)dl- 2݌*f-.GZLjxuGkzWl<uO5īk{q. W)ss?owKYP7,Jxᝳ*A3〥{2Dwn1|ܔ˽5rp^յuvG/` NR4OgPFY?(}uUiɠn9 |x3zc;ڞs/⩞M?#uKy7יPn\t1oK59ydT$w/_E4x+ +cfV"@x"p_:FΗKy?J XΫT4qGcDθ&M[vu~Ő;6ڍlDdm֯[7<~z~iU}~pCյ[(%<^9.D4 kUvM2>e2>t}M /"OcrDpC2F>oH3kj'W>3~X+u5Sw$Ρ2-vihçeNh?;ʕ~ZU誘r² +LPlZh@G?ժ +v9/H?ϱ_Th 2_.lKO)oS;þ߳U(Z}ncTWxOTJkqhVf~ Y=eGw8&18+3'f*촦=Gg~dz0> noƜ) :bm;ҩj hlemQQ',Nc@_|Cv+@NW#{<*S-14+bڧK´03f*I5f"[޳LQ?~!wX> yhOߒ6Ai3=偵?uQ]:Ʉ=.ddz%xBJA8;Q=8292s2GY8p7.~lodcΕOxē +!ա%򇘑[uh"e\a|Iyk|졳~NY Odۓ_Y)op2?i2n.oi1}&3V݈ko(7ҝ=RMqךz'dv 9ZNt^и>f=9ElMporg9ddNި}]e* ?/A<-s:@Q:k]uV4+ǚ6=p-TgH+T.νWuM_ђezR9WڟiQ_&YsN~xhc1bZ;k^Xǡ>kK%xxv(sT&/P^-cJK.աN^wq0vAЃ?)HvJpZw%x̲4x T e9[D=YuU=Y#9ºbr3mZ^{ƌT|5(u٧T\PM)Q4T.)061;5z͒+VU"N{0ab梁w#n)8*ߍf8TXOZ,p ׵R~ҧyN5-yй'9ͫɪ, Dql6~# +Kw1ob@NX\ @+~L"2f fߪǐ{=G74zқuQc]1~[m2%jM ig{v {vG|ƨcZ3c]OoTpN /"9A{/`%{ڌ;ʜ͝'gv*jS%_vRjw9W)kFDfsk-yAk92uLA]ڋ2+YQz\4 +L [gK +"ҒTnl̏zUdIe@;ͿTDK*$\ !>N OB%A eJR^cJ^u ^^wx]iջ\EJd7[⭸͟Yu\ZG%ʁt`.PBtױS-YФv + timTmֺRf], )Or ΡmSCUqA}{Z۫wᓎsՆm9E}zDLf~kh2xBC)]ֳw[AZ +"r 4u4R4U{qVil4:Ctǥo3EC3y4.^uZ'zf+{yPꈤ_-xn➡}cBmnP{AhkG\NݝG6E`bp~`_xsP-4}^;-J)5d#|vhi eEk'椋A4^/N^iokFUrs/}f,QO5j}%xV} vߢ_Y4j /տTRx&n.{ Œ֡}bx]h]U4æxMv7wjԗg}'u +뭋Ԏuez^բ>͗ A*x)+kTM`^2~k?&M0WӞV+1:QD^)<;-vVYj WWcU*D{]8VN욭[\e _Dze Xj e|EAr RwS,on5lyk. ?W0 ݅;|WsYʓv> uSW`ϖյ\Vw=n?:lK|krq纣wz8C ǯO"(Fi> Ga*&&Mu!ი= Z}c +aˣ``}}y}!rq5KB h*8 C5$]YV@6AHf\,^fxx~xHgv,V0ѥE]zC`ެjCzl MfΝC׊w @ f Z >ݝ @܂&@@:p3C-A7"hsxiPC}dV߷ ̋Ѽ;j -&;/ ,@6 <]Rd}8N8iAcPq)xp +w/AӗQWYӔi2~n /iFO4jY}Ց*=6a?;{ տ/zv{Z'7߮{"y_wz2*H9g2YfV?)h\{4 Bd!"bo/,za~ӧwJ-['iם.q0sxkLuUK%03]]'<~sVk4jbksyDƮo=?5kvNk) CM,Cs/ҷrc1gWbV"v:N9$j]u:>!lQ/.w_˯_EvWκ+V e՘e|7kulw?^߭)~a!}ovtyl2v!`1>Ŏ}O$oGSמͻk|C8R,sm9G@=%``~^}Ź<pco;-0.8 J/r~y~ +X5pn}>y+;%KLsR CcTwq`h~;Ƈ9/35< ++|+S$.#,?tiu}8RIg^iD[?ҏTa21$Ρ:baשum$&+}J*QYؔvzhJg3\YZn~ⴘ^TfoU'Nc&5mG!$ײcۨşi>N/4aQ\/o~S{Xf()7}gطj:.02OH*3Wm۷aOo͚ g P2{gD3sc;љ?_魾l %{;֎[Ԇmt匨^/Wx0%™UMpZ8Cןe:ڹ`21|Qve zz{xİ;1lEp%Dd1t3@Eʜ%y7Ӌ덌-&-c 09m𥖛5(MH"Աњ(ãց%'mTbqY{G7W ;SK5xCɝV^`U{+gW%R%i.3VoDá6i͙]rbVJ8lP[غRK 6(om#wo [/vvrvWz6t-@ש&'tI}&dZhqbc۫~8*أfأ>Gc|Qf~}z.vsoBE}RWX@(La~٥#nkŎ ռ\R0.γ\%L& cT1}q"k=vA{E +D{%rүB?PcRÄ)svh9ӡS.iHq `=y0gU[ +%i†vBFo{"F:/}PeﮃpRa +/?6,.*nFܐb]x%ϟxvv1voes:|xĽUрORÀ#A$'Fy]t=EḀ2BTGo "܃%)h)$yd܅qV2[MW-\zҹeWlOZvxO=}V[s r n,:JZ$ }MSJpձykTǬpK:r8/1PU z ;21V,[$\e]:k=bmɿqYFìrylTG=vB]%f.5ɵN0&Kv_*[rYHkNUvU0UpB~LMۇ5na@+-k~ZǦLAeMd{`s1En5[onQf`4]r%/R֥ cf[ZR>~؅ą{+K];٠uvvtd=~GVڞPMѼc#Mx>-Vb]bXw G/b.u +(T%+q\wV HjgV]bZ5>O0 TeKADhhU2t@PJԞt[4,"!֬36Mr2[눹J!ŒrT $ѷ_h1t5eӪ8¼fI}̘(5iZo[n&iV` ve[F 5 >ƐCzLA,[Ud!ǃ[.TvF9̸ka;N8njR*|jdJUz "(@Iq jğ26iꕨ4cOq)#Ҕi$MY Ygi2"ʖy敃Qү}t.;)7 n ڋ_z .]aӠ/ ~CuoeXFBR7?(.(ߥd޸Pн5ƫR#umve R.gds|㊗19C[trǾ:?=K87D~N?x5o%.MXk{\/\Jv^ϟPJҾPKܺ>~4<2BH&ua힕m{Z?7`c7Y"A#?җCe?wnhB;p sS5|5S*ϒ'82Wtݾ,7=o'8صIql,VZ .ǬO~յ%+_Chj8A,E߅c/jIodW^٫lL,q߶j?W%}y+v;Υpb~XD#Y-s4l!PKr6跷kj1je4v{a޻feϙLEη+H[Uw[ $ngv>%) m%"SwIتl{rk+dMd;[rxndNէ͜bK_ߧ\`J3X +u*r´j/o 黁it.gy>m0!=,+rЪܚ~qL'zӰrp:6A8˪xL"?^NW)9uMN{;m`#en]77WP-Ԓ lGrfo_A*_gy.wa>}.TgmmxMlI)$񼓪?WJvPᱬvvQCLiLUFKN5mUkC_azWupBRY>3r pYi Iɱ@l Ga]ShkO*ʘ^[or](sw96/Eh#nh4QES#mBA_HKxw)$w?%1 QE۠℠COC]-gQʡ b? Y'qE689^9P%Q{OI?w8FVV<#1~#{QBG>ly4k}ݚC<:/Pa r/[13~3qPz>ظqҥ!4ika!=23XNEޞ +d`1"nHlFT0ϟ&Ɇˁgt,Y*k-w^&`{{\j +K}ްBWܷgCW +yXs#E~~r|$Fen>hG&*)]ﹶ(koKP$D *&Lsκ:y{o~8}"]]uuu5ŒɊdh^V[]s'=CO^|kyjQq eYՔʚ7[': m 7t|A ] {RV0L a6u=xWk@`[`xl:9EY޿F&;?@+N>xd4neu!lI9um~u?~+ymYOZr$}2L=s|͔S[?vcr{+^ lͩp& IKJtDNouή:{G: +qnta3֑'ݰOEeD5:ɻ7g+AvFS%(+*hlTAc"JI} c MvrfCj:kՍ ;0\^fCl{ŵZlSJOj{X+/!MHAċi"=ij~qTvkr##8sPaξ%a]f*Δ҄^Gk:Uq Bz_W^SJ%SjiDg8꩏FfajU&/A YT*+ +d~Kԁ⵺hrqFq[ސc֞WlLee<Atۓ4^TvnT) $D'$Jy"<CT,)JF`h^˟~sRs̋gȰ)%BXj>_Tg~/}u>o[àE47'M&߮;En-f氉Le^E7T^nf}63(;wk11/kvOej"cvaV\kjP ")&ugɖ9Y# L^)#k%LFi`^#ZުsE#TUA)Q,H6%\T6Sx(~k~g8}~LfׂZT#vFhCL3ؘ62hq'l)Իr@LSVxzOy,ren ^̈ou wPoϠhs$BjԄzy=ztYcAY3+ 3sx(]7.p~'c(x;Y G#W=7ł0d7iqWɗG>Kpn9k{8̺pκ7u; ȺﺵxXԉ'Ubl/Z1H 01*Ly2(<{0dYpLA~tr3|!].[9,ƿs!W뀽sj]اh@ dT;+>HE|'Ek (7wC{z`OxWƫPN_G Bf?>N޲p~|spdUS4@O +_ǀYB)(~WH0  ).㩳gc5b]E\ Usq+!SC[̧R- X&0R*@؊5lclv*6Qׯvzd$G6N,v`{c + cOv .dt8ۥO;I D؁A _dpb s.|YIpmз9sxjQ5Lv>R\nNFnw)'ƻ̂9̹1.^w,C2Z-+Huh+|X6O s }qqZwws RoA ol{~7UmaHt>Rr[YF_|d^0]*s:%T |E'ڽɏk UFG AqE +>=F@]-E|O;S')mO~?<^Eۊzuwm׮hgмA|!WR=ٙ6To=HN<MQ3q>Y[ܰs`?WB.[tRslQ;E<<=*O5lc3v.nfYW o95VJX.ӭH\B<[W^3?Cá_J.O<>) =֠u{װVQkbRVQ!/ϕ6So`&sz~>q%R"MT?x>̟G/G;s=O.Q'\ۙ'κ +6ʏG˳3-pv!fy]iJCsvomݦO:MB3m=d:{r>PCs~/Bp?ƹso-k"|<$y<(9lxS +:Q<9mr>"V&0;9lQ\`~_v'NR4 +T/)^P?F,өm;6^l ,ԼWBc?j!CzI7us3uw ^za/XƽD'lXt|pYR7&9?_n||9r 8ʎ.6lͅo3YKh;&&Iћak_|r~Wx/gl Bsmnƥu׭ypܮ7hżeI{ِtjbSTCl3?RmBV5"pr퐼8I<[_<9d*uQIOt꘎mjbەVek#XQpmZx{}i;aCu73oCeg[nd6Pۛ-^DUe&8~ʲŪГve] *k;qv+ϝco}UaW^LFlY5$Mm37|78e}^$EuN<|[L>wZC_"W%J.ᎄlEGk/Ǚ +U`-3ɞB +#kaL3di4{%YKBY bKOӕ>}*id@K@w-_/)%LXOzx~؀aي0J.dʄo֬p̓ҭtgpݨ|xmg}zkihVZ'QGxTsQ K'|pz6f34qA j%vp%;3!=(3&$qEUn^ kel\aW''pW S +lޗe'c-tVՑvXg4;azl}hX_JXդLv oXYudhCC+g-gjuxBW0U*`#Y=#JFC͹v-68},/?˶u}zŨUQW~:`崷oRC.Q%܆vM(LK)]O*25v|Z|(/`5YNB[WK u`& v**Ѧ98:5I.G5.SYU@[NZ(+J FVj{ԑ'kp W#:&+uҜӡӋYޝ>7/R2]ic4nWqS8sƄNryisݷ3ꁗvܨkըcSm k۪.'5='3GfɋSvܽqPHOy}ټVM0ϙ;A5OΩ(⩯ˑ ʗ?#`w;@TE־ Shfm@7.t{Ո>)6DT­\ 9s-4 RT) o1Slj@[@s#g8}udK Bϛ0CLYq!v)YLJCBPcD =f{w@^\W~tS,h%_Ia7\&v+h7H)&C@Y$DsβU0_79[gR&^9CfOZq2OP69p3`YRx(`=0LӖM!`60hUnah9ũ|w [(y%>`4rgEyLBbX!U.] ~JV|A9eD:A[gq:MEnk}-8RmΚ6._)2^poS@)'6Iچ}뷨NXá╢bB_-^)W6kZ+f*Q+~ߌC?'80pX /"RJxP@+)= z%l[' k*̦ y:HmE򎳵27m_ڱ}+ +{?U)mĕZ Ty=lLKRDzÝ\?@n|WI:ȣl~%O5H2볟}GRx]SxGڭobջ+AK,:OP3=ۧV^o=9pwsxA}u[>OOCɧd}3#}R/o~Bt;sϟI>yxVZġ$e}ej'yÍYa:8nEҒ76p +,håJ(|rƉݣ8'GOj5ۭs;7kz^W3TT17\9_Y"Yg~絝Bvn27^ͿK9́Gdɞ :'Ị.mbvV-ss'ro!}DD]97v ZgUyv:$jE__uy;z%&F)am3nw7_6+[7}<%mT][8[X]K;Qw#4lc7n#Y9k]]i`*^ZzԊhh[ҸMNC*.jQzϝ_ԓ^)>U86e ZaI~wcocpM*'MkoU]ޮZy.F=B{,kGJ /OdzXmhu Kܯ=bLNW_)"'g=,Dz[aFoa׭jaM89+z7rj_ykE|ǒpIgNǼA=vچOJerQ +maxÚﯓ|A&:7lʘCGk ?;Pw|pg'<삊#7;n9+d^8K.nۿYGxX쎚ƛK6¡a4 sf0̫|iٮܠw~5qwL–p`(eRBhf|>Е1KLgsBQu +=ܲ+ۥQh3ӈbdhfܮ @u)[U- k6(z)f^ v'Bs"8yage6N'ܝi~JI-\SjTSgߔ2#G,ž}!c]^km'M)L[E/2k}e"N#L8b3Xkos2y)yl%[\wgݜ|f&-Y3YN+gjCs5dV̥R@2wU+$7y5ێ-:Җ𴢤)Xbr8L|vvnGuHfl N3eQzo^-izEs̩fUy`*)2ri[j>s#UD:ylmDžzFA H]J +endstream endobj 26 0 obj <>stream +(/ą.o` r1遳-ߌRσϫ:o/J^͕yecSeA6>U.$arn Er4>  +|Nw;5y)*xi8y)V£$HjkVp)i .٫c&s67JZo2:*%4HHvB . +|Uڡw𔗶ށ{U7 (L@F쨼#cWdGfKcGV6@ (Mu?b`κ֫ ѡy~sNsչ.w^Yldp &j08eF,/ʽ|iDae -| a[Oaص)ҵpA)aEdd$=Y?V4:7c:bpMeÞ9k:νvrRGڋЗ #a\g6קܟ# M2:uNU<ę#Y“8/ ѪxEO}'v'V8hĺثh`n#r-1͵S<9re`em趔TN-{7ox7aCq{EiƔqȈz}&ݭ/n^>\FPFs듅NŠei1%$j:5gp 777uDiҼb+izŊ xۘ/ԫ͇xn%<螐WW+4vx~`Z%[`jџ<8ѓs{TWxsK~6(FjqF7)z̾Ar#BskrJ^8NL%k<3m6 _oX#B/pj])'hS9UO^Git?-K5+6$[G W2ȌقS>>~))|)Uo8-~ ҏ) +໵ |@0oZS=Y,kEP6 ;bS*ur}(׏m WPφyreDZbnRTxx !g1 IHO)=@R >~:l+uUO|?|sȿkusoÅ3='n~n'dgwxl;{OV_KkbWQUY=xSk!By~~?_OO f4ClMhlxGo]`l+z/[nmqgEmgmeoY6&s]'Wv?Fh˥QӰ=zP< sk")V7/ϟU>ѽ9TpBo; f q ^%N~g[:+?XujWuM\Uƾy{yE51yC\Ia #ۃbgS>/؝h[ʸxnV2 ՠ :~AnW:Z>]7kJu=9R\af4<>_$ZZ$ek:g/Oј%BGNa9vsǵtUt?hI>sirq3|ߣ '&ː&nGAwaLuU`OB]B:C[6V6j)GEYt ZCz(A :TQ? ꟕ_U%Lnz%-e2 C^A.2{w[]+dJ+2 -;ayb{W3bnM~AN\CjSAWծT-Fhk73jP3" h>˒Dea z"/茞}ɫ϶=47mbvRX]x=R]޵gǟˡf:|e ǒʉ[<Ī{llʹ1sOs)vֲy[BPfh_ۺZ7̨>E6rLXbu>hc [n'Z/(L=A$;L_>H/E|\zBy)H;*-:Ezu3A< (5Pn!ݏ~ +fUm!FlyU˭, :Pd(GZ_n++Sp+V)/ڃQX5$J5u*Z o +[dlqVr;ww@zP哔6˂䪩}OzHOO)\'9i}3RzoX]$*Ū,!iAgohl{\X +EO~ޟLlfmL>?ջ5rN^t&w P )QƑ#/WbʈYҦ`R=ڍfS &+ m N)Zz8}h7+G(_ G7{fSՆcT͇ǵbGyɂ mL {צz!e k:7h N]󢦼gfrOԸh)zqK V 5y ;3c4-svS`$Ia؊},cK 4[?P3^t4{m!. ZK6?wVVKl- LtcLFzzӣC[0q #]Qڴe;9Sr-2g]-DBKmrl©f~[fW6>dCUmbLPiw~)W>R@֫Nz)Sr rWx +k:qOΘuQ?1ȈŨuf ݬs/kq@2ly$k3 b|IPZk\ +P"w"kP'WwH= bsoq`%:9%qhXCzUOM +76k=a1 n }Y%bzA4q*po( d$%< 1wu~e3U}zYĿ^HaҲ0yE 0y8؃ť/]G˔+FY)˙Yd%cXra͓h^U@ms+.I%!q +-~M(C;O\s#"X2;:; 4s<# f "!^D3C(0hWY %像RV Z|Yc5vO +q:"kupюzXcJsD?m է*@vL1O ZSfy%׾+)>0:.`t}]ػB>}#+AAVg%(R1Y#9-*lęB%4IC64{#;%}Ppg"%29Jn* +cR+n_rk#rL)G |C${.0ڼTCvƝq8!E}|e0aO Mҏ[x&RPZ0fq^t52,RPi^8mZ[e+@FTH~u'E!Sǵ-ZY>Xl1:(rUi%x{Ӏ:\?&:ˁ q}P:J n/H| +^:p~ <3\"'k +V6Y8Cejf0`ohɓ.l;!)EۉWJk@3'}Nw j#f{ tjQ.kftUf+d炪J{" +% (Y̢ńYsַm얷Ky` al7hs+E(E)vV74<~r)Z%|D +_;.25G2gnFY@`Lfepo#ŠbZ}P%>n8Eyb4J>)8wR|=4 +Y $xi7)jE4DhmG/[꣞G3ȸ~:qA̠su|b N10ƤuJ01Nqk)M(`$ v(2siMm +SR~.8ӦT+8Z9G,b4Ow +b5l5,S*eӡ{Y &f\\0M9b}/:}s'=))yysmzU>Xg ##:b>K;wKb{V׊"^78':Ÿ%J|~ͤϭ3;: pS?rxtzpf_(▙nh4@! U…ЀW ?; CUJ~ Ybq#; :{rkm }!A1kƠ:sÑZ/v5 }k zCyX)^] #H=- ?PV./yPd40KYcb,[f {8\k6iM5\Lj@YX}҇9P{}y:(_hU)Zy8q hsvA}7gf(&>wN{WyJކki4Xeco9boŧ pﳙ;>ZKG5t{==<֤zȟOkw$gىt*Κ&9+ucvd3U>#, ͝J37XgiFFg폤OյRtH군j<Ʒ ΙAfey/+?.աQ!'բ4f>:rg[0e3ȸg3Pd'e+ HS^V3{zίvZ2c|ڳh0ۑ^z6)?ob,MjmjG"\Q<P~w 2s nCQoSRf=ruJv}8⽓tt[k zr˄!\ig۽FT/h,5Y=.,=ԱCrTͯZni᱘#Q{w-W:I+:eTjzVAn*G3aQ#* {6 3S#>YK\etݼ"#]'}*pOb N93o;]V;I:[iW3̿&Ȇ)ul'M-ڒǼW[j[ Va7jUo:OYC2(d=%vQ듏K,SSN13~؈k0=øaxf[ jKsw̩i6}'ۚ//~j{' 2W9T*gC+k彤f3IdfA)S>-*f[ ?SʦC.~m +jtߍ{:jjnUJ3? ek򠮞q[}x,Jڧe$ tݧ*Vq#Q8Scۜgzci] +nf)j-P)bPaV;7C4jkce9~nO e{w>*K7¡x M,,hu [VOwK:h䇕x`N9TcQ %USu,Be«ԽuCwSt\j;vP8ܶ_k ՋW*p~x*ƸM!Mk6U]Ysemm݃Z>mSW̨*F*J1޿Iy5ޅ9TKi!6V]g{ +ɦ/SghBk=oIl,#'?5?*6cv#n_Arx^ig"҂WuMևzP9Һ|H⢖.zr?._R xaK] uZ>e8)Wv~h_5 +yꦝ~nyR^e%HeͬrJ/EXDrW.Td%I&]'-|* qVîXc54+ d$ǯķS:yW f"F [84֞78qu*~VHjYHzw*N6ŁֳwmQQ7LШOR9 md_DBWYMdI97|-c4J5I!" GRRx> +\eT8\T8}knܲL_3GSMh :3B*[ۭ룭E.#s@cZU鴓:dx+ZU"8C4#K?6UG6☍g>;E+2cU`ZJNF-x-UŸGL!=MjB l/,#iMtin+IѪlYCAHX{ܦpd[1lj1Je2:I|gt02)4-uǘ%KѓcHs/8YwO?ZoM(aK-{s1<Z+qnkrrX֝{L봭1BҦOlH]mE ޞV+j_ r,8}Q"" +ٜ$ožI>v|-L\zq'D[w_4oO2gq\24a_drmikm%jP+~<x4ȼDtoBM;S>8^[C:V)Fh܎\ucDbqw/9Q2XG2?'SS˴Yd{I NNP!fQ"TEAo%snV_FLVX9a2Iv˔Hu-GICli߶.It|9MZZ N(sleyw&mX擢Lf !}e9@pfyvDݸ 8Vy-Hbڇ[S3$5;|X.723din/:V+ o`OP}#ZaqyŊwFٯV-i> +oX|1D%7\V +-4N"3>^hiܿVwR8`F.2ᴎq$i t>㾬YcpL/?98B]v\_&4_;wa1g,Ho$cb"fXMn|qXϐ, SD椿,}llzA{mtiح vEk_kE]Q~l><$[}=h$ea 2_]O>x]{/8q5i M +Z|A$AԾ .Ͷƭm[&n^'hd&{ tìƘsd. "I=8fz~6qfv$Y +u' D׾aa94VT6Âu4mykDλbl}ߘ:v ڦY)dT㮲U.We{ʼeJt)3H0nN迓[ջkVipUjDnCo]_:Tjڴ^Uj]؏>[*XS8U~on/܅_ϭ7–gζ%,ZMq5X';ȟƟ8#Mk!ay],Vu[5ZqzP  "I|ZoTN3z),wM'Ũv]]VLe xe]V_OoX%|^7oOQF QW뷤~%yÊttL$R(#]v z<8ސt|._+ԋ} . ', +omX:K)fXx{D\g?G%it;<+xZ;[utRKg+p +9pj֥=U-Z{uV i v6!؃itBW1 +@L0Z&* *߂?q +lk.1!J.aѾFau +HvOYW4W{?3Wg|;?ޤт1fUW_ecnZUKH6}FHg.{R~zmZ۝̵%dYC2Aoi  cҖGnzzno Zpx֬2QVBi)?Ml.,U[,&sY)&}r{Z=yYʠeGJ~T(9^iUMNݔSlꘄJkGemڪyTD4wny~HYZt+I>3FȽ'5r'>>x߄UESt2p7Tr(\4*xz#%md=ӴM^șѭ(VRKЕnU堐el'>H KǀS#V&dDωwcgmvμ{9p:><|Agvsbn̛5O/7[Og@RN(nnɲ}w!KZm/^fD`43 +|s2MyO p+{qeZpc=b#eV5VmIV}"mxc +燶k^ԒF&_pPYSSc[iI(S&_|pVXܿVҠ[ +s}<l鳒NOB/;:zH0\ZqCWrɮAi~Fni;SfXrwxW$nbB< >NJ6WnE U+|i,t,]̘ݤ@pMHХ2zdM"G>&RIE,,B2D/"նvpoYDҫ)q*"(BLgk!q課5a2aLL[Dz;%|;pz=Aj% +&r">RiILn1OX}boy{9X@+qa5E>VE\}4Z L;ScRifQ7PzG|*H;>$jDUL|J+ + a] 2&9AwX[V$[[C掻,9ƭ@:?}/Uew%kwYfc1GsI[3}gȮg^)acR!ln{ã 7]Ƴ [k*B9 stQk7GyV%n0C72^SK# +2APA38%l%ujw[?r=QkWڏl {\iXm=`5 h[F)`䛏S"nlC529'G?\WHdXW ’ y`|,䶻nFv1YryGzcd-.t9!Ÿ60H2G2'cd2F;EN!Nyۮ/tỤrdNRZ$%"2{pz%c*\ҫQ086a;d 뎁'}ł-m߁fm9V/B,f=eCU-jsm])zڮ22L"Jd>vu}93}5ci87JnM(R>"Fx-KflW,SDs:aQnxXS:J6R8^ZKoUnL;[#tg +bix4PB ;Ra`ɪof +MѯHo- Q8=m<< ?cuNc]VZ9|+JJJïc6TzV<'ZY +İh˥ۑK +YR& I,VUcbD :(Rѧq֘qsl .lnKlO}x?5xcAtޭ˦ﵴf~j-B#Bst`YDs(?g߅)FJaDVY1NDw+FƳ{~FhhCynGrs]fkof9QuXOC^R-<0sI2zvȸ_Pۃ:vǎd\HM9|Bsqͯwn?h "ֵaP#ѿY?\'5bc,දvH7z/d`g}lz<ƕweG2Om'@t[?wk/zUeB̆OREv#*j hX_6pqKK˔X'E)*=BZ]Z޳q>nN=->(e|'dFT 7ǶZ=RֱX k>k.jUbTk[Z+W|T0+ߢ|mn XOxZ4ش[~ ĺu'M|VETacPT+ɠfTЩ"mhx{Ru&I l= +E4kR<wch+?q/Yo:iWz-OQEzmmX4y&J%K͖m/FU.4у.-!qcUPY[@E[@+[V`?'wֱ̾^VS?v+ R\ +zV%=wY/|(cs;/y'mGgn-@9Jf`h^ߖb^÷McCsTLB4y1@dү(@4{*oCo +^.qv6ϚP+gR?jJBovmkQ_ZnnuӴI|ΰ5p ]wCӳvZCÛ/Zݚ-/B') +s o&զ{]ws؅5yewo8*cvY5S6b3 +0:12sWZEtгE+F@1n#RiVUiXT| oR˲ز)vIǽ۔]KQR|&tp1IŗLs&1= ^߿F[=5_+ܦFZF3@kq]峠~dqZǤk(JGy$޳r"#&(LH4^ԾAڵ>fWǖP%o"FHחYV1ajAkd,;-fl*Mj(~[ύK]ϗt 2g SI_FhpMx`,%;[|n &(W-n c +OFܮ:I^/|G PEPEV +Mrg$lq=Wɩx vGpfã.~䖬J %>Xr~;& wL!n":SgL<wE.nS^ɫ{UbA RҭIiG>!'XWR#s.<:8;즥YlY +ҳw^+ ny5]P6E**xEP 9_o\j~~hc^**S-I"j™ᣥY\8ʳ Դt+6&e [z澣Nnha8OG-{ȁHy[UI֎H6ŀL590Cm~օӐm6FImmdI +;"!SP>ۂan(ߟa' GDSP]ΪP"ÈȂ‘xݧob H"_ |zK~y>Ƨ풀&^RQ*';0;2dQi\Sz`[Y9z8([7(}:Gu߱ϓR%"$Z"7A/O0l!+*VʜjXnNs[{&.XnR{ +: zխt ZWӕ{`o{ uh g[hq|(%R?ni]mzϜ4v?[+AuDrHs$&2OfY,{MߵE]uiQcD"4oH| 2sa ?"TCN8 0pi=)+4LWm@UJ>[٘Gڳ2CRmkm2ǯ1ïE x@Ϫ +( +2EhSU$"rwj9AKz؆ %`rAr>e`$[_\E2z\fz m5 T?T%t{'$0";=>sa?ͺ~3b]u{^53cM=f*%sX>|is0|U%;f¸+f#+zYT{N"p7~5Ŧ(7n*=J{xl^p$ <4u6T@k(3ߐ hjAfn97( +FR?H$R<:@:>Zlz +0tGgJ䘇VCAӳل5 " WRș߄=g +XRK3<ԑZm,`>-ɶǒ/ # ;0LhhFA=}ˌPcEq?'d)t!E[OwS +`T?*-e&wKOmE^4QyזFWp`NYBH#g\6"rtMˡV6mZ~K@lS[U9Jh1cӡ`#u,6wggI`kea?Fj"fm 8O_VMgR|)=jbHMth@Q!{\+w [n|n;߇.,bI~?g_oKM4 +/z5Ʋt Hb}`^NaG0& G16 xB) ":t:*-@0y HHOR3 /%@fc@<+ ĺ \)W:IW/Ooe xЋ+L$x`  d:QY @6oo̴ȣUsJgrqP2/ PF +(OހFPT}(Dô&ҞHr7huOUש9q%;y,?@US@,K]VdRz2}~m `pK)pP,|@}}p^2Qyfo%k֧oEf&7[A |k Zߚ~GJW߯ٿ8y7y\l~AK +p0߰9cPʘv=REvpY&a:Fo7v*z,HoEzlߟĜm>3H$3WL1 ~Z'jnu 6~:פN8pߑ5Y#>|ȑGIGjS/:k&uq'l'_ 4[w39MkL.@20H$|0?xן~N{ ۜ:kV8mGUGs U}͵7}lTe S a=%P&NJeZ3}Kp7lǧp:p)k\+sa9{1'ui.Ɩ]CfxKrU^6Ώn"/'ZNU>/{A#s7!Z:Yqe:OW!7N}.Lw ΝO93=w!$Z\2~޷ҺWjl#,/>mB}B{<~4IMGZq:.B!iزǷnm>X}oy|͒FL\7Pp5nkh8puګa|Grg <]&;eV$*!)c꣑}PpC8lnf/KйmJH/{>#z18%Kzu tv6&݊nz&yM=͔e#㖙 [}NަOz>vխSl ؑ׻~Z#\,Qzq|i/81I $HihDF|7.onxAIu;hGR}'6nÖyN}5m^57\9ח{T mKF&YJܯS8| q/Pz׹A;l:jCxO0߽5k蛪/_v\rz<"j"*sAKT"6*PTMK(jT{w8 RXM'͢-LaogV7]6?ø.n'j=c:YW>sH/UMA.LԣJe+^ mK-F*t\rͤzs6]+r|eq*#*&W`!;HIfh +)ݗ +ѯ6VI{7_d红…ysE9ŜE1焢 3ggoY"BbU1(d"ɴ a6,xpq+ K~۾0~owu[fyhu36ɘtxtqcq8(7~;%\?]Y[rxy䙷=2_۲WJ[Йf5fhIlN>qvA젡+Vd+L3u {&j>%%DZR&?M,K5؈3^ذWnFKܶUw ++e\;xM9θyC;;uKm>}+luǖ's ow;+16@\Ϋ\k 7U!UD֪1>|:ZymL9W!МID Y{֚$B r٢ha_K3KeRp]48Mu!{k QirzSjdj*C6*>c"O))O2XMLt|Sx9rSs ({@O!xH.;XgQA+T#|Wla54bn0˯9Ok g S,~pe{bS3RR L%2r7H|Iuӫei#ݹwn_TSkt&j5q ;59ys"qr4]ZJFD9` a=@|ʿ9qKaܽ| r6 $ y#EXg1s؉:XΰK=c(Ы#hlJh*OP%DTYl+henw}MŒ!*UGng+_Yq}`rlUR~"@l5:#c[?v@T煮ω^wb PhMǭEݯzǃ_1=_kV=ĐWs/-Uwe4iI_9aO?7+S:ۈJ7rYDĦ;pvNʋzw_$$j&NYg`} +o,ei!O S. ~^uJ+:`s+#sByӟIuNuٯn +g1b0Pv}5 T[mH#oHSaFKE?dW<]eqC Oɵ#;֨C'E>3v9gbu-iߪWH|ϑHA+OVD,[`5*דή/1| ;l#xR_PSb@)ȃDSeQTᛃD jșD>\9 2k +6yfd64ZW+Brc—R^Y2`B^ aI$․ JFdfb%5T#@.Q Hgǀ;H# I~am޵صJ'4ό7_Z>N8BZ #Yyexr\$ /d(|JD2t $ +ۀY"# (/JR(d,52MYQ +B8o!5OuF%L; 5%3ٌĠ\S:jf Aow@{ɱA{*2v,0WS'b+AϾ_-P28:NCtB$v_%ٚɆ]o2Y9fd_(T"; 0j03i 9'}~  ͕~Bai! E*.CΡr7%p!qb(4S𛦐߼c +`&`#8ޤ6-Xp1^g^9~8PEɅ$ҭ0L/OOoƗ[Nt|eG /w=m9 'eET9hXZy"}ON2~:<8n$zJ)}Ns_D)s@R,'i읁4aI <*)H:JU:3?Rh. />=oz9~Q?=_߿7\?ૐͥ_@y;D P>/Pnw?I^70tJـ`a-0CSc8ߪ]. 'Ån|Ӑo_ЦIfrK#L;t%?NEOz]وlz$W7_ܳs)`c(Ƈ+o"2.{,$S8o,  lZɄ%ηEWɉ0gm~zk_ ]o 4z{ߍ@_JJ>p;>иM kcVy.FLXr+̫H:;iЛNz3ߍ~QF.REdS;Ǵ +!5xk>S@G;~xjc p*T|{h)hQI$jJqc+#c)bQ0_n/]t:aZUm۵Dd}}I9t`2{s&hR\cykfQ6ClFWϨw=w[uٕ.M\E36ܷ5ΨX;/M(55W/s_l4˛5=)MK* Ytϵֳ+w+z[{O`Ëֲ?d/&л'[]_|n׷w^IЦš_WxU7[hP)So/xsR&G,6|9Nmth'^eDF:sGC״Rc*=a5|E`ryeRْ^񻶫Eη~4.xi+)}##Bovj}_,⑯7I?Cwn:5X2Aznr4w(I ~O%*$+[\XV[5܏W˰G^x~wqLsB힧HѕaYVS&HfPe̠ 2DR ՖTJq EZlo.ky|U Զw5k\;dzg[-wlwD~M槅n)6+7+',N(X]|<y5^282ÿo hG2-&/MOh|`*oSLTq9W{͈e2maz/wcI$0$_ȫXjI3e:^QF{#gHwӐXxYw<Dx7x\iq'Bs[ľWɰUbNdɴ=2OzK4,j~{RY8Ce1FʕV~Jj+]$Y~?7|4${@,dr~d~zHĊ xUgx83i$>6EƖ~^4$$N,0%W#{kῂ&VVitl=mv)2$.<bD F<$lǜb+gf=_,m/UycL,Jl7e|Y{~vd;2eLvšS.dC {[|v?os(v7,?*yL(/|u<2rHnHjK]yZ2-zfu홚JT' a>ZI>0fBcI1!]ZnŽrk`Vb^JYm#&./Dǵ5\^prvK~3Vt[ H6!2/"l/l'{ϏzԌhʤw 8{ΰFnD/mNGTWқsY~q#lbrV)x/̼t P`2 7eӈb.x0 Y65l<`z@teR 8 17K{\T ++b=xO,Ζ!z6k<#ms> +Ad, 溚H/Ȼ&rۦxQbDL%2U~3i;0? :JoꅻEu=TiLuX;eԎcr蛜޿?eI;uO?qd8i`}qkGlglu|RrXVw}ѴIɑF'iOjǡ2?J+)S6\N{9eށ`_<{1͇Tޭj + NXdjaځёL+AtiFj&㔰H)k]Rt$Q HLHg +%g6% |>U^erXO9dsjzJgⷙ-rCGʸiMIFDtKLD(y~AsvD7N5{k`Tsyij2i|:{*&:4{]SNBk@/ E . +|.3$dbv\\G0f]\p){kG[cfk{;[ioԭ4\XiL TryM8$%l^Ŷ̧rps~KB +Kj[^ OSiUaǐ|o.`js2{{DϜoS>]Hx_3էz^V&}hs<݇z"Һ2(C{t)V\c=.v6|2*۳Cn; Zx:U~81jÆ~.=t~ϵjwSo/v+OFXVcPR2hKʠJt,#< ^i_+8Ϊ[ iel珛Q50ƺ<ߌ?V^5ejTUjJAmYӦ%Bk')?kXGW '^W A ,3wIja)" s/Xw&7g% G&;W⏪&~OJ/ʠFr|މh(t ⫅̳dij iͳ $үWtiz4q3/XKPZrwWyqLPNr&{^Kn9HŰ/Dn";Oa5>Bɩ8M[<> bs_r@{yl|QұUi1~`nwO$Ȗ&+LM2+NmʫyʙrA,ؕP#k̃@.{N8qBad/b2 nanYfzfD?faH[QYHPj&hPλOQ]qoy-烫2CB){[~K-\Nd;\rXEnŶ s;͜CNq-AR!PMΤ2I4MΞ9ޮ`|M0k "-P0R5<m钺ǔ[.lփߨ5״!{V9/SF|F!? ڪ?Vԇɛ>SLCΡF{X/(\o VV %N(VJN +:MFoPy +anib;7 FMoF4QCAN@Dg%̍vD] byMr+r{_Wc1 mw4TRUTbG3zjTE)k90SՌ̦\ +Kؚ5EM17GWtB}͐J;jDL( #bS!%fXZbx3rj3]AVc2B/lr0QGpp$]93m34bm%0Åk枉ד ֌? +$]8#:8S0N4E7DOr'rkYk7 D +p4S:MP|NWƭ9>oCҡ{%gJѺ.AAĒ4>cLd2ӘQEC?~a9mkD}x0|ar7Ȑg!` Z3@r5 M0O~&}&s(=!ZNiH6k甖FmAnF͘X*}y~_zhkz wT^D"bjfG"ʠPƞE!sF)MËTwMi~|K2S* K3x }ï2A~7|L$4䯉T@􇥹}Z$o=* F0@{h'tm-22f;sf('zw{H|]i>Ŏe@&.`P8}[,KnVɞDLp9Vm!6 y}=d: +`҇| ŵQ[s#ښq(N`9KC UN1H{ +},qM֎`#$DeȮp\gNJqX\`v1+LyvEyaȿ\ϟ# k.opn.1 op,P3 ) rp+x7/̩D> \&u6(&o.w ṝKlj1+/s%׽-7kȭ6-5LTV7`@+ jJYC^H>$ O'rIKHl @$:MC\b@aZd.V%FSVrryrA_RTj `,?W.FđrMtO@?I\^t +Pxw*ʉ{e"" (S@4;H W cV[ʢ3d̩.op޾zJatkI@/?5Ї! h. @,o`` +ztI\ʀn. hH~e$T= *+A84l.3#nBuvZC\WIv_pMoe?\ӹ7,L$/IZҟ@wN,Е^h0Z=6MOӧi>EdEŃ=B02weqW=,Rt̘ Pܨ0j,/~$,9'WqzzkvS>ߤ)MJsiq/*{XItWCm Z6]5?k^BkQ1T=@:{3rF Fp 5"?_eL/ߑeWz>7)Cm ͡ t-M3D3Uf޴\jplǤ;ƽ0tڿXl ޡZ;cmgi|;j4s/)Pkqڄ7VυvR{˻]?u?_i[kY_=~$F{^c'w:e&Nn3pB^r#,ABu}@uo}mVg.+zUMqnT4ENcK*MRi.KdP줿*CDfe"}"[9^_5_~ J]Q7M"1ʖ,=2[B1(" +!,`ꕔ&+eo _=<|B/2_%?x#504]pbPk \",5 ?ie䑗-gaB9~Mŕ嬆k̠2DLH74TvDWNU\Jpb88Er"Qjڜ (PHCF9_-ZT.[=g \@oHٳ2̅\ʗYJnk1#DأEb!N,+PY䫹ϳQ+p~I+qjmƶ8Ho+ }]eݴ+stVVJ>+?sjڛdod0 +en2wvnoքg:HD BYr~ApAɝV|ge3fd4誛JtiS.}R+8[eNei&3~qhkJ0 Zl5k^Ѐm{!+#NL_%(n65''')~T Vtz5ݘDD%E$eC39D.w5D(fH6&g3#ݓL'fB,_g*u.۵'hF14Ӯɏ>Fm4a&܁yb k)Mr־ҡ2+EA&sAH!Q%U(Xa?R /g^'f+;{1VUL+>* r@%\A.}\$CX01>zd}&V htFl5Njaw%5z;taTYT V%}D9 wprppBX?>RM)ڗz*eIz<OC*g;d^D }|! zLaǸ壍M\%ҝ#vI{A:Y㍨pM ; n +uo"B"ti{;Yؔz#B?7>wvlg;[1AL'+C,[?bME\H锑6m 6q, J2F:s[du +Lvޤ$9WEҋ.ܙL?6}K6nx0h`M5ّYB6}GoG2h ^!d d/&ȟWЮ%I./"Bɀu=.gOPy/q)*'C-37mg;ƫN! e Tr4`lBnW|{Nu"K" tM$4}" DVJ i)Y٭u 4 JpfsC->Q3r<1hb|@VGn~S} T&u ⱛ7HK'%r-C<@R&MHMC&?G\bT,WZp 툹ăX}1]YZO hKuG4SaM5 P{&(ٛ(& qG +L,YJP;d P[Z +};^:>dMn]EBN7T0Ud?MRWso[hjrDk@6;CC`EMT"h I4}J"{'+g:qf:ͼZYP`޿PnGI~\bG+fAtxІo fO7$D +pf +"`J9}3~ىn$"IsW$?֊ydV! $@6 +g$1>eD[!2#4G굊ya2Dz2cx-oPXHH<2 f\ߥ$;d(ZvlA^mDej!I{ I-!I"Ua$[HIDM5_VeQct^kĎUyeq47 Z_|hpoR/ }R ^t1^ 9vArxkuBEouX>WKeA7ed~r/7U{0Rje2H)63D6+#euA)RZ۞i? (Eѯ7[T_k +W 5!ɫ~eovkܗ2WeR1WRYsTRzHYOpH7T-":R= L28x7SVċm-[U/#4^6/lUSk=9v:!ƐzBj@j*a#q!?/r!GLs`$gxrN>|p!FB>kAs]z*Mµ[n4%o廊ٶ;bjѮ{|*dBqWn,-qEêEnǎ̓Qqzi&b$qq!:r|_+uQ<_ t$M F7`czC#vDϔAbr 璣J;J.X4P.AKIyDGY[52jہ5TC3|#u5!w&yY.j̸=EDpe/a"gWkK +N +qdMbsS:Wd'Rᰰ]ۼqHm43fdUȇi{z.!-:)r 3vr*ܑ y2E;k>;錊vlg]0d{M'c椒 +_}eZȧ6 R +uDxuK0;Ź,K+xvnL&DPLtO;N´93Kj ?g#&YbIB -$5szQvaFߢmY'.7@ZLJ;2$"lNBC@Аy;*Yٽ&J(|FRg\-F;0~X@_b Q,HS-?|AMwp)kN_ͧC +_?)ސfrϳ?('d +|(:?}9rOӕJ+!.@N+&8j y1cܣ*${w ^jt⇝/sh/OzOJr'!mLX>1IĻ*I&$hHw׳릧|[h25VS1הh b ܗCLQ*iA;;`W,4CP`2~c1Ɖh8 G@Vn > —?#}Kؤ݇/sBtN1 +ɖd䍄8S.y^:Ṿ\hy_Dp_iGB`Ӎ,ۻѰvC*+YmyԽȃ0rnl}[nZwbBKiyWwmVvǕ0YtsU9Evy-yȝe:K7*[[)&zymw#GGDm|ڪQҪVJddp 4yE;{;*MrWġҾ h_G~Sv|fgs7xU{'~2*qbA)|*'w|!]q:^oI!f)U#szMƽ1`ƽ/ek5eJ:DЅxFpڴ ',|u=2Q|r5?-mjog RL8)(kVITpȝesj'lz?ey)Řf~tCb/N5%NGeyG3pFݬGFm:&ePH|``ޥW,&Vb W()C*Zw̲!@t:ެerUSY*`3uV^Mb6|\m붦 S(eG& ㌌zwryf@Q@OsKH+?b.ךue<=hRZtܹ-(ARK^gW@ SMa~r( +Ī3Ndo +<} ĪF5C,Fg6JJx&=I:{q ~fho֔(b%DFu`3+d\#о`Z|7Z[`YplV0턪I"0_AUKj3O4Ҵ'NYLZW"*wa";;8ᣈϢC~r6B}'|p&w{S!)w{'g{ ӨR8gWzn4>Rl^'!m1(8/NЌQo^A=FE8Y 5gs` +Cǚo=st!Mxj|<a?oV[]x+S@4ULȋ`7WaBs{hӿ-=:,CC8"ѥsֈNjˋ!JA`qvubSݭ/;ݻw~$|^nٵ'>^ΑOYi r3 iOm'Ja%O9Zz>Dxb!l秐E{w<鐌o6]_~8) oݔ%@-1\4[<)/8MHSD4}ӉzH^ppcy.¹xٲ6N0g*Q-U\fLmoeh=PCsSjSLHVP>"BDZD>ZQ_6/{C 1&жȇz\uׇO3 8e ~9 +8"P<@U4)c { +v1@=plׁz8vP{ʳ嚔&~B@X/*7Ǐ-ZٝgJ3zuzp9OVŵwa3  @mViVd!u*A=%ΗXB\Šo qaуM氶iO.Ύ8$GO\ϮRz'Zp9yU< /dT$`֙y`#T5>^.72 7pX߇@^gz '{< @sSʵ$m 2PA4ē˦K(}s~ӛ* +vHSsډe(Up5mkAxIoM3B*8Ҵ܅}=Luk\[U#B&RJ1MA|Sq8[=lԒR[k[%°;6*y@ߊYt剄 +G,sw=Y3d!$H=;a[\M.GKWOF?վy mmWu顊X%.5VAMsuE2?Dij/`^AS|> [D ivz^GtjJ gpzgԁG[&ee%rh }48O_a:FfɽLs;_lejDAӦGˇ7k zq_1xԡM6zv53柝ݲх]41٦J{gRM77cr:oq:O6&5#7w Im[InSFbЙȌ?Egv%&b߆6)3Y B!ʃ;SJa X_x6:J?eBovYI,i_76ƖI.D0E.ge2(6 5pP7! vxsxާ"~#|!Ո'= G}գ{}ݻA\)5;)[3AT1+5W !VL Xp\y;m1FKBƧԥRt@gK$/o +)z5^/:řFՊ:覕LzLPZ%qZO7NwDk&~SERͣj)P,Vò;&Iӎk(^RCdò7+5%*nBz3-mȽ2/nrNΕ 0mWiUkH:ne5N6j#5T1q#R&q ӝ#yBΦ3|9[rЩL6 UDS."1g * CM9'X8tw~;*6|N2vyKThel*sjgÄufDϒq,~L7_SL +5*S5Rκ&UBވqI]Q?&#ɂEMY/FHBa($C6zulIT +$џMv'{BQ g/~ݦ'ӕ71Ld7Pȕ0~2ИiJbO~\uZS_!٩Q/۹GZZ(E/ƺgmLeĆJQit +G6sw +kN 'Vr'7opQPLL|J=-~= "[q'Cӱ0U /6A+=Q9QQg^Ɓx>%KLͦui9}eQ^WqOVҵ#Dru,[Xx1Eu]̄~̿C̣y6ڕv8ѯdnM ~LVu@zha_r,z،DIL65tfғmVH7!QC_IHU,¤X(Bpb hjN+K~^nڔevcs=CKAzmOCԹ TN +l3%1_ ?,ǫ}P17V'n?ZQwԪQenWGmՃrE{u +5V1Ɂ\d01 |#wpB3峨7Q }Ϣ4{)𙐂frw6_/N8tHa +z6r +q^~3QܳT̎EbY\SQmEQZN ?ZQLו9ݴ4I7qj~S =PpE 3^1"G6F:Y}޳V3<_]{R/8 rt\9T=9Үhw1~.s*tB: P +D!m0AΗ-/뽨MwRxOjz!:٣rTO0˓4@雘HU|~xq7 .: Ds\~l8cne;N'('.ڼ̯J?di1u8J`zRTYD=?z|aƒ7 A8Vr J8t8]qQ,z$&ٽn+tIR['*'N0w{pg6M ۿh3@'\JUN=vͬ_lSҘHp>B"(]ۧM/R=^찳`0CRnl3mh% R-|PgԘlF AtF 7]B? aɕI~;W8|A e 8ά*i8#x+n'!㑷޸3Kl{a>G ӑRn-5W;~p;t!jMCU<^Oe/汼}U5B+5ʩǵ^lדSMWY S EnKfL <Q+WR¡S\ҧ8巕f9eՈSq䑶=ݓZ| 4!y|A5|k|%[G&ܺXTYR|y@3x̀G{CVC{7 G[vJimYVgbdyBXٶʝ՞M9eT9u!c U*/S賲*}-)K`}HbLd xUipt:y6iqԣ)5knx>FJQmmPoOou__8?MݒZ13nlrLM2L `Юl> Fl _;6 E:Ww-V2!TQrgoE o r+1Ii媌<͍]w +t|U+|2x :we:q42hP`~79\6X8Txcgٹޓgܒd:[Z2}*ЯŝQU /ĥoߊ;y;Q}E2]9x]bT4.A jNm]S%QÌ|'Z NWD{r8K߫zXP=OjM[ߚ?.ANKY1Jkr=v/Fm;^x"a넓pr:jThFPr6|RZ_Lh͓c͋&7R ݗ@Kw3-V}),).ut2RUC)_A枎LTG-FtWi%'(@Jfф^yU~ rK@TP_4ގ ЖvZz⪛NpAiQ0;_d $r}Xۏr./NVPX2ާXǎ]*dH٫Ҏrkd䲽Icvf T\1ZC|Ab_P(_7qSլX])l΅ЄA?:"ܚ ˣ/`(? ts a\UC-U鯨QC9NJٷŠɳ=hVԇ''{oXm,}aFGsz~CI+R™Os_$͊z>&IմK6}ToMm׷j~ Fzv܉%æ?m P&AL25 +Bڂ!Vꔭt620ֽRB.AsH!=}Iuj'jБnh!݋:LV5:羢ʗ.E+~ CP'iEP֟o+NMLUw~?mz0H:NT,9ֺ=R>._91/!m$ '}ox.4c͎iວ%rj9*VWF(Qv//ygPCׅn&ig *9RZ?%2 + BڈR>= ;D7t8Q( vm XJH e%5xSP!%#Ύk)سYX# GoabDU`,1(1AzwYbfrΈE]djK`vDtpw\N0'ȳq9 8aվlRjNU7Wp>ӳ^ў.VvʛaRۛƴ +)]S;&F\T *L)3?&ӹqP劕5Uˌ"h߇G!?u91=OO +,W7SV^|jg +UK ˸ AH˂tgrGV#[[;{WxüȻ{˝,i='` X4d48hsO{w͏ Ԏ R6JQIx][ܐ$)<@CnsL7\mf*4h":_%@_K56f11޵L> (uJ(wE^nB4>Q+Ԅegj]y2J*Բj~^/z34 4>.8 M + +hNfֲ3̷Ld9h-Jjm Bc{ljSqX/U&;^PDiGcm({=J雀fubc}72A ,,&Đ~/.J1rGg8Vhh5.]{u/lG)WPT̮.]ݚ;/vpS4զ5CymUiYP}, '1bU]cz.3دBHk*ltөMnQö۽t2j%vDAg݊ +MSKJAAn2٧8\~Xc (Z4qqf];SJ;=| YsSa_sC)G~$F}'>yD}'>N_ )LAk_)' Zڗ#)?~S.abL77~ [0 9{NNN/Γ+R@=gOw?$/T9|2 )IO p4[=J s,jF~GU|6J~y/ȶ}Ȥje8k=D\ddx?WiO> rl :~T}6tRGXh;~ٱ3ƘgN7 +aHKN +:oլx=m{p#u*эk:+&_I*w_g!sIBڎ(~4}?g.O䅀{ k 5u Puokۻ\JrW\4auՁlM +WZ 4ekO7<{bvMSGŨ)a#bÿW_Q+W8r /ye6}`>\ }Dbdx7r=fHMԡ*DEˣ)CG~kZyS]yMZ S-Һ8l{9V7kyvKA#q{c|!xv/D:cDZC(tXJ1-÷ahwJ0o#? j>2A\׃ݓcV5_^;&`pFX9RQ}s$#1KC'R\$ώl2z`KKӨ>w`qPH7J.1:z8Ab9"童EmE51SHJ$JX$0x}3!5iXn"gn]P?$A8h/(4yM̱ެf(ثtψH@5Da!Fzf#ljܲ-gNTSg+\3%Oo @A4s\2ګk ޼oBٝJro PݍIlckv`A`ovddߜq^w3v#lu3I?=o"f 6=iJƷdlIڞ$C<~ M~Bp=e-ys4_dKnlt-MrV$(P^@\ڛλx׻bIV ts0hT w ,P !'ѕy*.'UZry2~yv8Y)֧%֜\nkLb9Lȟ|fP HƌcTP "SaԐ²h$ΰw;4heߺ V\8|wJOIs@<7Hzj$Q쨟-*. GJCrlP~ة g=([.) +7ZMɌVZZ&X=SFDI܎{)u0 w8;a_ fl{%W]<9 &疒{Q;ܤhİNh{zi_%]L{"1815}0A6{yXGž+Y]+;ݪZp;fSyuF7zsdՄ:uYMgxw&RJ&KwARu#{v +܊+ZS#<ڴMk#AMldMgr9V*PbUI^f "[rwFG}p>QG{T#nBەSSm%R3~kh:mhќa]pmyrz*jEi/M;7lgo 2v|[4P?Lh&Ƣ|n#jD;H|kH^ [lUl$2l2-t;;̞CMSo`0ndZU>³j7;R eqϱŵbjNv{GFYwp)gQ 4;;/W +??oA=}dbц[ +~m/ ˝bu7g],ntr)'ڑENF#ݰb.gƌٙFWqMwWE+GcK}Pd~]{ [3_Q7" ]ڇY353g=W@:P[nl 6SM3D-3 [ φ*vk"۶{ZAPlD@ XUkUϪ%+FN&1bF h͂_[ (uA~z;Px2{JaFeX̀k=/n^;NicS8)B lۋ'_X8ى,<;}Tn&(Pf&( O^By`UOi1NިPCs^%鴾$4g@k{JuNGhᷦsez=,~{t~TG[{ $Xj0)ٳčbX8 jIO= ,1l[nk}9 dPѡHLPzxRN=}O:=(5dP*RJ}se*h8޹5_?}eS)_T?Q9_&!綗"t-_@Wo?u~tkӹ2^MH8e_ +R=fTpYa TyYI<sڪBG86'EJ(vE]m x>&fb4R7k Oϋw7C 9t]Ц':6_G|(ew?_EߡhW׆c`lx_jnjʤ-n̒_21@SAD%i?ôG.<~ErPvZXhX ;/w<ս}c@w%qS;U73IG-RQZN ԙ~< d&qio?tAZgͱF=-ڨ97,!OL.ޞv1TW.5VD+ݕ+Nr ԟR%R'I)P^bx;5:1V D2sږf=N+[M9^d60DhLPR;[xJ y[u9#P/?uW?|hF5GR:. Ay_R:*B:զwlgDJƑCX֢]k;B.sٳ}{yaF oA[佺:Q5~Q_P]4W  9h>p؊!^Z1g()nZIƿj>6G=-,FrS/FtΧu}5*an * _)uB%>lM@H47#SMb{3ڞS+=BzsV%iW^XQ [!b%bibTQJ^xȿu + L##P=rŪ=wEzxڃ%m6m/wws4Jb3(eK . ɷ,EawR/z\ +r:͇iT}e drEOIōI+1)9ĦS^O]:%]h[5SG9ٳX:_s݊fpFeqRT5VD\mGQtJPjEUPjW{琢A\[/e++b1T?%k䕽/ฌiNΑ4u19~*al1Yª\B)ş:"V^To.(Y=䣒%o-=b]E->:,3oIFݫ8C%o9Eϑ[bx»ABEφ+0^ +gP`iWO7ɵ(OU&(-; Q.r۾жR#.Sj1LYjO<_V5ԍX愋&i~Fk }?.ORN\:TI%kWƓY.x+"ֶ$t7=ũ)؄,`gc<&͖Fh4Qi餰 )>FKywr("f7]N3G ~sj:u52N5cMMlgӜ[*ΗV4߅Pb^ViW4!y> (nl\Y4 +cZ(M 7t1z]/wcY8|NέXcw3͸Eij!hxa`&vZdЧVgjI経oHy \oi`Ⱦ_$(qP*Dz2 ?(E,»)= hWkE4=0A>׭UUە/b_;@~ʷP)xhu͡Dā[o8ydY$ 6Xp2q%`,ti|N)yjruʫӹӿE0rƙW}XPVM/"79(5p8i&RIٝ>7gz8({r0.q}L=GKio^kyc_,Ry6~ڷ[i[Ff~FPT!ObϸYf;uh.O>tU^ |jCj{75iYaztԸ9fgr48k7ivoؽ'g\LE~QvžGAkrS h`VHTY-jйbxbLkLJȗ_gehٻA>T]갹z#`hk2m֫-֤0F57,NOeIpk8Ή :?] (pXo&v|7kSKmCEkeU{ڦz):j+g.Gu/Hi6,uw6zХOQ'&')BxzV醆o7~+:*_PWR `>lK&Hm#Ic.\]TbN?pQP֧{/>@Dy%J+quB~lfo{#3]0TR'l +z?C4 ˝XX>iC7MNB BH}>^@x Oԯ9R J +mr)xTF`Ũ8Ճm 4t^4Ž=ٕdFkwQ,۸vя}˶(:05 + YBnW)t^Q!Jڗ8::Uȇx+.dO@oN=[˿L-,k#03(d@H(0j- GMt+a\0HzΟe[**؈73NOr=yZN pާ\݆N\7&Aiֹfاjs:mtApq=_w9⑉_;{Jn}y|XiX h}EAaP.7bW?tnQ1d'NPg\*MA9%:ʡk7޵=8I:ӧ M]t'" 3?[(ġT3s8C&7[ %Ego B!CK5> 1Q:ܧ/N9W:J d/ft]ם>w'2NYr*I`P`H.Ni|]M!VnBGeK%Yvٌv/-syh4ax:H|+@lwyM=6}TsO|bt.[>nZ1h$;*7"gf8b1Ʊ5 P`uteFYfJ +\ܼAk !FY{ștӹSPW7rFi &=\.{Zۣb>%ʯ}t*(ƓO5 HRs 1?}#4 KC54>. ~>8K΋bC#L +ChLͧfOˍG 'EߵZ~я_Q jRMstTnzO3}۸g +z3ck 'GO1vsIYX, !$9Է/pߞǀda@eZdCPk0c!o GLH\ufwn4hWu@FZFX{klAՎoab_ۧ0c7a>CzTqH9a}; ۳qKwj7O_0+f}򊗾L bܫvhmj4ɋzsN/>!y[&猏̏qFQ[/F ({J,-a8aOoez >ͦbk5=!wb^z#]cs l1|َس׎^}]+JڀvhY f3FIGfa* sϲt>f^0^yQ5Qc)A5]ڲ%kΊ ;G1%<U挦VTAx79rs&>v38FN9f';K?Wf ٭*1jR: (Ngz=Q8Gɳ!fV m.7;v!ػ}n?Ɲש4Ӣj{ۄǝuf;IcKmuk|svn9.kNS/qwm#J1Mm71&k<{f:ƴv N !b'/WOnܓg|<֡|=,Ֆr k]55oփ +oœj:sʨ`2dXe&y'$XҶړ ɬ|)S#gڵwز8ՍӠY 1+!MimX&Zzkͪ::u\m!90HT.*s3:3U\86tү3at9 +n͓ͰRkgOf OYV 1ԥ6֢DS#TPSy 2MjNpg=7䓓h +R/}5i8ήx: r Uζv-MU3zVZ92M_eUFM8FEcIGd- ۟O䎭~ qgS&@V@=0?z[QⷅXnWwP)AЛViZo-"ln%aTkyŲ]1>um_^jD@h3h(D/n2O?ܢ[rk դm#`h ::0zDև~0~OS;8qT JuaT +M4Sʞr]‡.:$w{90zr>xk>rykU{荦aQMÇfQYlBY|'MDv8ڙ@ U<:a+Ss&5$Crt$R\3u5(עmGD%`yK<`4|]u.{rz<+'< {NP%-LĶNB;;Ra 6+2MKĕNkQJOl}C_4 X0O2|v.;nN\˦^6Y.l> x ]0[{ kEm{  EGUvF\lawB-x˖B{_FslI)8_g;3M%Fp۽duqp|*^Ȝ/atsd1Dfqfv̿. _\]h}˜ع>KW'Vv0'Vʠp^(@$^oD-GCΡ[%mn&1>yF9Lqܺq::ԼEuv-ug^SФ*Dr/{ZJ2^ea:FWbZqM͐0ݻqw V'}I7jzmru'4ߊ#ۙ-U<}P}9~)4KOߏD'b1_?|jfBhjIV+]rz8ž,8ͦ6ugSU2,*s +RSr^S%1 ?O!xUx!j=Թzt`~z,۷uKO8q&٠x[VlFL>j^2ˬwHzFSUnԲ$6+ӛb?^PR#0 ʗ2)!n㕥18OE[x>Ϝrޞv(zzW#asJ _p^-d~|2m +y& *6NaVu6㵅 ţE!/IMf-'a9R)F.*reٌ*Hs;OsslZJnK; nQF"KjTGq+@0+ 374?Q YFX/.~߸ikuuZXϪ"ǒ f}$Մ08 NS!N!ԏ !/ qv־@eF5(¨W7 9HA1eS_}z/t_6\GtK8$9=3bWMVR1 Gu*DMU~[׹2 f]ы +xfӼ~jÝζOgwWrmCq\fMւIf6l** ާg7vNc?nƴMx'x/~X Ga>yWl^zы?j7(9aJL6X2 +ǸdG7dˌ?Zt驵{fC<߅o9P/:*WT.(pQɳ[\2/Crts=g +ku37zLa2j!S]n{ov'ߙr:3-xKPL\-ƶ]cx0m*Z]js8+cCxu1Ern_FC6'WFc$]CçGkeK;^Ks_<>n@6 uQoNӍ};SRirjZ}(T'{ތz[p靭izBr,=ɸ=sv*kjI}{fZ.(؛Rut*Щ]@ց;k5U +s$5g1[y z4v|jx`jgKJ.njzfz'ag3@1@A@<.( +Qr*f-Ž|,4: kRk^rN+Ti$ +~0fm7.u/w:y +UO(,^LWpt׋nqwVM )>f{iqStKb4IWˌoY8Q*::`L/b/Ghv^w;Tz7:9ikqt7Y;W=Wf/"tw;9$YFmO@[[ z\睢N6>F9`n.^mNKvw+ ?'e^۬軏@ Wխ .ULjUީOgvc^؁׼_t%s,4oQ2KXo&CkԘ`j悢RIwfCӑY. I?O;Q>RRWZߺN4賄PVx a^K5qZ +6z+nIsU4>` 24HvJQ,i& T}_V[sʞ4ܾiiX R)e<ߎ|>75uHWa˨ϒG}||XʤF uIYckLyqRKy.^:NON$lTbtH:ZsFڜL {(QLg~ҧ2'H>;>4{datKcrٯtRme|BEƳjiXEkEYgx`F/& BEI~ױ1!f=X+r- S3-irIo IuiTUo^רQ1O}zxpEaJ{rf!v9K(?)ʥ _ f o_n /gP^pr-^c<}>.Q|:m.;yvW^ 5q3@^,@26Eٸߚ $ZzԫPqr r"zgٽ笝> a,>Abj[?&O jg}z S*%AQtҙP,ۅb ~?Ϥ;8d y[y|-?|2l [镓_; o1Pxz]9 ߝi9$2JP 3T1{o.*-U{x9(v{]"h\u'cnK+`F u {{ߠ о?]CHu';}Bq?ƶze^(8n޷m;ܘɳDL}cӀgHZG.83@%BJzC5yGnP>ȫȸ~|f=nr<]&|)_.r`nu^JfhD8tp:=VV}ܝGĭx R)pxzEV\M*Y0Lt)I柉Gl+cujN#Иƙf]r62eA8{Y|vuv&[ lsncrR`j#ـzw׌A'l#pE (tvyNmNv&[n9Gܼގؚgd`7ab@gB`<V,]a^:yN(/6vkbʵm:QBs´\={@6.Ii8l}*F+nwsa-nh_pPx}ڋ@a=;oֺkhͦA/HUש*|1OۏdH]Vegur5?q(|6^LOwulY;[> X5ӧ`Tďհ&hp 她uW1Ѥ;Tk_^Oy'# UoҳzlL.: +S~`6B8A>&N-ܬSbr"5\Yfm'ai&\-F+T#Օ7ZԑloծafW:=F/؋Bw҂%'QQ/ƥ毝xoϻF Mj{";sӶm}lUȁLkbtߚ o ^<9PhJDg柡} +nĘ$p\J~Tܾʩf̝Gxڅ[ݖF+E؟YK:=?ݵiXiIloH{nwRB;X>VuǓ{?sh k]WMq;MN-b<oIUK0GIDDAzDahʣ!G].՟{UE?'( I2Si>_Rp#ʥx^}ƊfSuXK+Sj7wE:no<'M~I|QpkehSC5^h*_: s[0ݧ9=nE2~ +xOY;٭{:m"3mڇ,~ky;*Y1c[lzJID;[0kXar#EZ鵈6O3yYtwbBD)vؑxtrdOn@62;wnG$);:knޯiRcO܀x6. XJ棦1sAfpak*V.3,<N5@ u76&{p\juj2QfLq9o mw Ǘ};v9FVΊ{M7{Yi<>W\y)biT.ȟ%_W$ 0n*f{99 U(lEᕠ[&׾s$Uޢ bX4&bvF+? BMN9E-Ġ+ힳYƏNB<- ̀`:>]隣R;(71-Oi]0K̺5QUi9v YN|BPisp{6[ۂ+P_YO#ڮ3mٰKF{z֨x3d(m-_pEHNa:\D~Fs.Fz`qX:z\K?SM5 W`jʋDzO+aZr0niJmw+[9h5ѫjr9V bk@Ӗ9 iTWN3D(?\ecͺr]:T—ս1F0gpVoxLI`Z,tqk ()WlEE=${߄MYoFGUu,RdNyu1-dWz3=~burE3^ţ+ţHp}ˇ~KܤVP`9ZT[rtY-Ęiʣ-*kIjwhdWoޙ¾ƓĴ: +Aw7QOнgi!nD[ QZ=M$|SY +'rr.N.rmAk7zY}s 鞻t]N0 ̰%ڋAj:㊮֘Rq j^~VT()oSIk){]&f[D^{txg=izU-)b^n-t2+iˁ3WTlM;tVb8/zh}ˤ*+o^Nd +m:Z# O4 `IhS rb1v툻MFrH;Ln'uMG Nk2T.V uњwEvYgsMd +űڡ˷dW. rPbrlK3ȴKy)e) 2 v7؜}>rrJٽ*l^]A>4q_bߥ'szWR KNAPRl׼@4Ȍ 2 嗯F<-*Z}]p^|`P@@9\9wՃx l(.B..,XBȦo]~Bq@q@I >R ôDz.}aq{]J:Lߚ{|P}V#@nH;sY:CA~ s-o:/ *vKO2 Dk]NOx,NA6݇|0~}JZk5۰wW.*z3 +/iol`TY<*f'py*O(=9\RL}<(rY| A._9x`,[ž *tW`;GƁ:|aa" ϴ u͂|ԭ|Z/6&߁{yr9V3>R@:m0e*vG0[0@}r J`gL;N4(U> N_,I53]=5LK}̘HfO[6)fDuj?\AJ +$ZgV^k5za; ST˧;2?x+rVFU7Yx*@'Tky ;jRl(NǩeZrr&|e/3~'ɢْ$8 E福J~$C̸1: >K +>Ξ^Q*NR1,Vz#hCHp\qR]?z*@v 5z(S  +Wz-e5ZZAW:CQlPTCY +endstream endobj 27 0 obj <>stream +k:{]?cA1Tn 9\ݶqk2:0OǸ"x{:Kfv&4m=-OZgURfьfiIBb~ 'H% +Lc{8x<VoB?U}pzUc~L;+Hvloe㵉rfeE88ڼ+wV(Ϊ:[0U&'-3@#)?6s2@ .QF@saL?1giZss}5a]TFqohl^W~lJ03g6QN59?m=TܟGjbLJXLdQ3BeuWK> )1sI_VsZ~+HOlY,rvkgVh>>5{+QS'eRd!_X* ހ)Pg+SRd^& +z^;w_}[aTz-^je|SX0ñt&yXD8֖\^3Y}xX=߄4ԟ:0Iǃ9H2OO9ba{cwHR>^3v.kkTkSW )ƸOAnG1;*]#;|臤M>:;7m 0Iݩ,CSJ]ZYww\qHvxvW&KfyT_EM;GF-&`꣸L̽i ,DBM$@!2]O7n]~z`/"GN5i׸u{uۺ+oP1cM Ű6zI;/5o4xNDOZk~ּьtxBPguH\4Yi S>vAgtyY2f>OψVdi1?z3n UM)V0t*e[T;Et"ad~?蠥ƌmXSL(Χm[HWA2G&٬=,3>m 'O*3mz^)^XS<KÖ:I ly+R==B={O\?QOUDKɽ_n;m/4]U-O\܋C ٟ_#FNiMiLVzmrgn͍L"ʄo+ZvZb=}xx4`m&ncr{g|rZ⏗㰶>7֗\w+~U`xl2n.4Zg:ݛxwqyڭq<@-hK][ԑHRhEK*ܤsJ 1{/@֜?Y]4w7UW=gd954"=1̩4rn_QzhHViMW-ƐuۚQ'%, +m + ) +xvyG@ň lw˲IX/n~|球4֝i}h ]SQvx>GxI,P|q=h7Ѥy\Wz+$"Guߝ]qЯ܊ʺ2E$RT[pkrg–t'SễGOåz=;v\Fq.6SzүwZ+dVҭfN6{Ja`J[t; xpAuV:[ +vd$g7ȕNIWʼ۩WJAN:w_$oHH}/*sjQ02V/&?t+_ zk~bM܅jDwPRD5WER}$?Ha;s2Z7󪨬Gr*(X +[^}_Vچ̥˄O2Ngh]ifI@ЊM 4]1jLֵ\SnZic6W&wFL)zxPwMfz7ԨƱ3]J9IUTrn@ @TD53Ovis(?ѺdwnRyz4k +kV-mσ+.SؼrLɕl>ۣ|̿7׼@lIG9@{-Mbgm\=Ͱšɜ79>B&+Nϒ J^i(7fs_ϔp K{R2|it3T) 9{' O#ytqV{e)W٘ fӸt=8qA)<( gJg9JbJكzqƕ=*Zr|;=RkL'd:İC'yRD>Ed KKagDeþ[@ fU |rj$q}<`Re:}r4x93<a +k9kvǬ_ndž\R7!TAES{oH-acknPoAPob (փV)k}=x=T4Jx<-*ۇ6 @uvC3zD. ;@ S B!"ԻjܽY'b~_1,:N7γq%QY%˫wIG;! ꝼT8zΡJur z ǫ% KB ZfLJΝ`ƿcaBW4 +-@h#5GEeu9}:V2nk'J](uUĠ=PP!}dM` l` > Dz|mjv8xԼ4SypkŇeGbVUZzb\dԆ8?!PVƀ@OTk@bK8,nlÖWvyFA8իqzص$wU c|.Nu.J:$(0Ui@x}(H?ӓ k|g q4]GJsMnX!]r9Y{;v*W-;KD) @J-@JliZ:wkyj \TVf~l&z]k^9h 2ӻ}n߰Sp ܚjqgE< 2(#u2X2Ef|CpN}Z漋@I@HA 4a#L^/p/'kn9h#Z>(l{?+*ه,y8X?3\:/ßӮ`Ǜl /.$ +@:$7qao8Z͂TTRc]Wf[`3ir19'˫N- K^Y%nk*?(\i*c=`jJ{KqqPwCN6_7%eZ?E̡ɓ]!x47?cf2u>| 0\yNכyeM3K +m||2A_@ P  **?gؙ= +5^.7?KcJv:"*Z⢾O{"޸!hmfb.moz;3 +uB{Sӵ J8x>;Fn94ᬰ:!׫?R#WjRX`3V4WZnmKbfRcjLTb܋Dl̚%T? O~vn2q߽2Z*$S{mV׃5K>|%CK +mZRBqwm(}U;٨DV{ƝBFůE2q6Nt:/g)Z^ kE)ŎY_8ݯum+2wQOD}HeQ r2xe3.c'3;Ӌ?"N$ŤAPOFzmo_׳MrV>[V* 5ȸ$QC>?dZ>#2Gn$xo_|߀uhX&3.蛏SWNȦ+@Ŧ^yt9{:U1΍K`T`>j^A6oZytӣ˻޽{; yK72`ȞD":AC$Z5023LO{s{il0;;Xlc&ewz7=w+%_ٓ|'$[)k1쭞û^ݮ @9[0-s ҅m|P=̩8OwrwRV7f|Hw˥&AP1NIjZoZ+fpپW::?>z:MAz=sD=<5(pnu{,/e^M6-H`9'w3@_^= 2LsWk͵ﲠdqK/Eˑ,> +B*{ '! cuv(t,{/pi)6XeqfoU`Jb% Ơ?]q:*hnBRҚ$Eހ*Nթv-nڅ٘g+{.4X@y3KÀ¾[snwRxo]}ly@ YtѵtVefBzj\`ֳrbH9]Ucd}[l6 "W0%vM>HGֵ4~Unok٨f7ŵ.|)6XClIZ}۷˵jNW{pz'ⱑlm('ZCrTS +=𾹝;'R׶ީ:]Njg^F.ڬlsy r^=A}4V[ez-\Lkc˜'Mؼma2BkMhemHbDu'{MUsRdWȡ`5j21_7gs8CR0ZN\Kz5[id߯amʯj쌶Ҫ= @NVUW{q W ǧ*}d%'n I=Yrԉ[DWlݖ(?u }8JGܱPEm?r/P{P,[LJZEk]ܾɹ#dA] +T%$++ߵ[U ȟ8_tL8rt*Su.|$WJNqW.ŕv +`b%k'bз[Xd)0OĤWaSZ>tc8-[jW +[-<4?&y6BúͲHf nA)g5<V_4.|gH6mFߥw>;|;z1.<5 U%NDW{V8:\`MNlժJrϚNe9Mj5úgmɔڃt5)e-rps=%_]('խdXQʻBbA4KA9<9U[d_ 8Dc2GmD8gǩ`X]0߻ac1 )e',4Ltɋ|.@d礱T*Zl9g/ϔlhOXJɹ[qƱJogrmbNGj̐qvq>dİ{wXz]$RMATӟ;X9++~@^hqc6}KiK=)9;1b''M+T)HG V"fTRj`\b9GQGls!U4p2- +7.)bxx>Nsa``,S P)lVU.%CINjX}oW>f6 $7|?R| 9i [5pIX`FFEo2,6ĠEF}K@c5Fiy6M$D*UӼ\4"122+Äl+A(@' p. ݰ +;x\^=1T6k֫d rTU9K)QYp٠]ӿ(l$A @P*3ghLE?Hlb]9I,/p[\3X\lmp@dĸ|3j۲sA[}.*Ǟ&#/c؄RZ G +l9瀼V|@e?@|ĉ1@K ><,x:?^?oj̿ݵM~놲zrZIު (#C#@=[ N(*΀ :̖k^iߋu"fi>~zƍKO3ln{ɐ[|fw.W{݉]u@=:kDIe@C@=kGx _4ޅ^ĨR?qx7׹g"5S%-ߝ BjsomUj{]BɄ=iCUw$o8r)J(yv9UNgGj36n~+o2S +r/l>UK,Ӳ0 c-?3ƂT؈lw=qf+8;/ܯ=ʂ܇d7\ϯ+ZRub -|7Ⱞi&`MV]6.3)wSP힭kߜLOx)Fu>N" ې_JRgpXk\*czѧʄo>&_gs ?MR_b̳'RJ'.8Nl_&8:VtOow= 4zn ]K OǼw]:y!l?EgQ5+ T_ u}tRڂe,@juL7 L=餧IAI]TMI%H ܥ={SS:ޑF*#{)j[M׈NVʴ}{/rպgiN謚[zO76%B8a{T_)`#='g)>~=)V@l=3XGC?K>cs?{[T VԜٙ`eK vkZq&{f j)7[zNw#{96-90G}+wz>v(r}ql!7WLc-M"bR]MRyg=vaBr JZ{}Sn}{*}'&-ʗ{% +6{'q&0sd~xX^eDӛe,wjvg^/L + b)'e_.}oTz%0ʩQ(u7CXi-?#f09>>iԡx&t7ۤ; 0N1 ΊEϖz߁l~ZE +g%rSK~{mcأ+|c.]NCOe h g9\NYYvV+%}դt?6UAK@-0ўU ,NQcG*I@ _zj~S&bN{mi7L Ne/-tK[Z]]e|lrs]#R m[c^[zkU&1ݫ5!_yQt[ +EdžRƶ~o~Ž Rv3O6ro\ryEL}m7FwǓE;L|瑺֔T 5uhm13V |V+ס(=Us-=z˝֢H9 drA7|= +R֕cgY&c6i- rU{mukٚ>V#營[*Fz?򬮗Kv}KȦvjg O/;;RNpJ~ nkK'`7u +9Y՟/6h-LkfN1eKf/v@Zew$b+UƼbK!z2@ m ~KySWĦzK`j |g'*iu`"SX9 +5z+":|hx2:@brNAL4M<IXBT5`|tgU f :&b%NاTJS D +"y<F0o]RߡP= hbKaGI^d,}[7/ *lB|`ޘYbK[Q{е rmźe:*V6oꯋv `pSNBvrķ;kHˀ#ǝp5Une!V[jozdg/1=:tpOGЫUG??'?F*I#-@! /% -8Q@< e HDMy՟,N! +@| +<8k &)8H?| P+LTSzj:d?+9/jn ծ3&ׅb@9ك#좾I#.+D۫_7{r oFPj].foS"B9i>yEf^a"pկ.3ՍHcڇP(c.نa9zż;rz]9C.KݦϺ-L>^~&noDRVpKcヨ8?ΏFzR/;:sjZ5SRBRxs󼱙Z}3{j7pNv3οH{e"kcr;3&$VNG4=yJ&#n]~jr?v7E'Ddzef9;RaXa=mvI۬ۏӝF?17/j Z1&Ĺ}KŝNv=x* =ټKf4B<(X]kj#f6jSbt&m?M̮6N/~Rā]5w?ҹvTxYmڿJ8^gDҾ> ٲ6W@~5i&+d,KdZTk&#:d޴J62p:Gamx'J\z~\)ΡTGC:omv!ոZleڍ#=6>֮xkq}ŵUMYM :Mj=/PO`|mw£GtXn.tl#sG'!jVA_eOzJV|\mhj~j?M^FˢI9WFJ݊ү>빳nr6j="Q팊es4jF-Um\B~RT_P e߳nr]\oгJ󊵘(ǃ% / lI=HV]6ڳޣWawF'e՞Ó2;>P[/v9CIC0)׭xhOrn7?_W M h3&YS]g奇9:|ePzzVSRdK۪6t*[U>5W ӬnYp[-78^%L^ 2U./*Ԧad@}nC#m cFLFp + + +6-5Zk6ǬqrʫZ:fF\,h0u4~lŤ<t4_{3ڡ/ë}G֠k0E N%뽋^PG2{$pjEa"t)=UM}aC먮+~5&WQ~rvw5&~rIk|!@/nR kA>]rAdm_#2Ka༶eQn۳*S5ĸZ{#E&Fa45B="co}Es&P37v8S>EQouyGVk>'~$#Q87| `i89\y1J: A3S?#b[ܡx-ͨ6al0\$xpoۧY}zT1=hS+Ǫe׿b +W9>E[N뽭һT Pq97➞uVxßXm|H?POE+E2gc<|;g8(uSϟa5Dsi%?cqɧ;X)Vyu +AJQΖ"5Ԋ1Z~n6+ZwbaB~m6mR00v`7=;Kx6! '}Á(n7EP΀=鵫lҫN +Ey>'8!Syy*rq4~sľZTdzCjo/MmGjNy$""]e#W}fX.Y\I¦OЧszQ̞f?+vg2cYnũA@?S}l"M3+2\eE;vmFv1v˟K77&Xrߦk[(~=G(bgKλM5Vcq6alX^VBb(lfQD35C\:LCܵ\nScOSGb8u]I[)w>IJeؔ[RtjXPrbWKȱ1fs_d~lZLJ)9 Ltj +(UFgT +xhRk-d5BWo0Ry$^o&;e;"&L>:*(ٚgEl}.3hvi1s1؝9 (뜂F.wz-/}t\ls+"PoRo=qqLŽŏY9=(F< uvŃ7'~/yW*4.+(c =ڿ wM܋vP.胬]:<| ` ͸o7 ЋBK紧U&wmG,EDo_/;*w? \TkTwL޹Ŷ?κ$?JcԺ@jqvda=iiBptתwǏNUa=pF97_\sVFRKj];clNzWVGgf#r3M>8+]1V9MKW&o^_D<7{wv&k629jႮΥΗqc/yg|6mTw~ݵ4zϟ^5KN?tW3|g B'e8W)lAii)`?u^ztVuƋD5?^GaogOLyv8աZW}^J +9 `B-R*o6#c4UtVL`ߧ51z:Pr10iŹ5+S]TOz~y.BNa.Q +A;?vbș϶:RehM^t>/VUMϔR&G=ڸL)ŭ8_SCQE~ƓR=ϽW]E͵+om7_+Y嫠cRk] Q!h=XfK7+E&KF**K C>1v7OĐ*؛eA(*]fp^䍾gQcW ۭA?TۦA%W8e4X }lZfӒ̄X_lg8/H|fUIKqfSutWb'ڡئs+jDpmnG_9iƤqeVwR|B5k@vtC 9~kA; G%BDƋ])}s7Hv2~ .J!#^2wG|E{Q-ح'oFc/#!U-eY^o_ݞE4g + pbj_}J\pۢyG=ތzy=.H'9}0`_j~߀I/~f^9^mG]9xw-eaĈZ;fmdlWpm|;m@2Ƹ6 +ao !<9J?Mл*~mԨ:n`U?<W Qy&&N ʄ\/bl>ҙ23lD᧎>X +{ܭ=xW)̳YN.wYHOO>U~LNֹbUx i,NE^ʨrq)_/7_ )EڗE5iVNv%ؿI챞qϋf仮n\]sAH8VEd2Mbݜc5.mc +g[ʠ B'B5B߾DŽ3g {kR=&o#sо`'3%7c(Uu([R\SlR&1Mh@Hv1dHGbO]L.W`"3n"vྙuv;{puF;=6:;ɣ~Ou7ݛTp7{a + GY{)sIe;s4f;I\iMe^:\W[.K;0>Wsr:J}& (=9{AuI/ =,vGuXN[kOVrV׸ZC|>WtGFfk%nAf*ugOK;OcMsJzO[YAr YĒj̖|{3-Cx. nwc'>I_ekrk5#'iT. }eЫ]:sf>d櫽?{qwn˳>ǹrvӱYsKVTdsY SYoU悡q]g"qH?=UTkQMRFQ|Ȋטׯe,;x5?n!+ܯCeHG 4@p-h/e1=;̍nȣjGS6ƆdMu&wjqT=itôJ3Zyf:r}HK>,ֶYj|ui}]TL؎?rBUoX1Snah#AEbٟ֟D=;h *3Tf/R UV_A,DR/cUɛ#.u~1昆9]Ƹ3==1f70ښ\ +8&gƈ#|Ե +7]OuۗjS|ۖ/[$ +4Y +Gñ^Y}1GW2X/g\U&S͗yBaYw"_ߐ/;͑{cGQɠRwY3i#(_q  +W 4O )96*s^FF;tAGD ͡D's۞U!S.Z:FA"{u" X? mϞzj,y'45V$I,ߏG*v3lH[v%a@d:& n \1r]/@.ZQghoC $!mƐȀI(9J() +{ޓW +їau?oY"X?NF_F_δ/XIҷvIqӡ5|qNkdoE͢٭vpFX qfxq^#F>خXQ!~Gퟭݘ0Na/\6JbI #t=%Ĺ+141Tg_rZ? D^8JJ0m(YAi-$pDF%z +؁$24i!`y%}8fdSC A;Msf6ʠrUV1dLb"2ډ!0`9JM벎!<w@m:>Cl +v'b7{ 2 hj\8o$FY4FXincG1>V?@1U1\k#N])5paa>Ei+Lz齵WK,|͟a>l>xLP`G^`qj8hŭhBhuHtcb'1BMh$\&#h>; +f5A#C_O[%WjA%>+;ͮ.C<7:uN 71(pvX$FUqRq~ 1z)1q;7/2=W[>z3O餏QZ4mj=g; [ZWᓐ΋ǟ^5_>diэ 1pI*esRZ fh؇4E!Fn tQ]gC.lO u6K(=vg[{VRyn 69j!;n;o:pr茷8BlNƚ=1nvz gyj}xEo_TZI d3qqIpd''9Z94\#xvueJP~TwcA9iTuw[T7Y[P6&hHk05AwdJbt:q.gku,ξO˝9Wh[V|3_Q1C¡Ahnw20׍I5Q"=Hp`kMIoG +g既vM_~W[N{if?i'Ua9U_syyWmăE7`~[xzcek5g뚓_qMk +g7s%;_%![K^\Y,6\PnE80ءVSz=8 OX'{?˲']:{蚞7׷Cidh3'7ޞ7DWW{Pc9d*jf<#=؁,5Y|aQTG|Wd4siէ:W!,`oJEsbonڸsR+1n)Q}# S5j1e0o#vc_E敹H2];51(lܾ-PB?+Pʷ pH p\Cq|Q<3Ŀ9)7:aq ;=s wFmK6"kCZ_ͫÁ+=] .gcT,ޠ$q8rL>w |ΝsLio|n;)TYy2޵ӱvaYP$C˸BFS5nVOAX採4DKek Fiy!ׯ>+% +mԸA6jweL mhVԺUV?^jr C׾6zٖE67ҊWgRkYɰ|Gg|6ZMfW7%95%5hYr'X} P;f/FߕVgCQ/$dн(T(ͤ#f.amxZ>pe/ͼ32Ԟix*IyIcQC>+0 +҈̴Viώp&<*kmJmU? 焷챝NU];bX +OrnΝG;K^5d a(ht&c# i48(RF}JӉ£ȹ}<X[=ld2BWPɒ WAݖ11'D:ojGT4U<ڤXXkI1󘮒Q]WG(׹(17ihs:'tdy~)/SZKO)ƹ*=o PX>ńi3W{ʞg#4كޞ7*j=Ex]"rn4c zr:϶6L#Qc47xejwl:[Pk] y v7X]Džr7ư"Adt+.FLyfvtݭcېOt9[Q`u&WUk=̢|4|oӧo>E˭ijn#ʵ;hPΨiWjߚ}6~Sf˜`lAWLn^DO X]TƮ yRWC Lh\m\ 1=IyLǺ.=H|fg2$+u\ee +slm8<MV34.6W~]ֹNGf{f.쨆XVWȦ3la?L+V_}wt#'19u'a.F$fX@".4;LWoql華_pEbvmGU{Гѩ3"Z]o*gyzfʕ-]5R mA\4KwGcjBᴔ!cN% x-&jqUOeL5[/*BT+_N_;\zdaWfJP +u.!P/N~<9<9 仆)u +KIߴq]$k|]wZC[r JGŠ͋}~.S~_OScñ<`ld'-qbR,KI|eD͈fĚA7_)vWl:qؤ#D<[%٬LZpPloBt&˲9&cgyvFqW(oY8"Hڂ -jA$QE"+DX,920b_'QQhWWZj<62lVa +$>$X0m!.m0Q[ٚKx.d8Dv$"c:Y/7m!mŚ#eȍY_^ `ѭ^/|v!g3ى2s^EF ~DM&eQ HHgi A xtT/ 6[~F!/QCQB(qA(YxU|GߩEq:O5^=F  `*8L@Q Cl؟xT +WՀ_V_%l! (Jkxhb蛕(_&QZ[; V\[1L!!DKp)D;[/RjV-5?9!& Bժ7\^WʧM4͎0le3%@,}\AHO_-;" +3λoFHCt $}9JLL(o(iwNQRA)?(ʸt%mEّV +.P!;˥W}'m~ OF) `Ā$mC!ݞ 1b(P"DOgKi3dS|o5^MfqA[ܺ;B\`p̟iJ1ҰӁ0ésszWY4{=]բ\wF3*³S[A _kGSꎳ(>aꅃ%oAvc5 5Y~0/m %FAC!8p8aa)؏l].s %H;rur9G]q#)V@#do~Ⱦ\RZ~cj=.q@-h;zf/XJV +Ry'Gz*> 7~}ηJ43wgeYgפJU g,fIKT7#]۫BڿYQ?yřBgcD@_Vt6'͂7.e?2@%c~iqPt)?^i V~r7y])q]&U}Ty7V{,ؽ{ MAd:]Z/1jU@$6޼+;}ݵ+8.u$Y=[=6n+_`}\mjFh~^p~j'2V%42SY1mBsOp!̤d*EZtBXjfa$}6&F_p3,F+Epٮp5_(W_^gbAk;-U}e#O尊O1N6ͪOĞ]KMz``Yʹvdw+?Hؠ$%}GS_~|P'}YsIzl{ lzjMy-uj^V3SUmJ24y?Tr=f(-qBW;bI7醍Ny*My'`k 8| +Oz>ªj9Vhivq7G;Z\#D6_g$@Db~$&<p^'zg3:.c=.(0]èO}F5uhe?DŠ;yԫDee>q]sXQ*6˱ ˧] ^[(VZ0/^x|6z߿0::q Mu9Ep.%M#mDt2I^vf۽k0b6[!8ޗV[j-u}g#afxk3ga9ԭEs2pqn*,27;Xcf+cXLW7h Kt%8/~avO3WeVij=[jHWAl"=ȩn33[3ӯw^l-Lux@`}}_v %ڦxXZg{c [JJSsIO4&pGMгK] :Zl.{bGTN*][.W/" yDq}I)-iYqڍ0[ZUu*`%c9Mu.Ǻi!ZKZ쀻%J8[tSPzqctwxvuɖС+dW~Ǭ4,sg_<9?7 4Х\*X.egNg·:^s=(wWW`mB &,8!V뷌jQF]jY:Cmm?o-󳫉vm֬Ǧ:jvtpRmubبв^g{m5rپI/?wx>QƝ:oot$ sm꺪m^o.fzb@bښs{heQ?ht9NNT^m kfG~\V؁yʵ2d:m%?qdVA_RDȮ/䈁iPQJ|ilRC[nUf?esJoHVY{[9RzI(#iyQ/]g>]E0<=cE)̋XxQʩjIr&?k.qYoVis0mg59聈DOkm58*oTl<(>X>L@0WT8e:rI`Q3V&7xxlp~"0݉1,#b}:ᒵ_6EKbOVٜQf +d*S.5>Nz鈮ҭIC;e ;Tl8s>g[g'@g6C vB/ o5sxLgpxx|:$] 'KOV}_9JhWE}xv:Gvs+"zX<(`-mZGpE v +A).E" ,m rCd@wtA5'q~2ׇsō!Ej~Qc ֪&(Z +8P0"`׈Y̦ PvQ:L(o~&^ E"*I%J +@ WC}+;o֣xV 䣘*?[ó}\I+(`W? - <1a>N>O8{ow!4mQ1T\roKWr;ًEш5}I*`|7yf_yQB&z7Ψafov-^K;Kc~|o9jmV3OV(9*(/((AFۻ0 |~Ox.@\uA;iU E +Ц|sGX+vrr*|ruO+%)pb~bQI5x/d4d)4Ip篻裏Nvb;ޟC \nRN//mAbO=5 +7ĩ>lp~zĞ +?~!Un/1rbDÏWcӎ;?/=}z w-g*]rGjYwB M~/}kj&X{6Fhƶ$hm{m{0MxԽ #񦗳kcmx=xyY5V)vM+GVԻz!-~ |CGm}h5<3rQpY7FQ CTzf@SG.L({g6y9Y>\TT,l2JX[fϮOZ?‰vnsNݴ +j}'bJ%[l'9C4C\HiyZ7#1|=lnnbeyc1m'n|XKs]=Ժ&4&9Wݢ sC%_.Lސw,sX]ϋm6;3EtU/}uc}tk4W۹{`{;<$*frZ=\૾KVYוebh%H}9;cF ĹI֬JH>FD|姫mM:|JqS)NK;/hqasҳaۄ:Svi2(?Ϫ&êʦ)~Vd,U.)ݝ+5Llg^T#!GXk$1.66$07%mrr%Fbwv<a6R& wj-f0W5j18ɇ[8n|J٬NINZvz7>%PR&=o::{*T+p];吲%@s靜,w/}km6p6*3vwR5N֐Y?,[:[!$6OŊa|bmr=W87Is6+/ڻbzS\qS)/agY3My+&X5ގ:e0SRMݴ|kzլ\< oix"kd'sڶՈ+i\ ; +pڨÿQg8)4/@'=.,ϩ qɋJo_@r#T'ƛވoyo00$ۓ>i+eZlƍlb.VC65oezgk1ҢW~;o4!NiָJ^@kă^%TOc?{։Cy.tZ0gA$'%JP3?Zk>춻&%F &^e"Q%`kծ̶x/5,:4ʌ8*3{.]>eyM ƻT +}ꕉߓlqdNM϶mt +cuK ^)ПCY(ہTY+BGB]+~x*tW& e )Q@YDuXaеsFN o .9[|-O8>3b 7^K3BvAeIVG HҬ{owrte>[Өkf*>C/i= _V9"7"r') [~@۩Ng}C{6&zPԊTR)o$| wY@U'r\lȿ+ҍ RК&#eJə1'5{࣑}RqY{ +,]4\]71ԟ^ĂK]W*|3dۢͮZԚ>3u6M-ìTH 8"xݩ&:oܖ(c`92#Pe|gH"i-f7=TJ!i;q]w*8Uug$0OV\aDdaFlvKGXr^BSEz/Uk,ꈏv}6#9!Bzao|o/,'mu=Z7 M-v;4 վ_IU5tP;~{1HG[C᷐0OͰw3=37Xξ:^Q*-56%+S7+7<;Y?AWz;F QD>qlq ذ=[(y)@kޢ˃@`7'[:̮n;y7f x^SFdyWr6G +2VpTn9rв{=45(K<_d|3L8ovTk,t.Z}tzzmO ;R50ɩO]=.Ua*vr9:nWO+\( (^ε05P=[jdum4+XVX~LٵMLuӒfJ6%cl%jȒ׳_:׊br4 #3bXQԾuXb+OW(,N BM7լ$/=2|uՅ@c)t!5r'ԠqnSlJJ%sSfHrxh}n@DGҒOUxݖ|^sAm˴2KF#]2̓XJz6V03:gF+\zYϢHq--k$ER|4._KY*>@Mz'@/Qnu!w3c7Edve0@MeJn ++;y @ rL]}%Xd +} +j`a5+u.Y4qzZo(R-yo* [ Y)ݮͥ/VoըG~ً=$c5CE .GE_ޥ]q+xj zsYi fEE}E,Ip|FG-FS$P|m&p N ^L7(0!3b7yxxm?$LBPq n ' ui%QB[b#:'%SYOC ÷~GI䏺b5 Rf&+9D??>s ~oaGپ[-N.rd5op t~} p GF6O~cŢֱա+u"`Eq<>~q=˳.ۛn=-~3,V$˨9\ϋ/$ȍ2OrL~zIwח{wG}FƱ a^ ,~`!q~-νQ&i%ۛz[<<.lrܑ͓"'aSE6=YrwW˝^!Ax͜8$>}[*C:4C=\^gRPpgplx%ڵ_牎SmUR?j|)۽ lnv!zxٚ7urt+ԢAڼ>&3pfM"dIv8ӦqƜx n3/,d~>; nn[GfhZ6C{^vc,zh"\w5ՅϾ;{bgXi.dPyrRkH6EV([ch~*.4czzj%Z +UPp]1 W]hDO Bsq~"ϻ 3ySQ0v\1jvڦbTFŭ[%L'znDUgKX[vl͑E7^+j&6vVK^,:/npo9Fey1'`1-ް4`;9z|W!Ҿ'cyd!O?z:#$ϳ8%ؓ**fr4wϊwzC}~Ray@Z3i˧JWwnZ.cZ@2ἜOGIu*/u_8MUc[ *u`\ci̫w4gнMn&Xǝ(ϸno]Xƌxi9\kkԡ䨦Ηd˙Ȗ:H}蓧gFN!T3%w%5WV!|Fp]&s+`aA.V#)ze0Q. E}OĚuٰ\uf܁{ĝR,y~iMY8A"Ҧ?4^"/i8U$xElt͊U+r<DZu'g?a2["TL]W&fT6iׯW֩aqc t1 ЩVR(>:(A4٘#n?(\4]Fך:LAy:^8/같pD.׃[. FV.$a:񀼾Ci==G>#d`/t +h*#"ۛ;<4@ e؞j}26 ݜ|Ifx>w~ W0tKvN(>OCn(*SYf[@*dOsd=+[0n r 5[У"R.{`tpM(:iaT~!Qx;h$ˆ"=9a~Humnn2H1d᫇FQ:Z%_=zzŝk꛱_=3*xޕ8Ӫ$I.rXrEe픭Uw,l355s=Hu䪳ƺcYΐn~`źtHYL :+%9KcRZRʕ b&ZESa|_I +Rf.*+ +3Wȿ~.Uvp_$TH+p=V8/dezpl;ŏ1 + WcqȪ{`ς.e.dRNu +t@OkrG7.`{hL ON;nQeU0aC<):/?ȍEK=IG6V[v^K5N)_:w_M`2_+vn$؏M5E^Sԃ9#d_(u&& Ws<_b#7+푶Og « #@0;@ȍWFuI,IaS @NKz9gTt+\(n$I#VQk=Tlװ.~LX7p * LlK-@ + 5:JZeJ)jtV;tL]WR4 H9}p@0+ފϠد8 ^4@KM&/ꩿWm~+9ȃ?{N%&qCMJ|eg-Bo=|E$;QĶ aqP*! }n9-2_ +;prZ៽».8;6xV8q1HB,}F}N Ԁ!9$0I@.d`#XE>~M+ +sVOZ> J|?-3 #$޼묗DY`Kv .` +'_- ]n=yyXAC5%wAၪ aas^ތksk-N}_z¤^ìĻkQd^9 +z5@k><5|@s߶;]kJxM3T"߽ip3z\ҵ+G.n +&,;z~rB1(&xפ;}='sb6ukAWD/\={,隣&9eMp2ա/E7B _lsc3Rl`F}ƻaM%ڍ((Ia:23{T:Ԩ2bߵNۨ\MWkBJyi^nsukZg + F|VA^Ɨ[[`\.QPݴ/tIK F%'/L9 ע52F]ziV Ƈ VNr^G澩Gήnzb%]e f;qLΧE.5ΚMnʖ Q\z%hj!:O=0_JkJN7uSwdOAMnʽ+o{ٲXil=c9;L:4D&!f&$O1baG[Vqq FRFCN!O%YEޕވӲW9Ery5 b;F umYM0U~LL* +ۢY}eKJm<cpZck";|%/ęL]3m¼0Oa!KHfeCI&#,DX=Fk5m>ͨmO8ݦ-[l[ڱpy*P ,4 k ō 0~Z0|sꦺoy}<-zs}v^ +1x3[ZQ9=,cNfRFdt)W +mWz[5$r bx"ڛnęrgn|$x1i?A.dW{{T_em;)C_,sfn' 1HmZ|jzS2hsG^&Wu,|ʾأ%G~B +4Ơr#TSc6k>0-G`pp!p}PH3;cW(Y/M/[\zB^KR;ż$,Id/r9K5iziOC5ޜ[ " +jNAys@[OLzRWjZvaxbm,]p?x@9.M*G)/:y"y~vlB%-27:<9ӷh^2bo1˾MFB/>tWܡ,Iu1 <\!-ц`'f91ef-`s ͕n/bC߰N3Y tXziipӾx۸[rqxrnvyɥO.]B̦faLqT n+Gg!{׈ ')kr3&I]s_);Ш<ϴ.#i){:qN.@mTwθܻ0Lvr:gݑ./J`"`)HmiB%Rq<F/_NcGYnw9n%“l~黼YrPM?# ,qNiG%"]!x$^ù`%\2豅<0(f"MbѝleybHa6>t<`;JME8ڱ'NJE!V0҃n#ʥHlv1;mJێGw3f9^ͬ%):*:{\O^`aQXǠ,nՇ4#fӚs՗'I^BS!>V2,: UȪSHmy**!P\-ZA ObB+:~ N@DL_XRmxSꀠ g*7'\'j"$u&ZXuv>m]j8z0 +>$ʤ齗&Հ4797r=ZL[}>ܩRl`=*IwtdœӼv>ʆƄxp]U>>|°~dq@53<|k̚&FZ%Cu1"U׸fq̈+'UN +T99r܆x;2p^v#\쨏u$uBp̱ 3!<34f۷X ~9s>P{Ui]S6) Urb@|)z\y+ E}io~1k՚=CZ'ِ\'w|*fjnpNRz+JO "nP[yq`y0z$dj`[`=gWYM# q'WBC(Uj}BL*+$.ѭs-C Ӭw/z̞kؾaoW XN߯Hv<@WU{Up :lh)l "K#Q"|6}QVg F(JƗ lo_}ݲ*+Tph'&~y[Q/>շZQѺJGTe@O`ɿdD֙$XY3F,_Wק7^9sޤgȏU}ŧ᷸{؈Q RL*9d_]UG/v_~QyNJ,h(}kC%vaoFm]oszW*CWd/{FBF3r.(vE:C_s8WAO`^ZzM=}lCT@./Kϩӽ9|wޛ'֑0IͰ,[g+M,]PwV!Gkzݱd9vGyG+^eX'l\C1>7W*R3,C xgAcj+ߏ搹dFjҚbî@q +tx6ZO/a~:R+v#=qcz R$lt^&k佢U\I\!Zk!~"nNgf '갸SJ4!gtOQ5|?ӹUS F-RP2Yrl|0{]}жRrh5ϨA+gp+=ܸn,[ +뿀ov/gCv>2TqZ?\v㕴GJ'j-l&_b1?CeoQ,H'EmHZ̪jm|o +#-RkJr2M˂ Təĩ%@ʁt՛_:X/:TzYOdyBϱ$[dϾ=a$>ԥ"QnC.\>uFw`c O|\WLF۝Ľ{o^ZxtV % |M^~A3Bp*n ~~e=\W6T3:ҫz5`BGiay`=cL~S-3 r'+fOKJӛ˅AyuOޅ4_!on3mUw)J)|KrW=/1/q C靖p`K*4 'Su-/VfCĔ7'V UP=)=ߎWǡrbQᕣJx9 +]F) +?*a):םLI=S͢UՔTQpR)yY7%~SzZ,nvSXu +ʾMvM whh~ק[nOQ`YDYX0;rfxVL٣`xq TQt,vw5? ( wZͭdK|L{vN2}^k >-|5_{bb1uzOux{;E;`|`g͝wo#"etU-FdDB +YYc=-|}w}#%>;˥b$Z`=C Z-~5N㭉aMB, @#Mnr17kBתR/GΓ2قW 1~=8o}dll7m(Z̮[RH>MōE:%E*v.;<я}?'g1w|adH PT;$wB&%nFF^'jzaObTX%|' t^/e3GǦ +M*e 6ؗ4K@XZP{ʫm5g]1Te7|WeW7 <87NYY\j +q^Rezϵ`-OX0 +|2mMZ}[MVY+nu'fA{*F]˦lv£w):u>leC o:~J3zPŌ+k3!ٯR$\)oxaB7I"="Y2U/hE֙\Dql}Ha|`l+FBB5py1[ "4[6|p2yy:Eu%qXZ]rƑÝ9Z^'sz(o3'YBJS6ʉ[)%~@r3wJ oCv]!}$] \f+\,̫>z]2> 7 `K=~ 8vpe:L 1uD7O|"0X!{f{E_,ь6Heju"~R#0:)YZZ2ìSN5Cw|~|¯YzqK|HH6riUwEr%W@AP`: BDBzEsF9RհMӼ4l3CzGo-%MOETWQ- o_DњDdELI Z vSd+~7|4Uwm旫w12Խ_`!뿊 EE3G9={1פ}M{|څ0-+ &GZ>&O/|4y}>}ZC 䯊r-*4_FXՓPB_ +zcGA>QU^ r}~(TLo۶r9#3< 7lzv5WP_Y:uK={?}ř:sb3N~=sȃׇlox}ڇǷ3z~c= )~_J*""~:ku?_s~!cqt-t&g͸QG~q!zQ+ۚ)7Зk7C]%WzZ]K?ǵW*4 *;w+-Pj +0u1٫fl:{hEO/^ˋ[E/CNa$^E4e'<sOꇯK0K,>9>?E_#YiYګ[iI^oeX_y^2skn<ɻszndf?cVtP|s}Ty^F,L4žA'w$qOcdMpwbTmeO<݆>~ޥG`+1ՠ֭i~yq[ܪ{SW(YN`,@AΓ;Кw_Pd>CeYc0ޙj( +uqKTjسGuYepp식gg^(M[˫~{f1vvE,6{ [f֍Xx5ht.7V϶ẗ2 +S8A=/QfÂwYףԸ 7_t2ِW] +|) !Ĵl[fN{Sk7d6NaѠ٣HsVyz{\.W"cʻ6O- !>F2BHdצvAF{fm -L*JTĥZI,=5HN?v*,{V+KM=ď:ͣ有Tt'D\kqaQZ37'E: Bܻ@bq7^:)(,[\Z5ŹOGP9;0[6PҊe΂PBMѬV۬j}\Jxl^6*J;н1=}pUq<'B]΍3sp2>^Ǜ{v] &Nm0J~b^YPX{gr7_O%ʍڜ*]m'zzfՋ?;VG.݇#VČ~TU}ωH\hGi9raBzW*tCV衸)i`-yV:53Yd\Qk l,1ъx\?A*5X-ۦOX-U/er/JuX*0SrvET])[487 ._|R.羷+48Q2笪6ڭiZO߄Y6\Sw!W 3=F) ULP_1oSw2*u%y. =.-w+.ҋdCGɺoҒ7T'6I~v]n[2eڅRkmݭHg>I bXv CDUaYbF*A֑)HqqD > SxA ᇕ}8kϿͳ%́HVckD8/cŨ]7q!QߣN2ENbrN5TF%99kfl* +^ >>Ey3yf ?pN<ϺG{Xf=R8w+Y?Sk٦^m 1隨|Cdkgh%ۣ\Si Tpf9:b 'hҁ}Bg *wߙ #vJ{6=6]Tv?JO _#F׺UA'pz]4b&5lT qVmU[S +5/v Tlm +v V@䰯?rc$UFrHy8fykU!Qqya/Qa? uTNǰr=t4k|0m~=Z7+ Kɹ=zfY:׍4%)q|0P'eb!/s]ƣV PG(QݐaBMBP2U9'-"G7Y9orhMPUv#60˩Jo~g-13o6U{zƩaبq3J*lTGP?4+GN*ީ _[\,sig#{Y.];z,A3P8?=,?m`yƌE^j7Cj==HTG-Y~f@ 6Ȗ"ee/2Dt (ĭcI5jaf9`9CEmy@ /nmW/>cZ +X8RpjW$J! BVs OYͫ(#tV(0z"bW\,M uZ9 +p>ߪ +,aSQ4?U ^eԅAE:z3GҽпhS[:~N]"M +[l ++8` +Kt&S3\'Dh֌-6PAe&:gQ2=3%l=*_@+Xإmb:tUoεũCP#Ud[,C7q3waE 9:X{]-r`e@& wȣKD~~{zD\M\X@No?6l>\uo?B>vMӉZ970|а*3cS9) |hM1|T[ڀv>е t-Zjf?X}dȽ5ojV w ,djTJuZAXz `* b>I_QLO=_^[ _j/+ȟ߉+ ` EW8rJRC96UgbC(^A<6\2<YF)GfT]A# Ig>{/S>17l٩7+b¶Ge +/#> JrA>9$SN_ϱIh|za 8@!/RrT7@B(;&\5>Aiՙf1a9z?=ܠTFf9u3ע_cq H"Ke~?B8||_#PALB~1v_e`i2,[Gu''~NOZ2yR?}7$+Go~ò7d`tk@e\ LDpo=U:^xKQ|wۜ8o9{X*{e+ތ·jn#$Ub"[{^߻7i]Q~p 6վ˖K㥟ҫ~&WtǛYUk}vݦѽz>께wHÒv.A?Y7/6'R̯Gn29H~vLÉqfwB[6^"C`㧼v|m% >aC6>ՋOUQnUlir&*8"϶vz,dd/}$Y.nN]8m.$bORLts)MrO;ەΝo{)hy6fݩy$v, |ZӕN9lM0+hy6"wu 0uGa(aaYPdgǿHӴ­t_gg?e)6ZyN$Qϙ d12.F+|o>}0F(=Tg6XN&z#&8xhsW gX~?}5 +)@snA}m&8dH!pPUr( Vg[ !2#0Xw\{ս3:,Js^hn +k-1.٨, kfZմ- >jH5D N[wbnX6+yPjN+'Vi糗꺕,8scіwROndeۜo"hTsmR+e[uQ0udzŪI햮$MPN e' %ZEa * ٨fr+v :vpwPn9egZZtb/ 5cVF%':5V^1W ʷ(+#3֑&U.!V_V} 5q>l/&1'@ORlTwV$ !6GQ3sb?3dJY@lwD 1 U -bN< ^n > +-}Ki'Cku_b:h5ӡ-^&@;B +bŚ:m5S)*9,䄭€JKxKS)썻,Kɟ{;p֡bgW՚0 : J4(/;T6"Z B 3hÂSLf7RщLUNeG6U˗q+lc2e#6;ϓ30zZ8 1d햕T/ϼüV*+{L,+@aˇVY{LPPtvx$&Tfn,0DFhiW.6pPjY|e;އwwVd8~lW9MLFB 5 B_EBD\DO߅8gƳr`*g{]1r2~7F{:5)zi%MS "O9*6O8<\[ ~H'l8N,^L T,дѰ j_w"E}NruruMr=U|Uy&# +\BzY=u#g%G^ʧ/pkcTbG^czvhg&+N-.LwlJG8(rzhuQ ƕ#Ͼg0`^Cj&M\w,8Uu8 j\HHo=v)3sLcKl0tAj<)kmQ ֜kN"͉h +ʉK?H4qn<|/sZ3t.J:)sO?20kh}е{Ѓ&q0dW&"GUNת0ro0).m) +K^Z(i+¦OqwYHt' 0ˆ^J0Q ɖg|yjCKWJWLY8x}u@'l¥P"5ʥ^zzl)&AV)f=,CaZo<d 2@# vWȶ;>P_w;ɴ.Eu+ε+qֵ|f  >3VҊߣney<9auCLiX%d71H*A[: +hAX/-)~` v|[uEʰ2@Aph)'G-jYN_ +B-. U.]VH7s|pR[-}0fsRɍ/\[4-!=@Tج9,"} 0YY^ IX +ܡ~_\f,3ɏ3uԸ7Cp3%i a-`ȁ}9s@r]gnq>e, +>&J82 >@%)>?XT@%2"#PfRP5Pi@!TK۴!e%$?ؓkVKfj%N^~+,!xL&/ +~U'@Zx. K&LCnfKGo<2cަLJzmc.Hg6BW2LP@*.@Us2ޮ =*r9@͒5* QF/C:7Q\U]"ဋ&6ժ,EdE=^|ѡhTtQtP=(>k~曀x0 0mRL32eDF|0~p`=˷Du?7U?hbUxv$hYX%`zˀŀ&`Q ˴طlY_(7<|hsG>x6V1_V hVs -1J~ +B8(+ OaN_5C% c\!U[?&|7uaiHVx JgpDbѯ8FeqjK@!uǸ'Ef8=mguO^:2*' }@jP ]" dBw3W'Ns? p?? s4LS?0 io4go/=M]#{_usCȧݟ|O6O?1ǿ. Ewm-?wo;܂:9Qߐne|]1rr|^εik؟DMT__i@O3 ۍ݉(pp!^y/8ti> as͐ư'f|OVӫG~xr= sO+r}/Z[Wjgw.xW] 醴e 8#?fiͮ꾲q;g<[^Gnle%AEyY\,'-xdG832<$GowޗeNLdCiY!s[)UWt26ta%$N$5 g1MgzZs2ur +ك[cz̵y[:?iUZ)Eu+H:]b1Yz׋Sn/I8-NWb񔞸DVD&> 9?( y:n}W7Ln>:~8GӋ[Qx7Z2I>O%[{M`nsXnqğ{(na$ܡavD/8O+˩o\<6+{Wyr6Z;BV115k9[?wXsT٦uYl?>5qE}8g LeHRXi{s=Tae\lGYU/\`.6(%߭o-ѭZmD./>/s/u;e6Əu:-&i II*˦S˰s?>H(.LpmOCy5&VR"=.fcS`4ZO %ơ١=oe?~vuG/o]fy۟ᯪ#~?>R "{ꧠ?;2]ȩ>Ei&F CNwp@0v2V&-KfF;ԣbn̘/٦&q{F +vⳑMtd{n%KɵtJץYoh߶*>ӽ%+ZUB4F7v37i ;vT[9ف^Bzi}3Sʺ}t`#Qy-K.s^I "Af$Y#|Q@xwU֡ 52k8Y,=Pݍe-OtB+ܜkEq]QWEOl'"t^NywqNGNb Mr, U}?,sXQe,T9f-mF9:vľJݷhCOJV~[7XQS˯-J͗uau!<ڏ>7ɞQrx>唳Y{W5d`JFIWOwmWejbGFS5efKuxJTPrJUd}{Td%y" ՛LQB烲/ڇB3)U~Go;tVw19}YȘ\^[s'9˥zAU?˗d5(j::Y{Jx"ͧO%ѱXBr(T*?aeMh}g٨uHhMolz>԰qdQU7W@ 3LP$*48:rHu 7Tlr+I{O(i:wݍi^k~v8x|gr*z;h[9`ׇ,ߝk~thWÔ?* +r|捕"7Jlp+AO%@ ?=O;w G^iv V3 +-((*`F6=f홳?d™"H6^Ѩ{o O2{Z7r%)kEКEtD s:<7\ޝr`fHʊ+;`ƥ1dڙ*]=[]:˯/T665{-:'m:WAZqg`f0:/[UșUCV!}N¿1AW(,6 տX$u+*SxIX.{Hr1deŨ)8qF|;:%h +y\$r5/H.7Rn#x!sProp +sO a tRB,hE,Fwnig~rq+BKKO/!|ne˒ΓoIގ,zgbG_JᕣfjSKka=35(#/)lIAB +4!O ZT v*~{hL[BNW76&ju}ssA8ۙ 6(I-^ˏ|Rk Klٖj)cXV]<,׹ф6h>KT.㰊l4O(~${?vO9h o1|@;oBsk!nht'cWVJaT}K9(6%#X=/:KPYG[PP"@d Ш&K}+P @hJq j+ a@ %".ߩzgv|Wet\r#5h!*QGKp+b&*+h= Had G9?`t}23[+ |~: 1 Bky`Y,v'p T&7ϖf[|nmrY;Q3෯"@RPjeuc.fh@Sh\#!| '_'ou` Zك6 :S'B(5<-u՟):!*gJfW}}A&?tJ?2bq[lh:p@1wM19> 8gqamB1][SJdɏaDa}%X|Ws *.ӒZG}j5W dVqqB!b5 .#3رvs_?B-Ғ2oDu,-x9NO~&?.o~1w3?qF]TZC@X | \@l "mY*Nʧ?!ߘ'u9+j?^gf4gV(yƹo3n׽'qѡj1?}[ EˏQw}+yEo汦_Wt~뻉X{|waO(Y'f}ԳDJ?q/όWN~z*M۝GOw}=NnH;\lx>L牉f#pCz]L܋뛕,x/VrW) >`J?OM2j҄*qp&7Pv8Hg[3`c?3 աzNWdr]-}_ܜy^yH™H, /,2تc#>=Ok5~i^jc?<Ս~ٚ,]7_~jR5d{u?&Fl{&ͩMɶ6 &r1c(};1sjdGmP +AI ;FZry9շ3gX_/>.\zI=3}ץq_&p}Dbڕ(WXTvfig l0Tt`?w}$99z[znLr{i볖ܹ Z{^A{mۑ r꠷KsޔgLd SF/ U {[39>y$O->b/'UrQe ;o[/=l4cp9kߨ-9㍄-4_\ju(spՏNJmzE^yyT[x2qښ]jE. +Fm#\Y/;plTs+Ce'DvgvO)@3aNγx{(ᛩ[CtY^Z#>7gofZhF7tMl9?SA.[=?0\W=jZdjl5xe^ZԂ>=?I,,۟eA;A /.F͍{Y:1iI^gj]5 9=-S^-WÚ9͌Ua13[t|{ TɕN:טGZToDWi_b:B;=niTstoc=–w36_ƄOdVgxXŦd8FW׷DZMz\*ep ?6Ꝟ)O!*>'ЬP[5~J=]&Gg2@y9 n(rm0ffi[+Z(}DZpT^YNLqU钩jCxݯtzXQtt'OCivE9,q,Ek\ʊz gue1c\/9 {LA5|o%ڹC͊n[qkW?4BQTqا1 :hJrP +DjFRae#wѽ + M)SN~-dp|$rNΝ:*OٷQr +`קEZAwE[Zcu[5/JܿÚh12v}pի[l})ug`g@MPq B~2RDW[߽P\HSM){TU:MLH_u6rZB&ۯC9zQ=bX˶C~ +#*z/zmZ%tt]:KvtXyя3ؕ],<#๜^GhGAϢ6F ek4\Μ0Kl&cX9`*Y +tC,7d9uj4G!q]&ڏۋ;3_6+x6h#M}7tbC p 8WAWXqhn\OqWt׸p?^6L/m7vt1t1`eb=_dX8~SwO:aܬK}xq/\CpWqr`u S  + +BZ%N+T *09h{N& 0rqn++l&& uK v Vt$_ !5qu' K1Ė_k-/[doD$]v٪WR~BgaDN!""AisѯS[7o"IBbe^P8_l" M6\~̡]QCgy +S?2n"m|:7Ԡů+P_]ձQfy.\Eĭg3bmDol90u%pԹH6In6=)s&2)>J4l͟gwnPfP + 1vq#vu) +%2876xvolg;tfp-ot7aV˳[-n4٧DL15^ef_6z]i.ڰNv?nٙ߿՗~|5{=~z;.4;b+E>o`bs>%؟vxhm?L^E?:HqnmOq*QưNDAHG~G^OO]Pxʧ[p-<"#Bk[Zk ReA6< .NynMMz[<|ĭhow>>]} d֙LV>=&BݚAlzB 2q'FZMegeWA|R4ZB`ttdSE涤]VJٖmMkx, sr]X`H&C}M;:7gգETq:Uqrc-NJeYBˋ=}A +oqrm.QabqqGukdFk[ej/3G(FAFW5u&j9]x멍pJRZ㈖d˝Ŧ#+!Hgщi"ב+S;\w1mf0/ze6f]Zdtә7U/$#[RHPxRcEQ/UF64+SP{8e_1 !zVS.OeSyO Ql o[ Y3ڸd>qzw}=jUOC6K13Bь7/?>&w#}RQm 膕@KhW.L~Q (G/ܖ[)\abNGXTmZIUUnG\vPro* >g# .-en'YoKtߒ/3C*':n*5}w=l8)?7\Ϻe8ea0F?t¡J3Z:t+VJ3C2=鳨M%Gl$?)z撂_(BTJ8%l}XѻL%pTcbisX1=:+-ӎ?gLxgϋ{C۹VC-+L +S|1 + \ybٛG۹,UQWa~-6k.<k'mZOT(gwD~q +k~d{+fDwoMƣV_#-Eoə wUuϼ톷 3Њ=#ۨedFɼQ*ʹ~ Iw6-n *.^d'$bHD$B u +FeG5͂ݑ7,2}Vۛ rhj~d0a+"E~|}qWj5LG󰥻 +tE 2xPA#]HdWlfB,C;(QTNuuيVXDQ}Ig/SigEt salZQU,F(>s=ڴ_rK 6:9~$j<ջ'MT4Q HȧlZ%㲭XN[x $t'ie0k-GhcYZs  ObF3q.`&X S=8 {<{j{o\ql'[>3slC^K+ )Թ\OMQ%)z1b_+CHýxpYn 5uox}^ sM*qBn+zXuwR{R^axkvyʷG_‹ht!} -sA/ǽ@ءa"X- ZX77lbotS @u,aMw$9,e(γ)|1"ԣ+= Hb&oK&/xN 5YםaN,/Eb|v) GK mVv؍SG3߿$!O@5?GE)h]Q_{xctf8YvHP) $E&-l ^,ڟiNT.|].~Z.u)?\|0], )PQh8\fX?7Q?D\6贮:g /\h0 si ꎾS|ex =6V>2bw׳5nFO3sޚEsӀY +D)Kp15KGB\ w +3#տՏTm{vOXey$ 84wMrvOnߛeNԽ]7zS}gB?V[mHSXe^ǃh#ˆXv@5<> +?V[y -ze17nOv9jv.ܞ ꈝAH嬾v^O*v+B젣(Ƽ7mjط*t[(مmL4nѕohoD2j4 ox1SЗN/*MIq'ƍgV7ux0Oy[)yJ. .l9\]fQُziouޣds\901k@%D:Z4'GSLj +D*ooR>stream +\zK `r +5k(sjv_=9 ؂AP_ }jSmoJt:֗TJ&[UJWɓTPk,ueF SU +ShIqBZmB +#nNklfoL,D]zpN>ԣGtT1F|}TE˷l7D7Z%SGrFj0]'G~:>F|d`px~#S1%|3sj1&#Uc)Rv7~FZP6J۞f>S֒˜U~Q6-τu rۨWF ;v_!TX~|tG k3+RsVF 6پiרJmǒ]5I+HU#d$̂\+ϝ?+johV0np\9~/ LZ1)Қ-~iaotYISe=kZd'L}xrMЖ[h U4'|庉rORFYhxz +1/C,ũ< &V\t8ql=ڝYLTF^~rtDgBY].(,=Oxȡz!{̉K:ne+Xyp7G&Q9rd} s+dԤq_6[pC`Z&DZ$s}& 9.)+i8y],?T:}KzlU J=YwOz+kxJyh1VA'ӓl廩)RXv<i?O@Щtљ~by X.8$䳸'bcv1JKo^Ɨr- hڣ Wͤ9<pV`pY\gv+Tv,q, 5˒n$:Hc@3 +T $!/soZKʢ<臗ćY@9d?Nsӥ/LA աqemh3qbzJCE@fP֠c(>ƲHL,  N.xn(!M:H~;G>38!8\3oL ԢaРt)]`WIU,6( P3^S-vvQ¡+Qkitg'݃:lNY@7٭/umlƶ+υPp[{Ҷ2Ӆ-VNjj];]HfvL[FW*)-4s=,G.K Xb2`ebQdJI,c5WfߙZ=v[ iᇽKrz3Vf^ܧCX4`xU27gId5Nk@z (seJ3 p +x +byV,5 n w2S[ʀ9DF!c=EB٧OLdZ-ϰK"T0C3> Z/|M%EaW?, 2xA";< h ZeD`p@I΄dM+kdkٻ*)+f~CА߾~(iW'7 HI-(\eױR@׾4\ x"fdu5CTJ<2/UtFD@z@ˡ69,9E&'b?`al<qv W?B@VLpJƊȖ ; +}o% ?0֘|Y# 6 jD 1q#hC#v3:8W@>~$fw?ݻ$ MjÞM \ +-۪o@M,aq>?$7G?bg ~Ovgsrf^ѷLR厈Ov^mj2[·SKo ϾqEx#ǥe>S%{>U@ $29>{֛Lwf(XrU[nmzx[p,wT6n⤡=W-<ֆ&tT׬Tb?TܢL]_?{͟.Y ~;Ss]湦P|5\^9n[B́jJfe^(9l˫rX~wzxǢw!ɂb+%Wȯ|)c"E9?gq)@ް΀U# =еMi[Ki Tά>?^[iuGfT@iة;JTcV;ZVe_Ul +;Tl˓8Z,;4MkLoM2 [}:Y< y5&(ukkYI^iZ1&r[_G&Un2I]{٭iƳ +?"5:R{j&ke+ot97/E7fg%{l"ꕴMbt#u?z.TlӜ:+z#_/uL!+=Q’L?_M_Xi/'L@E^@3K"_:8>g.KUgvfi~c' +/;^ԩk]=G{^9\U\SVWDV/zd/CiH|/o'T[_"WjgkUlu`N׎}JM6ez|Ɂfd|ǔtg/P<:sl<W(-i}SUtgj3U&$Z9QD+#nzJm!3g%F R;t;[2PBi&EZ%L=fڵJoȻ_. _Ƶ{bV3&ZjWڮÝ&!b&ֲΜ&goF֜C=qUʬ[C^:ẺA _)NuV>ۚp~GXc[jǩL3QȀͭإ6UnO%jBȋ0`3æqégLQ#C)Z$4X Ҟ4%ŧm"xEXz*eE䊢u57{7#?7[c @)cN!'H!rOu_#coI= 3FQ̥s1ACG#GDW/ +u G4h-ݼcAA *Azsryfa +Tc/~?}sC"da#p1>YԛiGQgqQVO-|:=t Tz X(qs +4f + +YL8fS #}d:30KQLƲ\& ɇؐzL +CΨbRXMÓUzPV ߋ"ڮ1>}G ZN}up5ų{j.>]:]ζSo3^,~9t $:o;#ZLݐΧ&.:,̋χD 7e; +vGZj3)5[lӂ UTFMc~3P)z*\:+l.hhAVCGW,a&߬e˙.M>8wmFlMܦ9ϣFPңF MN"[Ez궴렓N/ip%J6N+0oBt-'} 'Ibrƒ3!{Rի̤U=K_^~ElEM璍Iq*̫7$ ;5UMl%0n4Y7f=.u2aGH,[$mꞶPqm?Z(S3WÙ"z +:AtJoڴ*< '?}ʺvA:PFCgD:\^AAmͼms9!3++W|) ?c,'YmJ`GDnYlkͪ4,zatoYj+TrnG`f]3>}M!̈́n+A0Wm3j`}5iģ \y{}e:JHGFɨRMU3eO}X~R1|6aCr¡VN&TTF7r1֒O=.QlZi֤,[ )Mƶ`jR4Imn&+nzc]9.}]KLEn[CUG_"@ ʣmvǒ}^i1/nbM=853`v6&k.jmt5XY5ݠ6LH&7-7HkWtn?`P-pȐdz9Iޢ$4hJXH9o̷lC+c|Qގn(:RJqYכ H.k틞єNBUս<@ⷩ kyjg/r!.E$vAX;'Oי=_ga&_O%S@ؠitnJu/fFzcz'.Rwኰzu(tX9ˊRm(Cw&b[ Cqfb4 +&T:+ǵfNb5YMPV+ZpRl դ+b^\#1P5RncTYJ."IOTθ$)vSKZ/ qIXPP1 +kj9WYV}Ҍg.MA|-!+E/t͙pIRa{qx7!shn 92<%1FH>BF>77wzԫ;9p]Z<2ޡ}N#E]ݤvhR١ M. @.`hLe朚\Nn>eOKw,3\¡G,*HHK bi2^ӄ"BKrgg6|R؛s5ɰE*1NaO=*{chB)jDY3z#|;*%ʗܼERZ%9"w5gѷiQ)KZ# =wONe6< FU1ӞF۳G@LkWmH"k<tyᵽ^Ŏj5/'̳X3t\2k}V³XPls[㬚j3MӋ7]DN +!-2ԋD~qNK"YP?"n,RAXN-c^8|V`NWNy4AUX*RPЎ>b8vG6 czӞf˹ 'kC \ƸAgw* ݼ) JҖ$*G09D`ebnz3yf!<gxUx;H.ytG,Wgg& +ͷt男3AiXGdVCFxAiP0׬Q,DL&_@^7TV +Nq%Z`[2d@^'7!OI5?+C-m6庩VS*(ދ[x*OsC3SyAnUy&<0T2s,b +r *^,M"߻g=<ә<52Ѽ Ve]h`wS*j@Ps%}c +}zxc 4b;IBKYO-kTW~HPDo/:ω |rϢb^͔S,/ij4I5 )<edb*G& U[f-bi4cd#@ +(s@ }I?MɌ0`V- GUi},ӹ,Ót٣q$‘c2z|Fh@5#42úTfFw@cS4>*]꓅ud[5/`؋IM'ڠ*9,\zY1WɊwYԓ uʀQ (@[U +4,@_9Q 0Jmi<L +bSX)d`r0 DT8ސ ZtsK)bc_ZS:79h.3Id+EJ"H 1dX 0-?Dž mjJ 9-ǜc-86{O >W'Cۙtb@6yb~m`ZI^Eb/- 5 SOM9N)1w/Nwo.ƀo!#k&c7)*E +|A(wx='K~pdަV[-Aʥ?UT B&7꛰2v⪕@*TXfH2uÁD_ @ qG;C ^\W|o6#ILj4ܝTv{e6b^V:"PA(+֍%Xeedd P V#jn0سs&1B~_cIt;lؚD\n/)+Jeq +L"\%.q,&߀#k!$ dI6bL޿kY,6ǜI~Umjד^EpKHxjg87IkH\NZ Cz??ٷQ%X9G~dKhuBae5GUznۘ +mqqE\w霵J2< M~&w +W45&wYw]='}t>uNC.1h~ն7BZ;Jm'Bq9Q<7Ou% gUTMEg?9Uݯv|mQإQ)M|zoo~4o)aIZUXATn\$!͜O}~xJZ+Fa@|_3g^dm\~tz 3KW +sU5)Sq%!(,k2ɩ@cuwȝIu[ONRtyM.5\>^v{ f9TٯkHm/;6x~ZgàWH{Wǎvׇm ]\֞n<>- i1Y.IqUe*Y|uFoZ'9S9)uͨ>d=sH팆HtFiHMhlR6?[0X&MG$ Yder)TrA24^~@Q0m4vZi,wY ̹L솷v RN1'QvZf-uqvk\ՄWCyvU"nҥnªr{Ňdqȕr-'QtjX9* Nae%uFdRﮤ;Go[od.\I;&7zR[̔p*^C(^ɲEdйJYkmIYݍeW{>_1&:tw2ᔲf7^O#<G?8yD$0)RϫReV(F__&gGn$M)})e퓸@}V;](Cٞ@=51 &~* ۃgV'IaY6R=kgԒj`ʥ.^Re(R{uګXn`$7F"QOLKՖrż#d"HhǡPmG6i#rg沖e/öގ܍VUǶ >I0bIR s 5U__bj*}K_?qxӟUNoO ZXxV)i^%N_:ϭ+}쥱۱ʅx2}N3MCݦj4י*U:y/}0wRiadKV=aɟ:pq0yx,!;[CuyY\0Ͱ̪GOGP~E[*Ie3Xo,+$&.wv}w/s$mk9٩&kҊQiڽŠZ||QpPi;aރ\T٫B.xL{L*,:r"m5%9/կ$bD=*][`FCW7ȭI>)d;{5ϊѭ'-g*"[(/i9)vlזL8nWs"::f?jbmM9Hd + +9?:v.Qnf'`kLULȧ稻1L8EL07.7"8,Gm]6Bn@R՚Tuqn~a'x[_cGCp$R  L+s!oX1&\K֮2*?eH/ >HOųȭ3o:hlZgO~`W +A4=U CvQyq + dHۏ5,$ooDY|}4~x ᵎC6\uv*`77'Rج 7`)Nrdʢc-ZH;jjeIZ[\aY9BTpؑZ[tk;{!֢&0&! +(v*Q'H +f)jBFtt\- u0Knc?TЕl*.JDE ;f{kȘvph:K'*p{s +7TמH?H?aHtaR`8* A~z,=AX`V{l&Om)KWNMרȂ,i7CᔎfNoKW +'N8/B3b`;lSbc0O>[kgpN,=>ſ{`X.>`gʉe3j3]toj3M7̿s ZoT^wn +x}8bҪG1+ db,K9IGE,cLW 7xCR Ͳ)2;1gK Q`vk$?nSz҇Olw<. gT+O1iI7 ܎DSbc9T+@4'+ 2 J5J` +-P:wgM5?lM2O9,!&^;P7π@Lq!$ء $ :rOdE2Yv?%@P$^oMXA0үNS4o_ sz(?'#OK|\ǟ\q4 (#@5)Pj)_R5K $@.ʋw(G'nX^|ͻJ%nm^.fDJ$~S6[6k4 w\"J-z|b8P _*р5Atdz2wF,o='};Ce*]:Hj_}뮼d6kkZ"9d +g™B\rz<7J%0E&Q$wG \I-f-1i*,",MFh\v[Trh̓r,*{ oYv_ wX~=~y>0{;ܶ.3<ʀ=L \^z%5& ‬mLg2&aO+%5%V]'bM'_ϟ8aI_o2Xk֚Ʈ@\uD\=$ d +;LDr_ʡf(@VNܞF_$;~ TpտN|wK"5^Pl-mx@)_@8Pz(hyS ȯsm6XqDnLQN(A#&:9]G_$I MckWK=E$^Ѐv?@/@k/}"&ba8pIu$E9h8Hj[%|+! MWoػI/`<0>^<F!V_W7$ٷf,?Yc,0Ipx~'̬cNV +aT2o{x^9Esrq"!xw̢0ԉtUd"-ŕL"_/%Oc.x8w3]OFwxsN>.xtcF/R +k"Z3i9юJA.I~!owodk:8݆LO@Uu||v?Y/)kueWB {M[fnM}y`srϪHӨENslXY4\ИB4XN$Hؒ_3/H=µs~_bMo+N7U <ϝ❤ FMC +XeHՊj:ȧ*].zeR4J6~'"(­0o܉v)NNIh|Frjb/$ b1PѰ[MeV]TV7h7ME9gY:dZW]$I=:_U⟤d:kYn 2hDJ7d`MR~򟤁Y3v*g \{RɆ"NPe|U3T!嫱 99gO(+}fL7;[f4dI1mm:Rshkj|y7551Z31}L+Jr>&G:i:癫'dO\Gg2tV[Kgxڶi&uleyn'M̰3[7;3Jd cjE 4To.v +:=-{MfhVYwM$ɱt{JWZ_r]1Vmde˜7/a# 1QJUbސtN`bUsx^Wы%16rNp(}8'X |Hz:ۍ$lkd*mo!77CGˋް74a/M{uD![XVёd%d[ʔϵՒ&@RXKDā +VJyo)P(bEBT.jJ83SƠ OT\va*񦯣 _GsJyC[C>Sz'^NK\ljǤyqG1̍oޑjêŒ朎LeB[@Ch҉9_'+w"PwP|Zx%zؾdݮcᣮ`P|ȵSR5*p/um5X|O,j+Ae29o/XX32XҾQ 4'oD% (pWg11\_:p4&Gu{o*rl4(W^:-s ӶS(ބnƠfEc2tMˊ,# l 3ȠB$J& Т:Ђz +C1jq_yCx>!(w<g}[r6H? 1Cޤ@jF vP)7\c92@ PȳWʝޫB)Z~M sPDh9%{RSN͉2v3D2F}Z+xлAu35sy=肗bm240]<@G2@=T=vUkM##Rjew -ls^fXs;?CVg [Ze e +`g 0U:l1uXb(\r˥[w3l1ЦTېkZ!K~V6SUZܗedyD= G +%[bVxL,u_r9lu+ߵ i@܇\g{H,y&pJtbvNkSpxG+.Y;t"mz?ʘ:5ddU N;5CIt;.kUW;.r7䧳Yl\_>x?*Xx,;!'Ό]ҍtQ㿺b:7.+li$H֮弘SD:x8lQttd.Cջ} MU!kC'c"?Q+1CL,(bqw A9 FNε +nq:!jFF*ӪPw;,i0rğuV?Tx!.i7<'@ܔˏC77ȑBՓL@ׅw6M"byg9jtkx+PW/ROD8] ;z'̖sTk-!5kz :umK@}oz 6ޮF΋qຽ@O€$u]< (I%e C kb +u.`qXM,4\K l`f.č Fr_-6Q.՜.>K v!G! 8tRη߯E?&Y~Қ +3eM<^no70uK; 5(rڦעKásOEs&kM7A_7YL^swgzCUsuSw4!]6 U'1?N&/O&',g&ES4H?I50|r?f!)vm5*ۮO-9/gl3f> |O\oq~(ut}+Bg,0O ț_@P MBs<*6goTf'"UMG&=ܞμ ^x䲽W殷6O=оw]]?lvtX~ ^Wz-&%\.N)(ل&V +_$I(eM=~  *W@T40^*EkYafRgU?rGxafSuk&6/gL~X֫J(2OPZejzfa^ 19%Ǖ<}\#l -/S<zXZ҆IBB$dMlq"8yY.8 TE}n蔄5ߴs|Umr~yko޳=xe1T:\W2vlNm֤]'||Yx$yWS&Y IG!01eVhرxN:+imަ#X].]Qj4Hmf>żs%}?ui>4N5[%< 5bHFn"GsGBcb<9)Ý4dlH\X/2J*zKUS˳[G]KO57׏b @,!}vN(LR-)^GV$R)}kOЅ?͓8aѱsCHCf,,^Қ>Xo1^Oc.7]ͽUNjw*rw/-X—4i߀U^)=CEB)]&T,Uǚ,puwՀrc׹FިW;Q}(NݨQɝYS]f&)߱^Sq=EG_-D] pqJ6C~3e_z3ЃxHv1mT4(H~&s}A)"Q$P3u=*Sm[#n괖鳑au-X;H_ k͘Ae@[PG>V|3>Zc%+gqE_wB>?خXˈwhKWPfzȥ"TCi N!-GYrpeF21iv߅?pX5ۜA4L%6!!Z!G׃XM9VJX*ggjnT0|2;ҙ +pB8U,,B^UHU0^O I0|]Ev&N'{u^NJI SC#*zdU;3!H-퉠w#h끭Pi !]pXِpjI/JiȺ `Sy,nyBJB9sRXsGKsg*}QRs%).t0~=nf3@t qk~{p *v|B `28С RKLlAG2ju\#rUMߔ M}2fg-N}"*u}W:W1FPw|7dtH[bXtdul3_U7m7@{ + MGJ`!#xI9==FAy8"rv¡}\zCnq'~4Ch4$2Ʊ4dKX.M@)PM&yTOq4rldKbfd2 ZEٺoQQQDw((=J&3s'yI2?#WWu7]Z&] 8^zyiC3%nJ(}ظ̢S Y$Rۉ3ȩY' +@S{~AA00 j/tBz- +ж#Ah>Hi\i+M&@[0ŜǤVVL8Y!/(QYFo|sB$/g(,7dy͙  ά ^?@BW]kx^q"c0^lP^#j6R2L[LDE26܊L3-ZLțкX %@ +I%6f}Lf,DS@00hzAq#e +6ت@@gAX_c|LW21I䞂uz&F&:t- r.6QYCSaAurYe XDV$6k%6Vc ه,0>~.w2YMcx"M4VeIՓK+zAbyF|4^i*:t9y," %AR1 7`  X@\ }@R9Ao9^GMaqFχ ?JJ +_]$,((BEH<+ӷeV1>6z]I\ \Aʬ %pqLpOE",umǦ#G(FO#(u&xj@*P{7@: |N +- Y ¿x3ߢ2J,+M%Cݭԯ|dj!/uXCR[8|vj:0@?f‑ `k0Da wq{:y;G | C#0_rma޿H-8~YC6YkdN® 5xF#؃tr-I %Azm-1MnThmT#܇@:~M KR{2aV0-|WCATPբ 'wHg)Ӗ r^9£RO0|s֕GxB(C^^גV+`vZ~wP+1Pf3PN#P+!(ӿṠ|QFu#I|}m6l \]击o+{VI܄GpΕz4ENAs'dlmg}5Òa-\=Wi<> ʜ{zýEd-Q +ִ;.śya/ns;/B f:7+Ůx̭k2n٠ +VK4Gu|Vܙqz ;5;.)"C8dufSM mom4n|ocmSon#}5wՄt9Rte{j%Fk&o;bϩ=|զԍ0Cc+ay>W&w ̈́B!u5I:L3U;.m_.vX[,K |,C 'i}?Y[X"j2dB'-_iJvr;iQg-u{y7w"W!V[A;ϛ#/d>M9g&r1/uA~ bhKVmP ~ȧ[Zğs^gaP lHȟ-&AٜeIwT ُZY_%:,GE)lrK32n4⋳4Z<]c`,zCw riz!dXl'mVsl }i'V32QV%iĥ FKi]2ڶO'dBYzK)(A !EXC{Z'ù@lEQhP2;;/YF7"Q<9&Gѧ9.td} +BX<˄p9݊w({I`b䀭H)"X"C6$9>'H[sU'JUgn5u+U:} fQJ䠽tܘC8)q޽6؏ 8\ɠ<$;^<ҩR,'.M.,Y-sQLUuL] LէjDA VcL,3aRta8`"wN/eͶDFâH%tmQI[1>G4J^|k&../E]ŷBzKS$v^&=INUb|BORC]LPlTa:5N=YƢkNl0th[c"αXxI6G؂E=9Ga2f_}]_c3P"m0T$\Ӫ/i GsqO: qm|f5Nֶ޶ %:Aq"j9*B ûQ~sP#Q2a%cG dž21^ wX467gF3G<lZTd' +#Dd^IP%"^="tl!a|"1pxl ~uOի#T(7(. ,ױSܶb+z1R}{F/sy4A"A#RUD@q1ޣy.3+ =oWuk\Zmr~+~I@PRO()'FqZ1*u޷G>{{ȬTEHGgD"j " +Df2*#T}u%7f+jg2bZx0%NGX.*Fg{AQ!R.MsI)!q1@mAԸAA -)8b4BciK %ng{D[!͑y?TY4E:1jM@ik=쒍\Lг4O`{j^0Bt"gxDDHufLFx#}1ԡ[@W v6\\ +q'8Qb^=ʂة7s +b;.؄Q73V1Ve!F]+dOhvs<5E=*F` n8n嚀-S%@{ @Wi &{Cp@b*ԡ-}Pt-d1 Ў0hh6#+yY*3'/}d rlP/ٝ-s-y\p=-4RZgs^ s ⧈ (B>1 ~. kW%7kE i{*^$O(aS`*GmI-/H`7y`OW08LZupX]KYNG\RwRKTv&J!sM 8zmkXl'o:tX#=s&V(}dՆYyU4j$OШg8P^@4 5KH(%d#p1dm_)H[K ?ӡ8tLvOT DCNR( Lj _ +窽_jj6.n`jp[-?t2 ?s Z gpS$~iRBZT:,!Cc:t(C :͗a%P ma+]UjP.PajNrF2@PA@m5?.92♣vt|.vn{M`tHU o{WDJNY2A} ?bQJ/GeU,ngظ|s~~|vYr\>tTx+,PY{tj1^'YO5ѐgs7g1_qrUZsE wbe9nnSg\Jzk;) ^vpdnff_5\W A+y*2kF[+E;rd4hewb񤘳@ЂT1VePѳSFÐY˕FBQ)LTŜW=fZY4^`4kՖ،9dz;2&;v eTi"Hm/+h\,ItYmR`E1)~Z, Z+jO  mt\Ϗ;:}5kA#on鱤t& K0&_3tm5Co ݶbhhd ,bPl90hɿF v|p71˛vׂ1{ Ma&HΐO)TR5 +N΀Q32u}>bhnuUU, ]v˩ֱVYJf\r"7,:TkFz>(0Tn'_ߝ [V:c)qH"49=AK<Ϟwkh]3 q8,HI˽kn"-uW-x4s/݆ w2W[nCb/GʧbGק^gʮ3=Ѿe7lN_ 3p֑Y.6ࡐ;wC3؝* e?6Tכ'l{? ?_?e`gF<qI!g߇ϛ6n)Cz??6#C~L=ӿIg㞻}ÿiPa^i IƼ7fv<ӧWϜ$榼j"[m;ӘuЫ:shS=1ZJxre $},AY smu7W^l+~X/rc335@đx`0 !Ϗ!k>u|ծ=𖖊;wWm15,Y-TpҽJxMzâ;m HfY}x #n:ZCŜ_rhf9tXmEId^~i@a kJ*B.Vo2|@U3m[=Q״uo&v-kpv-Sm4o/DYoj |{:{jE3 T+Egr>55oQ* S[Wk {fJ_3x0#+&nc۽[^ւ0ڏGp]:'w:td^b80NR⬕#BLHP(Hүyx`3?pֿ]"qnQ;]"C^gI;@"{%`QUѻ}u>;2ǏYjb]` +Qb}ZeŞe5n㻘qMpS3PmmhUYW.ߋ6߾ >ّ꟨Фk4Xt|d:%n=4b^=;aװ7w.evҢ\ھB&*;]i GNuaUT cңN L,T=M+8zJzheQx̧12=?&18ij|[jcx7P/y3tP-̱ċ}*0znwd7Ad=Yo<&;\M$/ijC 4.Q9D?Jݳi@Q詞I$es?Q2kQxS +__>Q<$ijvOLi<-ю._XU7:GzceaȼR3b$/"`IhA V|"!n7TiPz%rG2oVz%rz]|>+>S-!U @*=Ju$EhgK+!P6K=٧}s;@^֭mX7BXiw[+*2sd0OOH!GskD#jOדHw"[%@-"md"? +Ao{d|fM,[rbf S٬;Bў)bb #V|ꬼG,ً|{i tg꩔{V= i^1Yl/1KO0*JI/V{/wK;v[Bo[ov|^ Vt)VԖ̴ɕ[ѕ4cs/̷BG \32{[r!3oԾ b9X@}"}H50?}kevW|XLx46H}c޽QEu=UW *x||t=^[CN<ͺun)OӖ}ǝ%l^>DK2&ɵAuo&%S uhMDzm[.zm!.k9zruVfT>-ܖ!(Rz$5,<7e9\(Y_9 > +5D[OiT4j/}=QO>uLD7Qq1jX rVc>(_? L>vpx>x=zft̡ q!\rYb}H[{C~?  GGSL/sXX*w9}|%qsD5tntoqߺLn7H[#nF:f3ʕð;I=="GU68v2ğPRdw6w[c֗[x8~vױQLvЬT[cʨpssBS3\* {<<'NSgSZvU۠)~|\/B>K&$jTsm5X]VtJKu"8sz'1f7BaX[9x/V,&%88@.ed+'jf:iu١%Ă ILM[F*:bais})ih.dN6OG%1!>}Y.݀c820޴b\>Լa eŒ@#B8~޸w⻭ V[>D,L_<q-WZ.+bvyu6+u+dV~%&v9dV/ңSOUv EVپi: 0ڷ~q޶r0z_)=qPYxӹiS?)8 )4Xg|ҝޅkGnFnx䶰kro7OM oQ؏-%|'%LӢ-Iz'2]p炡f{þl3NLv;Z&[fp߳q7W֎6]Wͦ@`-^b#|[ݧp,tۘ}Fnq$o FZu}6fB6B,{~Tk(|Y.vclmvDB@vȃE#޲;\sRsV#غ# Ϗjr'A৿֙b:a2iTek K0ti؟gUڪ9F;'.PXTuٔj5&ѕ!e**; 񀟋¯I_%o9< ;3>;>EM  +޴M_kG< Iv|\թ=š+ʾ.Hl,dp7͵?h>|u' e?30گR~I!GgY񜽅PL" S jm>5>U >yK`[t^\V:d彿,-(rZmzmk/E']2fA|חHtH>NA A?q.Ugty`fy]Tʌ+m6[" oړT4PRǑOTV''ӅOQYܧ\%K0~+tjMBwmУIp7jɗj\`WCgNTժ`ii{IxG{W'wwe8=?V{ 5}[R6jS"iqzS`,l.v}`3:}JD Q)Ct=/|uJ6w}B 2@Ȝ#0R75 jʫXmn=)w> 1 ^|&1{,.tw>mnb5k3QuҏLV졗f.r=ObZp-O<%a8=%C1eYϱenF/y{P)Yo~ySysq^\imW'M5ٿ6_OTSIH@^'0-qh==XlvTaТe(z/fl#xߘU~s9>~I5*Sb ٧S{ڧ_K1}̸6")sfM;[J.$Øf *UίLa)j.?H~'z: :^aR\ﭻ])Tըajq?ߊKl>֦Ү\9/f8)Ͼ߾TRmWi83^ko]ώy] nnl +TlΖt:fD<:h܉*)?YG_2 \KɌ,ɣhUѩ2O$+feWO'Zm<Q<8ρ4(3<Co6 KIfg|bT剀&7 /hL!' +JBfgt\y';\: Ŵ ĹOhϖS#‘rz,s3.'U ovJϧټ;%m(Pn;fGC4]Ӿ7iexR涽NUr}`KlR%ҘhaTx_@Iڵ.TJ+F߇PRo>qyp@Ӎ3EuXn1U{m=n^'ҲhTSfś꽟y#uu¢7Rmj#;cN?Oo';VxLEGn{z=[b[zGĕ-Qr<>ǥMW -}?,/#)E:/jWHeGSu[ _~< O`}֭q>ƚg ̩_܂yLs +k-/QUa'( *Eb:1hh'KaV2>qC M/,q)j`Wռ^C:H$gWnuX: z{潍^ [M|J) /'7OoCpdYw5KdK٘Ybwީ{ +6(lшf%kǾޡc;ϭ^4z$נow~B`((J޴r#J/oe u0Ψ.t%g"ɬnUV4m6ӳgdh~7N]kBЛyLD"m%pu:0Oz(.ә[oH^mF$@vԲ}iVλAvPR}RRzה\SֵRD3#X)Tp̬WԢ~Z`3Ađu# \l=.mҺ]ugfD:Qs&QVl eTVczm<}t#]&)]u! E2zK2oXWgtk@vn}RZecTN_4UAٱr_ 2j~i;".m ̗/>N^"~T7Sq9 C.p +ׯLɹ:9S?azuS< .iQQm.=qI?SU˖Za?M:<|g(B" e?6T>y? ?g8bIa3{ꓠT:I>Q ՌQ($ :ګ_;1$ xƯɉҹq(t-oؒ@Ipeow7c ^3 Mz6|aa]\r>yX^l!y*n=,Dd)eW+1 gZhhwìix6:B@|i"Z-5y'OQ{X'/5W=O3~܍jgߜ+!5 OR8HC ԃ.ǵo3>^\6a@e`:BHU€Un|=Rlk7zt&{e-[an?#GʫLFSW7^]doB@ +V'@q#r' .j=r͍/M>h~ȍ<5W@ҶDэk +:zWfbrN7!P'4 RP*Q//)eεtWB[ˬL/=UxF3N,|0P7ǹȭl.9A%E5yY2 n'ڧbۧdZƭ } 0zkV<㯷voyju`MxT×9υ>:G eHO7|q׏|4}<mGH/+HDC(EhLIwҙOy=]8\qLF ? +>SmCA^g\7^AV{o0<9GqcenQn´m!|i1:Ǔh G44UzN{0n+L*-s4jZѮ׫S\.:7RE#Q͆go:3Mqvß\}81eHA;/:O'W.6-sWnSetV=/Vki5TSl wڔ̋cI:s(TaA2__~|^B3p%8"Ovϔ|X#5E'iQ}kp{դYX1,\B]g2\s(f|Tdb1}ZϬl*\z)y!n]W(v,tYQ$_EߖO٫HԁX-,=ۖ5vbi"(bA,`G0r'[uZa-N?;J(0z%PHHs{þ8Ñ:_a ~./$2^Z,bq 65(i/ޢ9tIZAÛԆ%D3]NGBr꠨%@A:hr].cQӷeɻUmPvMt^3w6iU:|Kqzt幞pސrFkK] .FC3ǥD=N{ ̛CJna۩՞)GܪQ> s46_($vT6 Trz󏽸X畷߃Sm35[[!.WG[Rҩ>ȴI6kFFfTiQjRġI @aB@Bu@9a_R-}=FkP[~4J5uK;\OOvd3ۍN-c +K^}4ugOh98{u|EX&㟵7H[&|-dw6׺ IqXΙ-o,dxz<}f\t3^%䒥=S:K}kzbkNinz)ăzCKKt㓕<3~Z3g6fg# +ψ呑j<ۛ$ǿ}{|[PxaZn@oUE+N:RFu~<cǸHCw:^GSc9%dVdqrbJ?V v6>f!U>eM:@MTYwݝ9C5j-{nsUo\p̫zI,~$Fx +m+] .]= .f/< {|>H;ӻlԏ}!ʺjj +oBӉj' @PVe%[&$ s@$L]4RqHf:j;(E{1]UdnRqB[yoEwd{H2x}#wDhCtQ|7{/:] *Dסgی-&x-r6j,*Vo$c©@Wj~Mc$v\7{] ;jAݼ}U[6vlIZ(m״y3LUA^K(4_ GVoUQYf5WRɾ]Wnr:c{p2DQQR?"vM/I؟Jθ[?KRkWkꌛb6PvC(YJwAI…l~Hۮ <^4'?uS5}ᰭ<}j;'uF?^ +I8,{tBjmŽMKVYLPnګv=#Mӧ9"fOO-m7Ǹ2ŧqOw]xHI<% t\EՀ;h wTd@qPAhػP3 ]tz(=jf7"WrMYb˺yYhy>B\?Tk&2ք`i&Cg8ɰP#P(NT)> ׉#%"F AYȠz9換jZ2(+(NJ>(e=(>(,k!hKG{$E iyU)t#\ +\U9+V<]'W5Ճw:Y)}.3U?[Fwj}FKՋE7VA-L+HEqtoEz58 P*>PNZeP>I+,,93:5:}tB[5n&7ItY!UM(2 8Y .kW +TyK6K\6pclTcъ9ų[2կY@|cM1h^Zj˨=7P!g8ʥa"^ LSM0_3wR\t]ܰ@_с |6ޘ@ҙ{_IpƆ:EMv?sxznc`*)Yuwx}\VjPfGs +Rp4AA%77<]]k]f0zkA5vm.yR)1&>|{$lvJSRܓ/N6 {%/$`knŭ >wlSMvs[_-.>k$]k?F8|D#~*? Y&'i*+&ߛJA|?IX&(@rq_;t%maU/6ŵ<5CXÙa`Se5` +5.AU?toN7d5;")*]B=6AE@Uv?,א7R0_13nvqCpcF(^Cӏrߧ+B/l[hh %/8WY,0G +IWf WHYI"ZځA]Cg1O•4-z4.nbtfOBl~GA?{\ħ%gqROkҶkCm-jVlzbMH/Hl91`w)~ ZϳA7-w#.]2xi97j*x}$XEu&2gnRO~ѠQ[uu@F |H85aD7{_sr;3%T}fn^f־ox Z>*{MZMS$N :tt>̚ zn~oݖDؒ\UlV-?S;0e sr:/js56Sz_@QNu9ug-V/mnZE4mB7op1F3S+A4_B<{b6: ?X]zxwo-|cjGG4,4j}p,hN^Lm8DY b.>{=U:sph/s-d{}:O):a6R3.7`;yH"s_k.Epwm~k+ 7Χ KͿ8p@}}$输̩]uvAopM*." _Hk*a+,''].`ٽ\.q0ߦFZ+=ݞ^<;4ۖ:~ܞ F`#~wr/BԇC S8@k ++y T&G G_Nf=֟j *ܞC'GO53_<~ +mPj*sF[Fy].U[>Q)wͱ~7}D"9`;{>m26sQ,v<NUkoJ'`q8K+Rcw4z-"VA0E/ivlƞl}Do6[CS'9z|dp_)) ЍKbIO;it 59X (wɍ>Lj켯鎗jZ}d$hej1o}Y*V-Z'](7*P~)RUqYo:Qon,t6۠ i×0G?yRcTנQ筃t5J7Ai +f&2K.Lgۗv#a)D^|kگՎP`RCr_Tky_)Iؿ<(:QD \"S:AyS +:MV 0|l큵I~3%5UQ|Ɏ4Ӗߥl-"QaiNe, Gh}6 ;Y}hߦcK{*wlwM,WW^F-ȳ=\$|f I'ε+ (?uz5O}Lg\&¤.6a+kzYdOmqՙkUZ J"CЯ ~W31LۿOSۣ&=b{7rL#'Zz;,Z=!jcBDM,u"]Qך* V]<rq xe _`wll*j:ArMhs'Fikx0[ +'9N >'"驁me؉"`oR?$,Zy}:\τ=ܣ98&Fle;P}ԋ9p53x9iؙԾd:cıǍ̆?D;BҨbߏ:̋K-8r_ug~&06UCCY|&)`Z{Rg}ʌ5>JWuS|V<';E?J- P/%'Ns24\Uvl.v`T9ȩ<$m]B~)`so/IP&_t<.7}iuzM~Y[_9friRF諽|WĉۥTz}I o/UZԘ$f?ȇ +=fHE 6Ѓ0'/v'=آc.JJq['|[^MccIޝ/]ӽ."5%=$]9 x$\r[]HFgMjzs Ɏ\Zc/{?l@Kf~\OyI4du`/ "g +/n/P:zj NNDŽZGha[I[9?0圮`YVHXъ߬-IO :1Wf$z"#jƦRE[U=$6U'Z)@aF]٪XJ?0U{lB+KQV쇞R#3>DIvoAhPVx{6RnzRkYEb; +D087ɠhD[-͢i׭] /1[9s‚u$# +M:"{7M6Yh[|MJQ 0Of]lHI܈yw 1{lL*tc gQ[.J?w\`og'.Ոފ\cdߖI2G{!R+"nQ =&hnxS;Ҋ;_yӏ#ZSM=$M5[Hj4>et9=w1eAw<3mnmT[R'n@mbT3#J^k8)HB Zgr֛)xIBj9.g9Gq/ǶVn*dє¬Y4W wGsZ4Z;z?Ŧ?wݝ5\o†آ(y{1G9[Z>wtoسuܹy$5[_'>5mpHѨ~.~*]pՔV ֛$ rrګ&ȠY i$yWܭ8zqt2?~\ qS*jкxr4>`G /&6kN-Ph6ԘzL=MuiH;G O~CXbU+BNq~m_54{v٤9eˬEusֺDZ(1i_Z7fJjd:#bql~d%`ʲ~In#=liSV2aYF#sd ϱl6} +݇]Y7>цh]"j^?G9[Ξ O+f|ZVE^bB=Ml?*v7]=+uܠVKk%KWTE뛤0=ێV,[ 1~L3 wV~|sRbW-,]n%Gۇ"X 3/xwp}Z3<./]ta1˕݈ r=OYR9T \xJ8ݎ6Ql{6v-.pJdabڜe=}ri/Lʛ3pU(='y{KGL+bH RI-=栕ӎpN,G%,ou*['q{sZjr|3wCN]Ru} ='1GPjsĜf=uZ̷R};^Nɍb]|WO }Dw5򟡹 $siQKFVz#i.|:azl3)xxg -Yup9?>& 8e7ABm}.IN˙?"`WO +3 $*JΎDݽGwvB΅[zuownb +KƤGJK:L U[\gÏ=6%j)hUk )O;Yg + wK&Є+57[;[i~F(, P)Lf|+\qgkFͧ-uUZfX<̆>0~ UBbEurltAu-ۋA}?i7zs\#d2(dpO*nogSju]MѰZL{ + +h'Ju#wECtw ӔV9|3Hu 'Q)a֋} \ZLsz=k >\Y5hP`o ~`mAYPr杨3[iY㝴q(;>-M[M)5||FmtYauRLX0f iTu{ i 3Z~Z6M;Kq&3νB3'`xZc.d??JbY 3f-AQIeoRphZr'UQ%zDݟbdn]sx=iG?]Pύ9uTy;k#$篣Rw_v43n3iZzF-̚x" >XAPQDZWjV7;Jy]yúRTW}&JmֈP2\d ݿCwRD2\yabc;AWGjDboE>d{'DRQ\{f{gP=kŢ換Åׯw(/&H*.Min|#3S;Ǟ!m O^s]$>]$Rk d7{OAtPi iÝu[];i@?ǖ0ы! zM؈JPL &͙aҴf+F._qAIgy.qolƮU +Mi{|MƜ!zp+^kC`gRu۔L0(5yy@u,Q c +njSs݁z#r=tamtP{؇ڟSMkG/?@H`@,u +n`cpC\\ +qX°4R@H @Bh}ցrl`ZCgSP]P`k6ؘ.COY䛧s9}vf8JRڇ3I%9wVz 뱲#`6oR\&^[k@@sB'=DuFDyTwvyT2mr2Colx^i%BU Lh}~ 4]kWOqٖs"WR8Oa2=Իw@B辽AO_ÍTb]d1UNռeB. 7 +P{me+0ջU ֧FjAYj&[HF֔L|Ao;z{x,?u^5[`٩6S m>,9hW1lSxU5|y^y_, wR9_E4H|}?[SBUufժixV99TrYԜaƼ%_]Cж4`oPHuPD!(k?`q{kWw"8{Ofw29nh*,CZF9Mc&Rio:L+rslI;&gH'uTG~h͵:=•6%eġw}7|:U/hN)(hǵvZ9ΎnZ3LUj=q{q8ȕbeSGx枈} PTaT=;_3>Zzczv3-+[=~fRb[#ETf1Y9FkLPڜ8!"~dgn޸00FbaۯbX `6 G!ge D?:.ᜱ?fۄ2:l#րR5L)´cFkb>sO<'nŮiSc|)=X}>SQhnҼG4~rK+lc~,ӸjByIOUR|W8_m.i^)yJ'GX*T +uRi%[Stzbp|JiVR"zJ7񞼝]}R» ${QG^Uf[`dWW+SYny6 ``pKF(]*j;=Ne&&@MWf'J}T] +ݤ7Jwtume|sppOtc*UݍþΦ:Rm4OEVKoM\u&4/OPY d"-M6Qd<.)iٻ.}ܺ9vާQ'L?@X;+3sF_._{bVȌn+;nIq|"VoKez@zTF~4AQW݌5:<~v4nu=SK;![6~3GcP⎲aҘ[Q +;D |1T)=.+f/*6/sD5vΠ2vֺSK.^ҧ߀y}O{C5FkHz}$$2ȀH$&VQrs +Ycrj m >Y$p@͂d9>\pv 1 ^Jo9{ld>Ȳdi֪ +ڐfTsarUN + MWz-Ryrrʀb+y h&A֓q(Yzne7rӑ*uYPdopgpSA8$YX@ǶȮ^`|{`C;9/ȑjp%(_@$,ؕWz-AyFѶ ww +RI mJb1(E gQH6HF@[7k6܀OΫPG؛smbCoߠ" +t +*""*v(aVw}OkD\td$Q]-c< +yx6h3;?obS60]5(T{vw,ګG蜛'y] +y_yXL1;I2}J[Fg7_YoqZCsHtb'AS҃f"0'B4Je{^ezlxzNtXs(4_`m1 +h亗~pn=!>{ۚLa{̴6=]a +(=m7d0?bJO?V@Ql_q>{IK b +%}j7Ϻ^,kTf[3s5le:wE|޲Eh}nDF_H7ITKr5>i7s$R(VmFk )gR/4|vo;}9M+e6z% %=y BY91:F&Vɨͻ]Et_:?Q nwg/noz_f'rqq/{R⺛mf- +TSOazn55ΠVY}̨`Rl޹Yo$mlI~WPH,t ̭W ,^<-aDwfAkPKe[49X8;1Cv*:ɱbV'uS>'$sPH5Q5KK7F]Q3s/zt(ؗ=K"qieX3Q[}ݾUv3C49Sͤ-O|9w7ȝr 86:==zw櫬X,7Nipo*;cIֿ亅xӫa\&UYi 胾ɩm{;R'4j+ެZNTdϑ('.fFZZL gdu4 F4jq.<lmh7W{NO,=5bDvw~@tcXWZURY1s]]_د3'Be9&i[5 m$ky h'Wү?jpwK/Hj^*KeUM^u[Tn[X\O(v^ut[:do}=9],^ZNF.zk+-3yw} z J݅{iSgHeY]^Ρk1mӝ. 0's+ЕC}('ےllRWXf"1쟤F+XWCia!|.:x0Mޯ##܍s>*~N gm層mhm,mmqPE6v۱ohlt^"|#Tv^*N;7VKö֘,rBA}h)4:HVD]%Ɣ[tˊ7?',F2par7BGXK͋+ sаߌ&wLS24FSeF +6uۺ5h:;UZƷ\4bb}ߖ +خ$}c d/r}H贊9N:S ΨU +>+ըlLdr SA7*KJ&ƪ' +с)6x|x8]EfVybb( ѢYQg٦ ~kw@Q).3 f c ;P4 e7ЮI`-y6`Yh"1:/obqa&zI^HkȨd i"@ +<͌XZܿJ&WE} +`{SP Ih>(+}1&\5zwu%K{̃'@6`2mtI^ MuP, `<&Ӵ9e0.uGZ,=gc6+H2u4# tsx=Ј7 + g3T$3{>>ԍX +"_VX A9]{H|&rўHH.>"cߗ=+wC-Mx\+z(V4J@z RbCfp NJLD&#6xnb,ļ zEaҟ1G&N ^2xdhyتDUfq0 ?> +@@.$2c7t-S]OH|aUB>?BF}00n߹k\2 =1mx)"WxI;cr>ss[ls vk=WLUDgo|S#:s4*ݭnл_ay(0yOZ{pkL +icH伲93[&.BﲫT^IJ?[1wp,m>u( + #q.._Ѽ;Qy63'+ýiW51"3Z[`iHXGהTW![ztCruѥP4R;犛JMjw|%OZHlm+>Zsuqے̨u1=Qt->F!Tڀ~FyͺI3UY˩nw|O%`ӽ^ݑ]q ?\5δ򥶏h`/Nmzz H5k{_D(L!M g LB;~w``GWBSUv̺qEtnx,mղ퍛$}+M@T#) +MN9DDAauqE4jѻ8{;>8F]+2Vɝ6Vm{y(]0C;hS,KdYMEJ,Q%#iKTPi\D{'I@$Igqob㵽L.aC\yg.! hawu ;F]z9ZƃG9S .F{~-((ͻ[AnXg:T a@Ùb9I\^a2"RvW'`޽sFc,5v\TXcfӈ =:zl.3GƊ3fM %--VHk ՋZ([goRW.3a8/:蒵dzAzqvq}DI~ebxo#9E*Ta"w d#I!cڙm$oq~@6/~;@ǠpJF;j?C_kxZt8Wn:]yU8mмZ'-n{8;xSb*TmR\BmCZWX)sj=Òf.d 1x3n& Ї +JUT~,qnNX'/}66u#sYsӻhc?!MzTYRmsz +ҫd-oS|@ʧT&({%:"限٨B}A+??Gr+w};ѷIiDӼ6.s&gC&'h3?63bD]U%;Q2$?4 5w:22{D# +j߫7>rŇZ9[̹j&a\Yf网9~پX 'Pv=nߖYeQnE% BR\Xa2߁X਼XQI28i  .*F`wz.F75 rvxꨶ=L(P}Mߞ +c>w1_qߌ"3?-eп#I5(zW=]|-NzO>zJN swc#!;Č/rOy{:ҵ̞$QD_yer/S2.v.-ul33C +GZҖV6(Crsv|;Jܽfo|Vx]sk|VlKMST]Ab:AQi3h"š1,k3_/$s4 yOvlHq&uP9ۻjMyjVwO,@}(V<=vHWE 60bQ'`Jwj^:W1|eK'?\ܯ8ѓN]{|t2dvzg놳q-}U` _3v*RSP4/5|"-Kgf?Ӟ}ez'CPhvumeGH ]pzWa:~-[yp;+k(W7rxV_T33ⴾt Hcb8'CX1 0M0wӳ5 VHvٚYMg}z}.(RK.PoyE 8&:vr[ˋ|>]vskEYAQSDW0Tm#sl>eq?+ݛz>MKi:fėʘMv{7NOmŋ)=Blvu;j8X0} Fn}/Tnt`Zl_bSG%c%glKzҐյ{rBm)nT/v>NOIij=L +Fb#K9 T.8w.G=J.ǡ{(H^PDvܹ|&=RL<TwNVÝPhuUE:K{j)&[ޣ9[)gh(0iPXD0n;F3J[utU%M0j[EɵF4 FgRG\+փ0?tڠfḭR%IЀLH=ʩiGe&3/h cf>h:jR_mJbM$3Cjbs3o*_ fUΡpm.?[&LR)&wppհ +Pj|Z4ϽTұURη Ba2Rx+Pw[M^dDaJ'ž{1:Fv1D¾߳,\O11GT&KwXohN~l$3T_0lAˑ + W;ɶ[FOlDww L"AXGA̼ǔݗ-ĹPO_63ϟg:i4H5D€+%˵~V'k.'sS.[X`YkةF_>ཁ̥֚9Ȫ1=9u=-//7t޵ T_/q߿"iK\sRNtF,s!&vzeBSbyafJJYɰS=;SBlӝL|z#MV,Uav4:3z +L!TN Jie71agG#s6v2xF}#|9 դ;ԠE7wPĖ 5O+}$;L.KmYԵs!V:9ݗ6^kK#bO(zQ3݌Mw< +fo%:ۚTЩpqL>{1Чe[/jg9uFpNͨ6ҡgOc7)SSCQ:]02DJ&ܕծղv6ɵ{C@ +y+<.x?r5'gY1cu .SI50u 郓JFq]6+GmZћˆqxɬf$^%GDm61rvM?NeH>~@E,T۹Fpߞǃﵟ5=}m[_^N=g).VLeӵP{,զأ))2vClJC0i hx9OBpb"Wt {2.]w_ӉA#A +I|융E#:O/rahΑ] u]1?;θ ==\4l Z 5I]C??!ie9iKezro#~y+Ve33wO07j/&{Z\>w"#v\Ⱦi:s(Sm_rw6Lv;[Cìmdm]uԡSo_,wFQiܛd)p*aAa?[":agWVӋL ǭ?D] 84@revЈ6~n_{?V;ʅ7`J/{GgOG +431IrDuI0$L9?뙾r|݁\^dݾ7:QۈGQٟgҘ:~[ a]eL +si׉\p7.4TAwDzLEzQ +>-w(P7ɹ[L>S!\m!r r*)o&~rg84K2v+jfP%@g i44 Np)"2 + TA=[y$mwEM@^?He,N%?Γ{Oq[t7 "M4( kCkn,wc~7`6̦eKA5\HN'uȯgcL&nҫeJy +:Jj +-/St{xNpx-XUg> YkQꈃ8vy2Ƿoq _TF1ESkZzwj1oúx렰+;!7C~ERTRk.@Pbd5@]/<1[FJ{_PQ gsc5ӽ/wl-և-k2.a?G.oܱ 4u.&=BOP#]8@Y'btrze +JR_2zԦa穯 +kj)qTzrvy>K g#w?=V2{>񟐔"ѹ(莔T}*KVUv?@h^ݐC~{9?OO{8᭖;dݓJR+eMN}-FG3I~x#^gUݪ{M+x|jQ;W?I. CU+*jhb}{,wXeϦYM߾|vOZ?ȑ#*`Jb~Vo']EK𓢍GeA M}wxڽ3\Ӊ\70Ɉ|k+3֞nG""s$?ܫ 4)Qu3{p8lJ8oyo}ijǹ~ͺk6 o/CKԤh\fqve|QX9erx[x*㹭_ cBRG3+ oR@`"w^oyJ4HJDlN;25/GqQKW-YRvY䛳FV*nIHofǞg})EtZ;I'Inɽnwo.a|po백]<-R՞8HVo M=;ig;G=ta &ל6~tiSP RBҖ*4@Q3f7wyzߎ״||{qIeZ +goț ĩs帚;| +S AVJfUCKhLzBvƣe` / Ip7zHvb,;擌u[3Ц83 ]tpKVP̲W`st0z]nn]N }bþ <o:Wm- 7`IV3oH]ԢmЖ=(rK*3 m=s-]|A$nH.,ݟJRSxB~ҖbRA[fީN:-(>֮صew+]sq{ +endstream endobj 29 0 obj <>stream +z2g}w{6fף?])҇rvZ2ǸΕ87 +=t}|<NL]I bb6鳹1fQMh@& ;p^b6>6IOQckhmo7zeⱑXC7T|fNz>9@OEYS@Xn1AOؼ,dW? 3S o qͻgOy{an;$CA퀇ڮMmpZWOg mbxtgm$g +ƥ olz`xfX ⎮{^Vzhq $w'$;KFwWU[</Qm2_,h Yv^o*g>w` !NAoz%.']{'3H/Ouےj2;b'<_=^s%֋!pkrWQsiẏT2Z*x!v5^ ṋ[8s~i>wDxYɢ4faV'^uz j+|8 m@jI xBJ/xY6gb m#π;+tWiхz&Vqܠ|l˜~1Wb f ZC'~XT/l *ߩjl33Z4s#IE M÷H|v61o:nŃo7mW;IIoTv-Y{S},ӕS9x=*'^ucS-:SGhQxm9o ݸ31={Ȥw]).]HH*:0xvVhɃu ;fZ7tk~nb5_n:nmp_KN-cNxo.6TU~ s*3p?Tke&ޮU{gR 9lIψ]6R:Vgc﹥҅^ sVF +wG1륨85k{_aKLK +f}7l8&[m҂]ZzCB",O[+k_[nNqeޝ6/⼭Fe>8KnfYLh-7\ŠdpR+ I濓$3d|l$l%k  <\Lz9]\I;&]l^>aiG{)X;6 -:&ۿ Oswi$rg-tʾ6-'.OXw Z =SHHa~JpqR@$]; @}Jp١ )??ǻRw@EfHn}<@oddp@;h;Ky? #v~ }%8YGIJ`uyI!EA4W9Jf'H$yrH~us4l&l`I5tS}'ezIWwFhN0 +dq(\,ncC%%I_ ((ʯ*<}x@?&?lɳ/~SkmalDTج +йb0ύ4]`^IjnZoP:xҏMRM0H.+D#A]? pY-S66%YQC~{bM|\~/q]'KKϟq9dμMbT{ظmRR>z<}tk: d yL %܌I>{!yDgҀ@31 .,#>Zޞ7gV9\Q/TfSiZJDx'2@pO|gJ>ͷnv..h:.iY I57Tgd)QY"X=7?ݧr뙲obde>}TR݂`nxIz2h1ݓXP{]IYtO~XnZf Ͷlzڃ&b??": ~u:wj'zbӝ5=[Ӿ0l9* +SQcT]7zw*L%({=PFWTޯU]lb9/$I)t٘,ALaiyI+2inZA]J$]S󐖩5Xx ۃ +%*־,E̋s&VīIygM)?۫:ʎ9aTZ2g㤝zů6pG!,|y<j> Fpfrӣ}ī+I㏱ӣ/$u)d[A~{ GkM۸^IFrAnl}^;ۇ~іh"%g!V5A Ke)}n~^NcfF$2׿qPSϔ/+'R['xJ[\ec635˩Q GH6mr*w_ּMoqMJWĊ &U SV6.j0I!Livm'b;ˠ9)rٸ鴛]M-^@ì E l/ZO]6ڴͳlr|Ù:t+6cڸ<vcAFZNz0)ٸg7znx5lZZx +C +d晞ϷygϟuވᘣZnSEbBދo}=0Nڰ* +y Xe*jc uGu[d.8 j>j%!)P^/FՒ~@{:qNh9=ȳ` +ՠGXڌ*j<]%l0n]:b*l' b>mZ~P): Fv賚;ch^ҒT I]b:NZ'Ǯ`ԅ궕RF1h-fq]|Yq=-N`|&y2,S}#\zm)tRv6@un;-La/zRW}b`_xhIn:~.:񃻨NzmHGBF^ce;V!t%EdlxL>n`B|fw)l+uƂg2Y~8S,‚GͿ'onUo23[R}Ax*|3P)oVՌDR[QoN~|ԟ`aϦ׭\oo̳*41>.bb[‹pל}ܩIdZ앺lin%="ZNPkFLcޛ:ӗ±+Tq28?^lcS&my(;&*s]nǦ lJ<~v u:} +luu`uO7j U +L>y?7E '|;Y7A" о&5 +UL0&8 O5r̻f TW֞4u0p'_H*ͻT- 9uV'0֧C@[;fQ !,m%޶O-zeϤ ?&[#yXyѻ^N<|ʫ /+Q俐䦖%Rihm_g.2wy3 rxf EO3!Q{ }mխV0w԰\Do os3Ru9/Yۡ/ 2 _ ϩwߓ$zMNӘ2jfh|y OVX&ȓ95zi^;IN}λ0ւq|ϥ+s`UGl~Oy7<-{', +);iYDٱl[v +Bpyq} Yz_R^h¢pqW_e S΃,s!|QqcYHSz+}E}_X(c!BjSWc_'ezD2Op`(iɜn[fU1>A+=]TέCC gV8?UKT3~()!I濓6ըdN1ׯVm\VQ3S]P90+:y¥zߺOFC[nm? N.oŗBRJJΕڸ˯j}*/.fU@q<υ?}+ři%k tTgAnÎ:ܲὩOZ +;go]*e)d(K[|[']C51.ɺٺKhux!F * kd8C{V+ +S*?a.h8&꬙w =\尷h!Tv!6BۿpeJ|}R2"# rڤf֏Dw6*EZ)m[gYaۆio)`abUI*#'M{p]}^߱t$pNʃ|BRFͤ.=rڛek@m'qq2jŴDBv!;y TptJۃ:#³*T1I?$L8(f8⣳Cqdr=s: uOӉX6]nMلϥk= ns?]c9 yem5*'iQ8E%YùVHid̲̼q_>{jL3Q{0=6 7)r ߞ+12 +D1W05 +GZR"lMjo+bAͷޓHfkVcR(Zq9#/']w1F~N[&\BRB(n1rOjUp@]x2_0eq gO漽;<\3ŘEu,: (ܱ-P;#hq~{v)'Bf?]z{3qW%ׁxQ,ׂv:rGakuhYOu`ip~/n-8`ac7[+='*ͻ }i[-O:V z*v{ߝ +ac !*s*Mrጫrƙ2Д(?.F=LW݋F8=N|ϲtBbPoWl)N)}nI=A4Zd8 }"}-f>5%ԞoU[Rffj85vmWƎAjRfFm_omޑj<?vC}Y f/ikކO>: eTr~Y 邲HsR}_~Uz|Jң +BsGS0tsqv*I>gǩԡm=w2㾠S^jqټ^LQD9w55KL+sY*LlT4=OE>{KbJW (W(i \_P+]{eU,܍xCd^Jm-ZM4nKZ"~rejaVGH;eқKY݂gnGj5hQ#=f1ˬn;m2:2Z2Uifz]$w"3>_SiRzl÷ ߜ{QnaUpϲʙZʇGQhaiC)SW9 rZ_䰥y^YdslI4՜b n$x O[؟ sVa*%5Gc;oHyXLe7e%l_mN4Y2J`LCdùݎ+JZ Y4xRuY괱^V4/[Pg^E=4F-sWW[pW39:d.51w/@< <܊ŏ4*f P\dhCbWdMzMAܸ$9<f 3P)㽋zˎ_[Lm߁Ӎ,:N@ u;uQ%E5`UONsW3':Rs(@5 ġ<4.T]\׍ՉJ}9T}lz@ ɣ%!Q*?x>[zf66$7 HDe#`309 u~f&(BUFK;'|O M8"<0>".poŏX{<IfZ *Ȥ$Qz,g/`SNtJ.'85%`w%JMC@"3Csdvzw-b<&M?فM(q:?Hx(y$2,#;e8F.{&r~^T|tk?;G>Q;孼l۹7aI.~T*H_:: ,z]윉fIɇLmU/.|:oL[J4n4<`xG#rLҫ.gt -;} Ɨ}R..J4@Gxs:\,Dc,xRS7cSP +XM r;bh35K볨.^AY<xg;-U ój\`O\ Oۻn^QLXA`c}#HiY?HrSKtZ$/,(ԵO nz{ =gkS%v<'{yPcyyLFikI+YO;i4*ynK۫kD kn^-pV&JH#wo?o>8e_SR%}Աh{:~]r˻Nm(>N̕ꤳWnGnommhWON +7ty\IaD)F^ф,>aXg4uNqWr@ݏTˡ+̛imC`yd6S(F̮^K\X4vtiixFciDvu4_H|\ia@jxvכO2/{Q| 'ZHL_P o=Uw7 u6Q^Rf9<25iRhf^Q…Kor wVł[.(BRDj0ƒ\̾oe i#\ȄX.Y{렷!ɶ {7Bw&7og9tDgc weh +?zތ=FTo*90,P?r.6/+g]:vD׆oY-TmC:-PV[YͲt 8zYz +K7o.(GH}uy&s],qZ]>*_HQ@Lq3xΙqW%joq~_ 㚛>I"5t{[{M,vE'r=clܢurL hС+-_zbg9R%":2Ԥ:cšf^?ɻ lUM:\qç͌,?o\/"$ˋJŸ[V2}slYbE6Cf;ƢinsXEF8yc03tz uI3 {@rAgMN;c.6l1rw}o0~3B> 9?9y}놬wmt֟Y$DѺRgci<#5~cZ=o[as`|={9J=s&*-;ofХ2H&=*\L陏z|ȋ6NkҎʁLi2=83S賓Nժ5 +{AZm e2of9ҝk8\֝5{i* Oʾ!אU7 +|#uV@P#^M=.wIT#F~y5h-GCY3] ˢsn7?)Ɲdj2Io?s?xA'L4Z"@y~Zx{׽}֬lN +ui!#жZ, i-xׇ3O#M@]d)KؕdnI+OIӛ"G 0e͞@!IƛgeM !>Un={EWSUT/qÍw;czCwޤ:[Q@L!CE~ޛb;/w5bg2-S%:*ܴ[5~+~Ni=z# c:/WFa>c {?FrW-N&\i"Xj֣yf|4,g7fo<ݰsB&ٰ ޹A޶/gm@9JͿh5|Ԯg,Vh;+w2ڤVsTOۦa>lkXqݜF~upR-k5-7gd{ڒ3eI!jK\T´<$ٖ7\.ďesigvye`d`xWȆ4,".sqܪ7gbqkFui/U}Sj p*T)/V"VRުӧHYa&>QB: z ~tSvZ͎BnUΚ\cy +,+AzMMg[45]i,۰~/H^xjVnuSi;7:B]2C4u:?l-9=b{5*޶R5fxɼdXn!b,krVc<|UwdH+eƢ JQ5-PV(W^^ҶX/r/4^ֻ3Ph 5\Ua. N? =#:Կ̊ŏy7mxyUzy8tK>(rBKɵL.2̇nV u8?I%v1qc9 _,Iq]u7,~]/:aJ֫?']r:.E 96)lAY&L?_H{$RI}q[+͈L6R/YOK#ZA Oo#k2of²w1O'Yf ؐ:/Sc=7v٘"*NfhD q]US !uÄa'SEk4 +Vj9uCl iq| {Lp =Υfn th*vTa"T20<oLdF~TF̐1W'2QT9ZnG2aES*}P'`& VzmSj'vMIm K1`?ɧ  Iܰ:4 {iGڤ`'8%ߵ?k tn ɏjeI?=zHrq'5O2o2#Dj %R `B_˨ n9GC!ϩXL0Ji$s9<\%8%?nHy0;:`R/֋U +1j,hIu+'Ϸr N;NFYi.MFiBH9&y '*D3ϐv""(.-|eϫ۱u\pmE/U^*YRB15۝:}:?)XM;5w^W[9=36%Rb.@" Գ8ⴛaܻ?f[CGEt`۝G+ޣ(4uH,\ +//tMT]*7 (pìEIx xыX|_|w>3i]~cPGꫴ(˱x{o[˱eरT !dPyEp +~kai ~S˳ȟ PxAG 3!ֻ=keuyi:ouݖ +KGڛ(Vȣvg5җ'+AW7WZA f_X҇$y"{~&\B95\!}AurI蓊ֿz,[a](R. +n|P7]3kwP̒U{u G0P{L7-_VO6YF/>O@wYkknv<:'eaN͕bfN}n78YXC%vOXm9P'鼣nR;|8DB[) +Nj]QٯPck@D0uP*,~o%{{PWȏ?]XͫGesk?E:5bƬ`i߉dqυ5}Y,hg}QVtKF:[Ḟ0fu_w9bQ~|Z?e,:yvĭ[W[yfIHZfvěҥzfkAag8-_2ojGnigCujNtg9Jc M ]]Y!*iƢܐ>mk8Thk=?]w%Z{[ADQ?Uz33'C@#b \|Cn.p`OL| +])l]xON+s pfO N7杫. <3{Hvn΃Cp( 퍾[UmKdr}';ջmT^^n۲tk|:C/,\%ST#Rf}~;3]ϯ7hL̜_L>L~ʴi#F{d纅1٦+.%V&e!}kU.Fp>KGr!o$2q{;6{&pbvZ:Bk +z+#JwC_o{~?ҷԧdZZt-Mq>W>ş@ ,ScU]62ee sg;ۄ|Cx HwVT{Qۿ^ {9lm;:l-a74[p*{_Ⱦݓ#MO#Fq❘:7e[]VG̢cui#{>F7yei뿸Wk| +޽v[ޮp.DeIY!tY1 Լ4B;'@br()YR2y Ƚ|'HUqoeաh86Ca(m/w?ρ6<`^g?h}۠u_,x;Y6J\>\ҔR'w"oj|ڔ Ċ7N`D9~5#ua{totҽJ]{ +|a{oĻeq^TEɌhQm6>@T|]Q;?P^s.jMYi->ʝ|":jk6yt7+͢\G.Z_k5Cdb\0qTǍAhyq`ՉS{McPձmMKjajy}kqm4f{ؘg>V1bO "1kWALT@A\Mp]n=:V7ecҘ+c+E=ߛD\^퉔UtjzkT2PT_6J_jm~Mi3dx%C#+h KkK-~+}T{Ss[[h5Ҭ +U"R~W%JK& +.OP~8 tbG|t7~!zOb<3{qjAsVPlBRPT..^:D-/ax.2rQ/ׅ ++ʫ#aDZ<4$V3RW^)Sh6ɪuKj 꽵Z޴5\oy2O?RygDdD*/Ռ"}:` +Ê2=$I-;M?ŰT @ +Hs/Ă]spArmBD^čm|b:JV}) +J۳R藿-qHn4*}KaJE1!쥜i`YKSο{`v? ş:''x'܊4Ví)s|ɨ`xUB ٤8Yo^]J{4h?k!@OI@$|PyL?ʣuO\&-'] YM{_=n3&_0=*s)MmV)u585Ԃ1>;q7w.kL_U 8DaE=F% 50^KW=7(0 )K')?KIn&G`mO`>Jf\hw x~)X~5- 7rZK$aBW{zǷłOǃ.{ i轊=.$5t'5 ZxuSus$M5b!{5~#ZϿᳺ=vh|mc=}#N, IGѝco&>IyK+iԭ:/#=N[ rCo .Vs鏤@xbົ7Ac1]{zn+ꀯ sl7N?,ldT vtvn Y^_u\Sr%?]GHɾV1MOa~A(ˢh.O~&{szR@x#PAC޿(K=Gs[~}fUm>FFgq1&UgbZ{׋qxtǕYOW#8]f]f0KAK;$G4ۉ`8RLnYX)lEYM2:d٢əNO y>m%c-e@1yΗy3NZ>9 +Z y7$EJr[fv7UgL(P7 S hGsB1"sЌz.F[󕥞 \R`&ߜNmכ#h-%4YiĮ,&RE*ѿtЃH-d+ygwdȢ1|&%Q ~,ph͈+ N?8>Ͱppjnk%0xᩯRl~pF.cxB] + ì?t^g#%Ipm6cWO^n@*WG{Sf{XhtګB__z7Z֤.ֽgdʽ{2pv`m!n,Ŵgk7O|5fK{Qv2}2FI^Q"VKozuġ~xa:Зfw`y\qq3^u?ut]AƺAv/,gՒN?[RBZ>D^دUƘ?.aWi3d˃˝%ڿ^|(GuǙ}7 KwǸ%Nnɵ}s<-f{tkU(nzjNPGoNƿ1pGn278ꄓe~[ vR+xU7Gm+pndr:rԪ֦y_F6fXltZTWpvW> j*h1jÍoǦS/LTьEq+ޚl0RЛ#^^CӉ;Ġ5^g~k[Taܫ|YKsb|m[JNX]W.?"^Hu8cjɥf7-цP0"<#vW㲝j*|+qҧaDxVJU*6ǬXP +e_Gj/M@.9U<瀱2RH,ӟAEi(Fq߻ŖIFlUodrIE.`0++U;Մ+<%8ĵ+J4P| z]ijJrf3mH +jKv=υ) 8^h5XUڳǕ݈J}-B{gGtO"(NN+IZyz +Ʃ5UH*W3Sҿ8TUKDW/>_tx.~>(W!} ' vğH]v_$,wD'8I,j +MS>8[򛢕RF~ +eE}ѯѴ;Yv0̚HQ'OZy @`5"3k#Xi|cO盜Փw3̿TyUl9(N.Enoˈ<^`ڙGa(4c/sNH%(X ~(;90y?W_=!Nn ?ϡvG^-X7V']A{oklpǽWEnwgo_0}ojhˢ,b2vWR?kjMʛB/%ZT*q +t찺֏UQ[y{tYaGilF=wIRWS-ƅ|4`LÍAON9-f{]#86v$~a/^.z${U{fuHRwSóıs>zݿHrCWiLNR11<8a |NÁ[83wzΛ?6{7H>K +ɿK{DlR__9ǎ [z/h:y{6^Tv2X*4nnhJ:(&ƶgz+:MaHy+=[ +L ͿHkE x2;K K99$Xtj4on%5/3[_Pw )YN;Tm&KΜ:Tz=^FJTW}urulx3%==7  +$  \W_/ʧώ O ew]0`E^cn%v5kv˹pC +e8twz5 v90r의pp\5^p.W3<о/Ĺ[s,[C@ӫhj~g&~6ZSBG=,QB|1rmQ X03HVoj'ƄFQ${+:sZfF}̌~1Lf^egl+Xǎ~*\"nbq4Kg{5hUStʓ[4[LɥdAs +r&O\m-Bp1e:ӆ@{|EEÉR#H朊q +OHt c(Ż塷&=%j0^wmk %= y0P$5Sx:}#9Y0=ԑ*"oFB}TAcfv$\=`s_*(W;"5;ʶ?b?Kŝ8swso3֞u \UOٰ߽ƞ 0WET|^.c[VHF@/n߈zj9 +:uVFC8$leT6^b8:8i-E| ȡ@e2P>w m%yļ+g`:G[qv /H;^Lzm"4 +Īt|z@,gDy0Q1׼{?^l *m.oTAyųʇQs@_7dD8 )_i  :1TІ}@+`YFT Ds9daelXSp߾ AQ4+~ cAÎX;FgҸ .oD92ńUGϏ$+K@0tQ"ymB5+/َdUޣD`݄KT-E~0r. % )6x ԠO,){gm gQ؉oYp6I8ܷvgV5EEv) ?.۴S7a_<*Zv Q;z ڪ fFK]gwfNµ[:R#m".*-NMI[i%ԘkFqvUX_`n{>;B?s!Rvi.YBMT>%jCi h[=}&j9n (6,/P՜ʥ +1 +P^esw +$̲?o?WeZxP61c|k)|q)E {Oi?} \ݷ6lgw.= {ѮL8[rsu%>ɗ[Y"0I('mN?{ᴠϵ03B,Xץ,]s1_kL8nXWL;C:lo*V>V*9,ͥu wF !>i `h-oR >])j{&mߋ(ٷR5Pl>؁<)t2n +w>-'Sy "]1E/2c:w7`` xI%!K-'qBc BȖQӸͨ/bc_;Xׇ0~ ֋; +G})PE " Xw]ВhmR +k/KSx wChv[ѫ6߸6,t_1X' /-OپQ`3[bSv +YqW3I}'֫r' +n6"+|F?X!NC:)= UHYvCh +1I.Rb)esM ^i% ĈG|;*)>?TGVO~_HI㵴#0Jz\)'u5 U{%_LPs\46rcf]co>^vOn=\{/whlp>} ý޽wynwEukFݼVi|U!NS8ُq1Jq\q)*'{&ݫ<{|{=ǮjZWy qI,FڅJAq/΢#JMJ9 5*w, '3_qzm&VނәCEϙDI/ċz#z+ ϡ7a%IJՋP/voQ)Ã)PkދS28 zJ?}&:#5gnzmj&Q\y+0w^1'J}ߘgS\4-C]+>@tXmr}XsVki +o_7x̌Y$'nU_\#ـ۸w;DE^gTH?jUkVQ?PC pͺ +7ۇ/]Vc?j~74 IoRvWTE s5?dHrI!$gZͻׯ ܗ^Y:OKv|2kޱky}+ծv} KFdzkiq -HĆ*֓l GW*Ehڳbh#4N01a7Hv7_2o[Mm=ͺ1>v{"]Yc7x|S͹aw׍XiծOb\xY; +k>cGK$?+^ a|9{bv)_HX(n]Q3On\ lH:/M]eOMz{*>j[ +Z8<[v-G9Z +/I/~Q>d^ [N hkb:5pi캳ijk+k,#fvR_8c{*zBnZ k${9`:Qt*\ٳ:6ei:cTuP.~QsoX*o&~YwگՐtcTw'IOҕ\;+֬L`Ǽ^Ҕ8dQhϺX\-z9<]2#V^X/iPɐΠ2?gXr˗{%!^X+`0MnWYʭ[iUSP}b.ɂj1mη$V,*Y)^!jGx.oxv8ٕ[ƄFIQ-F 3MXY#}e!tu\׹2ӱi|v>]A2yC&R9dڬV6S͎͘O^xRMoɱH{5)-G WkgSlCW2aץZUhA%Cd`wI־rEF.'i-^ϻU?P*:ܯ¾Q]Ֆުt}1 OLfuUe͊03|uC~ҽRT%6V"%tqTr6F1:2~7p]0+1Qz#ƾ AgX鸠bh~Qքdy(% +b4BLGhYTт2GA ƷbZlq\ 'pb_DqB2?~;Wyt5.U|R0#i6LbܜT@tȞM\vzPDj)t{  '1+ ɶNv0Ggx>r@J8zcK1Rs[iiw fA6 ǿdWȖ$Qwy!%& +ZV=u_XUVk8p @t19"V`&j}jֹmlwa LCdq@JFd!~w!㼳nn{)j}oWk +.xv:o]i Ҧڟ-2msolƁe& q|nTmL-بSr +$0&kb䥨̀!R9[҈?-ʈ `.4wW{-[tbJ~mqmr*iVKq4톀F^PWTʷzγ,GU]י_TG <4TyNQMoQDMzઍOrHox\p/\ /}ŝz6Iv뽫TA]Y +xg˕(czT1YͅEi׻%2boIыmY(:Xt(\tt7Y BmFMтJ:^yAgLzͺQv_*QR8 Vֽg䛥T;% (e +ϜR>0R0O|`Tg)qJ|>oODJro3w)l-`vblX$,gn[8٫P>%$:j:Xѱuh{@ +i1tf0zʴ^:hBReR[[o|8P3y;Al~t%5N]X=)$,ޮ$RKܪ|J}We?H>j8:LާIF]b6J,S/iL>՚)?r~4+KOd4%Ə__}-j߬`+W[qJT,\>hv:1?!'φAVi#4>Jڮ$WILT/7S<*v`kW ^잳ٛB8XDxaφ|Y_qGv톫kHٲҫ` ɷjϽ훓w ;8AUfIЛ +z=bwvsV:Ƥ%=iNK¼yڹakz~$m}%6Ww+ +Ky>yܳQm,ێ~Ge4E1mߜ 7v /yCұ{lǯH&%1{]ԼRP^\KoQ޹Pƴdž'YGGud|1_="1ndQ߼Om3޴M٩A=x׆[瓯Oig4<wsG:U ,}OY\8jܡrW<{S#.;.[,79{YS]UԽuUov\ϦVp|8+}k3[4o6ͭˤuW󳵪"vsT ׼TM{؏&iox8~mݣ/&KgNz\}Q!(^}W^]0[cɛkfdNqհ|` k;/=O9&C!@WJ#'r;[άwퟦrT:ZY$'a_LtUP5\=zOOS +!Ow9i +Aؚ<2 +=1 -DK'@̩#AVyhJ'_$cǾ;*{L\oz5GmAsVYuU;'MF=MGcT[\1\R}5*Pn9S5> +*uD`\̶C/SG -UH_l&lU. z=cy6{h2zv,[3ŚD,vq Kf)#C $wJ=g y$uJgBd.F-dg~jtj4CN*^.ff|v *z_ʨNu("u0yhPsT̔=Z)]"F/ܹ,"_yAKG̗TGxxP?Gmx2%q[n`k+?r8<&Cq~$ǰr.#s#ԗFuMh/m[oO5TĖUkH~=T|Մۨf6ot ke'fϭLOK=Nb|Ty_ֆ_&2Q {u +a%_yR~Ro+H/5r[Cԅp;o~ɕO%P/1D~<:M.+f\RXZ?$x-+q+F AT+~wY5@]^ؒJ5sSh/YZS:0i\ԟ4ӻ])Xnlq-DYv)l8H +l,{S8`'14JN YK{1Ns{8 |t=˕B,Ŝ,*"Tz#Z#rɺ8:Ua*f O[Hgc_3qG&ێLLBV`}wql37zE~y5>f|lgtJ"wTAtewd;5K'4ESêa2M9jdge,pDYj.ޛXN~nTwWJAG,NE,=SFCqc>>K9F +7W46]Y[>M +>6,ijtNxS&IF,j*?gﻼvk?Fړ5,?CݺtՑ޻0{?w;#\w~+Eiv wv lѮDK۞|$&b3 1_ޫ/d/*?GW97j:\c4M- ޗw[Z3#30=iŖsWJ5wZcȀP&ءnOL$P#6;!fO1<iMbv%CgyfK`yM96]lN[0*|ȍ[ ـX}4́L&z$\*=5(I("Yy1_+W= _-@Z + +ZҿX鈰]lAH@ä*Eu< yfPet{LqKBNXLR5ỎQf6s_ ⻌ʟd>pز\Y$+(||~W2,W0,#I-9"?mHj?JeG'oYq0$HzVЈf~p>vxqz:4fJhiU+9+=M|$ +38EpXa^ ݦ@g3t:chC7i,q, G=( $1ڃrO 2OnFeϗ!( +(ʲ][)iZc+>^5KsYZfi6.6KҸ|]SʶJHR[^tabvѡ{~V\+`E8 p6r:x$~ +4W~)KY)L/7FfOm-Py׌Q`t&Tb>[']|zYx\&i}a IV>;$9@;'\kW?F\)I߳qm}eek:T ^NOܪn+g {5n*JҨQZ԰^};%/@%i/8N_K/z5"ˆzk +;ձ fyVȢh; ݫ%(YS ER[,oZa+BfANsr33Z8Z98?kf$uǒPgC.OSu.kpw rVQ*Kro݅żn8jit4p#\7E0&`]d>}I΄X0YgzF述jK篠-aKg!:Ϋ^}ؚ+3fU {9ƠX S\Uxn _X?@7 r"bBW@T86-`<]l6*C9AynIe] qqGC0" %   [-@ + yA&%d"3@dz-.E<(10j+)Z1^^|١ a/5t?St  ņ[7N$$ ~sPPtu}?^Vza}S\)^W,0 `:`z]UҎAn ,/6s!j5QhJitѡ1t?70#NTcLpпE~{{YS$L%k)Ͽ +JՒx-*WB1NW5@a$݀qTjSjjp yoxt]:oVN4$܇_9KF%__7/iqy +c??I\VڧG7?H>|u7mWK'NގΦA+$++XH:t.=p^9̞B(ܷ6{z N})ݽv::PyqQnaZqz:?Q^w_dEZ4^%EТF4*liSa`>à_I}iۖ]?ΐ-:uWUojAM |5/YB0 +)WK#1C :?G;-@ +fIC9in#Z%i\:^+%w%*U?؞۠Na\Kh7pQ_=M/>g%zoY񝃧RN/&5-PSr]t/ +U7K؜xl e5=.B:3|5 I!GOgvlwϷٜ9 dIz V 5gќʠ4h{ ̋ o@#gE&Vsxr[I(ҷp󢜀?% 4LAhiH"ۮݮt"ܑک|7N&;RGzgBWzLtZ1hlIlDjշHV@fe KZCc Ǥ'^)[)!5Xonvu2'$E*= '/xWp\ŴSf_e S}֤OD롼O-!W-:<֚(. Lƌ}6lN.o:xORoԸ E4Ap{yvb6n ȥni6:rmT>}c|($LBu{|yB 4v*5W݀Zἢ&5t{ٰƹ0XntvGv$Oց +lט&Cz@QBeDOFmB8KPG@8"""ΐ kD?lKȃq˷o˹TZnӵ݁[y;i=^ty +DBFĝVW=0\ <.64*W)ic$Qb*.ۻ{\8 +r8Lh}A2船u5M>^M#}jIP ږlSS*Y }6=;[:$J,m^K pu-CŝC+6K6G+zV ac[.=l֊8!Ey{RnY7uCfN4 +k9qS@GQҐ 5فYЪ -1V!Hi+`=; :C@zFv5CR͎TN}7#Kz܂c7{kag""~]Ź:oc`yr_ѽW͒!yNCGzg/FF= FgF<U/~٩j2bVJɇet:vkHsDI!A(Np7p:]aS:44Z h p:\ZGjǣm x%Yu&&&7rtdϘq7%FspEYcD ! ₁A|V}M|@d" y':-oZ{bލqyPj"_qF#lckjS2,6lr2,K\#죅vEɫJ7K wBNnЗrtC`' ІZdz /ЮK<$:]JgAY s"9vD~qև]{ܔZPlRDpVS*5I +'P/mLoo @)Jt2-ӣt*:&)fEmL_ۈms"k]Y{b [SEP~W2`9 ` `AMXX).. 7g7kku"v|Pk.O sKZAxm[D}d3EW'j}TZ3k=-*m ǖF$oCbh~"crUtE(-}g/ȋVV^ȇ4A)YOcFr;@}S4OK,4]HqthZYϜ՟[ok Y2 E7zz˿# RD;\`r +0='_u~vo\[+uQz4?:Ok/6hֲJ `0c 0Ͼl>o$C6/[cVhP(4|'<UMT8'ҙ#఺mթK sE{4>{zΏUL'?$&oLxnQdn)u(YNUi9?z~/p NS>!\>/ wΏ.b(<"!Qޝà  a Ei ]P.*IrYtkXVwY9hr%786|Ta?a,k6Ҽty{ <:|sds]7n\w!x"`L;j~+?߮Grlħ~r[ +5+ƀV=L/,æ,!cl,F=eÃr9u+\9֌] 3l6g[3Yrpv%?ѼEnR"VnL, rNq0QL7NO߼z/!^KhosҞtɤd_:]viex;;9ek;ыyZxm\.6Tk2$G)y/^ɢY>r-0 vgk2^`9ɟFt}W/*NCtZr0r1Y.%+G48dfW|l {ԓ36Ҩ@RAӧͤh2>܌si'qC=倻^16R,UզWw#6B ogSᕥ.-~ +}T +Sߣ>WwҎz}Уl__;?>[*&ekϞ -.j׃Ѳ"WS)Otz>7][STOlW-@&wwV/TA~&S}lힴvQZtԆt˂):?n|8F8a(G7mufZ:i231Iq%rVg?fav}w6qܑ +SYsRYVzVhԐm٨grwz|IWޓ:-om`y+:mmZA&J^xQ_!7bhcY{,OTsٝF1}n%ja^;DXx$/i*x¼45zkb^'-!~՘NCpЕ.u/Ag9J,UkN2V ݀.{y YĂ/yFÕ,,FIm>b0h~99n.Z2r.^ ߒ+t8qĵFXEdĄ&OR' Al2t Ȟ4Q'%#t6'#= HI]Nn[95I4 FMFYhmX]Y@^vF(z%2/0:>b0F G[=|yʑo@DQlffJ* qw&շߎ)[SM; ZkTG)=xүIѭZ~v rUK6^T n[Mh3 !O V$ +ƔyZ++P>_*TZ;E`llQ?4+'uSJ˽|,wW\̻z1oF_)ew؋Cc1"Xgp0r_5ה`̴u:w[]? zJͺX\Z'PBBgZajAlB%WX>wKn;lk\+2!$Czk_=jS:k?XG8E\۫\]]zuچ{.|Qx VsBEA~VkRS̨O@$b Õ >J_DQ,Q#p)BW!=D6}J|H[}&q.Pn +_#bS,C}055S)>>G?-ۇ')N $@)~]@;rUE}@{_ѣM3t}q%cJ%\G8\qF0&(XɤSly2QAܳ$+JW[} vvW]]n +` p58}?'9L#`.b~6?[_\K Gsq2 lp 1"b)"s$ś+S R +W[ע^yt4pk?2OowqIMp2Y$ 3Q-G;?2WRW'j㠹 |9G==x;lLCVMs+{ ?컜V +W> 4b25͇kQ~E؊T7q"݇zK'׿#˜~-놭$޿$0q^ 9o/ٰ4 SNU/_h yS4&*5 )ƍעpgNH:7f=nzLnXЈrk3{5 ]ҸtL޻sX؏*emg76-yk|o( + [mYor#Cv;5[3vO 6;rY6Rw w :~lt/*J^ Aղ_<#8W[ gn+?wD-@o,g$no NLGV6Rlわ* 4 @BorZ rVvYP2' RSx~7,.@iDyײVa\5}=/:, ;ҝϷNßW}%#z+~)mcK=wyMye^%~bi1\6Lw| +=x I}mCk}dXZc$FS*o1|O崛е ό`3I2Y(|)tH9[t%֊Ysf6489=v GmFcG_|МS.F]x5,GcM͏6".*oǰf&mgu:|량F8C;꬈cgWY؏po2[Os=oΐVŤ(SC_ ^-Ղ(bp4FOs q;μ`}ϛ9/ӞZvRO9]U +ki:{widF 3`>$)gf[:nړT0s"6#4_2]^}Į*[۟A?G}2?rm<$1qWb:i/'{L6)ezoֳckAH17f2lЦ6?1z}ߧitc\]TM%ZS%-_~dm츢"AQw= Hk׻cZ&}M@agٞele^w,)BC[Lȭpr+ٌ/UlU?saQ%¼ADrN"ń9xt93C‡@jժI8kP;㔩Va63>U0W ތH| 1+C(LR y>"rjiUg?^O!n&U؋7t¸׬$.N|zvhϔVyYJP)) s10tLrU6G=^z/ŽhaTjmDx*{){MՌR,CaʗBƏ4"l̥ %>gk i #+i̩M Hp*s?E|KP3WWNp4N JTaIoEXn!ϣz? +i_,8h//L;Ƒkr-O^~zTj[4%F0n?^H-ވѻ&&([;InʲYp> z /fŏLCu&O_z eGSE۹\ =*iOH6h`tUxmuPĖǚhڪPR$KX|2gvx0""9nM"d*'VD;S]v%x[ѫ ݶq>C !9ye +D>PX +孽7`%nʺzu)E r^%O88#{@4tE<£N%pe F&lg毽N[Ufм-@+gV)U5"'* f.Bjt녺a]9J0 <~]6-}/y>)+Fߪt*FfK׃9?j=2֋uF.p?i."(o/xm +#] OzE T> @`8 * \3I*$_} ̩gKvZuq:5%gN+J FKa6_50)$As6D#1@" 50 $nX5d`H5R3R؅G6<k9 gu障|V.e+Y7?;#W}َ{Ӱ Wa:] 1(( eunWr@e@<9PxT҃* Jm +>K"Og♂Wχ!G,k@\U=ǩܝʽ|=D'[?&h;z[VBc7Љt) rkƖZ{UX +H^E%Ɩ 5K]iVo'Jz0cu8<߯(oU#v=!>b#ޅ.7PO򎝤qxcS4Ej\f͙OY:n>1P 1֞>ݝsizރuď+5|#6T \>hk'6͹en*Ozi]W>-B%OL~sam9ʿ[gpIrJ 4rŽdYʧ5nMCP#g.' XE?"x?ziOck|V~оRa48_"1*Ø,Pt#9l +m<ic.U^ ۂ )XUw]gXf(̐)- +׫MCk?ו~%-eĽuj۵ljwYʻ{oh>w9f븞!W2m)sj6VF7L4IoRWDeg|:qsko¨1; j+u"{5{_$4sh~K(;ϙ2Agi+ v.[m$oa=DBXhb^ex Äͬ[7W~ )vmwя=k~>Lhc'N3EDY,A΢6G_!He~ЏGb eNKgӫtkT]t6k / #Q2FvTF4k9;~^V>7ZdOs;}63>ڳ5(xջ}db +ܜjlgݍ.߂vs/9< QlXhGgYiĸ󕣷,_U%F$1jm>ImSj7Gk4T}@&s+ٖ٥~Ϳ~ǗyQNv9[fpn6{ӮG-piJ֨9_d[&h\}wauP{U0!=6'~gh3eh^ʭA\^Ѐv^Z p:<ƶLqZoE_.3teM6^ 2:CVCرf:]XomTѩx4`ޠ:!Y~.;;:_$>] zjAdƣlsa;FE*Q8ettr zsʵvY+ܺfyS6bۯ1۟grY`G7x>IQpC~p/Ni3*^#&͙RɵҐSr1[hz;vwj5<ד=R%) rfdZ4obG*#xj߮jYR%P\_[`j;DyjӬf8{U5YnI2I3wOLqTdŝSeY֓hkGLs92/-d=tN8O +N~P}X,K0^)~2Z4ZmJ^BAů٣_W;xK]Pu/TىC T>3^mWL8+{Q +lQc6ǿ> ?[s֨w^'V_o-BI1#c*mVkLIRv~YW<]V&/m|(s.կTlY$zXކ oj3b7͡+E.wx.A1i[|I7awUk^Uv++]$]s!rE;aK|}sQٵe,3dy3y*+ R7{&>=C04_=<|6 žvz k{U3|bs*bNKW뎤 7çpjf~ }dn}ebtTzg^H8Dr  e"R"Nu?'EeoW) {NG!zzaUB~͆tۍϑ;t@̀"V$r 9Jjf/_Ea|ZT ;-SLPB׵ mDMg{Vl5*% ١rf)t Կ8_E{4|d_o,!"a'٫fݖRm"h[.+pM~s?yRhsP&yࣣ _ΓXcRHWt3~p}cvv|nlrJQF8S=^t -06XaϞۦ7 '?=!m"f}7w?{9| n@daW45\CdYFzB~J1^pwg9vz؎h:`x -e#މW`5Aw8͉o`C =cKc:;|ugOlI;:sy~OPY9(vW7Qd6D9SOΌgZe={zbP˓*,=]E?c8YRYga,S"Ի: eyÀdx% .y\@f3A[f&}̓*OOEcőd'kt{5X $oM+"-loԷj "1\NE!TTj%M/ +j{P0$) (PO`)>-Wi GOk[}WGr>v~Z-;t6d|wE}¥ +a;j;&+&J 9@ $h Ud^ +00Jp3~@ /@7>'Yaq de +7uX:^,&WΟ+| ÛV&0*-uEy y MNГX`C7ؤL;&W Y֯&`yU9AG.柂-NX* ̕n!뜚iEµ%d,l`jBpc ˍ<(ȀL߉fkueop{ +=[>xg[+F\iSoyEg93~-L/ 9EJ뜘N켐|Ǔdj ' +*@=L twD2bb~q285@C g*_ 3-lS.!uvwC5w'Ik7)7_wNu F@u䄇 +Ҹ J@J&P0ʢU\>OfӕD=}T5slͿVn{Sk/,w#&|So**4WuHZXJ׽h3ځp@{QG>ME ?!S*oHoSW£ +OhW8]cl~{ 54azwX*Ŧi 1iDf8 o`W5׮OcU1.]x95?k)JEXvZ{DհzwTM il#2KO@՗61^4!v#fgjѹ#* Gv[B~)s*1 . 74To]h㜅:MmOv 3ߺos2v}Ú]UI.}@osfƋ9s=;dW)LV%KqP^hzo)~cp?߈[YD[<< V:ύ Y9v>kHfB-ܸ]@Q@~"XWИ J%U|uz +/m/"y_緶ds9q`{!s"{O긝Z_F/y"-ƛ.,擪WLwW'GJR逽?z:l#3e*o3zLF1Ž2'Q&mTx00sn`<}9\ծ[^pA8_N(+rHs[߉i޳;h"U;Xj':dֵv,8}_qs*KLsCJaKB<+!J_.FuqzMSk V|4B*/>l+_:qκ ))(9i5gQ׋lͯQ̿RPk}C E͊v(SR/߈m ZZZquU};f4*l/P\m=nGaƤ{W&jcc}e힋y&W{ K e1w"}E/fPKճJ[kuٜժ&cj!Uzo(QH#|1gҿ"Ň{}Pތzr%$ y{V8˷"{_,-qͮn -\EuyNJjAve.%; +Y];Lm3e:"79V]:Sfu#_9(Ztx{Y8jO8z7 I?CA[tFܬИs藜.陭n/") +S/4XNUzf;i9R8SDCWn! +$ WIQbJTD7i YbX pjn+"F? n6zlBf0bHqуnvwf,: !7nkT.S{D4i3b.[pqOmÀb?8c4Xm8!ç7=wAnN~kf?%?K|v߯F =CxOgpV8 u&Mp(Wp#Ζh=C5x~&Ik=C2So W/MV;8U "m^6[3DF  M&KU#h '@T< \HL.`Bډ{TseE Uu.P5WCTe"NPڿQߗYB!gC@9 /`@$hP@^>A87 4|r_98D< ;~JV:3+xS!'eg*lZ$@=uJ{Ta]h N\T怖*1*I B*Kt٩&5$؋&yk t֮]iFeG>nFDqؑЮ[ (ytL2%JH/!$g &cb9 +Lnπ9$9*6ጮk.\V*I`SUXMm%UpRО$♃ܹl<Im yzj[p]Tܤw#1[ܳ8܋~bG ͭ_1z{UtU-{- vD6~Ze .7"o(C~迶:Ix@@̺{ Dr%7H+ 2b,nC'@,ھ\>o7yp`7$aGр&g݅T}ntroMoDU{ H-+2\9V V}@7 (N (hy CJ& {q/G7l\˅vlڗzS1񿬽Xz&T?$L~? gr+ 4<ZyZs@ <:#?)R9 1*g?K4![_ ]緂֞&}Buv}9{WnOR.Tx9WNO +bA,ӌ?t4ax~En>PNFB +u'+IWvx8ݝ$oxQx:omjM4{ ]+ozwk'T;rTŀ:O:F;{Svs9i~sō6Jx[=r]̚NMvTMcd'ԞCV=Ky˟9ɳrְusn+ot5;w /彳\D}47_e3̐"kzZ!dWm4'Ԯx'!৹\m̼?tuVιjTKY.UZDWYO#O%T34٤=V;n7x?N`i7_cI&#V +r淗soXeKkQ[۵0i[hFkfٟKNv>+vtὕDD#[1f0V!~l`T >rF*Nף*{@/{;JUKZy>{Ĩr?_@/$뭵x!c.QzHXfjX;d!G=|̺c9_]}wBŀگL#5R Zlfix:ٮQd.z\> `=/oi$VHR9bu9M+Rǚ Z#?kvyw[mƶ7h"+o-pwѦQ~ԩ w/Ò䊙Ȯe[UrS%r{ +Da/MfN7ܦط'Kf-UnP~Z{ʪ7VBcj~uZ-lҿne +AF)͜ypJe{8oU\z:gmlmz ͪ˖ ݳI{V:RX ˢex\^ ~7s r DS;1{5[Ut,TSӗLQJ>=f1 4*JƶeWo}b `熞VCm: q?f +HػL"w!-B*a=15"+}h;d_.7`a(ؕ|;2za2rg)U'>mT-m4kY驋x:wE^[GSM6t/mGou:7^7@t!u܅E9K>WjϐQ1Kuz /:ٿ2yhც%U 𼲞Zrvmyw8d/BrYD4<b7_%t7v8&鯭 pUnuЅy<[]/r7{xyfbWjk龏J'uJJ#j]ZŤ!dbrεÿMeoY4@>")ƢkhYe]ԇSm7P"> Q]+Dx\-f~&r\8ra—}p}>">|_cL[)~7eaE]H[u|3a8l4-#TW~&bLLGYY\@(}/B"&.fj%`( K䁡1Japcf6֘7j4+_Y"- h]. +ƴ*tB6abe?3{Vlm6{y̎(V1. f8ѭ.~hZD;%EQ$2 7~D{lISbz^W˼g,"侹v`5!˪' =ce9l */FSxLV6oXPJ^ ]o軮j!?.V]J'S@e.G鎑|.ZDBzF H%PI2H{&Rx$k& )O0H>SDQ} a%dqip[HǦhe'1?rhʷ f_LjP:$!@-t"BRp5'cd&9@?Ԩl5nR:Tz@AapnڱT8Șw\\~uԑ0 \-6fxL:Uuk_$$IQsYCzss?Omw"P55^M>;'{u ~:՘>Oǯ_CZ=~~w⇄5 !ݭLzQKffd\G#[ +p]!<&7v8C%pp@3-fvm ꟰ DvWQ@lVa^]G^}˧T;I%Ҿ1| $CTC#:ױGo";'H=FҼl鹶̉5 ۫!8crЉo@IZ:ˍBF /OYZg =_E[.POrҭ߈rtd +|hqO5ok 0p1I4 hi27$ٷ?"$ΎOn/C\=r+[E朞ջϥ+4/U@.~%A 7JT_ $tӛ*giL#Ȟ9s]jJT -Q|°n>ӱwMpxzؑ/_Pvh(wI@Rr&Wm^X)/[y:gVІ+N2v7  տ^4$ Ɍl~ :_ܸҳPtҔDM\?juo8,%s[! J^o +8 ;VqgCoΠM O?F[gWz0"ZQ_}IAg"IWRu9:*`:-=p/&@MJ e +% BVoՋ]{rNx8Ш4аf^*ԦvL<{[tZEلA^LДߝn߉} u ύٌ{K*[eu?-LB&ra#ۦݪR nnjqkFS E}7u+]8&s!*tjm>rUɕCg9Oy=cxJ_EI)7k(l{ci{.Ew?AWk>=LׇX%,٪K UVC\z4B?4X/KX5 |V#ű)NQhTb U|1 !n[i8یPl_sRC&osqZ[;Gܓ_geς7Ag2nuƤҒ6 '$,ח;_8BbVc-Zn}8NV_G>T1Bh?CYGw`ձi<~&k9e%SQYx1b).7kHi+-bӿ.q?hJث6ߵTy:͙zޢ}-K-}3uxF鎇u4N5Jj_9l}9U/Ooٱ#Gߖb-t-E?[[\7ɔ +/FҾ5!l b͗HF*/p]%l w PTv32e;PvȏJ٣=JKf% +,",sa<{RZo@'%FcYU*Rlvj~6yÇif:=5س2Apl=YsК; (DhM'#/a*`&_bOcnk8&8"(C 6``j6{v +n*Ǩnz}N ofKլQY E1|쾖xZzR$]qHsYoS?3dž`^ay4xx{椇o)Yf RW$ +/cr#2NusR҅V2s|!yRʗr;_B+e9t^֙Qj&efk4q.wi;ǪQVѦpE=n'RƧgwví\fRE,==.N4ފjXӧƓUf}g,VbNYefȠgdb@z<(՝$(6>9w$Td{ }M$^dn ywKXvj]*FD5Y')|uH(Bm$r( λWsz337|Ъ,g&ݠC҄8 9^72w$4Ĥ@ yC^tH46pOq7?rS_Qsnn8~i~{\'HΥ6ק{F*LXިsh( : 6H_Hh!?"l"Pzz.(Vy*oTFhlНP}b<:Y6?L}R_^|09[P-L +:cqWvU>!*6,"޼2ND&O}^gΓhMnP 㴬# T җJڸnEA#.D'"ʣ݌uJuZ;+ʜ=ƙe_uĶQFxԄV\6!c[yQj] FX"B +Udt&v>mJ,@9OP&ƈwe: PRc31F&s(f[<o@Q+o W[s/`Y&3Dч*=έ !o3)?+z\qcno1\$Fkut-Xvght:XV@Ќ:Ucv +D?rN;GET?woOÿcbtx2k#ĘcS. +YܶPqmnZ^n}d;O7y{pִ<=`KG>V6afѤ!K"G +}?v>=5Ή77?R@(Bj XLb{@ Q4`?B8z5ՁP9`Ʊi/U1ckWIBCG!Gnn^@ Z,GoD` ?}׭h@ +: - d +R|$t9.Y@N=R ͽWl{fO"67/Ɔ5w䷒?]9'>㟢v?IC"&v$`Sbr\탌q݃LL)LSl%!{+̆_[&WZoZ^H[Uqfn\s Sʍw|c$:%ڟtDMLIFtL @7&A:H}1H$S,oHoJ%4e)Gn7jܑڿ͹{pÛ d;aRT^|Ⱦs0m˚dqI@D˲^KgJhT8\*|0§b'yV9O{5ʮp57\o ''աQIuϮ# WGe+2}̟B0rOVrc7\Fl{ +wKy:/"{Οu5*uy:͉ӡoo7wƽ zS""=ݡ1]h ItkF.۫Ұڦ6>0S(\DS~mmP4\1)A-;tD-Ot=TvUyd'ӾdQ/t?mB=މ1-vǬ€gP8If(K-^ BA/[ q[بMGlVeʪ"+l;rV5;dRR'Eߠ5륻 F\kS oMiZPf!0>[:4U55div.+9*o^?P߈p/tkF)*s,\*g{5-:)R,=p(K Ov׺j=j6Ӫ.D+>S!z+;w'mvJݞݭ;,rǸ87Eyc |S)P1ZDkW-I;3-PZfw̾vyQw֡r\Y\/\?ҭݕ4pfzpX=]w_=Âa +9@;_umK\XN9!3Y!1^׬ay@ J=o)74\DBƅ}pR]yF}ڞ۳ca專l劣/egZZj`zGi4h }2/:m>Vڂo~1uD qo%rH!V]kYpRW/Dehd;zNsl+͗M޻4#jv6O^AԈm;GEߥaf OQ + /1HTOWLn=&S/V"Sxf Ű0kf9;gkSaE/VMmqFZ)5CL:fjs*9HgFn=UG($wΉg&gKHu[,jsלukŨl%۝~ #Geԍ0Uf.d᧯PtWXn+RzLÃ-8-^)+KW@(8˹7?fTޙ~_ &P¡F Q9uE)Bm4:^3ӼE}]Td>&ɪ,YRwu%.Uj +endstream endobj 30 0 obj <>stream +F#Bn,o`%&Y@ep>4pԮ0a{f.[-춿㖝nfr,)[ŭXLHNff2I c*$c3!;E( 6?/+M?#ntf ;vlRXN}eo{ACBtx8ZZtwE  zs Ի_WBp{;Wc;7ǍZKЂ\;YҒl7nYx1dίt<~%:Xj3GF1aJ2M+HۄCi+wz$D0$_nK܎ muqVʻݠ}؜ҕ҉|7)?y2bED3d3Z#Œ=]o^9bV0]1va +Ug5"}ay}ӗ[@Э(b+NRz#Q#Q"S~J1rOO7>h kyry--h7mחY^9 70_K87o^N]Fp7kHC-fCR]Ɂdjqdj(ĸ04ೆN9–6n޼Q` rr23k;lfO"FEu߃ +P(5gz1SG[In  EB~'I38ny명Qa f glDdCCOF="`TZ!bZQ:f7sm]1imLUΒc뱉#p#nJ[qʇ6,+:*^{ve-g!?6.(>+Q9KEj4\A&`i؎/(kQM0e4ߋsrBwXZᜄUH#wg  e}JUZjÅTz@`CM.F6c{`` "ltc\MٯݘW2l始S~6v%$A;1 Ү4X詈 YD97JBUxSEY܆sOj+o *)7/f|qVeN~<iܡhlX\⑓=ijx-e4Wo%A̒1 .2 :CQK1 x?F}DP! @Fu@x +"O}}6P @' 49J20+!B-ʅ q?fFxͰ6e?mPPݺ`Un~K|8տQVa(F61]Ƈ1`# m7y?8 PI:7^+n7w۫#{ЫNx9^*]ҟgu[t y%:.nc;X1ǩM8'pE^>#n!Sƍ1㯥]PٳUOgEm[%4i{l8HCpu'fc#_HzQy8O@p& z¿!%@* iL|WqL <چB(7RgD!` 6_vOD'gMt$o8}%OpDboX0UR7 qpmPL ڊ3v@3zܫtz&D&X{O$!ɾ-\P".}B;Ry9)7ו[Wu/[Xrx@gp:w<LjGuj&&BK[+PF"Kc@6Bl6gꝡns\a{ǣ:?\O:;{z_ yʆuUeH͗DMB U?w?,M8&u\h zHcPulmkޚ:q%2#텺Czf&2nf:7bc* {,cE5I+LCZlV9[rj"B]_nO}N1<|}3&MnTE]ta@Ҷ!;v`Y髗}gGwglCMuv)A+r,hl%-]ݷ0fK[ǚ=k{f>tۭ:nv$*~5nx:vrukZ*ʈJ?.ٞqi +q3]_ aWEzj)TPu}(ol)rJD-O!7԰MI\ Vؾz4"=Hև,[غTCYٯ/;m%_L靻Ŏq6tqr ,@i8ۭ"rq^"mV1BCr62`!?F<Mu_vm}nͷ'P)Vђ(W83EgUZǓy}Um| +~]cu%F* K8yXyVúIͮư|;D(ɲj e* oe0T]ce8"MvB{bۦVP? l5!|Ҟ.:aN?6sѶ͔>KgjьT6-_Sm^@fo->Jb)k +c$Ɯ=_܀T$Wz vSl|Xf;̾s*c:qz+Uoum|&[&׫^w"i 벼fk.)d ~C c$3.dyl+rKRW4#0L7;MwHHAuS=Z;Z"Ay46?2P-/E וgQH@jJ[.](b7XePaUoEF*}nfSZTy)J]>x=]]ԉ&%xgb'U{4GP>8UZ#:Ê0C,>b C"iy}/kԭeH ,J}=򹀚dd ISoI1o²,cLG-ҡf!>~6_Q/2bvkq6ϯ);ṮuA) RtΦRa{RKL "{cǐ $ 8^|Z:nr+ fq"kP1е] 2Q, +hYTtqۇ'l[Z'Y|y9fizA-}´?Ӷ*7H9eu2 O~Sں ͙$F!0ƧJ{Ë]uaZ.W(|pdwhH}mӍɎF2 Q;aO~n"^+ϊrfQȧYV=JDy&>Nkdx Ŏ01tͰhyАQ&"{b-v?LM|g+ـnk v2i(jmQ˾8 +?mߙ[xTD{d|3BVee)lny1}tӾiW1&aOj%=gU~_K},t8]2|uW npvXN7u>7S.exXǾfr4k C+2!S|.3|!rO#ݼ.>i}J判mz6 fSC{KYo"d'ⷘǸ|r1z!WqpەXް +a.,l&J,b[z4+-gg-0)ږhQ7vX.1xXg4pLO1lcjB1(ypph{fC] w{uZ&t}{DTzNE؎OnqvNcZKXGk6zC+z[ȰҘ*p@he*>}6X@->"bd?z&P+8.-JG{mo ZFBtkYLFVhiv4YmEUCةPVOgHBE@*\&.d@V oz$DS ^ 8ѡlG83D?Q?ߺ{?QdԷ`*Aˤ(cosӷ|9'LRnJj$m}?q!C(,4bb;EJ?;`k;6]vcHDD\WĿm[hd\@( +dN*PE7Ib~.E4"fmԔmLapi.$_.HI34$!^3+w-h\X]@մ)!cr+A=I~O(B~9J,`x@]݊|*l5S/xmuztiWx7QvbMT I&&GMd{|rAΕjs|]C0%F2&Q/7s0:y:yR2,nfݎJ;`scMgP8~짖Q= <ڿՇd_=^O =RLr+LnŨ +{mj;>WeAm㒵A˛$ jicay۰k#By߱Ar򳶏׭_ڵ]| +ګTuqA/CsТlrΫ#jn/OA6n?9?:ѡf3᫉ 9^!ժ.-7CQƴg,Cˬ֡&EUCV7qRְZ +utC{W< Z +Q}.<2 %kqc=b888X8_?K6))isJn5).)`mݡ@)H޹SP[6p9Eg{k݆3,ͺIe3-"v ]X\voUKlҿXwV4uddu_mj(Ǡ*ÊO#8PJ[|Lq>XxxwS>dk}v)YX5l-|< Ur)|mj4440>'ي;J19}xw +@"ʥXלϴT+N<)].Vt'myXD#S%{IUxY WSfag籆ŷ3tzu[4y?\C|h%1UcyL0._voleڛ}j +סRo&e}W6|9;&m9Y |Wjg5ae1ðODG.6ov\TߙHA3|$*-]-קV@VQQVx N,ޚ̇r̫5-< &꣯/ݩ;Pf%'_ßJ.|Χ1,}R:rWziϪNRﬓJL5äR{ԗϋTVFm雤qŴkLє"ҍ`QAM73&EQ +|HRo:X.Y5SȚzPW:eT9)BCev))W퉦@8ŝ #g=k="909Ml,Yza,},t봎עv +b lomѧ;7vVh_[}Ze%"_֟tݔhƳnt"Jc=Ns/RsGolY/MlˮJHO;Q* +2ߵdsːUkDEg]gz8_M/'0, +8ZkR=suZ8{VR1ۤ|F=A#ɤl^ȊTZ}K_ Յ9($qCbم& IX0*23™۹-;>fgL`454i@tNR@7n#gB8) i q6F\1$,HGi"9>]Vx6O\q/0{Bk{CJ꜄ v!!"} |d$x2rHq^[T]=iaxS ߎs*DzJ,JlQToljͱ:beĄ} cnM%rD@>*[X!t[!(D\%.l7[9M,dtRvn;^B);ފq4(bJ%FfJ\͜$>/Ibrк#)Oo7 )܅r!ra[xprw*4+ZU̦"77U.fCvY0,,eRaun,9v=3} GyIrUlw5h䲪01+@Tk #<'PpŽ4\XGB +Djd""q+R XDž +=l?5yR0勖[MQ\5!o*4o[ު!B٦ d%d:.v'_f2c]Xv i,!@32 r!00I\f? މ${W8P;FyA *vjL#26c lgn}rA`g\WU\Xep@!Pa P +PAӭU~*|gag=ԒJx t3lB} +Z$W,hb"9~swa}p\ @@z@:l"Krd ʂַ~  >ZLz1MF&?~WLO2.'tXMX_A}axڅz((ERB@)P*kDEe)ۭͦ +87r;g}űoW"}U/sb?_/GM@] ~bm52:m3ҀnԀֱ_Ч~^3yC|y$ lM1לbgu2^;m_nk;e"'soFٴkd.VKYP^m,/=!O7T(^ +tQ:'gD[^jSdmZd2* .֢>5ħ4 r:k7X$5댬9,LY2N n +47?ȋY7IfaIVaO?ĺ2!k>Jʌ(Cܸ\q}~YZ.nikf747jCN'|mfe!SqV\Q[ҩŜK!8ĥ@85LW.yOjWʁYG6f'M6K35fZ.TeTq)\N]3*/xRG3O^f{ƶ8FϊT9e7ux&o*YO=_g| oqLV^q(+')iU|t\р^N٤Z&ɰmI#?|OsK'd1jf,3ʣ1J׍ں[1ST7;S:$@'T< [ky{PdZWvUS97,>`M:ܲ_]NKAԶtV+a>;9Bkف< !u4-iK*J8Hm XFMcKłyӢ4ߊPT'H:LV r\JGG@Պ F ɴnMr۞'f&6?n8p$bƄ Q`rl7F@ZEbcwChDں trvrlݔlN&R~1qLd o%U-c8a>wy'Djt#4D4ܵ0A)ѱcYژfGPcpR]5Uyp3A' %3 8xCWzP6v(Nn݊Lrh GcAXF~Wz^"):[!+8Ɇ8emEcjn]U@II~j @ + !1 \p#Ъt6:ǵQrַzNŲvkEk_r^xtw[&8>iYQmD5Z]3*@1闃V )q3ZB>G9M X DPGVũdoC4רUƽyZVWp.PD&ϦǒAf:QΞ5&lF9EJ@ԇUӲu +`zQ&fb#pUhRlز8ۚhZ1a+z*fj-'gg4,a)6 Kf=9@pAHE%GJq0B e@zW;p!IR I;"x'Qk+^' ;V >gCGazv97=&ٙt訩ԭٛRQbRQ2hx^wjasCC yy~jyCU7$G)pd`;ayVނV5mlI?ߘC1,G2*tSi]Ʃ;H^Iƛ>22GT)nQ(R54bH+0^̞n罋7 Z:͆7'TVч8o|ʅcSW]wTPv"P ㋣H6mRGa#^Vn,ܗWa\y0SkGV3CboΉ:"!<H8}(آ&|"`>& l麺'|t)lh 漭o¢]l)>Z_>uЍp3\HmQiտ!G*aMDd' +h6j6Pj`#/+;.L%x97V +0&uCbrJE{xgZIflqT2sg*.fv좛=Fʣ4L&vp}[8T (2 (2 ]RsNU4 G E5^2L# 3b8Ux )CѸmuxvjp8-{[BJ[ȓsԃnqjGS(ʸ؞͟@<r! @IaPҖPFiM[mXΰuۅ=6y×'yy%s1V%r\Š)l3 pKxFwu_@;h~< py|#v8xmLvv0@H;D򻙞Ȕp{|ʎ0Z셌-T,Wf<&ϗBy69%03EcH'_:,Åc`yD 03"L.HLK?5 +E, +S_+y!GyFU6&9l.[ +Iu!Ϲ -5ӑ ; p$'] Q`[33rgrUdWMB7ZӥWȊ%ɏ3;DxfP 8T\hR.\Fc.LZ.V[ٮ?^W^s[\#:P&2.!KXA(G6҈E1lHȵSP@Z3 #+ #Wj,~']Hv]/]8S+&x8;r>`Z,MGmq[ "d[2܃H0;}av_pWɳJ e. @B^ +hAT@ <1WYڋ:!m<+Y![zjZh +أl ݤ>N:90,7/nK?“HTxhu>:zkkb0qly[xY$bl4J3n[Ւvp|0ܵhR]OUߪWNZ,^9ˉJd 'kIpO'd3y9CC: 7T}196 +V.WQ:UO^ +y'8ŮQ( n 喥-ǟ*l5SάiCD37lj5~†&I>L'kS\]I;G}* =2M$9~d`&7RLEGӧTyOjN!t)^tX&mfZMxgeפid=0675Z_%[|6x1t>24f*Z}G^{Šmr)x\&kߓت +XMrcY'ėoDo~(łӏӧ]亴R-P?{pBw@O1hoF~n V6Nj|}B0VqAN60S*)~/^zl+;ɐ8*aܪ"icl|C-f̱.[c8 }:9^'PHn!=Q>,u+Ad̜SNF)I/]BTaܜLw ̭9(Y'S:`*c‘O;ZCFMq;$TTb0R<2aZaD0 ZH"s1B*,F4BLo.v܋8s>9@ze*rvnY:T&)$,BD-xZ366/,{l0] 8>Wc4^zf^RazaL0>LEx'aZ93jzסnDrR '$fİLd8&GOf{9旔S"b-{HTtdZH>]#GFvYHe9WC9NHC41'u}J3ɷБԋ\YlG~D*>WxStש; cpy.12+"%7k@C.5MۍI.ÅZz"R)`pW"~tܷr! "n_Nq$RƣH-\o6Zj f˅ٕ cN0\]<]:T V8q 0XX8eϜ#$[yC8M^e^ +݄CAq)^$b7lETwr0>fݖrEF poa-_AW~mQE_6ihQ:ܢRvCa̅ raˌmBF#::Dleˏ 簘I,x^ +݋PTȥ,,B&w Tfhkuy$<=$n*"ڔhβCPiLT#1i[X!Z9`48t1pt](-Y(bAIUnn$tv?V՛@f)sX:=H尮O3VO\~](A;" {; `;i+'6>s[n]"9F:bƅI `5c :EKv 7-5'lxixcEu{>@0"s)s+ֹ +Dx¦Rp{>~/>ޘn^X]8".H[BK!\Xo1xPK\iWH5 9J'9s2x㔍F j8q|&RVɬ- 7(H9uRqy~D/~D5}D.\`X@$Tͅ^ +&[qa0ip?}WqeTM)+ hEC* {_kToC&B + %e(Ѥ 2M:pad&sadVY U@j biNo+{jB=2Hf4 Ws5oحeNue& +賺mY@+s̐Bc,۞y%jp5C.XI@5fZ߅PNT:b#3P6dnIΠ#s95W$. gP9`ڱ) ^մ*|? ϲGԬm Oxcs +I]YXs9{71+(b,n"V)*xuIU{ˋQׯ8uk(x'#=|nSj> Edt +34'c_uXrIwNQpvP}6ol+Ji\̇1m/d>s=ۭ8RjڎpFoDs)tt/xkV3K[wb(aq/%$gVLI\¨=x#Z0ӈ#VDģCQukJԘܭP/wV6Ș^"45Wo q\tlf35Z/H$uˡ`\u>gz֬5b͕;?9Mx̩Yv.,$[W2:FeHS_IuuX7p^4qjC [LOo "5?$6I|^'6Oݞꎞ,W6/51失Ȉ(KƵt2bY:%,lR| +eZno`qwj4we_t{9t#qiQW[l--{7"7^B* +Φv=ݱYmp; PYi=R>u_ܗsK ?L\Wanw~ӗtͼwGz#M_;{T/o |6m̷o3f|6m̷o3f|Ls{,oa{0vڷo3fͼRj|7=Uv3[7d-ɿw7lxo3f|yyWg7f4e?JrgGzm]q(X +Mh"bV'r 2e+e.otZs,vXn|62B O&/ߎ3&|JU9$jC/M?G`Me߀p_t˹E(0>h08b>z3~T*W<_ֻ꙰ص7uEQmf !} ՕL>Ej\8{wz`Ye \d˰/ p)WwrY /pMBt%[%?~Vq勺* r[\T _xa\RZN?e怋fq%~fړ&5˴f)k~6v_jTkG@c c2{nmh*y'0v"3vmg?D b DJ+v]#TH]g?~zhG(궼x/͒,ϋʦG@Eos?.o-[):_|~; o7YaElRa4í]䓏7MevAWdV1Nuzb159uc̷,v$/rFu.9[m?dƿ*SoWُ{hUẌ́ٴfElr7vEiH.S5ג}W#6HQ῿>_|}I~w?M[wPWZgIU/7o)E\?;3Ͼ>֣pcsgn@<*U9+ _| mLc35͂_d ƒom*"f3Jso/c٣~d6|Or qɷQNޜNԖomQcwSGpBҤc>x>u~j΋J7w9tͽX?{x-D4]WziNu_|i/ rsK#HoPonU Rf_Y<}oC~n}'ћ.o?L0eڀK()7/26\^}d +=E"xn 'wu"1"gQ#朘 +/ 2"!3J7q}</^f\`ԡ^zZa}Z8t +#S$"Bѱ-nU3avW|$קW0Y&#ROQf6teE kE1<.t1wus x7SMC Q_Z2RxџE/~"j oF8Q?#fzKLY&e2-MQ1/x3WZ|SX 3= P%egs, 64ìWk T&LhĠ.~#u@V -#챜( f(QPF{ךt(\H;63}>aO2M'z^d?A|`?p%ml_=S7Dz#c>n>vSokOz ^Uls3z˪`|{q4 \[>#+d߳ezuכ?v|Q^69"a,5ˣ鯵MO3GFe *xRdGVh c.h}!_VlodP}D7dg4'/u7GtnUJg|OW゙Ro՛JGTCn/D?KOz _o> +o 3AlE& ^Vpj|(Xo1q +<4Օ? TRpC?[&n +Yhf'xugfjJ})ccaojE2 >[?bB_[\ +$/sgַjm3ùNZ|L7 :GJ[ȏ.d#=_F#jy'c* )ZL=!q }7(GIC?]WYU_^"WNOgy Nri[j絽ҷ{I̕t'G4>ǡ یmЩl *= 3q&98ywiϟϯoNzHon<Lw(qFϹxUI1_STrW變L}Γ%ܟxq)4?n||%`|"4Psp#YgTȯJ}[8Uvt16Pz4w{ݡ-ϺOo[THˢCX JRc NchSɳ@l B fb~BC'v\ޓ}9L 3Q#-(ɘDAa?/E/+oUKޘ{S\*ڟ'S[1" +G4'5mʿw0ass~Y)$|ȳp3 aQ^Ýi` KW/AGga Δy躓#'oXYm3g{㒌'G7w࿒R17A*>}zwɜ%N}~)mySg$yzgA^/[tZS>`]Qh/ "y;uS[poMOؾ}CgùH5I3>S(5T_lh)7؉4J~ldg4?n4\ZRW;'O % +QN]ċ?YbOAy|…:V|TmzG=&=ca8zC+|{m$8u +yR]&o1B?33ZYyL9˅B%6ܫk1CU}ݸHy'fFoI戻~PL{7eC?~@g\L-Z%.f|gLo3c`\4`A-ń>i D,|Ok8giFv>;on):*M1gJW?XXǟ8 +@|%pYh˛Ώ/_%~5#A^S82Nϑ ֱzp{ٽgo. y獕G+:2¡uU;ț5Jq.@^6 k"y>1}{Ypa.G0"HV{dLʍ|̠ѶP{}^ЏЧj'; `eUNR9h=fO (.5| 8>gs/ro7)1m=V(.J콈ZtO,~__$=H\V 'D6޲-y: eS_e0Of#yjoq 6HlQ?]Q_.SҨR)8Df(|68P`_v-jE5hhϛ@]<$n|z׾n{/)d *UbOBcn&gBK n趧e~On]Lbմlg9(vʚ~=cfxG`EwʹK.M9uQj(m'R + Tַ[/'Bm7k۰qg}׳?hѤ۟E5h8"Uh7r))(\}(XxSZ ] nH/Pl +2j@VdoS5'mAWZѨmp,\4}~;qR yD!ܔ~{Ɩ҈Lt]U7DN1a:aem@6~7O3]B݅ƪ h~C~rk'uU#X.\>kqOܸTc]`.rj6sg#$[O~ȧ,EE%R`\r1?at>=nJR|оLڒ"IXOC&a%2չ/W`RJ\L}}}DCb'4݁3Ç@پZ-2Oqƛݘ {Yx@3K2TێHi[)A=#ό{wn=MkQm먰w~P{̈́=9%:5}[?߬??X&蛴=N={ 6-T}i?h4~Kuh~Ħ(ҊjꮕߝWAկٷWby e;ko)- CH+4ˍWX 5;F,SʲϢY!$9Ԇk:4~e8K2pyT03]%`nVG$Apzڏy1z#?!0LwJ1nsbhچ Sdn9z6Q ~ٹEvF} :ߌLg[HO5~=\~Nz~ҭ~{Ưf݌;Գ92u+)0?hXg?hjv9zx_gf|3~?#⢱]]?]~ݎS(HU`vvkC߻x{k~s\·<' PoV?=rMގfuxy=ΗczF"a +3Лb5?`|@e8Y@q][- + )n'2COQy<1u1g~[f7nbzOt""'.`JqY:w/j73}Č<MN_%?[|Osx%ᵆ1mJ缤b31M~f@i&74_\n.X򌁚8ko2M)Gʿ9JDѱn Y0o >^Gi/8ǻWR 'WuF _^`9|l6'Xv+"+@F}=!uu/_7c +HO7l^aVr/en+a::*_ ͗q}R `:8ȵ +nWjڲ[B +0H"Eb,U ݹyHx^N^YQ|Jɔ% gvk *\e;ٍWFtaM^8+XrWSRg$7<(YIl`ſmAe +0V@N~ oce NӚC}NFTlY-l5_FcKk +ZJy~?`AlYO؉I#mڝ/xQԨf>'玫0.`q;+0NSߓΠXEi #иc-[2~m˝UYjl?i|ƫ ƛh 2e3β_ ;K+vstKxִ3րǦD}n>ΉFw:Х׬m{?vT䵑 ښ0)>> ( ntcfUy#OY3#,`h4cuc  f?4tJCo%tLpcߚoU2=DR9?D#cI/oؠMz'͏@Ui&*d5~ KtwC=ﬗVIT0:BnM-8atf{}KTJl4{#Cњ%]zxqV'E9qYsTQ`UR0f7ӛQ8Ʋ_q(M1[-}`/.qكK > Mb)q7a!4on& LKg)3=+=6 2j̮tNcJ-3'_hڬ%|=g?elI@lX<;(,@Ddk/z^[ɓqbΜ,ds5knBٴDs#@t kf_kaM;Fs<&7>h7 ߝY- ೾>鵔IiJ/ y/hV'OItpeHQzn'>Qk|n?[I7f]hE,\l8YW3dk Kt1F~{ +x-Au %T8-jRG3x[`S7!,"$)(C\;Z{`FAT(zF)Rq(BL6B7J@O97H oT%v~ =@hEteQ"a!C4~G$B9Jt3 +X;Qb0CZ|$> ؔ!g& 6"\?n%UATcq=G|\bF4,d 9  +u vያ.7X8G 粔l6`}&5ej53XX:\6wغhq-f:a`b==i-1z鷷$KW6 *P@1^X.HzxQ`P ͨ69°Xȃ5c7cnMMbi Ps)+~Kz iX1DH6UGot7f( HiƫNSwN6%>-hS?.{=[_&UtorCMMOghhƏ;Xn TrHKí͓3D f4ܿU2Q]g&60XjФ}uÓ.ߖ +,Y-pum<"9M7LxhʦӛУ%ld㧔Ƭi ":`JE795]x.Aq +͚֙s⭋ψҳmJQ N5d۫va@xOp>IR嫎^" g'hRMMs^#Pk23qV\OdKxi (_|ssU_ؕgh,!({Ԃ}%m?]x8ԧ g2QkXpr}_rώlX`"tdH du.|Cg}7$KnZkh4H^,ukuh`uevX{u&|Q0/Us) ¤aqTX3&aK.Q5MwfqXP%V{*WBineh{8XK$3~OihfK紵;n6gAhky򛯕9Zlz`xID+(hdP;c,{2oZ:kC &kb+|hu o==*b0uXiaRץ7/MYf 7mYcJ)4균5uwK$c9Wt^aZ!}@ ce~ 9`}A1#΁^_`=_4ka~-NWNlP|y9yxىF%l%4@G݌++jטL=|\D=#%֚80lľ.xt?.}\9 T:EШOH2a^%L`F r Ur'ae'tG2}O<;VE]I&\hB2OpÇhdދ)χne_=,vH"2ŁʶyXZKajn[U|Eph 5NCTbw9gLi:_p "\Nq?F%0>SU_,ќJPauk$Z]gsFF_:RXcBU'M[1DϢVKhK`@CǬuw;X3E3 +bXlf±a#jtz"!u48֜-n(L1pl~^q` +tV whǾjtG) }X=,u|u-1/0?:zw !c=%.)yVO"N >^Fd}ŰZ¡T_ÊeUQ"ۀÊe$V}2!}hzCtkG<'CnHQk32X"5uJ b5 _ɘ[ +V.+LʦRf#+@']s%~Fnz9KOtEuWXwǷ< 0(ֶNC)+g@jj6bOeIPaEh_1l0HűV,H{Q#W(U"-ݰJu,<ôCb8`+(>LXBSF_`^V1r1wk !(\fgaf;œB+2MGk=rhHCCUPք@ߜD}JOt/IqI8D:gSuN8=t.(tK&=KLKxk=ГM_7="6zF7BfdNarpdHACKE 5HCM:gN,_ }L"?a!!XРCQ $+ؠt6qDv.;%["j"̰:$gXr״3"uhQAޟps'+$Z*]J`ˠ2EF *Y*ǗBz 1&ڬZjQ&I- +,&h u@w6zlO& ^aO%<9J4׃D#WjݬBvfqFh!LvfBDLוiJ->=y<Ǵ7hgWӒy͑ æBC&ݛ9%W#Ғ+3Q4u֔v +؏c9'f[ xH 2fLdL?-J9lD= @?I\& +7ӯ/f5KIR0~(WVj1Q Fsz芵erl""XR "nvҍQxn +%_'{&ggۏW]\w9d\]cKzEL*ݙRׅ.R*q^r<&B +n @,ibo|h,4+\o7F!iG(5Px=@][ɽӈtȉ,w,kxYPQ>N /8Jnc[(8v +G&Q$8Qf}dGy):гnH&(33|)u"k2Q0o3SzsZf:h7ã"u uQIayG؞Y2u%LMNe@39=K NQ%$6N2%2ghm6,LDh$b:E"hz P<I-8Q=sK-xuqN2AdH:|.oY?O>,~{>!O>x:|.@t>\A||Pt>%O>Ex_:|.7,t>\>ކ$yuG:}x%7'"1[r6񖵫͢ڔOip O s_'kvHUcJjqah|SW]"z cE.OiITZ躁66VK~ܒ'R20/tn2<9c[B/ASUJ7h) n*f9+Tմkf%bvgk=[i#[!o2tZ:G 2S-GgEg9SǨMJ^YZ*uӝ9X*LGw#r3z?>G7۟vc>:&9/Ws ++)gجWo q)7:6i$ o "^O#!zf+|NuM PA 4 .1#lDIh=)Ozr~'uG.o^ĪNjé 7ُ4sFBТ-WAԕ +Nò]+QudNni9`})}Ru +rXKIpޜQdwUy0z{^\ AS> biQx:c"]-J,EpWeL_s \>N"OՐehHE%K:_zFy=1ŘzQzw#1JqfIL$vJ-U֓fTud=+(o'}7Dl*7UdD"-9J|bb_F'f%Іcs\tĢJ'eqsnpw?' +g\>+O,J$=}b<}b5o|Fb^L},O,O2c>期>f''܊x8O,6OMCb<5>1Pқw'z^ľxK"ړIJ^gz)Nꙉ}bY}E }2+LKAcOJvFQnا|0On#}bӝH_K㎒Quhn䦳ع6b3(|AHf_eɼT;A*}UTU &nR]6DAbƕ6Baؓ&%#׬kZ64Kľ֦KaO9M&uuSݢM^^;s0@<-⡙JwB**G1vG !7~HnpŚ> |u\|oM2ΙnEwZv@,OSxg>%Y/W$o +R#,xCk)M㡁gNLW\Ew[H|uP+YVխP+PIk"rF\tRD*0 {&:!Eظ%^2p + +}M…xl?$4 +6bƥ&wlfzRA,cS6>j$T,̵xޙֻ+Å⎧tȬMcOļAǐ m>cAy1Ѝ)!#x;R(̉ŵ,+QSkxߋ|G͠ݭVOZU'K=:ZT3]KizQZ@𱔦||QX[y?^8l߱2l6R~l߶:#GkQAk{B/"5tSU'= ȟmw[="(M0 +sG|]w~kTȧdz%Te-hTx@DQ06w]i]?<*oK:D>ٲb{JMTf=^7mFNϻ|B|^mW,exܚwtY;>HCA:UChgͦ+t+bGL:}O)I'>#a,o$Bj0[Je~ (aUᬡ27^xU% ߆Yȅ(_[GV MRn?v`|tƉ/2|$V,Vİ4D+4J `ͩt".kD~^*ѫѭֱźK.I/)Ea+ʬ7sԆ+*%2S@sW4s% ՕJ{pcZHh$[TξD?~"[oy;J#e7F#INUՊ9^M$_uSDgU%U *&p)K*Ղn ܒC\MBV*v +z1<`^M0ޡs{ڼ XS<'Vt%OtA|] m&_؋|A9/DʯZa{s(uG`? )'ZhP#R:]zsק+v=XxӋ#b/s%W͹~>mGP;JKR\`{ +%G*U~NC,x$= 42j={ i<K|JF>BMqJW;:o,xP^P6kByy#6уoSx\P퐿S`CjxࡼO<!#ǖ޵LMa ~BCŜv()n-x(_퐽PCy^bln/x(__'h +.,x(x%!yoC66គB]PҟvkCe O{FC$]vwC8,ࡂg<ߙ`\>T𐞨%:o-x(llq\)R:᜘t [t<˜GS#,O:yY^Pr6U9:d$L akg3Xa^oS/v+yx8fkTv>IJ*reKhLZ##h}e8Xza%_+}X|cՇ$̰aJ/:X;6Ic lXF;m)O{}x ?OCraw2tFU9}Ʊa^մzvwtdN0Fqj4UC#Q!WKhb(mXNO 2InSqPN5!8}ilaQ4rбܱhtі\F~vr2j[BhUesrQX V 1_Oq?v_:%%m]|Wvh|j +`46´zNAeO@_e}GPL#U +omnvK%as\!Z8戺ٌ [fbډyTGꃵdlߜ~ 샕gVp0`\Sx|?`f@/ ӟ xPѭ+Tj[a " ~"4'@i|ӨrT|<+ +MgprkaD5a `o1Gd(4#@ioϖvrghfF^2qDݨR4uz\U FpMEG F0#nA;8< 'NfL׿Ma МM*6H,AlNvYઃR>qBpLh#7 Gz]C mHEF e%[X*אzEk+wCif+ɍ_GV9$%᩠| ܱX$Fp5Ʃy=kEs+k6ECM]ΎʺZ]ɇsLR+z-Q]r3iD*UVSSEF$+4J,[@2A]`dUݐ^F(gA0}3I;y0[𧻷C!чԊ| Ul'\+kЂV# 2End +AQ ~ `kNnԻ,ly @_+3MAp|8A\#o߉U-ݐhv63] 1b%sM' Dz"J慝$OG <@AaMaPwql,EK?tRl<FUmvial5ia @ک8KAԢګ$^#`NIRvUAz2d(bw/2qGǪ-b7 ®6Svش8s>'yt%M{yO~OFxӈ89?i8s3)J+i2†!f]F+yKM0FRZ0vC#TOWne!x4|P}#y[?AH)H[oo +``j+u4loY&iĘ,-;AN|rcg{PtS[ȺL&4Vo8d&=ȾC[o0̾#|6Q_i' ܈`c=Sw:fvҗqj|g\i_ s+AmjDsm0|A0LZt60?"d%MXSMx(?u9n߃۠ h,q?͑р2( Kj72^Rlf4)/i3>{~$Dhԉ86@>w3qBne?Xg;eB |IAo?<o33HVR0p 7t|p#.s%Cp5llwd,hBX\KnKs:]oUcCˡ1b*I8)py@_ń%~"4ܤ\s_LoV} 朑I>'u萎h}ۆLl;6>CcS>6ڐ+}FD02-ܤ S=zW,s՜ R7=/ac&sn꺌5`CXKka["''C+қ*}ۆ>N_.}y醿Eof3喟rn=|{vSCg{=YDGדs C#%6D_y=+]6cZvHp19^5HSߓOz>vE kjqzu|'NjAt% ɲvzyA yg+(a41.͔y#bM`l9ҭH$Kښ kC>io^d C8P,Q>i +7sCp_nޮ?Or@xr+__xZaDo5]CGxN~7>Duʥf!|%oBF2l^Lhx;Dο uaFWi'o:»"^˯}u^W{ݾ1|nrwowa^̅9}ď.`N9=^vt{p܇+^Wg^1v-ώ=n}W'`\N`WjK3t{q vy}vATOn\%c^ ^AV7x{}?O\Rx]? 잀>stream +%AI12_CompressedDataxkɕ%͐ۼ@FfWzTjAG,bI{53صȌ,k[ۤC%2ڽ'W/;N?~ww__O~ӃIljw]1?]AnǷgv9//o^?D?_3 ^yo޼w}ww}o~=}q2/7<3~~qϿG_ݽ_}"To~%K?m{7o5VOft 'h7cZr 1}1χ's0MI!ClInb_^ï޾xWe㼟o}_߼zEl. ˷/^ !~.'Y[w_߽dž}{!ȼ<{&g',<{W|BϾ~Iٯ{۷)= |KR<>9t`a`]ܬm/sݻ7ؿB?o߼|Vy>_"~ WX/+˻W/WZOdy?v|'Iфl䓺| ˲/7'q:+N~ ;* o߮0)dbݫ7~UϾ|=woo~R^qD< {.q/0s|۟>0 Po/ʧor}o;ˀx|1AbYd6_]_zϞ{׷ {y| ՟޿S?lC?N޼nYuKF~=O^NO߾}z}wy4G???Ӗ_/+3G{s/^"boW}KW/^}]ěz!/7ZW:ՏJO՛_[o%=| +;Z "7rɓ%7[ 3>' RN/?? B\,'ϟfQ*S!NCۍ%pG<ݬ xf޿~wxׯs>͟S? #nt}9ݞ^O^kuӛwoMI7f9\C +9*5FL?h> +)^cnS(Y&䒇SJ9*56=S] >}z5+\3+O.Ჸ --N-(4Әp&#Nfgۉw6<ߤц_\va (#>>m$3GfӔypDkC7JL2ـ+s2nrhJcgAUcAPg `q-xsJF.H|BJݕ]+2!xqyaA")$Cyl\2\A(WWkr R u;ӓɺ0Z +1 8qLΗbޗ1EȖ#o17:y]Hn8AmFx[5%}G2w~sLuK<ϭ0ncV8M١o8%;B:Bj=|oYc b,i>dOOÈ[o<с&ѧ4Mn1)(W%Z-\WO:-I ,WW+rr wD5 i၀qURrz%\A./+Fikx,yzyx +GdJ~x D2ŷX+ y#İ@58-PuªbB3OJ{H \4']cI)GyH' 9Ai]c2XkiIq vmr@pHg Ht!"Ġh7 #tMBA;A6BT_c[ 3x@"~"ȿv`x1bNHvS,=Qa +RJˆoyxjx#Ozx х uh&38\i!cStvn([`]Y4)9I/Ga0pw${'|y C8KaJ{CEבqC[mw)mGj;1sh!cEXxL8 #S\F\ F9 ݥOTa9< .};g|Jq!ŭprL+m͗ +J#Yh^ +1Uv+vkqpqEQIgh&enEwOGWd_Vl E +RIx-ЃҐHDDl")tw,rJJK"1̼u1WٙDq RQHxIZd@@J$, +OUR  0UYibRRqyBSflI,V#b+9$u$TȭB$ٌIi!c=YhI9 $< ̂ `FbI፠عU +>O€Nx._cďGsk%unzN%Sxy<!؉.ffjb7nf?΋1-֫jx[ls嬏C^ `hZOĀZjHT1Ŭpr-Ι+=ӻb;gzٟ|0 sk#YhNIZ5~U<&crbDn,ĜOz̯ S+B{iޛb}js&M|Qh>hw 8w#_x5xZ=V<_eלvm8ĉWxtqP/p9V^q] &6{‡8s:,Y I~IJT\SV%-58{J\q{\xDžbwF-3ho +{cF\ 8M5tFOMCfٹck(-@\L+? +U)x%u5.~54(zzȿ4nbLkl\{5D.^~4AՒ}ֶЎ{B2=Bzo igs\ϧ'ѭUzIGۈcǝy|87r6/9ɗ9yx_G<7?*GϥDR\5L'q= 3W&2q3sq?G?I,\ʼn}-F›&OXSNxJOu+ J")!" /b &WW>vTb+k  Gnno-\[3 0Ⴥ*T?BS.m + g,ܱ\^5EyZ8?۵e9O׫ $3nmS׹%e`ZM #>4 #>|#i@*H9怟katDK&2,-_cJǩfɥɥɥɥɥɥÜ+w7'''EGh?ȥ̈?ˆt%vG^;7Xsΰ!\b[jɍlαEňt*§Yfmjgu׮.^jJ;-7;":(kf.6d-6`i7֝RLdg幮7rԍg/QC$MCrXMux yxw[vCnϱ}L¾HӍhB)zPtU\U#,&HF'٪ }΋fx4Í^< *Nx[%Sݸ՗hL5dq[s.LJN>cVn!^*+g\"H]89qq&:7IrT;H6YcLݘiw]_pk%篧sxQB@]]v^axF\uFdejؘΧˏA +|M' \;#j2[R1uIҌۤw&%}flыV:M]K1ž E)@!'$$8YyI(%jr#%17,IvRrTǖׄGIy]} +%?."&vy6 r[b)bxQl UՏkN:.I咻 S%-`&,n4y\pz;*cM 3(vTڶXZ.-/U8zŭ$TI҉$x¤+s#&gܜ-ps:SF,emZFmq]y(Z]Pq&`8>tm ⏼t߰+{{ߡxm4 ee-6vK)&IOHյĩ;e޾1]r{+L '(R: C >>Pw~PȪ¾mbU+^qZ軂08sˇhﭕevA.$8/ɣzk^2_ζׅqk!=mZF\imkyۇ)Vvm [B~P׽a^7tx{AZ5P?sԇA|Z{)؍I~,tlQ%"A:zTF;[o*ЪɛIӫlTf3wĨ]'r 1O=s\x8߫~ c:)9pB)`c00쒘b&*T#WLa7̙=?zK)Y +,IkiTaJRگ+hDpLmsS 609 jSx5njV4/~9|?Qw+K='>I~̯ZcML҇i.C~̯Z7m(@|7~J=WK3/E34eWc1|"E)Sѧ,E##~"Et)h>e}"E)S'YD!7q.OyD;ة.΁Nn\]ݦ،0VA5TqR V^ؤY"Ue2.ݦWYf9[e(ʬ2KLaa e2/-lAx2(Zh,v@K5$\LSھ_ LUsU?=m3?e Ɋz:S|| P! 8yZ( ]hv+vhZFbĽ)ެać 7:F|/GfSnwli4 EbQ{ɖ`\*~f=oz,g`T3͈--1b˜Μ ְӦ=y& Ctgf + #Ēcſ`85sG' 6GM{.IW˭{.t[du{&<.DE],oը͡NuF:eAjӹO;w8hl)v"Wx0 IMd(hBtZ+nm|+*ʊ]*4|ˆ'MCA)h?M@ӆBVv\LÜ+}*YUƴISBUمy:AR= A}{7@#.8I<_jbLgԅEb?0\kTmg*g ʳ%Q8^ |(iWa`Q\P>iO#h#\H-,VQ2:shu!]fux0ͷ[o1p> ss f3[f^W])hy #dpoW8{E}ae_rGF]gPL_.kZ߄,x}ڇ矧WG1xey,9uT; ؂@&)&EeqZHy<Й|J/Ib.,1: &r{r0Fi<ij>"1)ǃD97 D/;h(Z +`&^ȣEp2x`S.T#]99!19؋ϓ1 di3eO9uV8)&ШgP>yfL|B% 4e t=&:O3T #@)ZZc"CIFv(v"OA@tx]HIbL8 Mxv8 c`# +2[ dp0itL26c7 㜖iO6/b{`]\~1k0IYȤ`& +r]]jl4\?r3o'M]_$Qq +g(6wO<@VxAGd)2&Nۂ; tY;= +sx[7,;q4(4%'ob'M&SPǚc1@, +gnX E@aL; K` '湊*قT{̞_O rr 8q>a-M3<}>%sr%^- u.F37!3a&ʍ b՛ɮ8@lkS0.VOcèn(<)pyb4  ÊAl܎6GPIkDԂgH[dg:wB/͇ yɃO5xBñEHdhq?(v)|O@}.ҕXO2IǜݑD>d]uz,0 qc{^q5%_>݇\_)Nwߔ"wϮ~>?|oh0nһ[-M<䧇߾/) `3)K];8`8!@XD:h`=FR%n HW~&.:h&" DYb<0Tg4@6lJ135_H/$iJ:bdxVA q|ѱE݄m +T ~Á D(o@PN@@2;-m8iほ}cTfLɣB%#|qF,=(z1v .K:02Xih3O$beͻ2j2xS@Ox p'12|\\R:͏rYTCG~Eb +[-3֑j^T|YZ毻yH_Ide2P-(rU2 A{yUx+*Phm+[M<@y8(=Ҍp\nO,DO5>&N"sŻ Pj&V."M `o7 T-XnX7;p5+a82(* P^W/XOr0~ ll-P9wmDd`, OdGK@t6U8PBւ0V9蜩CA'%g3ҞYc`#JOԢIߖ $d5OLA?ulǻR߶Z r2@ +(Ҋtd` +ex@m˖AUP?&E̮F;Ne|A!L{Ѡr40`Fu yi A&+,G +Be Q + 'C(c!rD>mM۹3<1?.'==3 &Y!A+3 >xȼ+ #L S +{%/mS#l̎@im/0QKEW45 T-ˇƴ @ߤ8t^hYu`O8qe ɛDc[AHAXxVm[$ͧ1S G̊fyT b Rh0QQ;<`:c| 5=Mޠ nuOS1ԒG  n/-<"$%{H8z b|EJSyo="Afmpgxw*|dh~kPۢi&,d`yf*U60K/ x$_!԰A,D` gE [>lGϬ*N+* EN+&٪gO6a7 +K݀<eQx]/_(LELAbM +$n2kS8?q3 M̋ǵH>q͈4!r#mQ'o&H\খH22i@S`7<>R[` O(P%DC՚y@=:wX&h8&Kw{dV}3=#hXhw~& K<^U2y8cWs:vvBs4a` 3BLy%8R3!s +f,%!. :[ p)9^C[eXUuiyi-z7EE`ۙϚ5BK߸vV̰k׌y+30 qp0.Q+'ATI4}pRLon_s|Sv4w:ԉ4; +^w܇!ߞ##ꘁ/XL +֏1!;Sz\Hl(B)58V@sûp ؑ 1p q8~FhNHozƉ%Oר⽆%'=:!4&M͎3 Ob=(AO]zz Eev + ^GvP/Q?n X5R<\ J@LIdCR.AݰC7oSo%#A C`ˆ0Lv9Ѓfң.ĸTCovf,:~) I0L+6UXxd{Roa`()qVno``d֜] z!J -l#fP*mR\:وӛdȞ~qp1 +off22ix3" et k.h;ъDh2+J7 g 6 g2e˭>3)j*  +EJqD^`skV4MbĢdX#h%2 9MkD<SFr9mp"E,aJv[,TiV"1{S/ĵr=\[%`qw:C3|&bZe.AcK۸]ByͶh@y"SuF1FyAVBި@S6dJ?@bDb5;h';or0*QxfD'.f bI`>KHƤT ڹrp0a jbjfpH(9tRs}\ XY@@A3ڜ:Z?oNIߦ֦&6J|m{SQFs)yS;.מvx(WAr0;{tcʟ8Y+\oV**`@ p0$*`H:ԡ2!1:¢:6*c'uDHT0*e NT0B9-",3U*F4S +#C f 'jT)P{=]jX<)Pb]ȔB-J{5TTdR4TPRVTPXQAiJ}RlJw u9}[h\q[Y7+t *~kVzb^M*w@yTAs&l3BjD QcJP.{wtM Ao劋7ɼ 9o'sYm63ɱ"5gC HLl&.)"XwogzU%2s +EYʷ;+%WwR֍)\ggCK3[>x$0SLA;_79Xm!sD垊j?ѽYMw]DK;K{7oiה1 Pև("mwA ꐴ}ӻkR.1,2S}z-q&7~c Rd-$I%آ(NcS0+;!I i4d =tf,s#c`ޒz7I{# A,)$\\'1l3˿ݯ?* crj3y1?{))Y عh_b LZjy0у ^,6m"|&4Ӽ:#Hh P/gM!= /~Jnj'bN^ J'A=f>1ѲB\gqN3I&g WOːeEQv/g'LkoG1O2?BC`p__OWŘ1{L=u*3` :]YL˃άz$hFbB'l!Viߊ!Qw Yy`|EIq|_ ]GddE]G2rcC KP(M6ƀO+(H-Btb)uZ QX=bp=ڹ@J.!e^伞;kxQ),LRIW^ lQXZ&b O0%Lg^}.J1q.Z)M_a )(ӼI0E6_!8,]" +wuh!$~(af!?m6>`Xvď i0PEUߡV:37-m4(.a/\Ts;ۂuYc !AI:C]|$ٓiȵWgpMO1x t'20'ʾ>z[i.5TLvx%QE%#+ +#Q/ ֘s?SO4D&zoL,TiJm{Ռ H$W, ㊂^6BٳNe%xb, ͏ xvڌ4=4-O sPrCEI`d:gb2Jy.\D";xa1D[!{cysz9~={)V:ji8^j5-{r'L-zAQ?kzCJsHL.jj+:Z7IyVwRP_>I`n 58z sCiv|ۿU}>*>A*0Ȣu¢|0G:RH,X%Z ,$QO mfp)' +vpiuI0e6[xGY86.,S JRYq)gU`Xvʒfr,rziWke6rۃ߳²"1YAmEDTd ~Y5r(k*`/1K;V|pblTu)!=tZf8GdX$RTx(j5GV\fBhAF%=IK(@9Y'5Z]@a[c6 %2-D=AV=T(3胑c-3U)%Y'F{s w8JMʈ NTP9.мOzN6s,D?KqY>YL[ss,m_q0Qays!H,֌+WS.Y1R0~ J.V+1WjٔQ 3'dFbl7݉@$ Zen-#0øRE +2E]GuxD9g\`v0G4)57"Is4@owLIX#X ̈E@h-}P e LRTO[m#zI 1? N_ CB,QvDm,Mܞd@"l)+$& *q&V\( eL'Ӳ&r䝞.p_m<4Ry #xJ2~,\lX!" wr+EvٌeչLU㦴MH꘍V"$،vm624?&Kra< C* 111(ZU4,?hnL!元0) ~űH~2fPmHOԈKnZ ?Xyb|L-'U/C(9.f@ >3ԍAR1\l{j8s=L f¦Ϟ:I6@[k +DG>FGuel?eSfV=3=bjUD4[x ˑsVG4Iw~sw/)3{9"R#ղ-2{l | |쪉Ӭ +< ,=, $ ĉmwI/ I&l'A=* N=~m YOn`- ˻0I9S@/''<ij. [2S:S.3 d匲iq +JXo_'2@nGN3Pþ^Mt6}pU՗ @&UnJ;0Lp c ĊN @{7LeY,*S\ap*sJ\-xf]Au/JpV'CnEFjR:LZK][!Y3o&d] 3Ǯju̬RгX0U$,=رeA6@dUxp9^p(2ExI;4 +bN 6dFEl$YtRpfe10"(?;1JbKӮ)$Q+2Zi[b3e:2RKꥇi-ή2ܯ(a 561v-,U۱Y&FL2L ˨-D6.} +A!L-JAo3!ReakMCÞAF~-sApeh<61^?L>WM3ÞABҟ'Yb@Yyȸ4 .{ +}/ۗF^AE?84XLA7\,Ih] àYnn 2@5,JL#c |B33Hr0&XLb:m] w䗌Di5Zkw}"78 ,+ϸOhlr}"МԄYs${IVl2 og " y#S~nqGĘv;OJjuWw +(po8O$7DIt9Lt* $*E8OJ>5\KnPc&̂B6xD_Òk">9R!ڇPd݈84x: _#UDZ>zdCajA컨ȁ +v{Eϙ%Jr] ++lZ>1:{Ԟ0Jn]d ɻgt71bJ,V)RR)Zzܨ/vqԷŽK +$)}c3֯b[`u +mprFt$ oLQ-_י/ɟXuحY=jIrkdRkm#Y2 Ѡen?YVHc- Z0VE!/] {XRcOjU8J-ەd欀6Qyal;1c/狕u 1T2)!8NsMv!ύ0UY[HЀƆعW|1nhN sck? wEJ^ƓDz3%uܷOD뵆ŜW&B]RK7z˿K_8Jq.9,ϚILZ@6.E6(h48LXULy?h7?j3Ų*t.f&:]ӪLnkl#ȁE3ЏF.NK1M̨sP:,X֜ZT9ynGZw!^.b_wvvkr}^A2δZX0We"mb\8 vpR*f·nRa i>/ "bqs <4J0"Zghظ%fr~-tE{MaF]֥rDHδ[kWڀJ{aCˤUv*mAjI>-S.N)&E*S 4\-dգKlՃtDW=vW;:X=b˯jMtGU*QEsR*'m+NzLq W93Ie ]ǺIgڏT^ +5J51,פL+פP_P a=&T=*"U%&OǕUVVsTxA쑆#ʸ :H(4"S8S<U`r0PCURۺ 7hB}X}ðcTUWi4ZJ#REy. +V lXikpSTNQd+qrUUeN<VtQuq验)N]UuQUj8S; t;f[PU!b_*Tf請/au^Rvʌ+*@{ W *&,Q2` +,fK7* y}7 8)l}km}Zq?eTʹbPqeU &зsViיǭ6Y\U9#Nue;υqؔۤߢw׌OQGSpM0ޭN;þzX r*<7-j*[t([! Y݉ r/V@BQY| u]A%囯تwPxN4"8T@q?7qpr +"p:@krFcUVR[ӾA^Cm&ևQH1B1OmE7i]:tUz>.K[Tؔ->L/3V>MSh8mv@*hOےjB -T/8#NTM}*$U2)1cdA *TBUД"_*KwU<2 +P^eOVcs +%Vl *xyl7׿-\ZUЯ@Gz>2>QPILR3svt9]?/K6wb"=eRYlJ88*%LkӒ7{RűF{I0f"{ +e74pl-PP^;L2ĩ?rh`Z g6/:Kɐi]rcE6J<jToPP;=t*X]|-;Ԑt 8M,.x޹) :k0 iu_ݞaE<qL>(€EVy#'gooQu0@At@Oeؽ@HkJl7dN] m*2^z@d Ao̹$}7y%# `}S6z^Lל:e=[Wk@=yl^o[/ +E{b➟_ǯm!|XN 譴gob@gZ,:H+umЂfbX`S#5T‘􋾼V#ױPT¹.kd,ࣤC`l0ѾMɀ}R<iлc ߈MlELeőT Q UPz,xA]&[718F؝#*8#}_G˥c.#@ba51TQXz1*[8ܐ%!p4a_X9G9 QIΒvg-Ñc,"{ +IdsFʁPD&ky].\cci9CtmX^x3Bm +4TYi7ky >bm[v Gz1kHEg1z1Ve-CDa^ausap֐e KIP_UrHceC'}Rۋ:tc{/€DjY]d$vh%|}$6hBց" L ficy|$&:p1@H[aLlbmdž +s& uY#{ A_( \N7i4L. UnZC[w0DȎSs }<*3뗥3yJ8~B7ܹ\n%PLUH@Zj^Įw~p0=n+ˤ#SÆG$+ 0)6(m ,'IsL`x' +, 8'~yP?$<(wK,0\p[`)vZ(ZPYvGdHmU4K8x[&z.01ڒG8 ]"xۖ'J :أD.U=1 ʬl%L~]XR;BLeZo<1 lprV ̿JR\BL-1JE0L2;,0Sj❷3nv,7渝>Rc3:AnĠ^g 25;-0e/YB(:c<]YXIg33(J)l!N!GX,(d6uW#*S STJY2zRvtyY/P]Qd@Gac *ÞHLX/)LSQ"&b&"u9a+%Y׉pH=48ZAn(m| '4#H'+2I0` +NY-2 5E3wU(Iɋb%R2T6>E,Yq,ΣffM,vIRr 0dRW4!e $^FFPJ)%YZ +QT@]h 1G/"ѾdOZ$>TyV6Ol*;URzM쨳@T^]'&1Z$:XQ<΍+feXC+nٗ SZ&);x+C7z] }]ڀ`ЀM6CNkT9āzupR~u;>, iW Yh2xzsOYH$lnbW1a4؛U "7@P|`ҿMgΆaЯ'd CWQ(!]>h ן--n#{81 aAsq{gT}$ YՍ.ԉO-9dt):3o'~FVUKISBVz lJX 90 czڙ!zzXITHC U` kiw҂CCFDG PfEY5O}gbT3џ ܁(:*`y`ƶTne { ʐ.R?eI ẖc;ɩd|MLnѳʳy1^y*J'0ijy&6ad& k$'Ҏ΅Hwbi$#T"zgƙ"v3K!K݋Al,}aap4Yig t5.B>4lV(.333۳2ϰP#U:|Bّt4&iw#(2Bl)ӳqO 1tg#%e{)3/,ęr;bo)bjNY.#A$\Ij$gDLU E^* z»aODTYщf"p *[tQVg$ph*ZvlRppʭ`#tbQOǙ<Ȑ7Ul5`TicVʹJWIPOL` 73q-ydX RȝlQDG,ף'6T2Zd[Yΐ[NR+wN()ގR̜J +kQXz%KV|OyPV5>uNjTG=P: :fD^|%(c9e<ϭSY/cJElO(Y|ƌW )"WJ[QARJhhSa[J/%UXX4 T<[+T\;sZlH*oThh*P<8F*Q+Tz0T`/U0R[jTXPJ!Q1JQcHZ +Vczձ6+kj :=^+@>$x=LD:d)ʶr}F% =*+AYtbCouZ#V+X[Tn$Me(C8Q@2*eT3]S*GZU*Pж ]?FᖯUQORvq56 0eWcȯrN| *M+T|.*pQ;nb@dۜSعˆdsY^"uTB_V߻ˎoɁfKt7a2KftdY}G).l}YA߳nAe "?f~-gNR $:66hq9BqkKNi2c[ͥwIikۻK"ڤos=egPtB"B*#2:T D:Wdy 8SYoH `)Q`:I*A,_gֲT(rF8E +nF x0@\)M$&Gr_G%~~j Fs'vcN΃ݦ%tâ'|d;%zuA0y` 1I0;.49 t_,mp]`0GdxGyΒiӿ%tIYMsY혞vr1_ y3NJ'"hd۟ Mݓ=6Dz8Gli]ٙUmG_̤uG}Î)I˞ L#_u=-K~WcJÕ@7og{(K`^Y~:>Zw>!3:R3A`#'H+8V7t͍L5Zw% ؏duYݲeXdu AЇe.AI{~cF+f.Ce[Xyysp#/^c!eތo\oda2#[FjxW+]ŝd $JW@ֈ +p46 lM׆LybZ"0;O#cQ,GoS;pa P7u+B)qo]#D +WNŅc|=D>ZM.KՄyJ*37`89~m:b*F3::E6m5p9@> |L;i8Ͼ5fHWc7 %]HGx9T/uG٫@حJjHgvvD۩<[Nç{XclBx|:ȱ!uq@ڈPB`Xg<,sԠ nuib  +c@ۡ$)е`^ u=^xߢ[6r 7oxT#(GLP'Onʎ90[wi~ aw! P9TGkd|h(|K)"2ڽ@tdUR'%'9h&44&"%. )MY<VJwͺ^nOks$K0B,As'DC9vJ&PVDp +HG{gvv-buw97vG|hyMo~'< NґEUhF*U"J$d[9Q(zlwʑttٛKE<+,$ +om&}K7͛@v>zYvjoQn7+|'>0G̘SڜjF.jxImv -s&:zGUW(Y(Ig EyT4fSbI` PqǎJyhJRvl]7):},-O{jm 0W8'uT DG lmBGlB[RNC=(Fa#$;`_&54a{-/ _uf_ nho~Ee +Agfzf!/fQxRSIԶ5]'?] +Zs20箞V[:Y՟g^M?"ϟv 43^df1wLl^Je*/h^!9Ȋȅ^Y6q\ET6C;'ry/U-v`󠫆 +w\ػG4L=.uF_E؉".$QrȌ54S&E@\\L_)D0ooØ$y#B`GwOWb4" v4Rm˳=з#`1P$xQ 4_# ɠ:l#4WLH~G^%IE(L苳t9tIbfiLc]|**!#Rv*J[,F{5GB\ hX%D_'L=OSF G׬x{kи38D+kIe0_ҐNiKz&-dH.+D}r{qжcemO +rT8Ss+v%Y"̫AWl:mkw{LڊvݣEh'J]i?eDE³gsYzPij?2 +AQżR7A/X%ds畼3%̫ mDbr/@u͢BB;$ih=W7PedneU~6UHXiU~ayt+Wkd3E:B(s+p3ڝ#42i± +uuEt+x(W_4*9|cЎ;@vG1h4zc=#1ƾlOig[UO.NA,6ҔDaJ;Սa۫k̹o6[t}hJ֮}܍a۩$i;j7pʲqYmlf8Fl$a1@6Wu`7ؽs)SZ6M@k:Mt1LѴ6- YEޢ5xBhʐ:Ѣ}z AYyeVY͂p"_-f*m?@Bl@6;hs?z(oQB*z 6`| G< p{? fOV∖(l-5blݨіyXxΐ%6}*`CJOYA=T)]}D4 IIBh"|S +ٽy)S_JꇀvZA+;Pod*t1dRVP뜘F髹beN5zj]`ESIt1bƐP/tdtֺj +l2kHįL]B0y#6UlCWW׸rmi޾S7;{/ֆFBÑҸ {r Rv]U(g?]iGEm> ]5mOo%ʥ#:΅@ˮ{ u1\A]HV02BU{o[r^|ecEdKu)65((BO^]ٶ͛Ok{+}qA:}TgW^6P ƴC_x-ϢIPvR}YǬVTXFg&WhmNdolw$X9Ϻ\eE{@Wn0To.[]v*6RGOp7zd'iٚ]7x~OO=L<9.abJWSS}8(U}uun;6sfu^aCeVu@9EC=Iu]x[jmڡ6>lk; $~))i;o_TA~/0uٽR+YC,腠̔|&f[BrLBo=Hr&E_2B]A$ٍ\=mڷOZD4B)&n+(mWYuEIN  >tuJ +iv.I:xi 7]5X{ , ߦ+S!FpLI_2I!7u#xڎ<|F7׼slri"6~,O&ygV4R=ey9 )Py <)Ɋ.H|]\%lAl]IGHV#q:U]j3%hv떡SV^WjbEAz<2ϔtږ]OxIY=[xJ@,PBCj<9d8 65xJM q;t.f_BTƾ LR>ĈsP2/[QS[|5sϙpP.8E n.3Wѿp]s|bX\}?Btx/BR71{\1JouT`:ujfGլ{꺢3¿gb +ܢidtVӋևJZxh@xfUh[P#zh!i1b4 LA -7)JON=üfLBۋ:X/5qQ1P.m:jA)u4N*S2átĜn\@&sP~E5$<ʮ:B2wͮ 'm>7_YcҰޒx=*dy] l:]p9~(=fUč4{6OS8[.c}R͊1t{ƭ9{B|Ι 6 T' +&3$Qc~d%Rc \$_{{nBv~Xdzp̝vf,*a鵽Y0rK)QT` %{Y +fANo82:['%qScl[0&zL@ Ics:u~ibSļٟAPOXJN-#Hd[Ԑ +N8cF,d/0i4 +`MwKjl>6WМƲē] D0B|y@ȦiX6JЦtk`ʒ}F{M Fx=ZUN&7Kݿ@c y aVXvmEp `:\=RX<.`6a:7%T'iG;%{͚mĝ M *TQ}jKbe +ҠG  +|1Ԓ㷉Ss-ղH}myƵQRbk! ;q3U +}9aArS.~LqD$GgˏhW؜SgSo(Uiv/L_Ft\6!*ervVe)<t^Pb9 `=@lC_)^ Z P]3B e_{YTٌP9,3fijyNz,o5o*~H ; +bJ\RTO8vXQua,J]T=OFG]&宭}]v\gebDBX$R84]|h9y _ ۃC ëIDԣem6?3ƈ@6#q%o>,%hvF4E6EnHu #po$,9 mH jޑ2 ? y_i'm#&jָLw$pvmL"g{Á1?6AzY{ufDx쁧; +ɧ%wF -"Ё_rm*3rƵ%q?}{EjQy6Q%F/]3|Ŧyeoլ%@b4͗f~yt}0>FMgt1> +AaaсGAE{@6)o=`I|)`w +P/9ɚobҌ=ma>Cn@l!g~a" .p¨b[QW30.RԔ/*gޑ*>˺~M*S:H]I9v,4#=5#kn5ŝuߦ Su// İfx.3nz8` ~aa'䳅 +f !{4HZke {7BOd 6Gt8m6lxzq\Hu.Rg1D4J{cT"ubXWNS?GH.&dS?Y邗B1u6JpiIe%m)jX\9L7&^cM0"?{;5v"3g_%v«7?6!JklD3*'FdmYs|x@,NTE~fmh! UB8 FpW)y;뮐7Q}g,*؋qra!vCi(_HeJDHK)$p"Y$?S]EESMڕ]ng?%vv% C;&Qk/9/;^@Ri&JH#)@$}: pe ļ7.+Lme=#ͱQڷ{kN,AAmyC}l)^;z73lR׀ۺ@h) S]ZwZ:_$*@u}8p-ט-hRΪEr/҅|@c kN$ iM/l)CP+m+,~ia꺂xW{Hc+9ۺ@My0ec 9F/5 +J'Qkqf/mAAmo@5jXK,]j{-Vj?3͜zy& &â +h4&U.o +۬O6 6ϜQϦQ-HMf +x}$؛DegSzK³eI;;}b|(#sKY^E"|=@+xY8q t#S?|n`^7G*"L_`?j-Nat0؞nY t'u"!zZeIm0'-J{hG޲鰼i!<^/%c"L{rra:lv.k7? H:vZ ;ɨ6j'F*鏁oZmG5xyY:mY>dx%g/+&YN@Aӌ<$fA8)5E\$Bl!%-`)2_.' -ӫ5";j4%z%\G~Ƣ][ 16"(_=+] 뙟Y]439{W mu|'E7HEݤsP\ho@{X韴 +. Cza\Յޜ2zLqW_al˸p6k8Q! !zޑtfC/ju%QHV05<rrn c0bKpys5EAy!AY E5DzD8b ߩh.¸{M;qNl`H!@zRٴ6,jz'/R陷QOpyJ1 +Ҙ#$}ˀD(a:=̩?I":g&yML"Nfs-R1UչE7 _)_"qdJCGZ WBKjE~(԰wn|a|PgRSٮ.sz2zD:4ki+ Aԣ':&Ɏ,U=^Y@q+"@P59oFrCZmxP8fKa&bj!ekg<o-wV_M>,UB^L&ފswVX+F#q-Ā_n+b%$Lط&}+~ hs@kD"V+QЪ{CY `B<Y0y{r,f.8&wN`v0xj{x_ j0~y os'~[TalsYӏM>tۄth ) C!$ٳt:-Ok +:Miu[kb=t|h%OPmmk!V*֒G[&BN@\AԦd<.iKyJ-K\(+eLlQ[(NZqd[*ЋXkTIXo~JvszJK׎//߭ +)lxbxP}Qq߄uXmʹbw{GbFO֚㭬LkY+׻] ޜZɏw\L׊Jst6Ĺ~fZą5>݌MOm̕󆯜vֹiNd3 x:`yc|eA !Ou\I==y`S5'm%\-< Ь d/fy8¿XoĬK!#g/$>S݆dH(vn݈ Uhʉ YM,ֽd.OJϬτ v +-jq}<3^ϣZu<m7FW 1b`x<[O&m﨏t}yUWnSchf" #zIӥ PN8bb EHd D1 V&Uwr F +YVru3to&&e[7KqS(7}'s6& sGYAβ8@O~qkϋg:b}] 2{ZO+π ȌIi9Ƿ'cAB_hY!ȭ 4KrLyq&(Q6Z_TM21fjD6 O3j}uow +h7(`!Ut+]k +lt%xLdJn9h̝T#BF95Eߋ~L6<{nLNH"{\btG3"Q '\`ɫN[dv/K=͉kaۉ..R+UomڰW+*sX*ڌ9D $F7swv}۶K6mB`ezC:4b>>; wL%[\T-Q=` F)|լ3c5+0C^'y0%x ag#Yw['ݧO`Ҝ2?;׽pɟK؊- ޲ sRtG :eIڜ@?oiDh|=h$?FJ[ѕ?pN!rQFB4?QB/S@!O'XD=38@=h`93 L\?p&%D])J%2\?pB{.@DOBBӋ˧$Z3lm#/wa%N v# &([-µEܩt&W,´赣.*nq#O\lT\AJ'fsVwi+EGin*p"f,l86lvU]btrМ7-t%^O'BDiJiu-(/LMFR)WZwpo&-|$mã:b^jUebَ8ym+F!0di^ 4["K6H֘7*|/*O +`;`Hyet5oYWvUXE-)m *fHN[%]Mغ‚xu5Aߪͼ5Wmj6Էve6D<%+:=SZYQ ބޭ]]] v1VxVs8U+` F0VF0UKr5leA` 4AFFF[[e+W[e+WK+oma\ma\maTQrQr^ߛ9lv҇:hGldˍmb6Dou/,.`7}W+niIͶ$1^mvƳ"gҹ nɪvJY7٩8.҂፨u=ǽgo nmq# ;"2u݋,ho%Ƅ4^zvf j^C{~3AV(⛷fn5]U__o.ui<8޳mnU4ᙼr_ {^io"\Nʆ+MXB2KտN˹YHtE'2k@gkk ^`s͵HڮABa^k ,>,pa?@5›Nxa,a 7la;03Xg,ɣt&( Ur_ߞpm$RiЗM(,#E/w6reu:"4&z&D< RUY7W | +\l=WyR8ugXd HEu^I3Tm%tJk] gA>Fo Z:Keob],fTgiS]`L7g{wq^nQ|lȲF` + B;_bD֜Ŕ}6T\\w8IVTR +[&* }C FA|[+Ɍ)%^>4wݼÎu yͿʔ4LJ±'~SsbBG/hΔ(eq7eP-'Ux>,ёN$IM筋(F;ZBB\p#g}#U~/M?=/ Ԟ-/V翘oE kcȅ b eU% :T9#۠yM/l[9I^}-R;R̦?a`o-Ǐ_6" 7gW~Eu2÷[ |~?7~|~^nF ^͂RePt@+bY` "O mjͦ&v >ĉGj͹^jP@do~XOyfaik"jNn|:TVy9w+̗d=rZ2XxRo΃*њlf2H'06+vq^(, +/{l`4j6X뀱M98n݄ Ä15^暺}ͬ" @'m8fBZµ (, +3f;STŴ9W(c^`d“mtc~ +YT;E.eO.tGȍU2}Fcb%'Q٫B4,oZEP@,:+}gB/F8?6>OYU_[#'%-$E0F-U[3kT|sLY]6GeX=LNNwDz1-߆P58\űHټGW.˜>ۼҤITaμ (7pUbʍsNj1aERǔ")S7a#,>c*sK~,VJT +=\5B~3 Μ #+p{ߙ }":#` 9@7;BY(+l1'Q3Lss +՞}f aI-F(F@cxvz +sadXY""yxydR$1:,X)CӛjbrH*vYMqdFU5%Z*5sLuo)) UdX#ۨ=.d#Ɯޱn,Fl`OAY bԉ[kSiٝjbz/,zsyEF}Vz$JLQ% D4|vH[xI/Cxv.$DםIn(b]*YL{"l$jEicEڹ"s:\msP!$z3;ۉNT9؜>v #^ak G - ]Rn#ݼ p֮fl‰怎:Јfˆ +-F|pqm+nI s\/ܸݸX?:Lr `4 s-z6ن.@Gs7ւ.A囩oBE0~ 4)w Etwk5,؜'Mt/H^~o>[v6QJè}jݺ-ُ0UQ↼vzƦZ}Dl qHխNI Vl'T 4ڨW K}LwV[[F_/!潿p2ȽtI!~Q?7}׍֧/gnlrd~(:հ<5 #=϶H8yqaG`>uuEAnu=vCJiBz* ؒN.ebD?ڋ%W njBF\aXظ y7,qdZ&nj{@CioD^&'܅aT6ɛa8Ѡ %|އtU1b-:IVnrFLN$9 dOȋm75* Uƅ-7k5dnwc,XeٖM)!O8rLF#WgKSaMR%rT0y;ە;u!}G)/[&(;Y:fJb=ҚNNH!mGLᦌ̭M]%ߋkfee8U]aOC3Megm|M盚n߻Bӻ\cOv}xc:ب (v”0n#]+!>WǣYu6耔_ToxCZsIV!ٶn@Me(>,K@_k9Cr$v;;?HV-<$1Gu,oUNn@ +7|uI'Y6qɥOgޠvhAuVM"5[0{$Q@]>5ܣv]I( 6 Z8Vz\N(x6lW|g(M0MvE%tH ߆_J4TtMuc]`hl`=kR͙ L;! A;Z;BifONt5ku5w{(% e: 6P,H \Y|c4}<ȃm"%"sFlr'& eO{c0R"ȆgE=V߹6JE:  έk'8w| Z +Y +wJxiOÕ tOAN+>2nbQo(83M + fz@m234 N Yoݞ.BE8PYhNnlnS"蘏 DĀF-:Il\g1Uvm,jzxF\vnԓazZ6adxG~sūPK8V-כGM<7 1Aw9[BDm15Ex[#y3N3 KxW +"5r荫Mvڸvig.u[I%B_Fi8f*9J2 Ѷwla9 (87(լA=Tփtqrv)o1 dcdD+ak6Қ17m9l'ljG|wT8*`I),PFaz3w#ޒwD*b/ +35,]%h %b^o3 $ +WP}og +PB/u5ԗ Ͱ:f {B?xogJI2B~eGC+3+#||)$d@H!uxlT%5Pgދ:3ck:=(*W,D bOEwzz’SG'FhB^.lcrbvP<ݥ<GK~[KVa e=8"LĊsfB$m +{6G07roOI0rD MA'/ x*LQVlҽ0N 8Up3EnEu'Z KvzvX\. ++DEбBB219GKm(hߊ1 +ql 4+hEp_Vm(maƄ + I_"{c&`C&gLg&zM(vIM}*+C*lśZĭ=$v~M }1C2y˵6ٹ6#ibX >)B>qA !!ZIΔuhEOtV(0!jsD3@h/!vP-IK"6>JvdHj5kEC2\3}RJ8wś"$4f~]T1b-VP:A|q_sU5h{ jv#xkrUH[+l(Fz<|2^Q숅?U_*]/);^kt-T%bn0Zr +Sz]k;.TC=ɍ$[&,cKQm3!DSh TWլL`ް+7-; ?< Y4A?7}GJAr6wm5z3R@A` _nֺ_G̙>x8Q|yǜgpdɯy)N5 +MoQoMCŢ]7#~g qp`gyL rp|R#6DEv6n^4lDKʡs=x d57 Ǚ0F򄔺d= +HwWͯfgy|!廹ˬ}Lvu3Pd_FFtO}| +G[_~uX m]n0Ԑ"V3e$ +"&p#/c>Ax~3H֒MjRj:"2~T}ag"$ɋq,4 Mh\Pqr<MΝ(xAZ%? jAI䝴 1 !a+ HUhJ4N sG>7'xk.XVhUiB.%Asa/YA+d`!tpHrJ&ghH@}g$a6j!hJJu|E&*`& y@[멡5|:\$B(']'bqˎSALJ%yo=9u'wMlh"#\SsiUFPˢ\~mFʞ.ĤaT [?]aQHmUqĉ{q +9$#>nvW9rbx orď+2$k +mÚH& 0T#j$Ю_Rm:d%]PmN>)P!ShJ5_0MJz7vb8x-$OW)38s1io(j gCK.ݠ}plLk9cYlC%y=$Y1%pAcz_E{ + +'yB) {`G)5Y]+6ݜ*G xHͨ){͚ ]&<М\.DU +V>ۙClP@zqJnASBIB-DQ^a(CN1.b>.|0sAFq;|d_' :X] י7H}@N~ܮ3^y]/a-&ưWs 3aJmnj:LѸL̘巿W7?~˟?'_꫟}ϱ|=~ڿ}k3oG3?:r{2{~!_Oۏ#n?s8j7}ǯ|ax;Fws `9KB}/w_۳?_W7_;{Oުw_ïwwj*_gN,dh K{(!+_^&|XH2C;fòҏfV Hm 8QyL;V=90jŘѲ .у+BailrHT| ؚr\|.?TNV޿Qf4 d*搭sAڲT%l:Kv^jFvTz{wɖcGNCD4)xph1}$k|==A)s +F Cô`lTj١шF?tC(1`m+ cr:[4i*Mbx^1#[5Q;as8*8HC鷂GW[ Dsng5oҜ} u5npte܀1 +SZ׀]ތCm[P[ކC-J4q%C<5'~޽'=ͽ"ZܳFΊEa~jT[Y0߽u $ h PA:o? lyF@ =]yDz#|\8j v.@tԩ +$)7ٛmu`ޟv8\ Zw?)x  '= +9O|VZxAlD:Ps&*"'cyGM2~ߠ's.I6PWvo覧N׿CxF[Y" &މ5uuCqh! ׋iSG+cЫ{qwNd[o9Dh7:ĥcfP|8P?l4`x8Ο yT[rvG[MNݹ7\熻Z \z3@v`p@w_)5a8 ZY|QĺcHl) BfFӁ3~U(cJs+sk^f#{=\$A/ҕ"G14\Āu:!+A\, }`wLI56&i#PuwJPVBg)>21."En,6%$!'.a>HraR'EwD"m<fنk 4EM fڇA2N5Q?%@+GB퀮8oYnZcjlgchLAD:V` W3d[В.eKJd!|_,P +处@éyL M)De Ta@Jm{"9|FX;xo/~Ce9ǥ.BÖ e^&2e?&[W- 4zP|6cjpjgk]ߋjI]6y6:Z*,r ;x؝F.f&w& +pC`X؆D0Aꛯ~-De&?Rl(Oy c:%\JEt` ޼݅giP/P|xD2w0懝$5h0Yv^[?:G!諢^s-͙(R`1+dzn>#s"}.q.f`oN&}*}]GDl@?6 +;5swsA 4b^*}&f>Ѯj*0nPF$ݝI .4 mίa٨9-Sԑro=U#)(1pF4v"Flv4|y +t/h(,n(@T.inCӰcۏl[( jD#@vZoѫ@+\Y8ۿ]9d;<뿒7Nb?U]ySM}ZZAwKa|ݳRS]5 vAN K( GMFhh0P@ lDb$!J[6Rn:@̰&YF ;3&0 ،IHɻI 4/$c̟KHP n2+W0}9]OYj"F bzlwX`tqhƒϟIάCA.r7"]xp4,uqWy +q>_9G3b3\G<Y2 x"ouꑡ ޡloW[ڮa~5>;_Ewcަ +FS+J7{ %g~S&WA7t"FQ"Y^"TS\+Q +ѪKSii8 +( c[𑤘GL 2q%WY2PY Pûjq40`N4y22k4w+ƼIbuKSJx\ CW^bٹO<P0@3@d(9>VT X; ]N 8I]ŽX~i"r+63u \qؒ$HHGQg~Zk`lƒv)SD^yaSMujD~2lZIqG2mD;*% +>ƒpDw(z,JgT4Cl5O¤DCz#SM*MyHOCG0<6FlTP/PSK|v nG{KQQU<*ҜeG39;F<6좀k\DæG,KRakq_7U ++ td +nvmBd2J&6hAx޻ .4 E|ffV'}\WeU$ #h ;Mp}ضe6iT>dO7w֛H?6b3,$-1R8{\tm!`mx:Vzjeec"B#ᨛI ,~ǣ{ҺP٢ +'oFLڜg3?e@}w$q1B +]%8JS!98,tŸgBybb +YLAx2"wD+Q\`z<냈[\x^ 2UH!!eqo;K}kkY Rx)jr&X0]/Q>ŬB,АF5Bqe7!(uӍS`FFxEx9jm.BAIgoE?D,5)ô{ \AE9 &JT)".c.ۼu{w!(B݇y;vAmb8T4J@\z!ñ瞭aI̪Q/v䎼ʬnE\NA@B¦x +Nkq`X͗jJHز=\wac Jm)P@1(E"\S1<(<4_L_꯸0%( zbAAi㬨0hv)o'*Ih 2**:&eMQEWN.MÄbSJ$!e Rt\|q0Ĝ?]E7lf$y[4wO($Ĩ}Kv+p*8s*VAhS Z+,CސzcW_@`LCܟZyx1Z̞28SS M\j-*7 3$ތM^az@Kγrr쩠v.6/%r\Ŧ,oxA(J $U/qKǦor$ukNPV`t:\',}6}%DSЄ|dkjʯ{w?3o_?>~7?1xe=eU(o-Gl@(лC=xP5[IQ{s4帶u|8o,8al0mD޲ڔѤ%2i)KkɁw0uMiRS1Pr uj{w`/U)*hp>ltwn0EHYa6Lo-nQI"ElVAIO޳HxyTu>Z<%{z~q"YF7!7ml^20-"4?QcbH1)Bo)M)SQ8K:6 QjȔ8ź)^p=!g(]r]4]Y9M2a0e Gv2BVnqtԷ)&Ma%w}DGVz4#zM\VUJ}]jM[W rR+x9fIHӂHdrꆜ\CR&CVQ_gsdpwɹA`ALARƖ(/gޒ XMvUu\\RS#[1d%&6ȎzIoE-ŕGpz@HMoGE{Hxtq_jv,#rz0rԞ,N!v.=iywm_M"=PwwAk+Dw}*lLXwv&SI UmQ~˼'t~V-:уQ~6ɔ_2_gHBV*O&9vo'-4qTDpwMFsNDSibY,*<8ՄP*)N^mԘ%Ua窾N6 -/,SkgN0~y_z\Y<aG(?,vf01*IDBh"*ozjSᱚ-m-sQ/![IJ @ӊf#<|G]:#@θY*bE+9yg޷_x}.p @ۑo^ t]fP&doRt\&!/ HU `Zdު)rSH[9;5*Б쓌 ČC { Sf~7QH}fz +0(}8x̠Sqg3߆v(ѐո߭C +zY77{}QLh/!仙V zزk1EYdu&{W+3e$!Ȩ%.ܹA*㏕Tk_dz> Kw ?sxC-JV^2 Qö{| d  j;ϡǔD1XXnBz`ӚDET +LHm/pI,فʖHLd +s9wPG%<`rd>F#<Kg5\AlG on {ZM!60O[HY٣T[Q!B@gc/xˊVyli' Or]@@0_ +lXPh[Ygnt[bqI!'J\, B)g{1⣝PMQB|N$LK(* +«t- +Z 9mɄ 0rEJ ]w`@IYUO y Og2CUOtep\жפ_ y{ӈL5kl-WOp|?%B]fIC?tl?ݜPt35#Ӹ7o #(߆rW0KfBЅ7AMvBqLC، BݞI$m&PK,'lpOfQ}k-A$[kBEHqaA@zn! W .f)9h^`y=QpL,)#_c.T=DR)큛تw!ЦNB4yh YNao̯XQ'uǞ֬wI5lP"JG~Wp4S2;Yw8H4D^dؑ(^1ک@>:yO} ڠ$ U9abbkjDO:Lx[-4XgWNmX׉z|`VoG rnAōBgC=-eS~"^|;NkU,`V75dƘXB?gۃO~2)jH΃J$ǘ DAf(p7cID +_ m/WSPJɃ.FG8ô{OiBr3'IDq}ͽ8|O w.2f]vIAzTC +s%v}įMnQez3CKwB;iEڗ34JF7t7cPeC{T qf0b|FX@n[zہsC+L=2w0=l/Ke,v=J[VH誘6^T"D-) +n qhQDH/v 6#V~Xdl&)Qmh–I_ f:n͑oK;OlHaBz"9!;wbRk; "*ިT3HP7}p<V:po%qXf82XwQ3d%X(*#UiHz 2wzC~z-HGo)0ԟ V=*YUY9tg&CZY]}Mǀ=C}/[_d'Z[._RĀMLba"Ңב`;hVa~ͭ>"Ï%9vf' w? q\LN  +6ʧ'|a0MlY AV&Y{vJTr&LwP +v>@j, QÃe +zR=;!-jsaƎK1|,~Cȥ!V}9A + KpmVu$'/!ZBo*,a aGR[q,Pָ{PBLFMf;IuҸ֙&Ou nP֑֬$8UpjP[+k|z G)WH"y[GkQ4n$s];A=LR2ɳg+V ͂e/G]rDV?扔QC-^"#q-Ulˁ5Jc/{b[!J٬H+q>0{,2gQ"i.)]0Dk'b,ٜF]TeM5EOf5ane(CTPJa >r'G69[K^D@u\ra̞}Qaf@|FeLg]# VG<"tŰmZ-F[lCe8!GE8r璌vݳJl@3 :=S6&iPHPﱶN ()5QUL&dcIGz 0%#ORp',pbD|@50%ZR kݽ,:c,K/;!i2hÀJ78[?xD(Iq~K eNGn);!PKP7i!O +b!/4)t^:ݚe1C4D2SaA6?4lQpǎ/4SUDQb7݅bJ.py88Tƕw%޺PҚz$A* Eސ`ADIe9/ta?jbk&Q4 +wש}Kb=c規,@*iyx GYVa5%. ýI$5:P{iV5zBf`{T)?}BBk] z.d$O.Q̺ =Pp@;, Z%zDLqXpKgG:>oA~(@F[u+ +Z\U[o<=T=~VHPk-*. ?)h6Uʥ(~x6Y}dd816=elHZ)ѹbCW?V;=shF~( +EӺoG+%EXTfш (jpyQƫFޯ;Hed~lx +4\w^A_c#@?xo˭X: !;ٝ|CD*Zy!D3 +L +zU])q5;3y]EWⅆ)% -+4,#1 ֢Ñ`<+5pJߤvðH#ma[qɹ<h_*kk\߯d*z/ *tbf\kT'~xu> q<"Z:P^@x&N>]g +մq2u$;~T4c2NLPp`G~ Stz\Hh|z+0K۳Cg.M0-[*i8) *> tRěY@5$̄R[nX#rO7*E7t3,wieŽV'W?T!׿Rh$)"!NfāBPPJ|{Ѳ*\9Ĉn +endstream endobj 32 0 obj <>stream +~ZT18 +r  Xg>]xB99^` +**]ȓ6vlT Uo [<cF(~rEksk/LMRI{ǧ+8̞[X[W[(7F![ dmGB[hQ]+c +EVd +<ڋA/VIR 6$1-c (܎;gb|/ۙ% +==)G.nؼJú"U=n|)4v'I8ԃq@O2;n0!7oSh!:XY~sx4vJ!3W渐#xJ ʅ_+um^䰒.! +>$lj}`|v#my3S$H hZosxOuɯس -# {4p=:i`DUq9]QPd˄~@q&pg~%EQ6 >JFf "ڲE.B0i U+TzE: +| +G;TKz_?C!Pc٭r=t aK .,.Y{*Oo=~s}sp q1R6PYaJ>`{agh^njDXCA'̐hT-TΗ\6r8oÚю\%geԗi6JJ=A0`tÓѭk =5ͅCha7QbG&D{ΰθ"r s e#Yiozݷiѣwf``n7%Y#9%&~Lrk~M)̚p@O`VJ[~3_2D4\O6qJݟ{ՉG2o$5w! +} HTz[BQA8 )h,pUhGs"CR԰N6BeDpwvx =aȕ??Xq(GYhg)̔2pt?Tazȩx}3U%7ި3BBǞG0nuqә +:^s+Iӯy}aNy@ +Ytw$!H]D&Z.^!H \'^|RX5 A.~Ң恲o&7Ȧ?vcf۬^SO@E> Iu1 YN,0+F(^F#L7$6)F,"Jywu=9GTOMAY,# ~2%|4 ω "fJuѣq +uy0Mgtn2hD s/t÷X>8ϧ1EUly005D/G>.Fᜂ~Za=J%f/Q9q;81;D'u4UݭL5~=osN!.uF=HQʣvު)iq~Csߘ.raZk( Uu^mE/[GOjШ fbbR 5cAMt !J7ò0M#& j=v`^' ī5VM 6`Ι"`U +x(%J?JfET5c`%uhWl зι=3}c ύC}列Z9g(á$훸E} ]%t:P;+CuŶ;$KmPXYoB&_`gOW<+B!*$4]@7?tcHO1wLz|e,,vXie@Q ׉ȧb,j=xv +ۉƠ54@&ighˁݨӠϰ)*Mke)q,a!0./!)d( KLk?dZw }(5|y/#uDAs1!iV |&yGanM3\ HG!HderW\[ cDJ. +8]v HlRE sKb]$;|p њ$ ֗41z;!7j$PDkzaB `Wх2O:͚Zoshs04½ +-@Q_kd.4tU@0=ͣS4CTGԬ!f)g,Tr} +o +)w˾K)Rt%wۿSG$|p.|aM1UzS8ް$$~7@;^-}1ns]aCEciC/\[WuGGvZƇXڅp>{^gxkGAތUJ% zOhUpH#gf١6xd5#R6mrVͩ@MF~afj랥Xb5@#.fRs~("kΈ>~O; X \.e7pi@oN-Wȳ=y4Gm(\aN'bԝX\$ƠhJ#k|;&v=G{k%.P +~phɥ3mFf +LDQCW,yO%ߤɄ(Za %_# yGjj½^-M)4 5WO9n\Se__kGb[P$(vXTx5%S"<]hx5"8d+Z׃OWTJ EC?B{x/P( 2 ީp; 0=h;D)ܰ7=7J}6`|7us@tȍԧĪPÍ{% js4p[tV崒l4 +ri р_ޚ! JΜ> +DU7X,0Keja3-jH'=g +FKKu! @lV%A6dUU&hõف/@eTfw=@-aUW_`nqvWPfFc:I2 ĸJh\ p㒢5XѴix QEk?IA +FԯGn7y)(= +h}IB[H컣4eaa큄L72Y!TKޒxKநC=A!FLGWǿW?~WO?xNWw~}^/qgϊ-s ZP`o$E=MVLoU#v6@ō 1"8[,P Brڙ 8 {afBS{C. <\t>F')z'8n;@f|uY=T?c;>GkesBB0$p%3^IV`ʂ)p +qC]"lz! AIcb^B; +x@GIW0d1qy*] @!J;+C/ Vq'^4Kqx^pTXv /y.;UdV_>Bfv)ZfsȘ)#koHup˂B8o$s@Ld>'1EyKJtH@N,o{pxb?);`j W=N޵P?4'\!ΰ_b޿{m)1xӐbw,>7sٟGd+fԌ9Pg!59Q 3#YϢ'R՝HG7}yNՅM  Ͻ:~E=t`[-r0&wPA 4&kV]'Xw QL.-"{ĩ>2LRx:8l%[{oGG/a$@0ދ_ѢMVtjBoK VR`^8V]#a<]Ls܈!/ /Zz8%^E'5b(HS߁A,p{c2u`/d#`Ejsak/z:Qa{CxkJZHuwУeczK3 +:9Fq"C y}fhe4 ДP=Ӓ[&Y:JsMNA_䲈Q@JP[Dn +"v|wfvP!|i؋Hqw?{>o֦ٞZ.D0=uegSy}Y{0$yK=A,8˗zĐ!貁_~ܱrpƴ +Mˇ cF59z>aTUiӝ`E& 4 (֫b:jl19/ۚA8 +NrEZXCW~R0|lǷ`Z`n/L!zދv"+Ȇi@*}HJ½3v$Ag(/68hR~6z8u0AYZpZXQ`gϞD2RiwyEk*v^_aZH}j-7-'dgO(d._)n*R lpƅ9uϴ-3*lEi;d*I)7cϤfqAl6Mk6 Kgj+!M=f N$QYkȶzCqt.8tV0 @&]j-Yq̵dk.ccP"S>FsOLz9LQݽʽN,ẁ +AroZ|ju^!g0QSڗÅq %<%bJu/O0ȋ0b5Pl_!LTEU|k#JÒNl5g1r +yg0<v@#ę3dRsl>k hc=S@!F7r㌉ B/Y=dYl,1(?ÓϊAǁ0;jkp#1VpC7F 1=%p G^53m(v.SX㽷T2WX0rVTrQ~}!0%½XgI`5KH[k> mk+W^ā&%̎=U`JOŌ# *8a'z| +U @1(wKg5yxe:=xG) ջ)z7v6[?Z*yMQ,_G{I$Z3L_vE3y MZ?>֊B{_ʶNJpy~v|| !3+{U <6*3`XQHh.&m:\p\ Vz"|X tiP`Śp;7UR=,l('uLg^Y4&R@!~8f ϗy#rJ{5 _ӥ{ +wY +A$^_!"e*ܬ/{DT)yfw9B|VoE Zm%馼-nW3CΖ{dGG9$A\= +MZl?T_+4 w`Vd3,ِ#7wH֦K{6 y_t"P8tN^-1:2؈"pN#:,'4?i'x+$pVJdb?ƼT  oߏu)Sk:ÄKZuϷ[db2ع_N(h^6`sS偍RKi .htdr8~Q \A<Z :SwrC2[6%=P(ذUଟsl(k@i;")K_*Z +M-붔1$G#|L@vBr7T(IH^_BZ Z+1e!3wob[0,@W{o><=b`Rh1'Zǀ҃Mx|ROo#i"͞ԇk_ ض%= !+%x6?H{ᜆhT}7pYHsi<}/Dלfl\6N5Y) 7I?rRҨٲ_摭$;2fzѫgZ8w4Q X \GXQCHSZ6.^SG\zš~r_6ǁE|ck<;usyE0%wiv3%ګd6enfR1v}&*nj7@W\xh.;-FU6.<=*wB!τRT9O8S0ǗmpF% +hF ZRDhb4#}ʄy1Fܾ<ġy, yCHH.'Y?2z!p/ M3^ϐ//l#IEjMo=γJN\{P_@먵P^!ࣇznaoqڶ:QgaU+G<&>);Ke7 ++\(<=&A=,Ȣ?& Cm^gr/Z͸ RrX|/9:KFov ?Q7+}pԾ *M̭J"r~’jHNw/4<_cIT_lŒ 5|϶gzzXݻqU\"e { S-J=~s# ̟ZM/ ̠ +.a&K˲9P}2K:(cjӂ9Y ?Bgэ aldciN+Rj!L + Wa ^"A紅0p5KRz[GHb!ؗ c/&*WŁ@߂ȢmY.$ηZ`! U<([&^hA}ӃPe 3Mz +0]P=5 +I`̽}i b#x@0!v! EM~6*SdyT.O<0=ف[ M`F~3VJUF/\Cqo\,(zx;Xѭ adŖڱJ^:<=H9D(}Ne" s(ÿzݜ!jz\"qk:]Gf@wP]s{T a@teD% R`t\[죗c:&l'ŽbMKvPZU\0y;LrC0AQBbrSبpAmZ%_I%Wg< T`l*_ޫs>F5}a4{24O#= 'Ev%08q"}t}n0QqZ{_a%M +t$}Ue6`#UN$ٽ·O? (R(D%9z L%($Pu&XEJARvZ{rR^& 6UʾCj ?i>Hԩ M+#T޳ IwIBtAǴ-t:o>8 3BP@uހC=[{)udfe@vy 7 W侪%M]) t9|u6 ֹ0gS?{Pa%[y=nP_;#Q[J]/ Hky Np ˇSN ttwb}\{7 V;"fk,[J1iYj;PNzjd5)LK$1Bj8i.!\NJº& jƗ'ň"Mq'ke2UwOjI5hq`ߗNFܰEe1LЏ U6A|SAfVո̂j>!TExGA;XL;&gBKY^>,jPAUy0# F >IQbkW'p+m>7Yer>k(+%6X{P#"1X<=tvz%0P6iU`.9Y5[ +a\Cp4{P頽3-Q _O’ +KiBm D_%:`S;giqv~)z~ddhNOI1$cbU uړN6z5LjX_'lE4JEnjʃ +{rso , +'R@]&*F5EUfd騖ѽ90,2TAh "cFU[$L62ו}aRi +Vwy o.2r&*֞C{6.9q}cvǸWNT7' +y [x'0g&, +_ =Zdy({Y;`gC THW~O%] E;)ž)V4LmYQ +%zgJ@4 ׻\ycK*k%T /{(G=PM+7HuI ڻ5v^l/w6\w'yHrGL~!ذ6|Jy4&&"Y @&aĈm"(n+80{V*Ew " |JJ/ +OkS.8yL9Q3PNHޕ\ qH7&ٸ# TMRPl&!6Ln9J{ml4D@7J<@E62.OؙbkSKғ :y~ *֭Xhr!̨^cKa:ؓlaPS1NKt6ydj.MA_B( xE%$* `#߾0lk„@5ؓv{z* 𯃙ƈ_i~hc#1KҾ߳!ŀ# )荱Z$ +LdroE?DK%ٕ}_JseU$'ſD1t <PFkC^HU,H׎2r}!S(Fx@`~ʪ !ŝS<%!kb53nH`C!.6$Ȯ2/ƚJw={RBGcHec\gt$ ޫw!\^ #p*Zt@ P"JuDN[,7 + +-jNffi.ּ99 !J<"It/?0`׎DHVH{Nڤ+I,!Wp]x!a9>Yq`DKPeACz.B^6(PUVI + ES}(?hƞ۴ +❹G*R40L.sôt8-M$m`ZC6N!F_č{%iBlmTG92},*%!Ql]/--H3:KƛH|G`7І<>_@.O.]PL"h(5OL̩Lzݳt +AMoa+l`Z j$bWm[v HlQxNwa/5 nXH٫ѡ՚nEV4(Rg< ;($Q??;aҰbxԡ8Wf)I+A&=l`A-ܰK 6:fVO@@"b h"YώLBxtԖ#LX$vfTlao>AXTj\.&%fذ29¡eYa$:e -.1Zܑ"rqvngC4:uzy}967..t[zPta0Dx;C5 nx#._gĞS?˝KOnwEd?tM) +D:] +K4K0"n䭘 +Bl)n $ |=p

2f pkajK{*,ʂdS'6M7 CVqXs{W xK3l'0N +GHtQ᷽‹~bRi2J%1/Q"5P/K.CƜG4Kwl"G7(1b,d+RpL BR#r"*'DT9ZJ8Ƭ_Nju^Gj/ड़q<༴kZL?uj|YU$񤴈u^ecv㑻_1Q s >hj2Ԣ{ګԎQCP~SX-`b*a?9; 3NDZYۛqnC^(^`uԿ! %]w@ LtC!>yݮ/O=02yn+$LT#*D57!&8ȚB|H!MxE@'XWX)8cڦ}ImŒׂ3린q>:y-xT{P1UxEj1}SXv a@eiVK|b龗j1RXA>Ďdj_D Mki0$eY` Bzq'xRhPH)"o}dd<^jJ?>0,Ӽye%ydGUBIJPH_F^+exb A+ 268W|jw~Sh8zk%;:D犌0tFʷIV;I( 2ьrS]g3((2|?@<jh$(;\W$JZcSY. *nRcIPH*>uuMG;` U%\QzLCG=;#cuH$#D%VH|+ă Y,E~hJHb{$Ja*Wr 0v[Za:\4 +l+Yz <%I_q VHca +Ƌn4؃0A8,S$S**fe\p(UIa0n/wJI{Pj+3]yPT2V:K@ק9CC[} zJ`Xbht~Tઁ*9Trl'H BǼPޑ(*mr7%3NKrOb~5yT4+ej2zT"ߦt3v>kAJILžɫ=R l@PDp󹺊&Z 责 +qxgV fdf8Jlkp3ϋCUKXil @ +:9EfLX:u'GNr~)e?zNu.A!۲ڸҚ%[kqSϑ/_x=Q:/S8Ő#U;Rh 3k9)4=l@5̺)TJ@[~ Zy#Rm@g"?vҰg'ӛkcF f2Ini7 ]@a Q?KeӎvӎtrPQ{_$T:xU7Cf<4gXQE +zKQeB@gveKCij.US R];^ 3s yj@ՄmK/eMt.(,Dȝtem2AB7U٤v([ *{;SLaFKdpN"{'E rKM|rp +qa@j`#a;vY.R~`d⃈y9[+mr| 0xֳ-/k9ʬk2-r$bH}4rpv:`|p%9atL^Œͼi%AYlீ +{EV"eZT}Tj# t5_ށE 廡zdzFpB9^ Ž#{t@V +j +'ט;1Hce~r3IE(7M21c%[|0srhmh`EYA{9hez!lMCAb NrJAγ (k B$9*d;'О Io14_Kx?Ň8`3" \Օ~Q# P5S@.튊U2zU@SB/TpFtt-a SE>Pi0A)}٨Q)ڰ3W8 3TeU# +b#_{"ދSadoft!M %t\v%Io+7c( M֧3 MSLx 7Y0" (|wxﵯEкހ6B 3}+z@ZҚQ8AVu|X;_°9@oFPٜj{u .qM& ~TY#EB$>RoD`mР2PpSaTVc^[T\9!z2C7u1ʶ t f?dwl̩T.G՞ cc/ҳ(/݊U6qX +*` |6)25@>4qC5PYGV#1 Pt L +z@X)!HtxR#hRFS@R%30YFT.0 ިj7DT#pP Z܊ +*#u*Jt+犜P鄈iЃ64"PyP*4D󸋩Nvs],Qh%BVf$GC y03vӦ"D$XMT5;C")شzB& < zuT/G>H9lN0elG@HM`J: +UTNiVў"߽oYFQSM,8=q't{ N5]t-YY GO?ww8Q{8="QaaBۜiT<|ޡQ0ڨYgtT ]%(PiƒTMp)|xT]7B+v+ʓUF_M6I.sbpmI q0õ"N~m#&2PV8?>S}t#.5>qqg/ %{z}SDB'8oj)4VFHFp6S Vr;))?۟ǹrc3k \b/4;(Ք?|5{4=ÚAq:pZ풺+ 3$^ +>p +!E"KPJzx$. *'Y3+ s&G3zWr&XXdw%T9dfFP 2pua4*gqO5r#"WϜ^cD:=f1Or xNulwnGeD'ƥ WIhaʏ)Qxۑ +Ȇ|l +0z.u!f,)xcm.L8_cEy򉷈)U{פΐ+ ƺH< +-w6轇xgY҉吨0IsGzό },!x \聑9ɯ9Z%c i:!K3„@EE7PdPÁP*|MK;34ts3XUuxOJ1[_gSps QUGozqLƦЋb/' +*aGfa X-L?Lo :7Xvd,HQ<#HiNF>6zp%.bM&9(,Ȗ.ܓ:''"<ah=7# )K)g-HyV jaE!L*"-_"L=T2c(@yy ]Lo﯎+xP:V(9B:*6>z"~*5jH"c4ƟjD* ou2y<yJ*g`:{5lV$DhBZp@`EByߏ/q:}_y\Se"q'߷NPj\3UG!ѝ]]w _!΍oc<(BYĎc @u:8;X3h `CR( s P@Iġ,iڮXT2{o8=>>Df3y=@xF(\\XKb-0|=;pCB7PJA*ЇH&GӅ`$ ~#{yO 袩?#kαz<^T°~?}Rw R*M.|k4c)DLA'aJ##tޜұҼdTZ;~f>Dvnkޱ`?l@0qRp?q_ˡ ak @}ɗeߗ]2brAJzU>>ָBaހV©+$AI 'X!°wo5s2o`$Ha j1h]>Td ^s k>޽fs։X *lXf:3^d!I0oy-<`cwKܽr،y9'Y%mɷy$9*a_õ1f*MNA8k" _մlJ Vj d7; +o_p\Z6I+8 4 JTpQlr@a^,ix Q$kdjի))l<, +LXsR  8HIg|4c荁GMG5 PoP+Y.{ktek(_{J<'?d?O4w_?_ï~?_?ɿ?oO~B%Ê-saTOb&wo2:Q쾆[4;_aTko+Mg7t2v0 Í5:J2`#ز߽<̭SP(T̈Ñ <߹t^E\s+t_S^@E=fh4+ԛ\Co[^^m1o`onAN.'An';O]w?7 ?3D1}?^P~31Z?h 4iZkYKp3 ZqKyO`e2¦M50}|9!C+Gc~JXd7 $)$0LSth>nle%bb:CEBOC ^&:3[Xf~Y qFJ +rT{՗@Ip8<4BPlɃ:y@{7JE!joVfv6S7Ҝa }RiŢP e*=ZCѬ];7kl:#*0`"J 09 b(yЋN_%.pNМiȽgşUɑ۽o/WnE] R {PKCu1_Ylԩw;XXm=^<9t'CyU^B@y 55~aҊw]UaR@Aqvߗ/.3"~JW7Onev#1#@fjOesuVF# Ɏ&>?6UcOp o]vJdm˵V@0}b}ZQt,K=n@e6@_?;0 C;cZӰ"Ȅbv~E80Kf+{AxqУyt^]YNe95{:hdgng^( n]p| UiFKV6a KCJ~l2O:+-#+|Bܚ ~XFTVo HRv/EUD{ZL.45=qQj6dd͗dPd{t)<埔Qy%K$}m^ͦX30H9L-9/"m +Ƥ5?lF҃L7ZE:ri: 2j q}#ޡR|\Q +S&>G %~TcZ9?[p@xm& STZgw\H{=j_w@[7TG4kGKgÍyOrG[ pq!r$4ą"s>q^pwkEqj}@:?{ӏx`aXso83)z}k)PS!bO&-gZ&;ҚGTl {ooROXNۖ]Nȁia4bNЪŢz`䲊b9=I42&W5>;KǞ'OYZp{@s8=|~~߉6_s_Cbr_GIM6 Ai88 + *]:&ueh=w( +Y'`~c1E-_>0ә1>?% ,׳MkUiXr8OXRQ#(hh5 _qBLVPl +E`<,YTX@XМ."* xydn:~e-(R+j4P%ӆK~k2cPbT?Suvex |F|}ݥs@kX#WCIڪȝr+\5哨O.|Q BQW_:k YH񐬧@ #]ih+䲱#'gUb>DZQ^VË"u nmǙ8ӵW泀T{@u/󗂱 {Kqow-w*:1D[ۃW 8yrAYTzbȾM{O&ɍ[_"ȸ<ekˋ 9ef ,~я+ .+(*2C wמ5jEE\~ +H⬀RgNE065 ? Tn#R"%-^wЊJ1Sޫ-B=kLYJFj/$'z[=6҃ZnzF t<pԸs0nҁ:A P`8Gv\ɺ_ Mvܳ"Q$:ݪv|XRr63t.c>BeU4nUs=3Q )GbM6 PB([ld),剻jx5*A(b׏KQ_ B冏hޭ8_J`2yaJ͓jU,{QBUPҗ +hӲ񳮼w SѮ*\M燫9.e0=3c"_7!4|dC^F=X7rLiD9ˣ㘀ΣڞjXћ"iNUWuLkzDY =3[Tu +;J9U #+S:nҀ"lQ+ +W]e~T+paWOc%Z^ALnĐ2閧P6ɱW{,UӐ< )-װ'_$D>x<׻ލ Jiȅ͸pW1--An'ݕas88g!#C%Kr$w GB@| +g(9?>Iz$uG/x)'(\X GQ^n=D3$ gwIM_]>KeHzIYnfҗS2HxͩEc @:0x;qMII{}lR\',!f7 +l@l)f#վ1ؗ)6/52:@I*q䉢d-Ddo>~C2uuF]781UXfo_ `=wQ#rTŢP@%1%xkrh@ԡomEVCM; ׹-ncD6*?1xOi9jתVx>GH5B)|nܻ>ĤEO42Jp?LYM2oot>0볩Ħciʻt!va)* i!ƫ:ȣ{:ZX7o +t8M bPm:9МV:wߢ8f[Np:Z}4J)kÉܩ/wi50 M(PJD?|+ign|5`V00Ir<# +.|bҳ9[fSg*{ݱ;WG_;fҫ+Jj XR4`,"FDܭ0@nII݇v( γ3z-`"!:9P[Q &L +gpx_XN@~eK=.zJgEՐoXo`u]O4ޡ@U@Cb +a}w)(@A &U&p+z֒tz]?%!dw'Z߸u;nP}EؐaYGMNN~mxP3ܜJG>r؎ɗI孕R?J*jsSjǴ 9ntDŽ3qN,^ʷČ 'EI(!EW=WS-mB<Qyhl̎@D ^2Gȍ$57ZtHϧ4 XOզP>B{񬓙 +fĄWE4H]4ܮc)Oms }y fmdV +E<)x;PZcV%p!S F@Fz:[dEb!>3Or FnSsY7-K$x?"3mbPh)8[w좾J:% +W}8s(Pxג`Q()B{5rص諼oZ'u0Uhq{'1 ax Q9Xf0f!1GK{Z 1FA?8^6 =:bPe%- S|yX*4)|@x'@,\Sa +caYDz RPK5ӠDC ݣQ~7H Pڪ!|70dQ/T6iY9Y(Α!0K=(iM?3A%SȦDep +fؒ_ $ RYPZzAa,ƨbvA\D4 $,pV=@WļpWș܇@9yUz֣X9!o:K[x?M[P*,8L޶Ȗ9_T6FaAV)N@;/Sy8;1nCpۡݻEƵ?+r7/&1JߙsHl kJUlS2w . Ic_^wV8TI(hXI%%bu(~Sd7s×8r;%EqGWrTD"Fb%$@+)Fm"~jG*]H +삢4 ~ZQ֮Y$aB>q*t`PRZLҘflcZ aש u)zX{f"AWzek$P$fpr(f(&d!zwn='׽9ˆHLbҚʏV/5^o$a5W]v_=Ct1?w)È ]v +vRf(;:.ǥg])_v +)%5M^2mn@W&x=F,u/-PKꓞ1Eu!xb_RۃBEGGK/Wq$ +m%BӛlnNy59Қz]Rw Ȯ$foyo].)B /m&:tN=cqX;OO(#9 {p Ka59S> vE[3]bDŽNy֬ƪԝP~BͅO]'~ikghJJ CGXk!jmӯ`jMx3I;ٕ9՟bu '\cUq@eH Yxcuˇࠈx@҂poa/ +w\]0}BP KvFT#:-p -3R 70wG +@²B?7VIwbS}$qr #hqS"-Kpcfn~=82fIag5CsiWCKqaJ 75c{9.)@U8P6~^Ga-pCeO|M|+̰bwt4){|\O@d|=4R" Ao63 {F@ $Î4 +A֫(^Vv47>:>1Bl93qRKxa`"{Zb2t0p'xf/`*fr

yh +N$ۄ?cEF@6wPHI"Z fؠT#U0NJ= 1[é1)A2j 9أL2zȾ#1_af%J0]VAO++yǁv`I1x/鮢jQ4pህHԾo&˫<>#|HGxOdg,yc9=U(̹rC n.^fZԖ.y)p`b% kԢݼV |aEG8'a]= '8]:%ba3aqh?9͝\1ibP^+jV? *Ipʦo;d2Ûclלlн7qL14F*ѿ)3U1f +J.$h ?+ f$# -8D%۞PdۜnaӾVH2HɔjHL=CHۉ/$V#4uMQI~è#INL()M Է +d!IYFMn}iәϨNyˆǩ}Gu[T>g +|F^Q0޽ +{ +_N!6ëk +"pEeC9*dphjern~BE&,';[g r^bk]F-`K}`-k)s"93RxRD) 1\c\cqlUFaxԁիȪ!ԧHzSŋHq{Tt>nlt'_/\@ȿb*܆L\ܯ.ZnmճNCFKu D8$pMkn+FeWbRlzPZȱR9(a>~y^"@U͒~ T4ɔ, 5uYu e^ I.(_fAy#A*z6+/f"@'C!i&N$0s IZ:\EDpظ8sҳc.fcPw4^p#f`7orGY_6fjV,7/&+ *f9S`ah 0>f#' 5&T_QnHG1 /sgӺ/e3Xy8"hÑok|Ұ{t D57Ifsii!ځ-:փB \8P2)7AWx) }H3(%*=8ˋlz-#ARE}`,nCCf?nGCQ!AShDKbJ![넊J7F+A٦zq b 'Q떼0#c  *u0͙=fc[VRЀRBM7% v c/ fI72a5lp/DJem-TY?fI8E_'C8`[/k< ?KsorD#Z  GM +-݄z LOm`n.0"/[vZ$&qL5[c}\_g +d{n+CY3t ^PU]r Q+b.sg#ך97bׅҽ_ONuaTTvȳ#% z ľ(GQd}# On(>p&{w8\X l lCpxvDc*&zϳhDp:L%Nɘ) R!!P1,kDpx:*$8E I9O⸅.|ѩ&aR u"%\Rk垆88Wk1Ldh|X* +3;<JTvt;,Iq>?GyDĖ/`of|a>Tc!&F2J&Sv0^A\`XB _DIz8a62yo^_&jdy䣊#pPIu%+}~~\cepP]j4ڟTIQ^2oB2Lw0e .&u>0JZ"5Qp Wq{1ɿ6$AJ-P'dSrYwnKV4js3D@ـ+_kޒx*AVIOxI|YإX!Ԋ lmxl%~RCDw߀O ʨn{$p10E )HAtCIQY9킟+dyU|@!v\n9rT| 7T4Cң2ZnRj{z+PqÄ׆N: 'LnZ=X?Aiv {SC6I+LՅi, Cbo+J41u M0IEԁxmnYH +0]vl@`Z A#!c$#uYZG<>Jg_tZKBBQ&D~qb~ +&u-n-1j!0B9$SCtP!LK.(^x > Qzd4ztG`-7ym|%>Cz63aRPGn=j^qAܷ5<(ny߻IgCUyy^G^#A֞ |t8ֱA\q +E e>5j mnBLLaTAXZP!~[GIŎ.Y'v 721J-E 4F9H{ũzp a4d Ќb超 Dv,Z:+-t*> £|p1)_Q4ӪkG^${dAđ>@18p,&'VNCz\13qzR A= vxn(q dTI rXd!@n]mV҇*u ݐWXM÷5l0jjWCN݌w`Yo[.lj#|Jd9m?D lf^V4Q.! U&P`hS>(pk!1GʫˍJA݆ȷ]hA7Ux|Z1"8ݓ7N9Y9{&PfVV\q+ +*ٜ4Z#cH݉_;LLNJK,jK|o;Oat[P*dӫܡxn" uRP(4C̓1wîicy-4qʱ3neMvMFe>0JG+Y姸W!P: 3w c{A S'BX 3oa.Vx %輡wu#wQ5hG2"t'|4<#SH/ndfR\o {\ u٩֭ zuܵ<-hQ q[~k i,-b+#0A(ah72BF莙b0aqBD: QuךW<ϒJC|Yaoa}K)lK8؃?г{/ޏGkG.Ox⏧9r2n{۷,Cq:)̮\S*#EnpWi"'`.4c fsIX@S ccE=yrxǻtwsqN>,hC51/ I +H7CnU Z&%xw5_E~,KajS necF88Ov<ۺ9z`$=`$0NB ~ȱ5az"xJ("(SN`Bݓf%ݫ1rӼj9֥Zì |ɯZk]2#-9),]'6 E~{5e7xvwq8#%g"Ձh{{|} }1+'RK,! XIQ~jx+߽ثksAcFU1Os-41SM5^ _I5 fY;mco3Cj<`yT2a@} PBΛY'؛P@' ԑA<M@{==x[c;mG2!vn"mUzpfJIRCR;'ئ)iZ)N =I%Kvw=T?/jLoXq[ zcaau +I',PSC yz9:ʷ@Bj$Vf*½,?z@գ&I7,L" J2="124[   {ߣ h)F?\ o9-jnrN݆ + y'AF ʵHpu&.X^j~㎏4Cr{b i8'U٭ʹ =[{|ɩCkh2ω=Jv-e#wfN'Gl綅͠6|9raJXK&I4RHWef8I$sY `!!?-VK $9ai0XΟ=P8Ip+@mo,MA`$⡇@p BQpt4T>^k 튬Q tb#Ҡ=ԭ B"ت;g7nu-k +>u3W}h{uAM 7 +_Lܞkqq~4#&U(uL=ܺs||EWp~Uԡ @ s}<~oƹ6BF,%5f^Q*QPpOk@4jēZIJkrufV0QlYԱg}Ϩ}4DfG485 +R:%Dgymp9|B/t:bO>X+:WT$E'u|?AS,PV*IRVȹyw3D'ʌ˥>9שw̙X3PQ'5T+YqCaQF4vQeʥAj'cn i>?b{*n? +fԶ =r)薎-篗LCID%}J#(&&M/Z P<.έ)SֵU>0{' I|=[] f+6ןk Ɇ숒ïoʼnʨ9^)?^"S7gLlݳd7;jlRQ`4y{ޫ$j&8KźiЂ3{BN0 +[qcVqSfK xb*n9;] .C73쨀PDS|9ZoFނ8nZmVO~>:8|ɜZvƁ4#= eGSuJ]r<ѵe &@j6Lh}:Vk Ͱj>>pU@ȡAJ/„ܱW9j`%֟GZCCndC2K$g̓0X}+܋&Y)0Kr !)|f [!r*'&0& hgq0 \SHHKNy %[_J,4c';aDif}TBNN]{C㑒EM*}"FL0 +q|FIc"~=+vroT78`5fFkD˜M50p.YCi#~$sRCiXj4+ILe?D2aIb8_{\L`FW-=JyMm ݘ0K98 *b HR!vs?-  M5A BdoʶB_@8a_qovpS6kv^#)$n:M :y?A/nU|<_"iCu xt=*4 G_٣pJӭ- +F_FX]|6o 'P_,| U~_HF, +zh'tBVznݸ1,Ɓ@XIE@nS^^LBux I}"=n*!w͸FJHI< =rn͎q:y>HT j2Z0#CM6=.$g7O*(J> M.21$[3Jx1)|u\gO÷#nMo. ̘J{D#\^>n7J"$ Bm;@Wm}lI( #6k'moC-FԦݢS{`D6}*2<%v[yVg̩%f=pz}Yo>Cw(~E(G +ndA$5m%c>7$a|$jxO{jgX3#_N\W#MƖC!^o= YepHQIl9r! IƷF8KR&D˗ne:^_[lk, 0[BT˽ޤ6ڏح z~q$JD.?.]em2CgN^yV&cj"mlYQj8C}Kȃ<φS" Hқ+`/Rb* eu?E{=n [{7v/w.ӿ<\aTD b.8h&@"cZ ΰk8!#d(5+Amӑc"$'UO@}HV@ Ien2wtlɁxvؓHB5]Q`UV죴[$W B]S"TƎvT ݞq{9<=y+"+H=b(dv:$|(z0GN +5j<P;RA6\`aCDbI ],W]uJ^VD\jwzX/ذaD)5猯a _ɐd]^r!VϵTdQG Q.n+z|C-z?B"Eӵq6 `X +C5H{8[(tu)YI뢂ΪG`JD*jG@+ڱUre~ӢZQ_pY2Z\ ,uz A|W'!SWG@THL\G>n*U +3U9pM>?:ETG~ Ma&C +dޑeKv ɉuaXC:"`ykN-p9a=PbIa^Jo?1vН)ѣ$Û)X/e"&*xzS ='te^Q%H|!yS~pNĆ~m"6ZDwPDZoñ4B*;eBi:b'^U[{[ WNX3,#.oz̨DAcV> +S +^2K.\?J;;{\M{b"ѻ'L7!"͵o>f۵]>nHRL`ù!c-ҵBz w-U +̉87KJ^%8P%֙u8Z?7^2V!ՆV8@\ҏxMl𰖹HAMעsY6Nѱ0ю +8² {<>]L<E~{%GOQFZr⦦D$cYՖe$z}{U٭wR{jcCU۷nUզ% `v ˟;|.RӍ8c13P$GSaAA*yׁc(l\HؕIƱS+fdPj{qކF3L2sKLn=1X=>g` flix1 :תj0$\o((( ba䁩y-xjhrCL Ϊ&y Xmh)nURu|Q"ٍ<5͈y?z|Z~GþK%ܘuA׮ -ǎf h\{/#$ +HROPH6lH;d@*bNg Zrѳd}`Rn{?B" @T3X4S$RL鬓B58w *G6MX^#[ 1ʲF*Qnу=${._-zGís*t1+t _Łj2zq_3:{,4*ʓSdv`[Q.J5c# #!m,Ce{4XbӗUBQCN6[Ql$HhKc%K|b5eQ$B"a@ .8$a tbD c(+}ئCw]KN ۾ϴ7EwΕHVү{[KM8@Qr-n#wFnn`RQ +LxzdV{pk4Nu9 HN%䕷pש]%FCس'(m!m;`0ՋhY‡ US'~L +{H g+^a;YE7ʆԵg"y +i18{D?ZO=2nHyQ1FL-s&ᵑ( ݜ$ Y,Az=c4y[~w +AZqM*/ A^[e:&E2c]@-SqNTLrwNB? ڸ4kBMMܟ?س[n3IŅC"?ӟ! ,?ғlTyre#}(j0Wl`QTZr,s2F~6VU.8#ȫaT- Gj&?}?ƪI/k;(ɢ@DGCFǘ`|67+U8x5ԡ0"@2V,Ù!LXBBP׈ ?oG9s;*}VW^vYH P8+"?=Tp`Al",L@7dG{݈RQ)ar5MQ'[w=f.MF}#)? pl(g[A TbCD{&lɎvC@# +Z8+zTEkyjVU{8W*Pjt2K [V{0.ly'bʘe`SbcDrzLǪRoTîgF5`!Y3 u=\C{Z|~GC+ 60yeɆN펦 voTG ja @Z)ǎ9|79X +C +@3A3),kkn9@x? ,7УKV~$]z%6]vC6@=vG2t s3e L1TS9Ri +$$OED=CTC{0qE Gx(Z\Zg #7Vc #*&/2 l8c95́ OP# ^I ZaL'b0I{SMA&F䇽٧5?ʡDdq"L =rw3UG 2g".Lk$:y=1pUͩ ᕝ5U9 |v7/;zd]>9EΥUU0  3OD1? ~~z#{dˠ|1liC--ah?=C$ =LA6cW^g (^i ,?(%$4\;l1Lj.>*oϾ/oT z>ZsHzT4V0ΚH=n= +mJO{u@0gQš+Ub/R ]\hSr[WAar&6ThM;5&-~uG ^Da;|IY )iEsp&I95p;ޕX`rl$J lUJ*PKZ}"nHX*66TI 0ņbOE%Ĺ50+GNވ(4N pHIg//Pڧ^PEHZ VBב #K#}^CDZQ@Tp _ P>!LW# %ΜPUxHc:ÊB;.D +zB4wxIPnG}6<0"?8إ,PT~c] mz_|hs1pt;H89m MU`C.(As*Dc^V<݂y8=#L/aCM8׫jDPB.fo<|^=['쀠[!ӽ` Do`le.Ou'D`Nl3.iP"}D➐~!Xێ ּ&RYtHaK>X;**,SQ_δ?ODpq=A$cƜ>܁t~LC #D_Ұ3ڴtuZdaRqa`0IDݢc=D~zf O%7q_m 1|B` +Z&"NOAS\jgO.exμG+y WlғҾ9,bO?xĪ@3&\SL}>% dmy\'lR#[g'ۛl!1Mw2;)iCXcF@*)n O<.0ugt ;LW XgA2rG0L.؄;75ĮF +LC.GdEי.bV51'm{@m"!ߴc1b?~ ݓ +W~x[ueG5>Cm ł:^3l/6-[w0Spd8sUrz*b5~JV!!>Y@3e/(xӼN[uIh +YR5F@r3WrBgnaYg{K\GQ"hs"Ƿ M*Z^$Evw 8=Nѣ:b`dKq&z8KD.5t BPCI}(ồuݳ ]uH:WJ|[v`AfG=P&L_ /<\xK]Z>TfG(3§-Scf0sZP! +ێJ?liamDk)tw*Ŏ'C21,=ؒ .ip@6Vy>Q839վ"ĨM*9eR`WPw "xY5%^)dqHRU)zw"ߊuz@я U" ˆ/6H^/ .63R)[􃻮I9v]AvI$#k%X18c3$fB=@ <1o0'eHw1ߢd.8U|0u +%43MMůj^f xS1zWdhл¬K OW:Sz&'5 +%b@> zrS%n@N¥"U}EE5b{+)I藧@ë&np-"D▀u$=Th"J;RZO9.=HzP;_e[i0`<:DVNhAYߣ* 4#?vp\9("1 = 8u''ݰZ (gODbF 1(p1=OG'*ЕȢK))NEMFe\ /Y{M3^Jat2*_VՒC':824쇀(Qȃܵa>PjV9-OhRv鋸`: 2qRlwsH7u*ERd㢊N&Eq1)y{^N&nnt;YWt.\rPCP*:DJG)0¤Bb ~=XB" =~IPϨF!Bl\{B3,8c+E@ԉ3$"/6a) FP;FR) }סۀAY3Ι ý5>"A %.U[0!إ4k4k%CD(" ]Qᲄ= VKк R gԃ aCQ\H*1_&P8ax“|h\h\W'{ﰚiFDKjMDtg@ 6r ,__$uj B&ר2Y%ePrY@155eB9~:rv.> %Df@  Ȋ30n/,!L7rӛې9n u13s&`Ek3bEbJƙD…$\d$MZ\8e!k9(KW^7M'H16@Ys[Ç2C +I>2Agm~#EK`pƄܱӍncl@?ƩFu~O +é8L;jӲD t=NWS ~ zU̔M# 0g0؀yQ::W@7Fpeʔ@ C2>69\{7A5U$.s;)˅(`9,MH\_0`/sZ + . x]3[,|>@hN]IRUfp5֪uXPX&\`y meoHF`BJ+CхCmDؓR otK6٫"do:\^Pj3%LL)v=;}E36!#[;3qt/fœ55n^#%MYrlD}컕BS~#+8uܷP%?$bPW{mRx5Tr%(TB\Lx O3߁w}VHIgoE榌\I{rroL}tF_g= \$MHҁ +%!t=JC oEd= Pt4ytNpkAԁp< 逰 +fz{pH$زfF.[1" :+u>3YPCYЋ<'$fQAE_ͿH fd6w^E"ERj쁚&3 !-'NI߭6(-Hk,}H/3ҍ@ܑܱ;VKsJH(dmg"I\Xw7@#z #=H\+JTN4:/Ӄ=Tg j즾r;/%ң* .pXtq,ү36E 8@ˁ AzťXdSUU]QcX[q=h½Zx.jM+DdtI7ZdOtD/;4,Lp~q#xTPE)f=K{eّ'|Yp2B0%a>1K2KvE`ps +uy6]'30Tf&hO|:stª-k5Sw;= e'cFKk6) % 0Mq=FWgÌ2mz~]7Uزp~/v«%2/&`/8DAOL,mAuZ) I^4Rz;=Xag(5$px5}pČ[.V?E:=,zPTЏWHIcWtSdn|"C 1)'-{DIz!ŋ3!6Ӂ3#RxdmZCG4C:ZZȗ `{ަGόYȥҎu1,"d +a1٦(,J"J1C/)AJDf +`Mx38]B m+7{ʼn :m;+ݕ  +zkݛDgXx|րp#x+0ŔH/-ni(HϩQ{B9_dҾ3 +jhAYj&v. +RV? +X^.zp)(YBx8|v T졭="<߬K4KzWޡ)v1Lڑf}n+w9g!pϴTO𰔰xvH*`lVQ]"~y3IB.;[q?iH[W +fp#, ++*[Í@˧ۢza$r?\ nu=ӹ۠.qU+¾浛CA?wPؒ2ж/,Z.SƧm:~OQ +MO6FET,;)4OqUl@z4-87=;0aG]ŊNtY@4^Qoj/55|T.ƂCF5FN&ե9&t8U]8ޡ7U5fYd *sm6?\U&'@7eg.ԂnʰS3%.)]ne'_5{39g%MQGot(GWV +T +##B&' v`GD/"݉<@ֻ٢ԤmL]J\"<N@m`lwY3`k-)+>+AҴ6_]lDB-q@TWh;.n ƩU]GU +rA{,BTao-fGΥL"(MgE8aԴS3֪ /3fs:j +aRSǪZW;0HW}@=3T?ݏ]8%g*E^תvk"kQSxtuEg ӏBf-a +$2;K>Cĉ2tj +ucF$|@g+.;;"(%jUkD4gHQ (A;{T}K$|ujpgXSD"'`9Tr;桺j4]xfR"W"h="d"1>@rurh!q9kl²8k!ٯ+PhBpf>{._d3r ~s%{Z۲ǘAE2Y}([['y !5,ƌfHX]|x0;frW@ M:1506ש]̰r\KY;P@miSp0eI8 aleyfgaYbb4H)ۄǭLhy'8LĆbYlԎ- = V Pe}ws]vFîO*PN]y2ˆ̑D\Tu+S"tҼ((7$Z(3\(̌8&ѵ Q q 1( J@`@X8WZαHn~u0Dh;5*p2cLD`ք([n9չN<qlt2B!mw3`> 9[҂F@w6G>:Ġ2b ܷ:3kPW-,.avB?ؗݱ[")O+p=HbKaXHɝ̹}l"3H0@G3pz"viV0 FgzF1ߎh«8gv$\i#x]>y?j.aR`F̓QL0U悭6-I(+-{u^[D|~@ $?:&t4 +r<츼WdGE g *YXKJ;۩غ` ߞo4YZK(lD DD!H7 ]d>}Wkŧ!l=c%6a;bD+Ǽ-l˰9Ig1Wh&ԗG[_$ +{TJ>#V2b)m~\wbR-V +BIoHoGr0%o cA$@ڹR,6?~=U\JJ,h!<]SV%VRנ+ye&}kR{#U-<ҋ+IwG1]&5_#0aEse\tJ烼eA}P?bӷXz$ԯfq6ٍu#oEH:NqGA'<#LAܣoA$uڵ罂(~U:lw [ +8'4nOY aM-[!2x"2l[3r"7;3,v$z dP/ש1v.x dNOqMrӌ%"#[l^OSth[3jJ!k@&N՟hnA.@rdaȦjCTlGH DXJ7e=`p\(+)So:ik Aȫ5 4b]G0fcR^ (*eMǺU󽓞;}D\3ʩO-!@K/lF7uDTCܽm\8x DqxʹtӀM*EH$/KDy:ȘuXCqNm霽P@V}"K C Hѵh'_qvp!_KYlt {>m }I#Y xx )::c]GWld|.v^|-Lś1{@raPaϬ1EDڿ;‹K%_ƌ!T,>GcN7Wj.3H 2$sȰIC`mݦET- +%/,cY^4Ly^K]]"ȕ+%;R c'È2' %X@ئJ^v(Z]P2d[KF^ID,^Lߠ0tbݎO Th_ Z(?7S۳bfpt?pftBVa\iH]rd sG^辇|CDc(`^v=js+?Roun@RTtjRB +2q0umTU㿠bc%`k)o_Mb3"ԶvE -;U&<;`؏S 7qt8Ô["Z2׶4pTkuw2#8ɗ=׶ qKko1LdqgK;.J=ſ;ΗD,@<}WFd+SRQCWQe7$?")+4#mU:Sv֥^ +e&4pA +UYĶx7$wG66Ը0Dh? 3rJl[#̦6ŜpRX_Ba]0\"ſRPv9Щ%}87]ԭΝI`5[WҔ<w-ac]7#&%\$lNw9ʇS0ۤ΂^n/,7tlCK%4 + x|v$0j_/C`m=+.g}cdr|!*s1nAψ 0,5ڠ2pL.)#AđE5{OI0dm8YӎQemb@#!;esҌxB*A5 9t""P?#"5 s~IV4H}j24}7붴ÁԹPqdFhWebErއV{Ăwݳ0[!Rd "KG$/2lUy,>#e#)o6O2x,h2g$Cǃe +[L=_^)` tVh3%e\I#*) +so16)5n`wY%A^eQeqڠ2d.>t:煮B<D|s_ ( + (z۝-y5n8 r!i@Q,&̲6="(gd1䚼zx<6az^^955,LoƵ fK:XIqh\ `HhnY2`EB\s.Un~!0u*L:w/ʢ!KMD fC kh\2gLO."s +ܮ%OsK( C-kr 'ZGZ߻Y8|{*U ;`HZp`rb[ЩDVNr:{Bv5z,l= UEa*xJçQ̐d;%0zxqr^*}V{j +-"D৴%giṛ p˭-w~]HLv`#_g*)8.]tpܪ[Vds {[K׹̢ lj'J>s7 pM=Y M$K겕0҉5tP9!lPԻ$Pard 2tc/wɅӮi A0B/ki Prn"*HEwݟ*z&yEQƊ;[G*֋-DCz=+{,j/`bJǬǕsI=eK~וU Snx,rdY'忡Oͷŭ?F잏ω5)Dh .Bik y(]@1Ruo7Bx:Ç?TqG~%HzXQ =} Iyezd1;|v0*e|&+H1GHNZҾ>=G%TE=! + ұ#S?#pFv( *]ٷ=@R(kwco^Z[A +`wt{C+mg+0r(r# R u&KTy{{3Hi C. Jd#(>3L!DgH'K6]""_+9~T!OyPcİ=4cJvc +ywݫz-j*pݱPD'纗AFB2p46' MIC1#ApH0#_\ѥDt[Mؐ{{m9QAW*v|נ}*#g^\]W=BZ#7^\ XAD(<`4ʖ];̀?E"CuuvBـ2,ǚRGyMF\wH_ +yԓ +;?"T>V[#0B[TE~g熄k)s HJ;D'aoroɥl|ps5WXԢI:Q:JnJ_rf-H~2.d[+9#^{I`2X5u昈t 7J2F|@< +6dRkGRtQ)Oea)ƐfD9)'Z3K9+vs0*+>”/:_gĩt0Vs~4> !.q+465$|hnji=jBx6&3wAOi ++3`p.)Tr nQqHnD"BD/ud~32i#JKTgeGy)g +8s6B|>[t۱4X|dw560@Ƽ.>/>" r=F4F-n+c`c8YW]vgObѐ;ZWʊ"q́ ^v1 Jn۵*8Dc\XLpckBD)/,8 P ki言BQ4.HaӍ }޳FT&d(v̿oczZ +6V̫VNcG)b_ڮ37jK*ŧ^Dsg>öQ8}?ޖ[2.UW{Nu*o֟d6a¡}tUiF.XTŶNr8O9JQTR&$e ! Ix?LJ%ɨ#eeʑAVz_H4~[} [ W#΂} tEPT,NT"8*$ ~[egLHa05U~sgde , 5`Lp ]ėUq{@~^K҅񀦂 |Cy=TNMT|J@+wk]"$J֢,ZJ(3C\bP̣[n |W~=0rFS~ _v?{?o??7??<^_EC91̏V50Դz5m5"8mc SۄuF6" , rP6T͈~,DDFBԮIߵeBM!`X' @9A(_2'Fˈ[EV C+`2+>A$j7%w!1K)BjTը}MDk&:Co-% 4[SE9yZ O.&Cg[P{t H_5l{Nc8͖H2W"p&Jk8@1 +rpp9'U6A:D1IAs*nweF̈́aDE:{ k䃮w #n=f(iSQӜS=rE +ӼQ3S@ / +,S?JO( ],Wl)?xlm8 u:,f<Ցߡ8"hBUdש*nR4=[܋HK~gG5 *lB<]z?-t[󇱧c@&71!hq5>Va<ȳ}n{fNm={z *-'4pP.6Y3o9%0s4Y|0)*&#Y?V"ĮV?Aa/ +%hwDSV,5~ap~惍2"GwRKDh-|J)'t09uh" eHƮw-K-ͪa.v'ͿW4%nr""sv-s1W>M}/|I0楻4JaG mSo6u|FdI-F8;tMۍfrIcJ ;a +D8$#Oҡ~V?=դTrHznʱ|ANwB2 -;ZqZ;`)bZ DfiEX\vrt=I\niw"GѺ-'@4< TW^̞3Zٻl &SV@D=@drqJL VKcWRtBC[=}R 6~Et }`t^]16vMi-k7OKw1sbbpR R{_b\먨wuZ_jNE*`CYSdd x="{(@ϔ/` }S`4Pu9teʢBzK`wʨpWph1f|& icc`/݄3>E3?o\#uq>GؾMC0<5V5XwWp0AX*6;t-/&S̓6>=s AܕpuߛDwг +9hD/cnC 8 W=`Go_*d˅wH"q9U4w{0 +/0<90#غz0܉hEJ&c~!K38KOBvEHXw^6v'zjΟ8#b`5 +T_TXT猥@m޿ p{M8& ?z.,XjPK6҅š^F.}y7< ?X=y9'k͙$, U^^CY2f׽7'S n~r@K/@NTW5$˚qhUJ  0Nzi!8/@̃ջXvI@}eƻTal |mk>ᢷYӍu5,]T|{'h| zdmU:Ă=_zC0[-]>֦S:)KѺ{i)zδF F|V T-p*mfk +JchYl,,X.@}W3Hɟvj )qW197;#p-W~=_^SPlA5f1psp!,iX#+м)\W0$ +4ʿjJ/Ѹ&)O۪"*)e0z@8 7rc-itbyn8csióxp,2-9\IǪy]'[ďռ[ygEl>5FT3" _2Xͷbm![|09 +vt_Hvr+w?pAk/2P~Du'+PYfB|Ih¹n"bZ,Z:DnST0yFu͏PZ̼6- R巈r/^7ߏ}2WI$eG.mz)[DBE/cI4T'{RG#,XdN1У=bY +u<4>#?2QW]`?#qC0%tuņZnvJgKi:L Xe+R*qM>*\ukwNm> k^%!'z5AENfd:J_4MhuRψ;lУ97wdnB H奌.7y5Ib)/M1ED-;G9}8euJ 6"ϙm΄Bhkw%扈^䱡WH*lY?* U:ŨZkg4J:8JPbcoz^ub㯛^%{̲#3b--0Y|ޣ6흱DYtJH̟1s|].)UK~2Dټd>}12l(4^Gem"T5!w/ 2(g󎦩޿9:R27LK$,鏾ma +bϯKi!TO7#{XW| \(ح<:3Ҵ4~Dzۓo쒝%O{am{EPTi6B^oʲ/Su*)6,IL`Jbc}~*Y&6g}HJ!ǘq_fUOn;~'GO1 +G)&R"$~7P4Ii0v!VD=,f,iMj D`ޜ,PQ3mlʉ8jq :e۞EPQP1(cg1 uxV'HuMZ{F|۸gEfVﱁES7(HOˡ}bO{-Xm է`ΡbA#Jzd x|/i9,,p!5 tFBKVj-nZF0T$<x޶ZP뽲9+k;!9,5*qYa+vΈ-KEÖ EZ,pz"4lK0s/:TK.s]ЂJU03^`vI1zu`й:1yW''uM`ugcgz|xw@b 0C6mpŀs&7K|>ZE@;z +endstream endobj 33 0 obj <>stream +|a"ݱ~u(y0_-C3ꕴ~ K*f [ +mK`8w/0\iA'H x\fɊnN\ tY&5Oxtl tgX!4+Lh9 +GSY#c L +>hep( B3]31ҥhn.ydP7.l_u'{r֏\&bEEnA\ ZhvE8HM' % bYƻ&sw<=у-24H3@Ȏ4 m|ϮTGu>n|g}گ8UKn%6d&7JEwvy @ ϤOC30Tq.8K,ڈ*"ԧ~GniB |.:JKǬA#QlN|k@G}EJ*{*.?9%:͌b63ao{dG\̙b]|w)ahdyQUEI|L m hk5 Uu{|c.wAf|<"EQD΢}Ǿ٣Jpyi^37.N𤿉o%C1ᧈfŒR/OXPb"=: "Ks Ǩ/X`%F"ɮ0 +,vvJӥe520ͨ `t@`d0ֹc桰f.~FADl¯SubN.@hIS]ʭa)[Dl|Sa^m3ޡme0S6Ty87gWgg.Պ.FDzGuՅSV=w^zLٿ9Ь!NHJ%,y}@^??,A"EԦ 4>9(ڜWwquL3ZT% C,=btPm\$:eu]0Cߘ([AS@vI1s*S i٬nqkhXBxR.W۰F N#֍10h7,˓S'mzʭK @ϴ%[4|u] ݚYQFB.3bF,jE:q*<~2ShǛB ӷؖKjAmfi̲"|[Ƣ@\Wpm۱|^L*ד&uHw?9qU(s5j%m +Fu},+~-Z9\ /% `՛<y2/׫AO}?uKb;1/eiK5c}J@:Bd +ӌr|H_5̣ԴW3I4nUs j+ȹjǐ"R #f+1VD̴>>)1kA2i,T.سh{Xg ́^(U!Ǖ&bs~^z.Ď~}2i=F`4@Wԅ?"j`MXqI@r+Ť#q~*벉î1~.NM@ҽeqZwIv8=XxߧW= K>4BG y ++-zsrj͑8u#=ꡢ"Cȍ DGKpKcļPtP(ex+I~x= }P`yCv <΄d,>} zF:%wa80!)=r2~DaњjQS\MAVWŸa"{ (fo]kTęUQ M xa u<&mix`0 ,_p!!mأ5;z3",n#owK/JSysAXy:Eņ=ǰJS2m[tX23ތ` uxCiOSmvek#1(MÖK̘6;~ݑ-VAC?˞Ւwrd= k qZ%.G &;'\V$ +&{ލl Mr"Rlemݾ k0vYc+)1]:!1?gE*^~ +1ŝf Y*/|HӐ\++crw5P>Uh +)\| דBRt=/VXd?;sEc˵ތjb:3׎+2H a7K~2Q`VtP$1}4.Xϻ2$0OE S@ b,-6$4`=ʶLaڔTY"/EnߚS7 ^oTwHZH * 1PW,2j׷^KZ~^_g>jx xѨh D8x͑07˓B +4 @*jpdGG)_% bauFi +NԷT9LLĥ5;WrT ϙА@F  tUoQ!-lduچkO+*ly/)Tw!y.@*;@gPBU *M i1a9EZ +Bl}@]ÛPT]5A8.KZw`T$kR ¹^CT0JRx4ˆu{<7?mOd<7]yֻB1ݒ՞ۣۉ ;.\jb͆ =aQ70#LxMhXߴ3mUb"#&!n :,r|%c\LU1E7˚b $6 it۱v&my) x+7nco + x&O~oNlnȁT(ViD +T BC,P9I:;35z*%Hĕju,`.gfתsYؐϙ6A&i6PhU9G[" 9VKyv)fT^ }˶q;!3=:c>vҀҙY +em0YWf\H(im 9EBVVl is =,黋ڕɼN{y~.)c#nT%q`i'Ǘ΂']sn tjxp]*8 ܙv ~>צ|K2 !E^=2PVZbyq#얆Rr#6OU/-"mK5r!ˆS(I)=DD%qqA|Q>rcAxDo':@g gq?eN#xsIzK@ +pՎz4@0=_Y6b],*^Bngf`ĭg;gP&a[]%Ec@9vgIqpݟ &ARi0vuSli%_4K?R &MO)c+D$: +CGG5t[֖PӺ~5A&a!D4X$g1Q, +8=#'LW +*lv`|?XT+0C#.'{h[b=ǩE۞UTv[oGP/(#+H Xo֧Wi=ur:1l@6a"Ane?\*ѷ E|x T^lrmQQƓ'"OgPmEyuP[P2B= f{HH^U +his)7c Gk5WSGuXu_2Ь.RgH6#^0FX[$n֩ڪ1K&ZyTP#R"k}Ӧ,e^x,$F. z-=NhKW)hwQ3+hK -(d"z +` J4Zu6_WZ$jmk-$i_'ZunaɼxT@g#wnPηkO% I`ޑ؁U&ZMMO'$z%)') LmXt+4bP8_'L!\TFfׇ{W^aG @=$-CAQ1!Eu39Cj1]\83sRHu(YfHaL1@7l)e?ls3Yl!1hc8\@E93ߨ4W/G#f +PPv-*lC, B7m 0_jdWylOU͡~U괶 d~mMZOOi[ڳ]U,J2"ը-%R]QYȚ%fZ|ͣ%Si+{*8_;$3c_M0Hnw?n:em,QhFD۞e̕u + +6+Y?[J}]?n_?nrv>cy(bL*gj 'Ҭx`bZ !X$r+:.5E ȼ=jmSa2߬YtSӰIr0"'a>wi,Hb8߈M) tFs@Lp|瓮+Dv;www^u}hJ?W,כ1C{WѾsTtC_grM[gFՕE+/"HYgA#PG +k_Τ+ٹP:M +ybp<!Il#> +}*??BM1ӻT9QB "+,.!')psa.9"LkBR=xI(8N'+};Sɉ8RSC: $EwF(hw!c}\$3$0Q72CoF4TXp >]Q r2TaBoF˶,C"Q_Fks]bG-p!-_06K`ۈqGЫF\W犠Ev}9IޡPX.v审>.p`Ki=Zm٤_gO3 /i{@rv.t>>|{YQoNKGX38pmbɵpAmI+AR@`$/OJD|bX ,l7I9Za^'c?x^l@T^gԒBVT,dGl%Fp# =ٔ^#4W\%ElAE+t%u,O;?ɍۑ¦ )f"ozE*PcqR6&(%zRͧe#= +6`X-O23f- d co8޻, n{N_J'8.0-躾nh~j):B}ȅ ! hRhK|} +seJ |ǧEesHcWufXqs-m?;| (6UA ٝ{:Wk>\mcaKT$p(c>js%C'Nα|6ϟw@ +ŋt P~0HF^DFV7BPЈ[Z%T8c3w1]-rgv_>Vr+:IA t8GrWEuz`YӘ ngA:՚M (Mx yܩ;ZfjQE~[u%wnP@gMOj-"5Q/ZIi3O?l̗o{xX}KMKVgυe(("?2i/h/QnI6!?FDz{mL:1Wxܣ\dg9뢦^W4 EHQȘ\LA~E6ho*$J]G1)T47|G%tlLKIxII㶧q;uq)$CQȁGߠ`u+܇nhsvXRv66CR]ϧM +]gG4œ.֤4ANGgl);fҘU\9.}Q@eO DN7;Vzf .i=ĥaK4hi_y{b.}_T 0V+cSa|Q;AzjLNCI80.]|*Rx}+c$Z=WrBƆzKIJ&46cĄpf$!~V{Vߵp;x$YR(L/\V]1_ݘxT9ٕsQZ8(3PMO`V VI-u6ŕNyZ[e3~㥊H`stf$DBG9&3| 8l{rȹ妛ï]hsD! "RpRqJ +VALjf3>Di JvJe^ɑK㣰ɻʈu=0mqT)-(LKnJϺY_u-*m,z8B}njO*g sJp=!xU4=,gs{rׄ V2]]֒WP㑰]Xds%kxzȪ/3D.Mu*T16ґޠY2 ma{ZLt?ut/;nAǏ9rےeFP~uYSK Z<cA̢^f|C9XXK8oA81M* kv@#a71[4c|aGbX^ԁ-X>{-g$(8nP'3ys@evsE 9=W=ΞEH-3mGֺ3#A7b}]LW$&PPkulęT׎NA%)S'uΛ :eOQ {(J5=Qf +V-h85T|Y-=ձ."3bUL +p/ʶ6_mF("O 1aCMؼ(`~6Xn"˭xFP"փo ߀|Ͷ`z8ߥk*̻~m'Y<oUH!s?/%ɻD|+̢B޽ e83:s&T@G^)tbRX4^=)1V[p#$PG,ւafx (v2_gEmH]z:n[0B RW6k3P;@}?K>nqFYv|KU%δ +:%/RhY>jq(~] nP 9~L=沴U^k+'֬wwIT g 2lm{i4Mai욪bHf-@\ou[_(lK _ߜ/ґ蘻toGH.Vt^It>cF1sx'\zzp`TBR+ +œIcmlQ3$1ê]ƴ4l=@U47@+:1qOG\c12y.Lu*'/Z;@`> Aɀ-pD};DTb(tYQ㹅+8#+-Cy4fp=(_0?lHMJ'mPhihFM0u: ByP4y<4o_q;?xv+\t~Y# %obdx ,#~|eH &Bw9xBٗ‹mY]׻FMZuE+ba{nTsl ${~F$(~ۥրfYGIv P/!EcPLMM1.2`SݝZq fDƒp@r9y/8]1&=t D/hkϟwGiGD _;93tMD6×_@;7^ UcK.GP;&b6qfᭁ'gb`9{!~ 䠙āҳ/{7&l_ ibաr\ձx.zuND]74}| ZߡiDrψ؏FAAkU˼3kB߱|[:L{?ݯ nOt.7Zx4%ǍR0 z[_b^K]o4.퇮|@g{^)M>v^7dP3"b.¨t̚4|x2z?y:Ifi-&wǒzhkN#pG5}NO-p ME׹ŷCUZu ~gG30RfPnM"Re[Ϧf.jο/=S H~Q[)MRנ%d;<Ĥ21 U8Um \g=I7NوnaN>*{%I=eDN?`ڳ3խB6nT  H+m"tm1zTW$QBnðk(bHiL + =q`'o=πBݴgenzsF]璊sR6i9r;b2lo(V줗j@{Ƭ)Pxh^pʹRV]l 4@K^̪'l,pH } !`Ն. ÷/%ײ"Vj_Sײ :82Y*MS6ig I3 + !MEAC7Y 1أϲX\6%Op4k-c"x(:H,[G{lrlZ0{a嬩E sz)Bpdi搢b-  ]`37fYeAyj 8@^M\'eu@sȅ<=K+lb|.J߆,g^(tDabhPDE}l?#~[֙hS@ A?e) QT$`6gp#8eÜIYi7OpCiDNq%@ ~zh E )ښNΫ1zGnNϺOQא>%`zy{_r/\cX{:t_ZӀ_ꆟaTRĎsτTH.*~k0lPKtA)dAw\Q@R&6|+P.ʍTsBk=DZ玥}ӗ|H@P, CpC"2N!쌸*f*4 y˧.UtV Del{Fѹ90s*!D!BѠx^}<u4"/g@([7;/@;F;_.4cyq4A6ҘP1\7_#X*p*r S +8`&*v3n|3,,Ïo\r*ec~-8}miBz )Ŀ60`]@=#r+ om3d*2ac}PnZtѻiOV;;6ޮӟmi`azH)3aQKp8bNоNiG;y=ꕓ +htь!˼`sq|A4,KN Vı"OY6>-ׂGmޡA$s,32k` cWb3@#ty]0=3aBTv;cGF g+&z(SFSu322bT0CM&95 +xм0岆*G8,\CwKLP\7TBt#B$\ 쩂? Ы&={[TyUf!֡D Lb0b6?  +~~_ ؃}ЪQ[/5n$^ K 3灪 :S\6 \77>ToaG~|˟^; zTT;t{x^Xv]h\%eQ Dc.Z˗)..QO8|_@@?*QuLMĺ|-(Lu8Э^ +xo}ebzu̽F$ruJLQ + U]ddt 馺>!b A88lg_CuP\RQ1H[\KJq׉o+}DsIRoX[DH4AާܳEYc| +ܔy_OVv;gpd8ya(zY2?#5`b-cf,={|Jn,^{ )l i}nhZ> ~卩eKO#D?M0h@kzWGĿ'󏿯G1U\[j48VTKҡ[dǝʰ/ {U-#׆G"Ɗ]e[d%Ҋ ɫOӎ|2PXm$LJ䧕%˞gR8[v&_tmuY]IjJ;?Nb'*vs[]6!}52<` u8іW o?W1.DF\>3 +A5Za4A`SX9 b#%ŖwDte&B*X$LRV |Av]4P/@`6:Eu<ނjNREzuy)*+؟ʧ% +϶Hr3o.9;G2{7GQ1 C&{zQc.#)Y!D<o"1HEaj_3 {&_KNP 8XT϶Ct 8s&.NJN5$^9MrNEZ]eas9U`r3/n\V<\2W}3&-߭z̓?#u/ǵ$t}sX`*Gh-Ɍ\\u@V)LqǕ|aH +os4x1V,&L^Z٘~'~Ek1t T;pHdgVIoZFԊh:)#!$` riQhX,D-́`2*[ƈdfPim w/o 'G0\"1s29PAň3YQy-S-sFnmjẃ*#dmb+2:DA:9 +kaA޷j.ZU@:]'6*k +d +ϣDu(h[cjP:$ $3b=YKs27 +t'E.ET4 Ϡ/7 7;6#0`0Y'x:O[Zf!/:U҂SPo6l_/,sm]k| M64Ʋƒ3;7xK@c =/>b?Pn.s;>K(f,-Xc,$F]AIW_pvƬSz_ yagh& }1њ^ Bq,4{8c1l?p~EȺtOPyrWpV8!#쪯>sdKU^_Fe^\ۿVU&ǚBIW|X_ A@u#iizQ";(6\ڢȰn0 GŽӐB"(a FWvL삭BcZg6%CEka'8o̜qJJkZ ‹.#6CR8EIV +iF˫K3u8Bs]Y{\4h `8ˡՁ RSt쿓ġaepzԠypFM,;G~J<""PkCM}-v[-R")֮sMv=E/=cF2%|fZ$0-Rd ɡo)a`.Zn*x2X ᾯts)D<)2ӎXl Zފ8+z0I?= ?Ӂrox1¤ &pT|0)Jd+R ~,{(:ĺ26s-yX׿XXY`/ <ݯO[Z|i PA:Q^-=&~pP7s9Dx5#HTÕ_{~%%佭/u.V2mt8<1]] xp/Tw*0̏Cz%`pN+}}1 [Uh0inܖՑ(:](0y5nM{\_y2ˏ+۴ʳ$yz_,GwX.B FUnT3j5˟<"=}k +p77ܒrgr`}3G_{r ;![c[:9 [C1#3r)hv~"v@ᙎ&@ 2 +p@EE_r# IBSZj{:sѡP0)Vpy#Yߓ,:֏ՕgI|_BkDQaRqBP֫'g!ppϩ0Kcdu}0^VN(c![5Hy,5P`(V !o@>CzգYT -=iYM,kܧQ=LtoF"SK>Z_!obr6=,lq4PکԠ|L2<]UUL~κ;Г/5Psh5O[۶={?d"^c=GPrm7}H ;T*CHM;Z_Ty;QcT_GsS_7u=^\T!^/ECMԀjԍJ_c\82?*6Wxwfi8nQ[*LB2+r:uaNZ4EBiC_Z(qZk~3dO8N&dovF=S}adtlBX\*{@эiRӀd"8m#&gf&rM==єҧ^ %+zeju_Y=c? !ZQz}E-wU>,S 0r$ĚzuEydt~weX-K /FFqhs885jלj`ip]Bc tgMDg!Uv͙0p.TDIbs\ +#9h\`)U|wXHWh#@vzoVciљUc:᭴Mb kRs!Mo>F& sO-.jO +q⠃b}H)T`FB++2:N6\vNS"ɊsQK}mX/=n &Ic5k}/)*j&WwF0(J rc(2I+jK=B\+1e, +!ݗh{NdoM?0K1:(V{vhi~J͔-zES1E3{TYSzXjcW|߇S 6Ģj-OMq 5!A M# z@iOw dN>饫Z'7@3Hi=L/c^7d>n+7%D0v=ss?gʩ^Gexw4 4BQ"`5Htg!䠅1vl73L.+5Ix+&꼢=Obf~щ F+헁stTW5dΥo.1dG b/1.6uy6׾̷g聄AX{RLZ6`( Jc$\ScČvK+(\?[jFeM* +uA2'q{#}xWqbo1-ӛg6GEHaNgX:18gQ< +EF4ؖʑH<{yT '"EIʑ #'S'ScG "=V#sst^ƾ^i*W +IHB7NTh܋N^FgHY +7ࢋ/>N)I=0Mj_,/ѩ#A[d1KFrPK1Oδxw['&xw6PH({X Tp^,BGg8B R}:/t7ZN`s w:ݳfDbR2rze uºDI$?<ϥruQ|M~ y47ga{Z//ՙA_}9-Е\p3f#0`Z#igoOc+p;.o'8t~(B}"E)@KC퀄3YyD1brn}2x(*G={rR/9,Z<4Tae 0u5"佴aӰ]`>V6@GntWt!>EN,-ۘ-1+>_-\ ;$0n5p̀]W⏾Q hkeƳ8Ts%<[I1==vi‘Cq8_# ⾼S`XQDt'riGءi8% E5Ъhg4j G)Lk)l6g$WS_H2SNR3)J@ݳ̥Q3EyP tLvJo?aʕcZH$L{"Sѣ<EWȫVuA'' @CS7+pҲnstRO2!% Y шrGϰ?+#\@ބĎ}uUQq &nY+a|'odYZ[))^VH>g6,\?" KO'r1pg'Nb!yC}G[w\"}Qd-upai+ +ʢsh=. +EQ&tB sk7\Hg7`0R2 8bHUqRFֈiP[0">:EъǎP./#5T'*/r{ȴGg.v"x0.Z,GF 0ov|_ϰ–t| (SԈ䪟H)ػ, 3X&P1AF+"(PY.fvQ2ŬAK8S(~Ym~ELb= +$o +tðg9¶}(W_ +^6,|6KY4֤BȂM4Bo5X6vXpi\!}|Mʙ/OAu!2@w(^+\ D,0Nڰ5\,>njD1-t?D(XRoaU3?ZNIJJ V? ~PO`AQ-HUv9)?ˁ.'/˛E^3';h?^GĮ)cP|`#'mĂf=fDQ $&{ [%#(pǀNe9GsȆ} cf{p'-s߰xYG]ii S Pg8&ڢ=|ր.GFTC2 dj>4"-~=7#+_m*ܴsS$N}OŻ=+) 53~TdE||BB+~a{[@Z>#p׏^ϱSGHƏΎfM2OvbdIspj0So W"T~`=;LȀh{šVurg*8_Πe41{U\^Gf(#`x ~@l5vz/d@oNSqAQB;"Uh\lXz3;;W mowvxc9-? [.$s2julܔo:B~mB#1if3 U2dT(9^D|rq_% +ޢBsܝ=7cUSCΤ?B@egXl:W]m?j,%EF5F5!cUpC6ilf=M[PT0#Ba>"(~z46`(ͩ>$ aͰP +dKp8q~!6 -fD]T"b*{|5ErpʥG$' 9hP- 4+pMXWÄGEZgש{7:aF/!-h`ۍ=R(F#oF ѠlJT^Px6x xV)aT"!CY'Ye1[L]W_AFB&jYA4⾺qR; D#E;P#("?1cfDϏbݎU_WV-1̺j\=H2 +}$b8G(0 LWz]QƖm(b6XXֆԌhL&-H%(Q1(ct/m|4&] ¾x@!tD¶ZV2 +]m[TPslԚƾUo^>7\C+䙎G3kx/zp"gR1,nBuAa]Ms EIR&C s|ϭpV|-a@ƆڐMLI tET cj䥗e0W Ӎ jj,K <#pE#"lU',d,џ"wdCf6Fɚ֟Ӻf2!8-@lah*:ޙ7hMϗ'Ȱ']$ +LDX1]o`H +k~d8{=)EF9;1\j`\BvMʩpxI7-PotGR+Cܣy@ǰ +q%aJDf8GZ;aл,܀8ץuyt=&+M]xQ::zdBX`BݲZ&CMC,Õ!LȖ%~+8~EMT3yk6/SySdsp6ؖ17T"L +瞝Ljf U*-o_lt/JnїSjFW/yF$StRbC'-;ߗ_u_c@t[ RuiI/>\.[)=%hV^qQ,=*BՎ|mJ]:1#(a:CQr77)\@t\ t WhVzB>hwwIFژ"m WrxQjh]AsT=y'-8y[_+ +cGDyH.r~yԍ%BhB$g5;k 'UAY4ձ2ˢBO`QSl/93DH3]f=!y&wcgsiXoljM>:{t-)ZP᪰SBK%6xzZo椧1L,hρ +l +2~rs $2-ddŸ/hXS ;:2N ̀YqUP@=ؓ.#i>]G:p8#kRCz"Syv<}P9"r]yו=-`2wCK"R4,\K\ї +hCN~FmyҪ+Ӯ(=B{<#($[#dI;]R,Z88 %Ԉ(ʹQ 4=DV|ɗz!KLZsqB3U9] 9@[DP22ec}_?Ӓi;"j|b|bg3ZRBKMBk[$,ڎf|ݲ{IwI+xfp&!x"(>Z lV0hO &dNF@ܻWt0-S;ZhfٺvaTbB=}#bl R߸"R`S`oA&%;n}LE!Ͳ- %ǞIugODY2ŲPH0JT@}/#T ނ>uXk:whtRD_.&;zrjC9,+Š$B+g<# $is(<|UN9>.*^+{\EEJ{qA 5cpxh n u_tRZ^^W>‡F%@Q ڴ{ 9T@cg n" %ώs`J}{kՎtfZZ(^6Wܝ/Z8@B/;S9I֊z)*G6B%h{Duʑ~tR j#)ւ>v~?}uo1Q,,QP !g^%IĀlzw:3 +xkˡ?. gB.U/~)5'3Ê?:bw2 .r`YkeBc߬_Plhw.9^i /_,ѠF2Xٸ yz.oID ڙ0X~ GcE.t@R 4# o|VPWmARFZ!pQ{bS`Ԓē|啧+Ṟ!Ov:=c9xT[.8I"NX}Tp7fAXy+,]oSCВ6()#P[!SE}YMόDbFT+1QLܦ$;Hb4c+o$~yFsBU$2"tt=?lziGY TYAAN~YjnE@PݻB vXV؆3{|* "=0 VF_+` m)0!LUH?d{.` +| +f~8'P &Zˉ z߮@c[&<8MfD8Z-h1&YL^W8p (z'aY% cRE{6"F7kf[+)pD& ^IP% +&W$`2}(ϒMIRڝ[j.cvIBK&;1 +k׉Q0zތm]m48M)+.e#*ds~s@&Q\&v)s/-]nd'ko[.)޵sžieH!5WJ+AMa%hSRQU 0= 5,|31C{aO =u#A%6 ;;kVPc/ߌO/|6YC!t-QQӍVRz#s{gG3AFG1 )|%}%ѱYg/ ,}Nscƕlnw-5%6:`,kTiϺ[1SNT#!mxcЕIJ}\tZyx]v0y0yMIXpoEЙ#KIA}oT)*6`{ 15v,F%U&['EGqoW1MPt BNyX:^N\<뒂CV/puF>> lqH0q>3:V=Pa.eg}ArA4Ґ|`ޒ҆nRW4Ub)ܪ,1!`Tt=5C4Uxaw;e)%)em_Q ,،xʬ#rC~kIG\6,4 Zh%&I5.U]?iTવf%1Wp"c|{bDhSSk~ThO>=O1mj* +:TbiiF}A3Ka{a;6la>2DC5!O|$kր8ͪ@o9`i!Doo⯪]Y:qb+,6hpݹ<0In )n;r6)`qZMd#]z_Zwʸ8s2lRd[ TFRg4( mAmcifkf4x1ӴKwso)LiiADf89-/wC{Q˨TlIף_<oFocf{%4)Ԩ4Lf8]Z,.VdrQ&SI>ͻ@4T TI]xFTk$S6U=вe;z)p[B?Iv.{NhZ{mYW+GC7 mƺVhPہd O?k4ʕ\*=c%D\^hƥd)|J^=v5r%{D~ErFύKhՎ),Dt@D[9Xyz[ ?ŧ  A鴏GA~KqoUJ=d;1~,J, b#[΍{f~(!s(JX +\2>9x(jbexKKq\Q^+ȟ¢ jROD=7([zv?o,b>ocͬ0ydAڭ(lv4vkk(Y-pݹP ,K'S>ʤ!(io`Tl.ZR>aKH}&Ɠf *Qġ :]aO~S63,=Q#B" 9 =Waw)x_.0N|A$EbRnX@ J<6H{)".Z,敨ʁ#K~hWȍC") a]/HJ!1*Rɸߴ?RRBg߲[t/SCG:= +5Mܛow+@#%B%Mg`!yCF9w5lb7(x[1ˉSn{Υԭ:Rw(Ͼ2p7斏1ɞû(0B tX&mx)r;lDM-<( ~>p0$]KHjoӣhPjfL +T)A P]Y*;%];p=Ƶ[-\26+!ݰ}|pS%GkS"]9Q/aarsDDP&ƭcأ+hsTz[S#Na:50:;ؠ=#4}Ԣ$[r4}LJ~7ݗ\b:ŤYiDc\ +#gJ"=>Ni~Op]gS!>]c!g(QdA׸[2Q#ⷻQd.C B9K;@҄"OQFpH!=U C)}AK B4YM)yTq,ݚ#o:5Zftd7+"0akG(bO$pLbD<'x܄Wdk& 򰢷̣hxE' +2P08Nx~[YXeBD,Ru0GpX8oPBCӳ$j?M %דuTrsE BE9ZY]kJS%>]T119@ =o\Xq/2"K5 +h-QC &3~P2j;E oJUKQ +~f\}RP>lE`P('%,U^FA`Ӵ_irKނrwʢhfӽ.wF&0\ybB) 23S{y=G&2wʣ"QK{9.P&֬bhġ=>aKN|B@^*ĿY5_>X \\ o9F)F?"Ee;~z,~)$87PG%8{Fp :=8VG |!xV8DK/X^sa*PߣFNhWxX\V/Mf}?pөQ2j@]Y230yU c{̧g_a_EF=|,s:UPI̜h 2r#,=eoੁ?PW9>&#ZV> *ے΁0;LפVC%W)6Yw`v^ J@9Vy6-ގ7S +xo`ׁ@Œ=)>G?hN+Nݪ_ ۡ0xwոg&5vcjVpVM1)boFGI-F[L<ɇ8~I&n6܄dp9PX_ϜByL nO4eؚ=~id MK0xĄJ;Y;Sb H(lFܷ4JZ&MtD{ ٳcʾy ;vXT|33뽫BZT QZ iE={@[|d^ + wHODhK_V+#9$ D\l#` 4N2 L+GK@vr̆$υХ[w 8/]~Q1A?pɼ?kuL%5 {樒J=dT)LkNz̄U5ݘ'p#]GXT%̨7X=]^/a3Wy]a)3>LaeS¸<K(*nwYwO 1'@B,L9;%h(hM?_ 󺷤*GBQĽXsoj!`X2C|j>Uk 8qsC# +`^)Q <c"ӡT4dD۴m 1W֌[ $}]|W|4y wm>Kg!6-(Q~H%("sIb}ʊzb1܏[+qEDho!A9hC(;\WE>t¹T~+X%FҹȀY@I Ts tJkl,3o㥹O# NMfYF iU-Úr[kf T#uĂt}jZuR.ȁ-B-esDP ;^-PHe۳mc,eYh =H͔ 9U:>ۉ` ZJ{~WL{%-~EpCȷ;a@ J[]ZPT*$/UStx*P@ +7>V(j1"3S/'b @`(l;.WCx`V.ZX{L. +V7p7.`8[A64*KҪsd7~5"?;tMq ;Q|3I/:Ox@( _+Th`kVcuWNh!Y>.AC:Sϊ.Gho3%}jS܌X%w폴[0{gs-nuA8W8DݚI^܏ berfO;-hPBށz*>b[:褚cӶI%g=0pBFy0%BB&D-Ʃ#p13v2A>T+=N߬:7(+x8ܘ_ZGN|4 .#HῒԺ,| jhe `@DՄha֒[6-BPr$l$<R̩G 4ȻSNL옪{4]Y}fugCq^똁`S!B~dk }^> GGxN{)d7l@A.{aHQ?^V ]<{ I=u&d+ j߲8t V ~ DMY`LTD:*d5C$"#Qx&0 pfsʼnn|(MYo#bXP֠=r.a(`Zf|[;#$qgXTFW f(\aaƱ;vɵ,N=⌬~B +#A,w_{L/@Y^ rz4b$^!8t@ֿ@섳+aboQیGi餣Ճ9`QcC_op#Ce7 $QSxfYUx҈ wqf<V1h5)8O>:4`{&v5"Ce=h淰ꪘ2zӰ# /J/u*j~E_] au51qyMě΋GQ(5Lt #9>yՄ^\xf#?K+jmwbC~(.<̀څ޼rw]+0TLH=Pa(l>i)tp 0hR %kąe8U9 |w~ V# t@Q=^KPl<͙++°spUn 4EFНsd`$GM Z WZㅅY&d"Ʒ; >}V jZqÃ}ޏu5NbI:+#hhVgMXRIyjLGab{ǥe&B~r 7*S[QO!t)/r*=ȏIѹdFI7BThW,*^LJbW?p+8H,v! En{@% +#Ne= +$Ȋ]0zPhܿI쁔PK '(o"`?e¦;>_?h?|_?~?/?/yF{rcwŗȆn,V뫱Q?:~mg(e-[ԧ֛iE88#m&ӺOI|f謀q CWĸ_iTc9]UK&:mh3ZsP+X撯w+j`D2@Ѣy3bo6@HMoT[7Ā#zU[ +fgj3A\ (TaaRnSpPGne=Y- ˯T!YbyaW֣gm[;7Lu(I(e%? f(,&R.9lA {B +w+.2 &6{֧'kT?{<2}ȡb'7Pݗ"_h(g`3 FǀP S0τ58ݲQq{{H:8ȤC\(!stcѡb8"IpX󶨟*qA^S㴽FC` x>npMB!9 ׳(1zEX?ُ<9_>1}EGڦy p9,nh,.a ׆ߦGVMK +X~qQ&I$aj?QyosTUObi=W737C ؐ*BB&cE\~&>%a{LIhĀy!Wgˀ8$`\t8M5j'p"$ذ98:` Ppۮٻn[ Zڐ{!f@FX;TiHMv[ 5Q +->+qW1#}P"KP>؉wrGWa;a2x\F @ĕ UB% ⊭3F1b])aZf̱7Ȩx5I,fRoq%j'j@P;4Fuu6L_R/y%fXӗd +TØyPi̓P%b\3Ԉ\ꏓWr}h c~ƤįYq p2PRAM5! ͸eNT.Efl,c tD3g&G؛Lfgڬg,q&$"r;u̿J(UƉК=yNxEQV2bdìh./W7*fzaxJ& 8.!ӘP^ @.%VwB{[Y{$[2"zMpy-fq?JL" *{Hwlf| + +4{vBŊ {"bm*o E8 fovq1v߮)2`HeS +rb S&2n(SVhyZr {ܢH݊p;[Vxw8Z>7kӾgDܪZcmmZbA؅D} +<4P9S@0NrJi+A4}9jP0weX^QS;DVX?)C2;B^,by*}" +;5WCKEHcI8c3?7hkyQʦ<>"6)xÒ ;"uN!ٛa_PPL# +khT40{M6GFjTK%B]gԮq:՞ΰp#lOPXB=9vTXB:6otΰ.G1~f7/fO_ ! R0p"CaUЊG{ +H7YK{x_'Cl+#9eޝZʪgjX%[F([/o_~]goD 4v"|̌z|` %vwfbpIklfRM@MӅ:U7,">:]lDM(0T`A?UaOfX!ZXcǭ6coo/p>&~ zܿ +Y4ww1:[irX +-~-"NՅ~=+ڇ,T6C%,u$ɏ^E0:VDkIR~*lP#QB; q)3n쇀S zHپ *db@#XD{{ R6!{*anah%ێnYlwd27V٦wu7M9pe(qk*]bRS2{ T ]/ N#ݿϘjO&n'a2ŠtK=ɠw I7ud^>չ`F.3b)!oNs (Zve} \ʨZś,˭I&[*Utut{+?N^F(hu.z(Q/WX٢^O#O5,vxΉY!%%e%u&ABMK]<mPIZ$-"Tw"hp1r{)W C;|RF]p^ghi&Y&s. @ܬ?ĕRȗǷExӜdE-& U\t1+=$q\~Dj! f{FU=e񷑨b|݁aOyg+ ZvRq0F'dP:+ӺψкZ #mTNT)\8s_bFg|LLuztfu;+`ae|詠]e4)jF56",Xha{%ݎ9D6Jr_W1*~MRaVxɹ%!"r ` *\])3Nl͉FPf)P_8?ca; ;ZC50>+)ZG6 t4h8>ZFsZ iD pSe#/hXn -eM t +(MV GqG' jLRNJ*s;D\ +hf[+P忀h-(xvkG&$VAs])"-f-Ɠ.`SQCU]B<şQzWvr{|uQH3!/j+֠P#u*ڀb+vF"+P)qCg M$K)Β B5k8sWŊ¸Koِa@-JtE@`Xѣ C40r\Jk4q.2Z>w{ F:^W FxۋZ` zKSPPFAȲ)Sс2y?OrNKB h-e5uT8$:<˪ROx Lq#5⡵ò8rFP[(.5'*S pQ3d:x +@jfbJV Vwggms}O޷ s3(+9fdx\J林3CC)^Py\ϟ! q)-;` JUtWǛqi 4c?BོG_ePmhN:w9f:v|} &gBC~R_3YI0X3șme~{Qtyٙv=#{_^H؉x'@Ox @i@/ypsw+S~ו_#`\Pla '"%h;pf yH[SoG8 -ݤ@h[O3]!v<K=|nȝMۉ@_GG=Z|i2~_inx7%K7TiZ}Kay/.0%XB|EMcDbۣ,Mx+|CO+pȝE)vn2Q,疸-gq{!KO ["M օ>xd/@'k~9ø>F_GCS +;MxYN]q;~8EyxN4#Q>Oq9BۇjˡvSxa0w ArgfB5w׌Vޞ GN{- [6R$L?{b[U2:,~xvsRpu(f c*T:Po+I|#cc.NI,΍gK,R{6QBs4`px4E"Cj&o YGZD.47Xb!AyGL 4r-*~Pd ,JE'; Z!~Ĵ(h ٓTѣ{Z{hFCF°hCw]wbŽe%Ѵ~c~{A0k {T;tyLsqS-ʄW`/Db |$g('p<\JntBB5K}i-L19QU{ y6"xݚr%܅U{j2y 5$~ +"a{"AKʘc'c,ſ9Z>Hь3ʉ5:ֹB΀*jqB8<B8v߯D)."0>8cDT+6C"tZW;,zAqݒ}z75{Ic +)si )luH~8dJc]J4:޹-N% 3n&)Fp70gKUYi1*~mig7.a{c&qI}IV=U%kp {< хIy8J{j+RٺN =!" r*^ID6n6h +?٥c +坝N՚ nT,)[Ӈ=/6Ѝob6D£*Z<KTIp$1;7.I IӐv.$G\'Ӥg8-3གh8Pq#-rev!k>06<+&a +:"M6#jj܉Wrt}JY~ARd xш 1V+ƽK +z8b0XPO)m+'-թ~ Jх3E'(“1K8DDϡ3V@y_oPtu(%ż%GVv(C gbӸ16#u~9H}\}y7薡Wm<ʇ^0r︋W!̼i[aGyb{Wc ХFWVn9˶S l&<3PS4֯albR8Q +FJ,#@>TNWd Q~EmLq!>|0C͹ ~[z@pqz"n" =i5&A ]R>5  t8@(if"vK$?S_Wy;{37d'.|<65f$\ddɠ(n5őnڒnف4< SǙ+e;6 m6h t81e Vq*#B qxgCbx|0G)![(:9Y΅و&1!8mWoq\*|~ i ߠ!&.jl$LIkq糤RM:|,fP^bJjI:T%_mrї>kHV;ٶv%_oxm]mGFתkڼǒ Af-'V#SÑٱrl=Еohf۽q>(ȥ^xtȵ|'MOoȯwS`P#Zp^A/fU!BbBCd")cx{FUز'>EY 㒀(f) +hD$f"'b!+)})X/ +G +hhҙO,+8"_k +-??#H0"#^δPgJY\ H.آ3 ]mO ⱘu; EvKyj/7aL)Fp%'RMvsj ++><F Py~xIxi\ )P:ȕ49Gbw{ҡ +Y0-XQ0NUΖ6i[<Ĩ,6E5cei2|/O#j6it: fG KzpS֧bSli5#zwωB!f &brg9F{'`aU hM-Y4OaInY y&` +|"3>x#u%R=ds 9'ʭ_'B4@hT Xly};;uO~^ qj1lNf@W2lkOD\%sa^d.0g@1BWjԤVY񕮻<*I3#FG)e^Bty A98%$>g(5)mUYcr SOZjctANEe=o#~/Z%}*%llw1AIɞ}o 񭅈*P2H{h"jVgd4 fxBJٍKAIHm/jx'z"F^❐r'j֔8 z0_:q +'MQHL&UbK>X9tZO{`i@ `R tvJ)T[ҩbW6 :tA>kfae V+zcAiOL|ȯ?r$nAq yq P`k%n6klz?4Ԡ +1`!_+sKq_3LWI#7בVkhP y2!S@n#G]m޲*o}1UV䱀:ī)էu/CRX ,q{!upB^׈ϭOeDdjT +'!xReze=ϻt: +X, Im0Y# ݧ-rki-odwx[qCu*Pk~;cQuzzka( LG~K}rޢ!gE B%HMbAOjQ=_bZ{+iO `TMZVjH#s<ٴ6k[m_#\UgpX%e= WkH z-rNf3)@C4)hwGP^aܰ.<JD=)[\9 YO2)S^twߩF+_@s+LiDD6D=$5 @Kj!;A>$o(ϲWh). +wX?N ;K|,jVC31kܐ ݾa`]'D2CKIYd= +bj"v-bl/G &0exڃuA*IGZؒ~KMp5-t4uZ԰Z PRE4'dPpNIL({t8" VۙVB=V> ,' 6~ ks+@^ ̴B'%Ɇ^OUӝƧfkiɌQ{1tfϽM5- '-Z'MXRQjmuX:^ɗ]?ICIwqG06Dh4'b$OT"SIY^- =]/"11^TŋSI)KjQ8$wwN/VxUUɓ8 yDw(vtLѢmNzί]мY@e]Bا] +(aTLHOW7 {l3nJǝ)$;8dG#? 6ܫy&^V +>n=b7@nm̻VxxZ+~'$ l!Z@G%C5CwD6d?p5=[& qY?HRl\}/&zA.8aHH~̰c:1"#RzY>_((,45/!f)ś[(z)u t'BdW|( (o~x1W/!sK~|NՉ*ܞN&-̤ȗ +s‡8N2&Olag,;ȺSQ5X+)zDhUoꡳ#CE6$I{tI9zP9ZׯEײ'@mp*4n3;3,K(xmp`Q[-ӧkOȻϑ: q8>; +=Po$3efN- ]c(cUcCynѶ\)Ո +ͨ9#'9RC/T9 ӑ-N*G_f]iTPWk{IwscE%XvTha6(MDZX.H|`ibo=TwC93C p`7^ Dة ln;z'8@fVȺ5zΒF}"q,PZ9N#g!u7yO雯Sntvsn}FȞtN~0Kˤ\yP̮rka@J.m( MKj:ѩ X{!:KB-"SKWtiL<~ELE'vycP] lB[HzϭX_a5 ܏ ali trfD% 1O%,:WsM1hs +m;ŠebTN% Q@mYyXh,D.h{wx<|n+ɫR&~YsIXG$C{ +ɽ{R5g>%L/wh`yVb LI A}훱򃴍N=)!mFa%YN!SkzD G[#Qy=L4Y0mP!E|ʥ0у˟ro > H"hJUX-BH~[nr r7S֕`+x;%>2W^nXpG!0ssKdOiQŴ *ZxW5t2ja|BiWs&BÙGa*i闡ļ8$wKsh޲Xqא +2/H'<Z{#CR"ǖrEj )̆_O+s(klG1# 0=gⓚ9Q8E)wZl_*)Pޚ2XS3GCX- F ۢւdT0ZpS c'7^Z0C?"&[fƥo}hZ [@]̎[=Pm5L?CkϿT(-{WލAFt c[ȑq̐tr4vV Ӂ0{Cǰ\C6]_P*aC&gnAFt)*m}uaNj؊ +(il$)қJ FcY; 6ΰ 1CC?KTO<\X {,:3 {ў͇VIrm g+!?'PJ!+q[Q (qf,N8CaeГ~ M̿@ĩ]Dxlz#;}ӻ@U9ҾCc"pZ=lhWuӮֹe/Ƥ^'g) &}zϭnl7i*H"X5C|Q{D.+&E ghHE<Ā LmdúE3*y|XZ2wlo~-.wi8{+$(ZiJ c~-+ų!@-=p+-A_o4Yu& 0@F ;TAg ::<˔e׵;|kQ xʴ(3?hFss<@'2t`KMQFɵu2ayf1YuQPw-H` 7uz@;f=%K泬:F['oW^H "A[ Gƴ2[mY5eT~A{B:Utx|St,n{ti?N}_)oyU_wWWgͮN ~T +P(K2rm,-߫g~T ^r@*F9ĕβܜN5fr[(:R>^q_[|A~ aŢAO4L߼D1T,eZqxnmU=O_4indfVAe-W)YY=Q>Ѕm&N`_>,A"`V#U/qs#:DNPe ),#* +p;"9c6 ٔ:VO4)_ *S{&^"",STE!v*M1*|hC|GFn%>cKq ^]NwZbEU>LuH-/SvXqi"P#ӓ5{%Jʈvnѽc u&R9+%Y{:t@ΛE2X` [.rkgj&) [W52oX{K*j/soH fFU6K/V8ݔw|]_ZRdTt8~ќS'4yi+8|hgA|`*<1!_˺W@CnN.B#68wFPiy҈/rEfm(}F ɶa/jQ8t~j]!dۓ96 qj,'k+OoFǃ+RgkQ 4)Bzn11c_ ǔ |Aqһ ZZ$=1]o +^] g,t&gP)Ws0n~C r/3Z^30vZ=J$"E Kf^WCaZEM(J-ptW&ΝY;b;#GTsS=z("5B'-3b7%MɹSp%Է>/uC6`8~Ł6` ShѽG*'Cj +|Y1=)2+u/;w׭҅<=N~u=xj' kGҰ:Y&+p]|ϔUw~-Gm=Mq%H+ vOKiIqO Oq`'Z,Ut][c}tdV&h+o'QȰsP7G??='µ2cmEd^Gi5LR@q5E2LOOmEl >=gkY6T5>Bp}yuϷI83NҮC {ۀ .LZw+\b` +uF䇟)G)<AvDܓ,fT+2vC\a{mk{ZH)$C\@2b%_ᇱ] .WO+3Y'8oUY.RX1sh";uВ}9b%)ELK_u)WxC<V|geiY.{n^ѫJxVE)Ld텳j +$y`w=?x7$|yD^- D6+F2)asWvYY + ; bcč "ʕQԴYɺ^Dq +sT 4.DyȀJEb$)_"Wtc;Y®FIxzds;g4&&1ݍ;+L9[ZcMdF?hC 0sf6dIVljr=i) E jʻ%͕2mmHDЃ 6IrUs_EҎJ|zڶ+=^6ÁF )"hw$ֽ>]_Np=*k,\T$aHAٮmCyĵjUaGǝB!_VĹC,3ן d22Ps LXUhqyFrr pEiv%U/@oAtA  ?;BLwe([ZKq xV' +Ng~A,^Acf{#`ha|Z@#o-N<0LTasMX6*d"ƈDG !|UbN$͐f[US@p HzSdm[85 B /K`Y[}{>2fܔbWAՔ>\?m |~Fb":Á ފutĝG"Z t +.b2էǔ"ϣiG +=ymRCD$de8\ +ʱX,q?q?{ #1]ٖ^t)Ѷ4!,#_sLÁږ~Ze_Q_@ed2X!!Y>GDҶ pŶg! R2Sը,SC@8\PROqV`FNByCj|H?>~=a:!6c0$ա?#ݩtπVTFe43z^+m c]{a8>|"8y`OU7.-@ǦHt|xAmXmJaL[Ey*d^*r#ŷrW$lm;`8WF!s>@Ee*l%+ +,zFۈV6%ë'B:F+{r?'Ҵ VUV- M"RgW"q%|霁zW^1!BQK5Zn +YwSBP{+-{2U SU+|Z#pW8wwA)V?=k?|.mYNE֗QkQs}j@S]߃oQB ^WWu7ǧ#V 7w Zq/O$3eNB`Tr҄RlX[ dԕK`[R90[=6UlzۺsU[U2=li*w.k +z,ߣddqPAh=wāgw#\ +Ԅ:>?jٝ}1c0ZbWSFf~*jί@l@uZWtEK dDz9VN}`-stC~It;͞DtkEF>UZcp >ʝ ꈴcBA} )&gp }]>®Mf"WhA_ݲ YMڦ +i@5{Át򠚠ΪOթi}Ú(ЧzޠI`ń@73gy 1"-N[(un]5Dv$GIA2snĦRl +ϛMΔupGJڀFˣ槗=Ѝqfl`l"_)Ȍ و)ȓ=E|՘+.Ђ^l(]1^#[]s~FdI-1B? VePo(̑D=J%'edT0l=Ё ^P{'U#Iտ}e[,C*Lo2AͲ$Gֆ*a +x +κK浢?UE4o{itŇ""_- CA#րi\aΈ^uʄ"5R8 w^Я.6vDtF)D0`'C` *"y9"R䬥ٙy*4bZO(7sv:)ϮR~OJK׽Y$qx^\ZU:GPno+e_izUc{| +hMۦs#n(tMFtXdKJN ɧOdMpQ|iٵs UŸ3 >rf芾 GwǛi inm&QSҀ39vN­+p&iW/@t[ᩨOv=w $ǒ\C>~_o/xԳațn坊kN-nߟifoΕ{lZNr+Z?=-XTw.sm(ω}GF&Aawg8I&>J}Mn6a:*ReܣOu*j8d@|2P,KH>܏oscnUjzz|'Վe@l8^2= y3.a<gψC? [*C\~kL+:2 zG+IƢ6'ynUh*zOVtM5~(~,44.  X6IpG +)NK|Nu[h1:<S\F>H +*ezϵnOuVaU-˵ +WIV+8{MT'G)|(P%ܒ@-<"`$;N#Ƚ1hj>3ܝS^FF=cA"MaUalvz-[1IU7t2F߲FT뎮"3?KDc0558+Gt{FYH'B{]]qDۦqȅv&7X|W~Q-2OJ +lgC>a 2›on)b1)zRKÃƺ$kZEZ2o UQ"rvN\I4rUqgCK51Pe2[wc*`!}m80\4C% Gl T7vƈ7ZcUr} + 2/' C\#r4tb īQψ٬X>"RRԍ-0-?E\j$W0DOh8$w +B #K|CK_9ݟ>ؙqk9ӊɡAU +[|4: 9,oڊT?`!.͊`u/O#{i{z~=}CO=`zV`')0]ȩa#`Z\5=dL[Xua4ic}fWBJrMMAçܮc6,P>£Tw6_Bw*FQ=nX/1`V=,)Ba@QKnxgJ\WTd0y2|U|'*[Y:б5*d]tK+㊚~"ZNIqג1d +ϭu{|R<î)x?4άnׇ.92ޑ+@F/tЈ.5vf3T +A o 'Y1#mu@D_gReO ɽmpIQcSyo}ߣ LEj@EU3'?3Xr"x` +]JJAuT$O$>=|)z\?xCޘGt~"ne)=h``0͍&6&Vԩѣ~R&xx&^i& ĤHrt()?`t^)֯Gc95*3]L:ȏ|W6 + rηzbֳ r>M&'ws {п5r̲iRp:ng,kB݄7})"l{Sa |3G25 ,ӕevdZ[h!qAUћE 2 9ՑP,sȜaմ"ʉi'-`LWN#mi/Te[b#Xo_`cW0[n:LWl5 UIFi\LxuZ6ڑ{{jrFDb^g@7gKu -E ; h: <>gfqO([^2"_QU"߿GN)q! Z07 +|ZvCXt ?΂K,ʠՏߍC[?|zOKqz>S0`ʡ?ͨđbh"֖2V"[ц +o72مB@?rPy$T y |1;u@H@18U +zKRӏq}nwZ1OCf;!HStF(,\Soz_ٍJm3Y7-K!#!|VBx_dRN GCKj<+ݻʛYCێA`q>j]`g%thD{-J8=''}DQAzs_0,Q}q!&L xBoyvot!J)ꦴTUxPkc52>m_D毛j&c +Yw/]iJJT|1]^JFN3N"d#ܯ:ޟǴDF5I~ S )Ǖ+"X"_NΉ{r输aʴnC Ե.*S( aH< K!7ud91;X'".ԆC)Z(E7BR3P3B,'(|DɡH?-T8EO +` +Mp媼Tʟ(l(l +Y7!E{:PQހ(d@}7@H\g=r5r +q5>o㯿:a 6(wy#.=qT;F'˩ mP*VQ5cSs+*󒤀70'u={\"HdYeWNJdyj<׹/-0}oQj`0is?mkKVW) Ĉ#`#[0Ao<W ӏx#筨w#ߚW9Jml7y=m.6^)U*r%QxU]MY| mԭM݊MN0Jc=tUsתHTO+Bwr=;5?|Nv)r#zA*X0r {'[)Z-7v wZߟ +rfӆoW1/ek8U a4p֠G(zgjZH)"bB+Z0XcM &+V&i^)/G nj>#zǧM*Hg^Rxu\gIO2Hy7`BP[QWv;4nLv]9tVX@u֐9l h6 +lmL?h )-0m]DkکKL+3ڒ(zsMV㛬n>3z7E-d8Facz.ʐݴ3 +`Vj*ADS "@!.%A+%ky'AF1D  Ns͌] ?W58.8@ЂA NPe+z( |=y`5~F +YE"pk{ϰ#rw, +4Ȍ(gHjΪ`V!.`vj۟B P=_!nF=;Ƿlao܏c'ꙪOi6(3BjDE6QW<3̨ص1֕ .3)IќXr62SVWz"JotJ3 Н:;>S^YSz5ׄImT:"U"c|U ='J;@Q£ߥJ7,2\5B:5UOsGEo@huej1i_+s)F9>| n;xzTq=$D2̃MWr@z^T.W<вD2v4Vq\ +&lWdk"aFzW}X i#$nұm!iș%w8N^~L`<7ljQ{=6bRFЛeL*\^ [ `͎+E(DV99_pT 3=]s}ٛNuP}CB3h﹒32`ruz`ӼXqR6:Ush ִ:oO/4J 5ª_/,EƊ*f.3u7#h;18S:բ/f>ya;}[㖸Iօ((1&,4d cbBqb!Bzf(ݴ*=`Yz|&\qnRu<7FFA!([]X!v8ʹJdjӣDã +V0+/O%dnh86Įq_tٴ +Ͱ}hȃּ eDr҅k԰sW̽7;:V VfhS=W*I׸e@/E4i!k3P'LSGyONəC)P18W>aQ9 B;Pw+%X;PV Ҟm {6;B!s94Tk?@ i3_o5ŨG9|uMR풜.=GDNS=!zGu5#`^Gۧm1 ]+Ӄz'Yn/y:q^%1##Êˊ/YL=mW LGX'vl; 0nr`4ǰZ'S&P<*؜Gvq[쬃߁F}|cMR't뭤s>\8ә3햮6/c-tvtzGѲ6$u]8LK/KɗE!_$m'o~u-kd/AR;*9I@v8=/pUTSMVv +]wcȹ$}~|To )lhW90<'lБ{|lZ>Xg tPj2I <8% +yH5Op +y[r`Lpzx7y+ɦ[Ftw%kKQCENB{7ӌ_U\ZHםX _4%}¤!t#NJv+oreRBAjphw97ITleH&a ~1Re%54J\Pml!# mqnR_dK(S׼S%mr1J7Z d[RD68ُc ӔʧLTרW<8-=vhq}^Jyf2e5#GL}4啚O%XV5X[=[ͲV2]ޑA'4d +>b0(7UN45:߰ex E}7 W|SDDɎV"4"!{E&Hv\MJWӖ5.gp2H,&PEG E.pm96gT FlQf|Nfz.>V$"ݩ}j]/KJ AjE9 sױ!h:!i^; .p%-7=3@?iY&07h$󭙮׫*i?XxӾP`/K J3^ +hu75} CfGRXRP

>stream +)T\iƃ#r[(R?b%-SzdJKZntƎ6nsfPmYrEL j"ZT6W'mݔr`9@J?a}.UkIc![u,*o|[=OWl"#/NWR)a#ʇ_9r42g~XvH՗0F>HSl!vE^)0NVE>%ӤYa+⃼ʛ|:qvAx5C]=. IK 84:%R׿Dll9+q[t-u1V蠳]&oopjqJOiPW}buhOG>dJ<{}CoR)uCO[-q'NtʞPDaa:MZ[X6ܧ=S#XfUB!A ni +h0*ԋ +tտ1Ũb;ؽXZ*m l9rԶ>+>j`s@G ydniBkOPNB9>(4C/z>601#b\G"):Mʆ 3$-LڤqL+=0GWXkN W8Gم28 CToRЩ륏F-GFkl5S7n(;bxVf5O&!5 띾*/- B]H,LWGh=Cu~>\ۄ%ū`A@z N.bʚnuCG>^ZY(0z0ͲGEs ui"B  Zdiq:CFC)[h0E;ж.T2dh^;B\V˩Xud3agEc{lDGϵlbJJf1rA'bM_=8qlL4Y2@{%<5]>yt g(` [C<1bEnQ7vl0ib E51@ h[ub +QToT|_UsJ,1.GKTZ5'fRo~V jݲ(΃9~ +>AsBH7,`P+TԔ{{0 +Zk-g4ؕW:m-懮w(4I@WD$K-$ݟ-AIlvS +Fghwt:>yw.?Э ]k:>0(!3t´J(hEUQ#7m:|%d->1Xq?១1xX8I*wS} $x$ z[ۜfqh[mj4e(aJЉArS\u]BSïF@VTG<N F17CG0\xt @h/Vf 7΍oˡNZp´*5t@GJ.OeeN*cһE{rc{*,*2 V;г((n F$#Æ +co7tMDTk>-(0ڲӔ#!hh`-V[F[gX!s +_ +\Q(t*/))eXϊj雴҄5Flx~{ɷμU&%:Jgt\? ;=Ǡ-=k++׭c>t H+7qD`=yL'3e4jMNERxLY:DyG SNéؕ 9]~W7o8 udr-JG2> +܊)}$iEwRu rE㺯(f$0@2xKNFNMuIA걶4dXC;vFV9TJ' *6 ` J줜CT [W%`U*ˉJ+ ',pf:a1KW18 +\Jݳ棊 ~ _U;AΠ3 悌|ɇn%6!hhl-rm_|Vx ' K1F?+yN<rW yǺ-1*R /U8s]*`u"T`b_Nђ٪<'&S]s\J98} ĘYϮftL9(N@^ڻYRcL%d淋T5~\o*s Q2@o&:De` Kpu~ž#Bƒkɥhnd-fqlѼ#@ދϩؚbr}#2j\c@.y5zIԓ_#Wee?zP2u$EM8tKc1QKؖ EZ0W~dtX4M̯SFT)*(_}&6hg."¦ܻ~"rvŲHPkAsyٵ^&5_gM,xޥ"}7oh{cD'k;" 裓(5n%MhI?ȩFlZVe$0"ܼon z0hGJp{%{:=r$AEOG2꫋{p="hyP4ېِ[cWRHf^B>$-{ V)+)9QHITv'H$-Eۚhxiv2]_OX]߸,f<$&xflz8=UlG Bq?zWVd|F>$;NchAmb b +;زV*_u G㩪;!j-3] +/hl=}bO 0U!Z@t!cs kS{طs\LP‹(.:D@hM>ӳDxIpUM2S뙕+?5FE~GFPI` >D`/ )K{wU~./_*F,q#bh]g`lw$|jYNXfG bӫRxpЋapvg8m/y0`Y߽MHۯuQUĕ7xp;<=LeE#PG bO q0@f)HC.ǖ'`VSn!m$vZM7L +;(Ř}*H4+b|~ݶʿ5[Aeܖ Zxd꣢D*4d<C/ +[iwCɸM;MXEP9_.-aXNa lPrE޹:ffh1 y* UgErh?}y*2ɉ4UUz;qTspLZ_:u+ 6FS:\M"F7xXQn; ++鯖j2S{E*VX-uԸpoGle' ;6h-Kun۝$T6'yޞ[$%r*iJ9!gU;#)h8zrVt@:jkٝ]Ha@@"j`@[3ZۓUuPn8rĶɁӊSskc Nq=YdT>pF]*N$i/CS 3-DV8 Mp^:h$o6I|؎Hn `VhuDh{ԭʿ2$&%'G`WWׇz񁣪ZoTsϾv\9Hi"z/SKӺҲ/4ܛvC* *Tw:{^sR4@Y/0;p:48~ :vP[eA7>իlĊ?Bs,cc FDWOlqkl4Ճb$*zF2Gn<ɍTMΫU(h" EHhD.V=yպUv<$.Vw$~/0f2F)Ǚ=S9+]+B=R:]S 'FF-oiO W?V JXW2FXLjj-}ߊqTyP3¹=]R vbDu+O%dX};W1?{e ;L@hS2'H4 +Z`fn=l[G,_ b,wNJ KcvsHڰE!hQ;/TgIκ\} X7~Όi3jV~l#ƎwWL}db{2-R +e#tɞٙе>̎ i`NQz](h9|WI?x!H=Tۋ䔚iU +-Q){=}VD 7CPުDK,O(]f2G +):A_IxK7.`3wj>0dG"(O'aZF)WĪjf"d QG?̝=&}]Uԁ%1"BS(P^& =cݚ`5qac +;[ RUV9_ȩO:#iL>Ok|fp@rŚ+{'h7Y#B2C23}U7@IdP cVRa! Ƞ[[RBٷ6Ă;A3b߾@v>HDI0: Yz,kzPf>Ñކ' 7 +^xkER#+Lxkrw(SDv;f)6lѿBK- kn=#ƴKuQVK[5zއcͮ3(b"1rqbh!~@8P\N{Dٸ݆g^X\mF*(DSF,3^嶕Xbt]_}KjU`)ҍo@ӉH#Λc 0t?mbކOOx7ԈSs(ڌ<'rrUnߨ,iׄ2cqMfvg: omv]ʶ:lzҖȧe*w_)ڱ5KQ>>H8)>$ʠ)gIU\-;Qx7EY0(Oi⩺!iǦi_WooOyLſS*j0Oj_^vۖkK[w1+DatOՅ(aKd"<8Z =t&OɄ4g HZS1ҁ!oJ㕒!@l:fier9g [XN_E W>U@1mLcFoÕ$ρ\ +#]Xװadua8Qzs-*bX|Vŀy[F|ő%|'un"Hv2 ]ElܠAxaKƃcZaа# >"?UD$KD-@^zI2y=sO}{D>/:Z 4*FDqE:dmlo`d63Ɣ `G[_bbLQL*2]tRPy=U[EIJdr-JN$T8EJ @"]!' +w-cb&uu!OHzEdpҐ."2TaNFc~M? 9m +*g8~; +:;QqES!&=?,vr1 #%bv3{awVICDS{-pгnU2qQfMPgz-Is{2QwG>: ! 1 A$;7"Vz2A$;+wVȌx?H5~]% h[^3b#i):I1mؒ +2 ʨ$d$*;Ml44&tlCbf 8>:q>jn4Z̎OqUPjBvaRZ o^f] if (eZT,un"{zLSRp +P;Tllg5O[b]Ɓ{N5RE,t*BUJ\ +$ڞ[SӋfD%hC}lZ&%e^]@>3$ta=Sy1py'ʊJ:Ky\z gAÙ]$/iG'EK9v94u&tI/ԤL}HΠ+%Ɣz&u&\x(}WD]>xvj^-Х8e~A9'ëw~U./:PZEJF~֋Kr{Aԯ rG-%2c-{Yb +&SCA + ~o?7ib!!p]')sA@ʒ00.9@ Ȩ6'0[BA:M`f3yBUқ0#g -Nz}4_2Ӽ8z4`npG;aVHOצKَ%G +#|ICg%mO%~>J;Ek|vޡS[ADo@~Y2ދe>מh(~%Nz-ى%ZάLU /xu@6cGx ROy۸KjROzdUE$%* Ʃz Ieܮc:_=_aL=JI=S<\G`0T쫠bӂ <6nw|wkblxڿ&ǎH6g-D0{\e"0xߠA`ƈ,lEvG +{j)cwW6%N :ڱ*Pn}c+#։Č2Q7V{6o f bN$@ȱJ[}oqNWhu`I|  7`PJHpɗa?7 +lE_L^o0jgYu.L]Y +Oڻ <3=|#&BM)Rh{ :2ca9A@ZJA ȀN;^D/,:na=~_jʴT<4k@eFCeO(7E +0L|t]dDBtd'Ĝ)-GTO͟8 rЎ +ĭaVUՒ}g} L:MuIgq*j(:fg?bq>G|_ռ?[Id }`/zP}:U"w%>U>ōdzOVF +!gi&o}~Q\\fmy25K31I;盺X2izZԐ\ܢ8鶗YU[kH.*kRx H ^^\ؒqMS7b^*CXWd=4\JagYO3`4rrߙKMedE']] @,[Mk. +@":"O.{Cݖԟ^ "%6>񉴲ΥdjHI [(M[AU.#,8q3W_)CǥwtgGuiz`@I<[V#Nę-tG(5+@$ڱ52X nC3RdEIrπ<"]<] X]>*Z.&v ]T`JC*. 8hA6/'S\:O.7ϗOU]" }R!y0֬Bu^Sּ̲l L!]D<Mn$"_FAT=(>WťraQ/ + b"Y=2!^>X@*h1t-󒡸&f=gQH]"\'YCfɁ )SG$][HO~p@3ʶfr24EՓ~҉6G`*Es2;Bf~=  掑eGq (s1SK&f372`/Í); &woIa{o2!܋ncr%? jz]ټAHnnnBt<0?bnKekp7;Rh?5TsuTq1F%ݷ j֩L v}3t=clVۥrAs Ǿ{@8W37!dZ&$L4 .w9]A]Zӏo'·HdU2? s>V{JEȸqWSQև`B}yKbJRsS%>VU& +giGv]c0S_UzCLL@5T|dyM@1IϺnv*.8>"ݔ+J.@S֊JK0MB+]rC{b o+B?!D E=HF2#m +^fA6TnvE~" {- "R%탈1)]W CVUs+LrُѭŁVj]k Pƈ,-}?VTLq뺌*Չ~LAՀ#xwB +9z(YqJIN.)L*8I_Xh#m|RWOa]fz!TT3+/&t1diꐝ(#qMEO>w0f0XQa1bd1O |d&2,,Q7!|?L>P!\$B7PcIj,J4&ce0Y¹?jp;UVf"өغB֕ =|G&"fuz)($;v/zw4~nqa@l, +Q!F BYxMn*:,fvL~v0@z2c6#("8|1 ׇdHpPƔQ6F5o OcKM&ih$ X3]fEb!їA_(RpFdˠ. +?pP 2k#i0]2sɽk1€hhgô/x͕mшKGGm/4=m\ʘl9@@!.#K@P!~+H]Fb:E +i£7N +qJ=SV1چ)xCO;)?/g];}Ifaʨl +u^ٓ%t]=w*d:U BΚ?>ck/m((bBay[scervk!$z*G>'˷M_E[IUgz}(wM"{{c'pͲͧ `'Dv6tl1RW2}G$,TB.Ɇ( Og0w:ZmE2UK1EAӾ5NXS@{-3)E*>S~^ŞٲUذh"]\0[6H2 p1H{ e`zD7);k4WX0v3I SEjMc'*etp9-nv5Oˡ59=(<:@",Τ'?/ +X.#JA_ &BVmU(ϓ5(/0-Ywr'K0SDlr5+/ܩ Ml(+KzYZ]J: *eVDJ 8%岯 {Pgr+UCM1^j٬hwZ%Z?0U͝oxś0&&\Yc~. +Wwj%/+;^_.gE5 H ȘY-jxEDin-*ݵ+_GxA0ereS'x $ hzξdyTුMi#~kƯ~*)B)|f#ɏ4]V{dV[[ +A`?`|i-L~8YMbaGkOn\93If0¢~biG4C#Xu 5%A YoU6" } eIrI@;%;Or fg2H@EqqQ)@7ܓRJ[bGu gdT|*uC2#1=N B`Ђ 4qXTT4W'Ak +#۫?2ո_`}qDB>IK QYHPvcKCKձ'hoE 0$:| $@:)76+*L L!1QzTQD9FH?aŅNҾK?!$(St9=T/r. \z*0OHUBS[1ꢵ.uqT~oiޚgr;HJh?K.ݨ 4]p}mXf'~ce9Oi ǵlsUv}%׸R|VQ*).Q]VvKbACOmod|Ğ$-I d +/`ET]MvOD+[=5^Q0zϫT`ckyI̗~i]"فԷ4Aa\ӝP>C U~C@H)RA%ΆبdKϊwB'rTُ2SyU'j U)ʚ=9] +𣏕m&=DRلi1@BVƄ(VSxŢk(hD`Ebk +X09r)).7Cw8*3vTh))M=rWA Wjұ!%~ ?HtBg0 ;z662LCFBix6=?ñefodږc(>y7[Cw?})xrYC| +,e-- A=kOW/=e-BJʤ U_re320cspPl~~ D hKXp~>6A.A _Ch]mU.a%L34Ԉ)7j1xwʆ=C͚w.dMN"iJho) {*9$@FL=JY\NXLR Fq$ߒД%o&TrHJXРH2ဲ# ODh-jDA&"e Pxt%>`jޔsK Oa͌.uvI5V^lx "KҡIJɅis&J,[ߊYtgevaIHO +v]'`h. az +ʞ$Q9Zd&!3!Ft@# +'&Q5*Z ~<Lb~ L$p\`yXo|j\!5Xg@ogGj7؈$Pľyy*yF *w5U ]ܰg +dyӨ{g1Me Eoq;44Hx3 +L̽kB=XLO "ZSmXmMpm_SSS*ԇP۸$)yS%X±,aQ@Фrk8]bBj)"^: ++ P- uN@ +^w2\\7QOZc߼TfMw JS!xʞ.K C*,*SK ˈZ_wc[pMQ(unqcEb?P Ndz1J$#D)Yմi㐻T0gWУ(JvS"{- _REqVjk{g +2+闅D- /9jK/{ +w |g-nBI28 +ǤT:O5;M/*7ЩЗ?{-D=PY n9\qNJRe0$z|)R-Wv d5Ү=KO۳`XTjqF~l],iA;BU#I# w23"}EN,Tm~/j8 uLX4}^63ײU}|*IAHWh/A ) ++)z)i v-,eLVxM$љFKJi¥gWteYZ3b$S\gx}SǺG9 qs݅Ds@&1OIdc|bZ`6Z›2NjFrWhZ +Il@"L)ıڂWAIscDܤYO: VlrlLAUyĠ`pV̈́X)73d ɄWߧ"^Y \l/!g&)q [ ~3w Kl(+&] 3X 䔂6YMv*xo9Da#aI)"!uYaC&cRmÒsQ¢̯juƋ;l@Zp-#v! GB k1.>2:P*LxտUL--zpksCax%zX7?*=S[vkyp&%/O?ˢrd h$1bkZ|^+ͬwSk$'""s[jTMX b739,p>bƶp@+ d Yct2TT4Y[zVӔd +=m&t: + `l&<#$z;0nJdAJUa +Zn_~}5N=0Gsʚ-7;Վih<[C|)r+:4pE ja\K2Te(CUP"!y YyW3_ %f|%T-;c ɮ*,JjcȡV'dr>DȖ)oׯ;XKA22?EJ +CRi;c>qI;&c,R/RRPAH±$DQ@CF@kWwsKJIʊ3IjVE&E䓊E|T!QMНX8USqZ>XsH$ˍo(.ٵgo{zdBozV/'LV1/-JEAAklKP$GxȵJJ}[:KkϞO*(栙aZ|OFnE } +LTUj8_JKKҡ@8 M T;{Bo']3H29h$K}BIrNN~u[]REۏ궵L: +#XqV:PʤQ,|ﯘa!ޡacK}7P$>ƒ5G>,@F %t{h&XˊIX̦FC7@pD\sQs$V@ʽDN@ipX!辍 i~RQ@`ʫ }~~qLlB4Zl0V}F~b> 5CL2_2/_(I*vwy 2Dz/pݲRz4'L?9^`iN3*kw[ӊN!Y]8?Jď~C@D/;.ȡ̇?K' 7bJ +EO͊P#'(T}9tWՃ=4jC;HzX\9~!-/]سL|[ьRvT[ԃ@XS̬Ǘy~( + 8Vpռ5)e 56`ba?Swˁ*;@$e< OY1Xn#7(8eYIjAЙ@p;ʖ릠L$}-" +. %dmW"Lh] X5BP `S͂$֔*/iH+R9XmS乻A 0.i^x*} "Z5@'9l,SI}@ʐ;hN ݒ!փ@MX_Ƃ* P')T؄P$<zKhs䶊oqI5 m/>G+e˳OT%ͪ)Qd[$_8A*Ay:ڐ!咺y\3~5A xCTWyAb'*머QUZo7ݻH-;\h びҧɵV{r&~xę +=}|ئBJ@`,Xɾ j~pS551 +r T $`FVdȰQZ0D FG ;I4X82t'4+i0kka^>$˲fJ%4 Q;dzIm `xlxwP͋%Kk*v?蹀#>#7gvĩD(sEi3أH2#ùhL-&aJS* =g:L4h d{\X5̈cPeVW(Mr߱eMaUЛp%A?R.U9U+IETK48 wGzXb)Ē/p`tlAul *Ra, Ӄ`QI& `VlOTw=~iW`inphtY“ 8 +ML$~:le%:Ҟ)Bw"ʩpt&K>n:} jkk m!$V=|UuB^m&k $QMn/0tWkAb'$k!#MUK&|w䛹d{8Op*{\]btØ`ƑfIȾ1>ojۏI(˧q@M(YguUɟ>#,1$XQS}ut3L)RLnVMM>>@eldH&o ){O9T<'=zBu5a^I8Ւ)њxDeKW +j?ZK-»Qļz&!(2!U&Gu)~u`x7r?(f8tu k!ր]x T,z0;Z)I8VSQ!L.nR#{6mɺz@rGK8LpQ talZԂ +hYnPd*@޾;R5F~_?a*cK~7Zxܷ֙w/@JL|Y(I|--45 ]!9I(3 7¦@bE\`z哘ä +6J a"62'uI1kha*W&2fC\}b'%\\Oֺhlv+#8*nYK$YsAK.!.O#|(M+bMU{,8U촤 +u"s(e݊|*C#Jq".æ@(=\X Ap@ĵ7 7dUp(pI*Jv"V; + ]z_o^Uxwoc92eBj\B? .MSթQJT +It3[B}4œ1a3^. av\qJs x.xch! n?XD"48: ̶xJeh' fK bp2\x: B!Y8`oӖ ˽DlvcD cXlgM}VB +rp 0!$q@#eR3@i&D64_@/4F3|K!;o&򭧝m-׫Ƕ;u@`!!+.m`ֽ"Ƹ`|Y5ÂË'1&IDt̾K"<{zWt ,>dזqwj}NWR![Q+ }v[GMmz[/[o{B_(h6>YVm_09RQcRfF|3sR#ٟpw2i)>ز.;{Rh\y3d= E3z6HM۴7d;Pco(\ X%<]P}DŠ0%MpSkG-蓡 +v8EQk634LS@"LR;`?xR()LƙvH:ŚĽQ|JM. YY$x +oU U(#=s638PBTbWO%%%wݠ'G:)c_E1~r"Ed+Fs)@;!a&Ìչ@Ɏ b8Seݐ[EC,$s5-P4aޜ3'?;^qUDP,b{mf务R[/^x ͚΢\ (7걕(^)zUu8PcXVL{iz FDxi+5B>:JpAՆ ԛrjjA^L|ZXO%Y" ,$ 7C7)h.EX.T<_Epċܩu +]cNd!#w$XG7 +49Eed栁fD^ ң=AQ P%3;&30SO/zE*U:kgP8.~+Voy }pLva۞g_,dmp{Q+Y'\j޺)s;gt=38PymGlƙVpFZg&@fݨz}tVK])u7+$s(w8U@K +oC+2AV@jYmpGG!Hez4]a=@Q?5> aZ|7,My80,}BFR 0:""5y0YDmvO`:he> ~h +l&H)H9?duz'$KXC7t; +(NP"pr7qAy u5 G;7BayW7 Y|T!ˋAC:`+t);6$>fvEwxe7+;^%S \F\d ^zRLvrՃ$(ԓ3 ޓ]Kq.홰.~{س ?M\֟ǖ4J1{}71u$K ђޘ,.7^/Y=Ĵ; +NOiJS|[X Y$9GO@3+F=G:`8 d-OﶃqE U۵aԕ$3WR5Ēڑ"y7|G+BT. _/Ȭ5YL9njb9VQXɨh;&{,ڠO0Q CR|ٲA|{d1iwsc{MS(),־=Izdц;¡}jۿwwx/v?~ǯ?CO߾_|?/?WCo˿}8~cӎ|o_g=w~? Hoz~;zsɛ'Z:muF?g/A귡Τ;(k{fbAd/ )Z{-f2x>*ÆE`@hH(j_>H\j%6P:ڟP-f8tU?d[#*kN:qGQP_bޝܓWUc:dm#wk>wL24/syoDfli֡HIgRZ4h;F%1{Ѽ7{ G<Oq[|>oHÏsn4 O:>7$ +=x[9ۇ8amќ'm;6:o//U7`>E{U{Z\5 k>~k?ܧ;` +WO%b3A3O565KG]LsΧ(s3~y]esFfC.vF6s?Ac7~$A{{y &(2>Ɵ j:guFҰ}5IrI^<}-kɧh):zFHc>$;|}[l5-v;1 KJB|ymkj a_+=XcyH|ܟ`fZ-x^A3ԯr7枚} 6S~vAC~30Ę=Q sQ=8״S}"r:gyO>C,4_x|*܉YaڇM=Ťo_q?pHoҧh/+BWFn-Pu`o! # oO cs3(X?> uN#͉F2t)[y{ym-6tIx;5-|,Q5(}QӨ.q%B%(E=,_믈@tKs++t+igf{w ay}p~h֢F8>O/[qLb=|ar:Qx{u ~w@H)a-qu;BK <w]nk%*[aVz:G~?uPx}h|ljQ6qyd%}(ҟ,xƾI#bB #%&򗧬3eqevOc\_HU/x|:qqy>DŽ{/*n\׸nQ<2o//\fe)>+>Jm6Fs l?wqÞƖ"lu=-T&~E;Zyq2;ZsH/-nsY_{a>z9FMOx\C 5TPf@-\Weqxޕr|@! +?P{y =>6e>| M4:<: ~uDH>?gK2Z|)}Wew+}v qjWm_}@Cr7R)ams+) 䝹-W>374>k$kgrvXEڀ1ׅZ=@SD@b~=%+Ek?-!ԩo STlgֻ'7>43r_׷~{i>Edso1&-}+R]F ϪGZׁs׌YVNǵWΕoiz;n>U!k.zj+ Qv$_QVL׈9F/oG!v"M$iі{9]T]$_U*jg6cF<^\[Z⊯BE wՍolS1Sr, +/>P-7A`15}3L4P9)KϽ{>aǚ >z=2c~d1cXOXo3x} ݎ4_W$(z?AgfiƆf{ѿg.mV?~a-Jp*NEm n8#m'ڻb@:|5o؇7zCy{/FpNNyX{2ޘ +`bsRԞR,]y{ד}d"b9YB{* |kMK;W 7WUj_kl+͉7g$b}G~@|ƲxZ})u.<Ũ~ϋ~yr;N{*6 508j礸0xs) Y, +8,ӮTe[2iܡI^K PCzF<1+YO^)񊍎FX'ֶuC;C_\P}#7B~c#wwc5kw|R5-B}q Kj4FcT5R404G!IͣQAo(5끧fW//+-N{gU5Nj8TTNvȆ';֣/.\\I"6J$iW)9z=T٪xJ@#Txjk8 %fmz9Tj[H:e, AY$ؖ7 +óB4OqgMP t[RHo/[} +׭tG*yOҺ7~8#3qE5|xxX!;k6WGә#kRlˠgw-l 4]dɶ7FL^j)Ov՘QCO/@ЪN=](ܻ"}h|nT@K6|-u:{Bʷ/8XĂM34&oj3uhݞ7z"D?kZ|Gvƶb#EuFpnT]Imd-/. @T"e"҆zʈ+Əm)}[_96SDOg1$G=bC)c;PN*X  d/m^$шKwshxXp@=Ls>X5󰷨H;v19@ڳC)Y 9&}md؄#j=--^[@wݯ񸆇i󲈐n>[1|)CLJܗyWKPv/)뉠xֿy!d/k;`$>#Į[ecA־ txLZtGx+#mt҈!/JI>x y?Fs)&S1rW^4PɲfP-v#W1jp>æxޞKK)x+Riu5DV(5Dy}|#rk,+ƨ K*gK'=vYNߊaiAklH"I!>JgflOh Z$r^lmWB q0B$oW(G4{n%ܴXg/yk#H0xhAOHc=]" 9ksafHrv+\Q=5u +әWkzF- +j61—h)k'o"5,3*Ic@?Kͫ +ĥ1Q^B7u}%T|ť\:JGHv֞3ޱTVNA}oXjUիD=nrh0޺\h<3L']9F_}cySߌgW,bm9+Yz{->l>QO1] }KycᥧlV$YܪTc7]Kg|1G ){/swQ5v(m|jC@{Xĺe뭱93(K1*Ot0~GKk]xXZe~xr/# °6~{c#Oy Ϫ>^<"ĪgXKyx텚!S9&0zulScFG\Es}[ ha5)Ƥ)cWC; L$x]߱tJ3M)v8[.Jmp;SS#VeXt\2тjXbU3g؞v"Ú^7zYluu2+Ւ~2w%0?tcNNg.xuKÊ:MwƏn VytjH5N)[G`q a+;.YU/oY{>AJLA.XzpvEx~o+DW#eNcdsxNW1XK'YMV)7[]@mLck$@cӷ 9PcΖƎ*ܔ#tvNwcz܆C@C)Y$U qD"{!Zr7ۥ^Z-vl> +g(^xk$~cy@Wl3s1wު'1- r9LcM7`9iz ~?ˢ2|)Y;-oNuQGa1|"`3W܍5dw Ny1_'{K74^RR% Otl;o+E]4(=Oi̘Ԩ/7*Ɠ)۱|xl.7>@KN.W7MlH//@=!9IXxj.'/t=@ݦtn{6('YU<);$~]-:@)V˹ k1;W+; ΃}=W>QQI79/[5Wܚa_@ݍ,NfCñ7Tu)h=J{}~tW.1P;Jd5c8sݙlJ,t7@c:DC1N@:z4Ul3|D~ܯyk2D6Lww`շ #/3 C[y9X$u7yPV.F8 ~@_AH=^D=Nnp#GAP~_ZE?PqR>~ftBV[Q N·uCil;ofà}4Ot>=CYc.x\o;uXz 3".LM2% +,5d]8E9zހo/MhD6y{lH?d8b;$!Ò8fŴ%~#]18=$W :mTÚ uuK_Wc&0֙\jCp wO.Z;' +\!o<=B;Y#-fB\ZLJ{sE&0m7кtÿ0tb&'#*Ss\i7_JklN?-9FGu vӼWC@ Uz`E2giM5RXWjsfsM)A!;ƣ5~&0~z*?9#PutG +AS!H S{ҠVZxwR"+ẅW9Ydj;Vi?|8uUqnOqLO6=DI[eBv"VIgQgϳ%2\%BD`z-qbh׽.ZE]ࡃcjb~@tM1\b VO|qUUݛȵ(vk?gյ'.v?s.J8:d3n5EkYD2^t_p b>F[&Hq5A^biOHbTXX1TzJ{+Fk*J)Ka|!]#̣(LhH[1i_ix։TZqXx DDa (!sBYƳɅZb bZ+7k/}qP241C!?8¬r%Ԋ73]wr&ǭvc=JKޗ@86vX?;+Kaس]g{f{vեJKE@$@xo{%Q)z$#H#mDdd&@U{_fFT3;C!3~u/s۳(w24 :!S!=MY1QLTFXBl7K(M] +YlXFE@l(ֽY3"$yo~ +"G3e"'9 N\n&փO[68lB&Ғz5*Ko%2'"^j̧FҥiXPaIkd(jM]RRn+(c3,OKk1XN D&.EdLeT͞2sk.}nPL'0%Q-*"/'3.xsŝQ0LE\EY}\'rBZSu<8R"D?0rQHGf-uoT +FB[9gLDU x*/*ʳ8[.JdtTi抛ڋVFmϤ8[|ԖQ㥦xghAFn +脌d^.#MK|*(QCtvO i,y2ʐa/41s_%:|zJ2r홈@JR_|#ZB'-u@%5gR9%)u.;.srS\/_0GhB//BWȒlc^xj.(݊NJ,Jz 6΅/ƽ`2j І⬚{g5M9STMi>`Ait&t :=^,C j/ -ĠexTE8+;Kl.|ZL\v:倦c,хeT.e.(f̆yپ@*+QJ{аh\KRP#Psc wbBʨX/HECq\fPQL?(Mr!𲟢dD0/k.eU(t9NY)=az:O5R D!L'F1] 8kG#)ԜQQ~R` DӆoDTeqA)E܄L#->۞Ggn>J\ jIE1f'zs%2@j'*x@;̼D-rPzFNFꔟb*;(s>WoA@sT;P8gy)4AB|x~p_LN^9`P8G(*AQٹ,Uɾʓ),~dedeT:՛̮rAd֙^#e^I>{E1-9(kP57%7^;0&JrH=x~+#4Ѐ s ]_'ۗ\[GA=Yr:GS$5 + +zȧcS g1LUZCW/,*KQ":tO"T!%2prjwћJWdLaЍfnGQPqYȧUfE$Ȉ#E%T侼ŒIBY}߫ЗUjTWAlaLA9Op.XHǎ1^@** NJh>.2(>*ZLӄ":GC8J`񠂽v`Wj_b@~l+YTHW*.r6|OGp4WvXيUɥf)wWfs :p2EWDC򎺕?\VLK;tT;]PB;*?yw/d_3}MS1 ̽$e}ɰ ji(O:>yLTGf{UJ){^ZJ"X ,FdA]{Gc8']P.i&0ȠjP6-iHIP?[FBm(Σ* " +"[#ɠf^YRJRRʡws*+ܗ'v3.JJi}^.*TGPtr(QW~,+w#Y< moy}(˚.LȧBR T%B:$!P(ոwW"j/Ņeo\(*+冋DП.Wz)u=^*MP-KV)d{:v:ذ(w +j=T^`'͢CT` +¬.pM%RRL6N.rpOVйUd1@D-^D)XJǠ +e˨B*Ղ㒟HG*Y]NwD0t `eO +TLH}35:PP+sJr/W +Sle)u +"|$z`0:ݡ_ݾQgt) +K ]GLEYΧϽޞܤ0HDzըptb:CP7[2r`rNRTn=reΤ9tr#*BaAXF];PWB}Nx`~vl{3SJS\)՞OD+6ri?^EL=pRNvT경뱊{-BO^\| U㙱W'c8QI#RjK˨δ*>4i?{UCQ1U !K/,eUQسKسf[BHI΄6)~(.ؗRZ@9seJ)-ߞmD J*'hs]gK deunPc~)d\vR(cdV|bdL,DۥL(fy dOt 3(~ ?;oXt6b)?zC Qx}Cd3a5 f'9#Sv5'b|5lb֣ݜP5o^u`EGYdPlLxT&lz=׏ĕ1ysѶ׏d%KI +wʻV.Ei7:K)qݮhL819n^,搷q-?nx<4"-ZAtZױ[^σ΂u{u43i%¬a&l'5￾M~=~BbVO*#Z̪bNwzF椁6l4ΞOG.KvEg,L#3Қ)ѹnT/=w!PqvZeҭc&oriPlnLa^ j1:ū o3fQuGr料_I4Լj§^9wY 3jaͰO6Y=y"-\▘KE Ww/%\Jnc=Vq196<I[ cǧ3]݅7jY޾i6w۰0O 7ttNp)9IqwKۓ~L.b6_ýZi2U Wsc.vU:f_cWL]PXgovx?;a.=u.AU:[v|V~t,QαKٽ> {Į4xhylsFѴD~.[3p[3m㸥X"ܚ^6[bN&bV=e\6Fh>/'ͪEx7g3nSvlMx/מ]feN8m]ŜZ> qЉpJ3KҔpI[^2=3.8l5lOȪq9up=_UfXOtؔI9=鏋_W5b#i鐙8klBNtͱoN{Gp3pĘSŊ9]'"]FN4DzUSͅ JzS?l_L/'U]@:EuItbSM'm CMzK#Hw IͪȬ9 r¯S(Q Y{-'ZxR 'z'zCrt95%өNiKۺ$]v|ei<*0 +q7bǫNz5Q h[YlVѝr  = +ֶ[>}h}8nS1wn$ +n*E7~rQ"b㖇dF§2Ip[+N]}&r.VqvQ6yܢhLƘS+%an9P-i_kh퇫cf9 tϿOz>]_7Nz52UYVr`i^iĄK޹wxuDpbۢhݰG M{{vaGU]y\Ќ #a2…9b7z:1Vq]'|=?]+yBϕ5I TxutiG Ȭs,hI}Ql,`VQ5g'{?p1^ɛp;*d]슘UގMЬssT]jays֑p5<ӳƔ Oqm=|MrN=__Gͪ|TBX(]_k(i?B9夭s99$M`/uFcڧ5*)ù!:E핀sȚq5J~py~y6<5Rԓ)JidHCɌ;C͎u8@{y9g#Z9WLOn^32\0^`zFjt%gOD8ᙶ`pr%; k,!m!}F:C [K_?}dJԐr_ GЬ!bƝָMў _)A.&C➞ވK= +ý +H:~ +bY7slȚLeAK)/l[XfA~.X굠Zg91!Uls+_VwIgI>W'&!i zUcYܮGͲzܬlId6Y搕w>4u +.&)"vi*78oF%cS +kJ![{=|Vlx,[Q6=&<rM璀 cOSL)d\{dP) j ԇ{4"ҧW o;jyzALz^&}g&<칚^jJ1s +篚pI[.w8iwUTr3Aնssau/OxdVjFzQ߷IxXPPO.*ļZ' J}i L!<,s-4`04րF de#nFfGB3Q\%l, |_'D]zE :SƽSm +qGMLUO^=WϪ {yLtȔ:>Ż)ϯG!j7ncYM/z~럣ӊ6̭*/4;>x+ECk#':|q_mç~'K:0piɍ $xhuxYk"(OMq#&-s6j=dPܖ9IzncqpBN1=mWlYٲ0Ovu& +: :c:R%Fp IDp[8ΒF+["6y2՘C\F!Dac0`ʘMX&~ tdPO.ipFG9\ F?Rs> -cףN;bveW­,[nu3$}_3EDlY%MQvc5ாQDz# +:bitѹ?a־TNߨ?̊|hRX\xcցw-= h+cSkc3xO +>ژ04ݐ9ҐF{H+XOŨa|1; UO˕_6\p<7 w6&`O_=-6'1#QI=z`Yk'upyגGpaEhf}1桸Up14l&S'[ ooןtls|Z־Ӫ3Y ^rK# Yxaph)Z3o߰^Fgz{HtTsIߧ*>V +~S/Y"$%yN)i +[gYʮYУvWId@"|f2 nM}n'\u5( 7'G 1p3]7;Vo6  ^wֆA$7t;./9'J =3 wj`T0ZؗZkTɀV¸Suk.~2x꿤}7v憟Qiu{tD26tg}^Ԧ7cO̢ecvpֱ)QI¦`su4:&fB&ƄeeLV{݇6Ǒd۠&@n`IuG#AbOfE fۚ1I7Tˠ":u.JCnNrO#8kӠJ\^XǑCTΞheۨ]sQgʳSKtFFEyUI֩] y~olVtoV)2u, kv(Yqx׏kkjnOG6x[II࢒[-| x*Wތ05|_;5 +7m^N\M ;EҮ-FW~1c!42Zz8Wq-f.6O&\7U"\W%lXGK,:}f̢.EW§&rvzA!yRT`^ޥm8Ӥ>6a$qNvtɹ{qm Q7yըD{kgV ٓ}C[۠]5Xcyҧ% +.6m[A9; > }i5 ]tGu([JI[ U4i!ӗvժ?/» ވ.GI3ﻕ\z7@?uW#>68鿁{"t~ٴ_7^k|&z+f-+8p%qZ=[wJ[c.is%o#C#Û&ɫљwhg0^TqiyQckZ\:Wgŭu=5'ZAdFpnnۓ]'ȏcbz +:]a5l5O+u;2+NCvŎ߀}sVG 7_ +̢iA{%ČIBh{߾ې~kg~r{{J+gcfQL[Y.-5▷//e";)撶w}nSq7VpկWqW xY֌tJů'~yjywz} Wn$-W"WnL* [𬖇?=C_\CQ;JVhJr1< +{5KZ@՝`^ᜈq&l<ܳ%4fz-O/? Ïd:%"ֶvnfѰ3!a Vz0 JF]ja]gI@?@p%7͢V?ٴI^. ٴMssVXs)pFvMۓpnC4Ap 9+'=+SZ %8#CM =ԂΈ>i7UO5Gx}w_I&Cw~{(a'[J1+B+_˓=M[>57p;Cfq8$ՅxgNqS +p/ X+ sN^5-kï,J k+jqiˑ5zz~jgxόYf_N'bWeVO I pȬ>fQEZێ{|4ǝ/ /m̲tX(\ҩjn\zO9.k^Q[YdUoP6s80]۶jiK©F#i;=Y=Vwi+uv[ur3fSuNhO85M+O 2sc{bMl$Θ$1ekt\V4H.~GjsY'\,sBz { C3ytF:uآmYԦf/ Xp‹7 K|B-݈; L܅RD#Go땪?ÏkO"_=;sƁgS_Ϫ:0S~}FoǡYWCc7ng'%5bV-5$sm{)ݨ"ws MQZqڶw$ca"3@¯קj) eI+17x7 (FtүU%\]WLu=`[xGm tCs}¼2&CZ p;۠+#vE{)\(HՊ%gzkЬiXk3ʅ'z<6#}ČwZ(h̪amO*GTlOAw~ɫ +SEZ=)7nMk$j?̫GGIHIܥ'4-oٜT^E#Sܪ"~E'sMo6S]Z)M(O9{)W!:-N#3|iͮ\Tp]m=UˏO,( bNPG*kbO1;myKҽ??ub"C#~{,<ŽCs;7;?ZXb3[Ɏ  6{@̪"&ȳW/澨h׭UXʝ] 3З1Ѹ1&:9s$pͨ;c_¼n%nH:0Wͩp.^k99'va֮+O.n{[k#\J& |.kBNE3$}xȦ=U8 Uc6f@8䬘(`17w# x 6I1MQ2#LL|$|Lp +ۛ6|lRaA닆dP%MTGڲ2O%MbA׳bM/yuy\I4 +S~б_d4*wE]J%,2Z}b0^s߄( sJZW'nN *b(ɪᬎH*S*װ'AxI7ʋ\o}GcVZErf wXȾt'=z(fJxekcIEIW60]'nTgffegt⇛OzYqGI85ج:SC=iʻp߷Zl.2v +H!bUq`o}3~a#:w ↤G'O$YआYնBv):L(  visiT! OkcZܨy<< x(X[f¡!,F.1o)7rFC"/WitJZ[c$7HD ؙv2&U.ٝi7 l]̊m+\ĪS>RdCCp0R­`_]n4⁾a)9:aIxDMW֞_'Kֆ9ōKp)jVNt\b!|^)!;qpCVC\)ثȖꍘ_ֵy.FrwQ)}+]x:{1oyO tJYp- I4=†OY0oI#vq-Cߥ| #@EՉOvIYT3(2eLDq[[o7_|&\Jң6зjmǰe\Zܚ,bW^AiɫҚ`]Yi- ./ s:B1z^d7V3ܚKK#-( 洼s"fi;[NYgtV\|1 t%dvΉ;ΉvrB # Y UkdLV)J@yn,ܚvw0A99{tEiZ k&[l50fiPm31qew^-ߝD&JO&i'כ^_ XGz^%O- #}}6jXT).odܨԥ7`/nβ+Bf%+ }ttYys}JR>~8k6Fp˘w.|ڎ>p H@<կFj̥`}K9/59I7>o=8ߜŃ7m8~rjࣷCZD"a~IGǮx酾MbNY+"wA>ڗ8C92ӫGuY[XGC0 %DP ٘'7F;JIA b»YdJ=Ŏ֤ŧ?ۀ[ Cl +Oּ `<>;Uh$O[_/F1+)kCቮ)vB̦Z;pP\vF: +_>?*iwɻAEfĵgA6Î4ȓ.Ťy.dfe|ȼ ]Na;_/=^lF%] 3>oڔ]vQh'V%;䁽e6$l}Iջiw刅w~mdi[pV6lWԐ1vzo a wb1D\JޖY\\~8kH-:Ѽs!' {fgQM-itQ+1wFu +k1 s+Tߖ +/>|Bպ ==-׾گ=ӿ +g-SJ?0(0/齊z/'H_M̜SqJ^"~nU=ă xŇ]M/O\IY|1&a1dJ̨9Q^IGگT%vwNB{6b_(ÝC |:IK~q~$Qq{YjyajDŽS{Vb.|˪fE]JֆM\ᔷ9eM+ࣤ[LxԒJ8ʄ,Rk _*A[#Cߑs_oԁnW o_,kc".)-M/y52A peOɅ 3: +6-(SgЮNIjp[q1-ă.&:=<87ycq_0밠FJZ7gYQqyM1t]}loCOӋK=_$rpa;ܲ W,Ά]Ld;A_Ծ>> /p~$i=Ն@t1<[֋b~PģEAmŽȞK:ItV+;b.ͺNi+FQ=<+ld£䒠C3)K4θdLt1q+`qVg-{up~[ӶbMC/ Yqqexf'<#۔/mG #3ՠ {65hpFwT//eCڴBZ9jFC֌Yy90`kצG)f6 ?YLLwҰuhF+6HbN(?aZT *fgD~ȤC=5ڲk0)'ܣ 6qk:q>'E![#:ا.A5ʏH opbIXϝ%5as +ܓSo$ ;`.i yTR!KzeO)Y4^M4^K4H.Y깹l\Z1#<߈xtҰ/2@)۠$}$𮸧g ^>'=ayL /2l[/m!o0k@j d.TPE+r~m|1 {c!sCv%շA-̅Z{ o>i1ďjert5䖶|=**pF1Im*=ӵ;Q"Qġf$$mziWs }o E1}cF| O69q24#ܞV NoM89Gtn,E;nzi&ܲ.ͳ\y. [Ȭ6`vAgEڍ ݚ8J*W;ӿ *&v.KSiycs^{0Up` bƻ@zx 72]|q{쯼ߜe S$N sq qFԀz7~u%nni+»h :Yw٘::/ tM;wFrwgYC2?{/0$\0]#EA[$ݼ I& 2;.L;K}>ߤ@' ;_Ҟ:⦵Αҋ}:%tnI{*k@z|7g`Qh'|r&5]sqNu~1\} +8\7EܧA $_a1=w#ոW%gu%\v :ph: aU"GC;KW&R_ڙS+wKTs + s @fm̪f +d +`85Wp>Q8W;Vt~|.$2)LNw[c<(x};%C܀dM Yج6=5=Q'$ y{,-2%lFtvBN u\Rn.p~OJ:e-]RXZrQ]:ӦϡD*(&0^ @zT@I X_9y<yi/q&$TjrNyg7mlZp ҏ'>QsÿDqxV?")1WK%ԜâJKK-#1pӿ>)y8SHψwgxIq6+^U'ǐNEwh{O6MڄbLs7.ᅮ9O8̮fgV-?(z5<1Nՙ<@[}7;cknFh}$4.Zy|n7߇9GQE_Um(ȴf9(Wz!)IhJZwlNwn#ovv|86;xo^tzMDf9c~(SqWM|.8(p ||DkH[Qd a̢ѥ;]yIEӛM_~tukScΩ3ޑ5>n%,Ȅ!2lZ{&18𚵧ObӒГI:U،16%Ol_sCK*-*߫ 0嵰ˤc :I/=[ .? B[4ԏM +lkpӃ k] e_ ˜yG}_Xg)IB*LA*ED6kQ/<wP;U#ԄmVT 'Ze@w<[gW.ofkZX^#࿈^} +~4Vw06Oࢌ#0Bhl*v5cBM"B)AS,D^V96ya 4 Mb"|E_)\8gQاK|<!nЋPhs`vU}{8׏LjJge91s䱤yn):`}ҋ1 iC`/g*L=-bo=O>W1K~,T"N9WUU(SV_냼?WkZG)_+ ęȷ)aJfޖtmW'K|,b@GaWq>˂kbclӸX$MJ@mWmRTe9RT75hٗ,mr0Pa2ÃuP^?)fZ;gv xO腆||'rrA>V][f|<a"x ƉS -5}6r[A2eh{. ϰ SYV]Aӏa.=al~.EDteЏqі)B}p4Zi%v),`sLU=PYle-Ɗ4<.%$pIGs%y>[[isQ}nͶb6&leD\`C^~ +5А S54,7`[EouwN軃~3.\A:Lc@"`%/Z.D,5_> %2( m-7e:Kh7\ͣ7H,&!Tf6X.~2sX??t&[D6Q#1>e%' ȒEdI +3_j 7X(~T7X7Wv_oTH-0L z n[-7Lc~.PKtШc BS_o17c6f9I1oj11NlfQVޛDԄytaU3 IBvWهÁ2ޢTǵƜgъ]@'=6LL:-6ve:6';M/zˈٿVc18Rۗ|!q{QZ!lN_? Yoh*qA|\kLCJ}o3_#0' 59N;=e^#ʌW'cc15}݋h.zaߑj/5 7Z +_ڧY!$eCjRצ;ץ98iNˍ~JV?4@< kmů4&a!ߔ‰^lPg_ʼ6/ܐ;h7LJQqn~]f!jC3um*%zA +#{zܖӝld ^aSf}BVpR#V܏gBM(20T,p5z=2NbJNiȶX̖gT'g2/ œ$fT#P>O3O#kMnnnNnbFqk%e4&Tv*枦:Jc )+ 5 m$%$2漧*NYv}uuޓnXRF2D(0 {P.s>sz܁y|&Ե^l^DN;ELmCiBSewaA;GO*v؟.sS% =%~rx . },'k8 ՅuVx: +^5x s}ќk˪ѵ8潹%ewb&Q9iB x,7:iU%ܟy\|! 0"r譜x[LI)ޚ<cn#CoM#"]V׻оچg 5jA 341 c''HY΀帹VdxX+{Lb :xw,,aaVV[tQkG}3jK/1`k''t]Org5eU`$nv=cX.8r8R}0}P4_xх<¼כ]7ڊ,x1͈3F ]IB.wp0|M؃éX\lR̀{-wa@s^2|ҏ=g;C# -g  WAZO=_iX(u?Ԍ2?%'b`,,q,7#>(9+ E/:ȉ/7w %a$?c%[{Qf^̣3fS/6xE5ĭ>RRPzd⨠':. :/`B~_Q0Cn8wtOu͙N[mJX-{(5S&4 zzlv<|-ex'^^gAOaO\F@J)N6tQj.bMrmS)ogqk4_s[ml-{ف}q"'e=2N2?%[f:+H‡?+]Z({bbu%3 宔u[L +_Å~}w}_nv߭4=S "#Ve=ce;mp~Pv&6O`ݗ:I;Hw6N`c8@[|lxn=Wq\z^Uqb:p{po,% >tЏ > V[nC?`}t6$"e`#&0ߩPc~c7{T&;MrqfNjV'pׇ_%%MR4ۋ5q+/{KUI}_Rl0&%fـl bl3{Ɋ :FR%CۊSTeWܚq1NUK92΀b@7:cCoyQ˾4Ss6b"6D?2}|/"uf{(ͦWCШأQD~0zSI Ж, 'ԥ>YozzPzqEHuY]lhk /\6ҝ԰V1>d 7O3 +yCB]YvUa9|&j64dg~&佔WA]GHiovйTB9v9RsZ[ 8WWZ x:xrmk575aȇagAy-z_ -56"B/†z1M)ة`$9ubd"CȘL)" l}xybV؀Gi6^Ha'sDUs{ZNb̼SLIKMv*v? ?bl9FwE- wK?>"X]q"B?AS\$Ի2fizqR FJ<4㭠NX +eOz^n%;m2E 0@A㥚8Gq_oOS>=[؄QjcMM/-SD[uNkrvCreaWZastu +xpM1*B_v Cowc#&Љ3@~0O2NL,boJKrK : Y-NLԃEdZ#o7G89+(iV*嚂bbKUlOp'jn#15V?,꫟ j%/w1}~ |ڜKsuNٰ96pk暦P7mM%;둔 fnCG:ǥ~mMã!'ն~=UUѡA1ݬbFQ_x9yO;>'Kœ1jj[n7h y41CM㔒s%kS1e@ +gxdc..D`c4mC)RIS_f tC͏{0BƋk*t~sK6Ob,h~oګ7sp/Xh,yu0NYnPSwpR] +\7)Bh$=lCERƑRӛ-(6?[) '>\FG@qT]pXhW +,2Z]*r8VӛOmWILj:aXy]K<%B/#qY$-NOy,"DG*fS2gyHU}A0fw]Oz8} Ԝag7&z:/r3L̓3yLA#8 7L#͹ZaS.P'*Z)~x+yxe|vt$&/ 4x `ܻMXonuV \~_m+zՍ %økG>J? .ӏ{ޔt4BH58@2'bxd¨[徿 V+'J5,05j֡х@w#}umqFa)c'=Xk}s4ILa`=n"=SV~pXg,\S|ufUu&PCQwڋX$U!LbKaT@|6Q"V*x=V2+vFK<,@fgD*eDv#}_Og+S?ڳxiΕe ה8ȫߔNgћ*n]1iR.F ?Pe,6D=_]xe,3b_P{e{e~f128AH9L-i9۽e>Rn$9q1nWʢ4RD'![@qC|:}dFYIZ7IYŧs-v@ʳh` <^n}ַ_UbRG@bw G+']|,])EcPQA\w‘7Ts4Rՙ`4:.'/PF)#wo?+XjC~|g g=K=/Ä4!N]VaP\`!n7_?\|,fKޞ(ذ#:j-ytw~L^rtƿ"֬{!,ԤvKy9Zz4!*sqZ|M)rm 3teu3qܧPJxz8N0MS^̲*N4ȁH?Vj$3_ׇrtA7p, T 4 j"'/D$wdee:ںXi[h)*a-5uVK2J*as'&#CMSAؗL{ĸ ze`嬷:$8˰i/Uqt mW|)yD0^"#9*־H&O? K'rdPg%?ivGAC֋s}>_˷(֙:&Pp 6ϷCl6Q֫& .}z;86ʢ4dgzYq\6iU땕Н TM `e2#Auد6)|;j;55^2nGV>bD- +1R)1İ\9&mdltci6%¬acV /2Ve N3'*2(ȉq\as8$ȉ1FqS/ +ovzj9a䥲kgb!j)t~Fgˍ] 3]&) O*o d&!n]8z+EI({w eӿT̕WT9LS ]4q&ɶ6톙*~3:EfhIT*Tţi<\uA|޹nSUV cU/bZbm텶Zp$$>v=gެtQ?3I)m7 n ՂgItM<"f*Kș,/᮴2Ԝn'\xIJU2xu]S*^B7$!^|Uj3o= + v,ue{NvHśC MMj}%FT~>Yblo!6`  +u\/IĠvnf2r~u`O4UeXMu{"~inU66U9Sbu~WmSPMjn40C;2lõ.A&F%=b݌£QN22IʹydlM)ն%/=܊mC{k[VfA'y8b^xG v_v!>Y\0>X[ nǛq!FLT~0|9YmELPrF1"f?"J-9lL* MagK5 >stream +;PC%XTeזFqGx^|2,=VT$*ßYat' 59Z{tx1l01BM@ϲ VJRK5n_[#z >gu"H]9^io3 "xlS+mW+mZ|$^l9c<]j? +ZI†mf()e¿)`cC+ + +|_7 +1O`s0y=OVGi=4bҍ-{P]} ~w>;wNz j|oČߢ>^_m3DD,}%Yfy=*~ѳ:|-KMAm+@+먨/ I!RSnJχ;u 7Y2WMq +P!=` Db'gm؅,.w@A +ss\ieSW纜k(E:T; Ze%tj͘L!OjֺX13n +٥zv%7$ +zy/Ǡ.OΎqmX$bng#Q7)DvqjiXʩKNVp%#( +w~7][l#{O2QI#K(%Jna<)$7K3CAȈ( N@om3|;_oE:.O"'K}b\f7zT5uܡNLV x tr}pp=Ѓ@7]_r€35y\]cy4 Td䌭aBU;6*j/C{Ao~=ۣ [@׮z|^GO#;恺ygLP|(ZTզ>f{hfCk]vwypo^0'Aq?\t<.z1LI\%|Ufg[XA0q]Pg'(-襃#8O73?r9?x?Aηx O +؈ tC _TGc ksܮEUκz +ԙCW77AO>p(Dω.#^f* Jxs](dĜ¹ʄJ:,Ω$)/7gWPS`wkGg_@;b}yVNzޅ4h{|Zuy=GF\Iy8?u:͛|<}ru=wAnoݝ`zZS-d>^J)qY8 O[=O@=kjN=!"JOE%y~6QO2}'d[~+D0^@oSÕMnTK偬h2e^hkݚ*S]̠:W-D ا-8=\_z8.6!3.>%.#-͹mԍ˽FqU @!dꉫ-H#zQL L6DqrNJ?#{>c˃'dtNW,\9EY5V?]^ႫiU 7\X W(%8K; +t5#"jqr EjhiNu:S ΗjB~k(ijI.%7C}}pE~ +pݿu):2D+ǹxQܸ7-|Upbg<ڄSu'>Mts̱ &zZp`ρu蝋'(=,7LԩR9VWiTTVE>ly|CyVۺb#äh`e|@|YU q$de-OK;P?(>0jRpW32dKM0HHR<Ր rNde|;KOOؚ'˻P'LFܟ7r"@f%Ɉ Чrf'$]K7}l3곌hT: +Q QSkduSX/^_^|z!k!Z-uvEK]Y?O>Wa8ESew}p-['kl𮪶,IkS3(7oь +8Æ[OF1&<9ܒcfvXkMxGG=ub7vgYaÍ1~nV3lښZbCy۴:xȀ t^JIӉ 1.ZHKe&'6 {'lIUWhzOC6E܀diЮ6N7Gڦky@(ؘkWE+[uUQ_H}l5b~6 |pFMw$GxٛmAת_+Ugjjo#FMp 2!XSښ#RvĀv希PL9ҾbIWu젰dCϴԚT|(*VU7VwnڗpV`;3UUI |f&s:^ސ,`+*=T+~UDO^'Ǭֆ_]/a'P!Nj]򓥦^F` o,TzD窨bRA=FVgh96D+?Rq*l*w RS٪A?APPA"\x\߮lj='.PKgGR\sioSHz%+a:meS2丽!b05n_Vtu=DO2KxՕ&b5ߗ:dYڦ,7T$҃ n\ X]1xx8(0)圲m1fGDKSd yZhp/.]hZ&6˄%, ?"@蔽ZiMź&cdU˾cg+V>]<_\<[1%b-kX9:'OѲ6&E%ܾع5 vn BGp1&pVTOgk*Jf8:@8_Nks$gYvp7HD9:j_ ExLl3Z:ju p uV(&;h͋M&M}㡂5P*6xtwuD(-<_"5|eQ2+/4w:bWQr7p# ~Xc_:Ʃ:a߿?9%ZŖXKi-SmfP[S`=W"lJrso8<3A+CșͪafmQCZ6Ʊǫ }{R:,ED}_}^lS (cBZ]4u=yo쳸4 :R׹<ɜ:xw]äEN2Sv%ؔQdiRqk(/Yilɯ5Rf1ݬDXx"L/*z4CܑгWFy4r٧HA)F{7e}c:< fɖ˽n脳eL^  #WqaS}1"h\p!k%Nj5VF]Vu˷MKƅT=QF:Yϖk~R^zޱd[n:PpG +z?:::&k2T"N(_?|<]l-xӞ֘t ⥟ŌT߷O )kh?5UOif9$0_ZoVU݉4)9!٪& +|86p\Pv0Xg&Kh |>"~Pޜ<"mC1%c{=L2MqRN}2:5U@VdI){b\AJjVxaQ kOӠ5SUYБ| BL fn|YQ8Yo<ְ6mwkØFtmT[dZT$@crd Жc`$|yؾTdrO *0ͳGņoK߁w6/rV!cohaDRo5s | +xq@u#^r%޾!lW"Jƿ٩.t3[9$O#N8Kº9TTI O&IQFyপr^k\[UݗVBl 竍GRrzw᛭nS%V_󴊣xr}cYe ,2kS" SlAU]M;YNI%>: e_bstw*'ZfTC)%=!rn_r7'). moDȿjL OVZe6M>A++52<Ȥa~혨sB DBɴ{7 PV15s{ES +Y(A~)r<&0q϶EY|ؙEvm3e\ձ9rwU^GظS@_إ"*5IpNֆoG> 0˾ ^5 t?05d^MD;Ơг u^9vm*1Q:Xh(yJ5;uLu' k6%FD{$OJtȣ.{ +晣w=zwm">J˭InOV0]VU3`'a˱ypk9BRS릘^ + 5ݓAtM<OF?80G*Ѐ)="cx Sar?͢&ңdT8SK]S"wQBс[!ctJj2@f[㈘Qxg\j }9٧ (%f_IH kWo,UA!Xm杵@h.{)YmγQN M^疳j|@~ڞGoB'yĠ%:O3,m-%O"VJ?5Q.4(.>Էߕ\f_膅GpNVF`?Oâ}2BO + hRx@{ )X),EO3c ߟ(iTuƧ& b02dk_׍64!ߋi%ƪ.L*(-&%^@w]%*j7 (TA'C]e`CW-KC=M[ƿe4]\WN~kxZ~3O,i?>_o{Z^e-/y~)6`p4tk z w'E$~S`'::pG?؟HiZRաw,ZKMko#9*-fCֆѶ T{ŤZDZq[CK pSƀW5d(Y] h[nKНŖ63O+IV{] "6Qf>3R߳F%5| +T}DO@rHz_b >9:9O\?XbMK{S]ȥZ:1L!%EĻ<V?Z\{D~ҷ?uSk-wp['1pDru9:P2@~mqmk&.2NL^j +pO9i|PG[qt8'/jl8:Ytg1R}MmCޭ՞gcV9v ŎhK_qTyR_{\ޒS hS t0 KeIsGqB9sJ_[}3Yvhmu1W{k߉22}#{z>Ov`bk~[1wlh.{m,x( 7v> .w2CyϽrXu*.G.kMh*psj8/c=Q gjvONGL3n+؅S|q}yZxCVb{9E)x[b +H+l 06^O>[fR8!fڐ+gj `f!皊x~F{޽S9 K. 21+= 1XR#H/Rv% +rO.ZQ mbleag@A"wf@N#u <)+U}Uo*fȏ?վ~}6 %b%>6DSO x9vSW- ac2Z,!իb,?F| G*TO. 'k cf^kTf k"). +6DLıV;TFcd=U J&) TR] cc_ZRn51<1:.&eլ{,䩁BA}PI' *~_DNó>5☥lWJ諉_1fIwG udghȣ%&8VebXxN X_Y'@A>9}-rwUTȉ^а3Y- 1k.w=7 OC['e +Tu}_-ف?Ȩ +\zAO,V/FyOE,.`UCNS|Rj)%]bȇΒ]U% n>z1NܓU yk3mba'z6i`OA*H 'Zr=aX{?SS=Iͻ]k囍LEo3I/}/gE\ؕT o>;tDc_ߜVi+10cҾkW.8rO/6*WM=]e77OLt2Z-qٻ*B1RBUN*VuB^;fIc$ue*x+qP{K,&q`*Z >г v!av@nߖ!I4p֟~@*ܙFYC&D"ȿglOgh&-O1J|\.BF؀x]<2rkJo•??pyGz.q9C5'@<bف:^8AAcx} +7-5/(5Cږ'_:*Bk_ ;V F@.W'<}s0*e 4ԕ0tSDXߍnt(́ +Wxff1W,vv1oռ~1 3[ӸʀYt;#ZݞqWwQו0= $@cu4D_{Bp.18>S D{;J &ޙ#t 2_Y`} |Ouu($2a\+Դڍ`SoccO=sm2spbZᮒ^s,h{Ur! Uܫm%\ؔ)JߍxQ5vyw6vE-XX7(6狁E7[Ʈ_Vw3.PSΌ=Z=RQ*q#y/\3_WmnM}CA,ʾPc&l{UE>}kUQ +N`K֡=93L=uGţ j`l3D42.G]m8wZGOM-g&~3<\XREs*huk{ +'v3s[c jwlZ"oփ7 v$1ePXɋC- 9ZɎQJVmY@%:$,&kuw)=5ߋLWש\c=ֆayfM51urJYRƟ'ʶg} RN{[Fߔu9 +Y.|flͼk/xvbDdhq"d4.XgXe6$zٹJ7 ?qkvR, zkz\^-|kK> {,be ߍc2xC:XvU !N)<NvK{D]'2.&@Ũ>jf86U"H9JL[`aG12A <: #~ja3OnPJ>5,?\TeaXp[.HM,#"s}W2{*cݵQ) 4о^1ZҗғuDG#xQHHͱ܀6(o 5{Czv2ybk:RӫPsK]5?hi?v,Z"DyO֛g=2j0<ЩoGj|o8{RiL]w̐VuntdYDܖ}ws'M2aƍQXH#3w#C]uﳉ?2Ґ *ݧ95B 1KD)emm)|{_9CԍR;Iyq7'Qr.n_%kG:\k<)k/S,OjϿ㝦5nG'^Z&y$uqlm +CKȬ= ґ+>zWK,Ӡr|LgQz*Z'Gd{uǃIacAdDX_0"~k`~$o"M%/6&+?$d K5d-O0|!V%g$TjBEvh_x\c(g]3xБ̣@Dg=ȸ'y5t80~࠷f(v) du2ub6;)涊z.A`{}E= UOW:|c]Enyf. §?r넾;gfYin .cOC*U'z8t\߹ƞ9L>@Ħym lTR?anնD9咹2_6^qDgn1`B<2T[sB#)wmM4SE ;H|DD2拿'ڑRSn9`솇 a/v.)zQ鷚.Z1[k}۞ybk^`2/A;2>ɣW鈠C=lOС%&qo8x6}`h:04mo2tWY /^92U<3 V]cbcUF/yG3}]W]f 1HyK8ڮ*6qM轡m!,"FSc]Î#Geeи9pe[7̣| ӎgUr rg`M]]󱶎w\{t-0;R2ڝ|o'度{r\$(6B}iF1tYReS[4>eS (vC=25M +ڈiL!o5u8ńt}sŃ+a^LJ{~Ru{WgjeAw mj6rGņ{4]۳\\]ҬRZBU?"0:/KgC?R{I2ws19G:@w/3&*uOtL(!X߱KiX}L" eSJr0Ǟ bZ$Թg4 ao0k-^\g7j:V]9 'GOW;* }"^FXc +57,=UO7*^XK=3@Vg=^)tO9㎅]sb6l(&~uoL[J,qֺ̠a$Ӕ\=DFJxANܙB'ݱ S5&_F=?A&"^ @5U_41wΕMHhe+C5 6nO $ԉ86 gfJ ().IMg#{;14@C)h౜|}}<g(ۦY㔬~Jܗ/XFElNcbOL ҉?1j }#cd} 5vei'*_M,uqsu. ݾTTH% P<-d+T>U9𙛳r.Y.9#jyJ_*D;kߋT^j), i5b;0גn=^9-'晆!J1;K|MET*˶hP/ +{skW J2&e]sOMԏӨ?wD1|,-}6'ƥx1I>9D4>CO!VJh;hZ=sk ݎyle fK96*Ak{eԑs'k`Hi}{چ[a]9TQNAX mEE۪uB_6Ɵ tWA sbhҗL쮞E׳(uQ7Ìl:⋁+@r  !ϩ>%%-3 rt1#Y55!#G_ZCh) +9^qq2@Nmr윫Yj!s):GF*xN94lMEG,t0ĜW݋K#`z,e2&E]>X$a~s#C&ڧ6F*^,bk*D0X{FޣcC- ^Ҷ[&Rr0,t[W4C5`GL,Ե_ncͽ/NR8Wђfvdѕi*?6\w{?O.RV{uOMDa1;a^(H!h;꺒._`U1Lg^?lL6H˘="Uzv&н9|pu;+P*H4XŸ3o pbJgbRr qGjt@KD[)/}5~c鐅z]PKCn">iwdKݰO0qmTGZ+~1ɍGH>v#Eh|u-h 6!ilDm5ԥ}MT؄NϽc_ ?(*h\yct^P7_$$*zk%U[Xue&rqZ6Ɛ) w4phn?l~P0'@OTYEpukI029ABlUQۃeEo0Uf61IiO ~!?,}Pq:~x%x&c⚩]f=5fDY/WGzL2{j7d$8*9GpLᲭ96dehZJ>ʼP|s|2o證/?zm=)*}mN]mr.kZg`٦1W~` >[:`N84K=O BY$8 7T}[_KLs7ߎS0rߟ\??V[w+ۣ/ ֡D'<1L>\9rS +"lm𕱭Y[Moܐuu5UpsY˺kz,Eޞ_ZjzcV9gqx> 8dssfK"̧B)Cs%@K9;s -%ZM f{m昻!/eܔ?f(v33eYtc]*Znx2]Xc'ySs.Lba S/H ~}Aź yۀMdet=H +ՇK҃%bꕢ&l~%%lFl bV0r^deGB.igUB,>G-%)aGݖ ̽%a} +:JKyj)szm,%]VRo͒Q9!J~5eߟE ٷ*bm ~2ّ{|b í%se51gbe?R<:3r{>%.¦Vʟ TR9E%?i8SwuS>dob9gq;RTuqOVJcIϫN/ 6 ОqB'OW .2qblRxCNmO6jCrn_Y'.VϽ$ad9Ep ^T_'j'L(&aHi,ץFЧctHl bV')v +vj)]e{|gY=7Z]~e\\3Wu{;A[}UqQd/ڟb{Ec쑊[dz)29Rf,LЏw Cvk>9gj#s؝9lYFY\6ƫжG4ysE˾o. ijODh8rc[]c1xy-7f7(OnL5$tm7+QGXe㬳""1vЗ5~˞ߚ .6]羆902AxcS풶9%Mt)%q7:@XC§oKxILdYаlӄoQ*?Mc`[~2\D7~gTS+oRUԪ]iU{,h}RPփ.p +.IYʹO-P@u=Ӥ#S'86"F]`m[BαbgqbFC.!1ۧ{OA=GWG}wm GNqdbqRJͶٚdŔiC7͢ϦXϡtn;a: +Ge3e辔]xe>j?!^ߏ^j Ub7G qƎ{,OMؘE#OuuKwvHy%qO+{|Kc^옥o *+Y{q2~Edݛc0 +ݷݰeC&؇)tQY ɗT@C34d -o}gL =V=^ +@_yNC~_邿Yx0G,KɽAOcAЭoR_o>>[s+0meO7ʞZ2oHK0|u5U6I'59+@-S'z"2lE sgs+\19J`,xkj@orKS9ήdn-6 N >: 3/kETlQQku0* +>sk1m*!&ΐ&q̑Pz:*`AX} Ʀ-R_6Fb@KA:d=sbqtl¾JH:}6 .'KdONwL?{jaBnA[f/@/Wu]v!~MM25o `xzs܀O8,[A򁡩xemag.9|sn%[]sm嬪k}VQ\ڕņw󼚏&;bӊ'-;w (?blsӊ\;}(Ec+]+&s䡱7N---%_žk]^ܟ[󣔔M#/L"DG2O?O +սQ'@1Nt<}?惹-ucg^_e-Q!@4T3~8 z .׵1R,fY'Iilm:xw.4E R'=/Qļ E*L=PbrsI؛+5ɩ/1giϷqR|m(9#'`{6}gGv7Gl3vLkiFM`cok4XzQq{:&`ht dE*+G! +ng^ jb8C["ЇCc +amWXۧkЏabHց}C/<2.2e`m)*c^Px1_%-w#CԼ;ݵo }!jaQzSpg6ؕww#HeGN.v-;͟u|661!muUjs ?[u["O*L4c |Q.\[zc*X4)e]EosU=]LpC".6f]G :7 +2k2#.uOw&Ƭ:~U19FC?p!:Yq7r +=ɰ:Rb9뚌{co Anhduʋ󌌠>kE*HI٦j> . $' 8OӴ{LWCn cu33kye %̐a̠ٚQy "IQx|~UM_K}y{4'[FJm=?I'9/GC,eI|2L|6՟ܽE£DHEgZRi9%dҩ]rbi0_D(}C޻/4}63dI7XXK콣bG]) +* wwwyn??x]yA?V.+ZdW|AsjՂ\@ˇ kk F"#p9"Lw]Ċt<}y~BP_ 7oMs<ꢣcR#h\ww|掙Pky Ud֮ h:xZx.ges)1Tg}w+u5?4SqJ 9YpEqT7ڰr`[6M?;=xY=8d`TgE+hg[vQoF%!%j"8&et)W9:ʤ(^V& C&r8kdׄLʽ1۾?JYghZ7\}='[KVzž8hU UKZR§z1oups+U>ГүwDR?ߖo˙V4)sф˞ӠҖ-Efzݚ]us[_mxjxu?]y;(oҐr*TA~'h̸hŭ;%޺~qó7sI)>uFRQik&l6 3z2Hy` 8,BE*nV̊ʯvϹYG+^K:\ɬIF]5$8y$rÊ+\⋃ZDcv֑!X4)Pv"ߋ@M tܞ*{42+~|[omUc]b3Glq3::hbec\}䱟2PKn8V 5Pr~Ït5#6kQO,Z +HΎD:mzH@} ZrRuͫ "eNǬWlN=7D}{2+-~do{9nJM)\68-.RŚ_dCg 5D)tɚ S0k@'p腢%Vi7-T b(1u1,6V{.JͪX'-jh%KfVD*:(IgTO٣;/jAӶVxM|m/l8Hq6uA9A#|Ml07tm#ẗ́+rV%/0DJYYk>o71xl%}9O~GwJj*1oYKs]n!ULT3q!-UlߵZlm`?l\03\̼Zd +]1U@&& EYБ'ZaPh^ x򐖐fbS5ZviM >>>Ӷ:Kr\\ag6)"\֚_{zRA@ +~lO43P`JX KmBؘN6zF,[iU6lΊ1vي\5 LDU\v[Ff]0뷼57qΨYٍn>og߾5B=uSt( aM~T̂Q`hxG~qs@k?D.njo9Ic6$p_}h'}8 $ <}mWm>ju/ =&10dlin]Wۋ$>xV򺇃ѶLqˀtpd#\ $6BjU|4C_Z1>X3@>:r!/99&_q8n0;];=G1kfH>&lx5x% ?"(䀞t`s̢h|<n琎V9T-_Vޒ>W=w,{+pAbNaM_L(n_Җ.n^mxet$൶^7UWu 0OɉZrɮ~ҭ{I%CRh`m\c %hu .Z_cV7Fy7i (e)J5qz!|dx-m%lݎV}kch{Nߝ Mqk^rJԤdS.ޮbnN! fs]aBNjL(b'/׽R7=,q^[qP;~cVlQˁ&;': n&bJ(XrS8h_bq!3)fN^!H6{pkfz=뀾ٴb +7<].M\y]w8) K .eJG/rvOɯjm,:QqoIàD;m]?^0k𸼽KIt> Kf2hȬ[s SJ^ͤ24%s;>hpl젩iTLU6^+ȰEU7~ a!s7sFY4W= 60Їo9]搚m9 {^JݶTlc4Լ9dҦqa͝- nlx8 7lg4LI96v ~}g\r #dh'ں8ap't.DU c=UWm/+l;@tgwJ]qa̺e hހHZ;; v CkQ!؊P7.+F&Xٟ%TSŰI.0Mwr OZWͱn4ꂦͺ?! zSN e[oGaMislk֞I].庞%Ȟ/Ŭi0LH3C\{Xs(p?Jבn5H bx'|%IRE|}>Ep0u;#BI6Ju>1{ci{7w m.R7n4xVPMˣxS,V^)<>'{ aoǝ,-l9GmfeI>gWmP1cUxMrV+$lIB&w얮-Pj\Ma2ӊ\ +-|VjUϺ_\t$<`Ӷ;+6mMXW}=Ck*\,/tũ{ԃL NU +I,3cN Hl"oCvl-doD} +* +=?c{/yY??q'(O%YSL]mWg_#NY +SG%"(! +T4ӬI‰mlҮKs%ݾD + 'Fl-LyMvG' ;J4{.I}^lSKQi +噂/'熽|=)cp/EETV픤xywhɻKx<6K83xKY B*7ϡ1 oYdC$.QO9Fw/nƆeĔ)†j/M]F̴ޤZttV,,W +\?xQNFV׫/|ٳғ3}?=~t55ʍDꉫk"~bFI^g~wފm*@f6m?>{^}2=rũo?PO{RO8>q^MXK|XKcET!kcC%1$EIzќι22ߟԌU/WAWk!I~9.%ױ\ +/8 JAaOZN|̮u^ҘD63b:fI"g&Fޭ/w~ ᏻ'n= >q-?U ^d(ڷhJEΚR@ͤQ``|:^各509Kx\#j@"y_Nuy!87C>gK!UpM X~V˟t?/so PFm8LS( 頾ZA`D_;"amXӅ~=x;dkEᯗ,.cuϙq +n]GZ{]<P:I љ %%ڭv{VCx8K)QJӪqÍk؟lWψ]Kc=N[Dȇ;{q(ӛCxRWH*ϭn}rcUR"&tgqΒ7D,h }zT^RtUUJ!x+ʳE>B٣z=}!1dE-:E_hMjaoyiԣl+1iNRU*! U?6/qian>c.y:(.q#s9m{nt^@ b ̨i:NuԁL[-NWV>,j +WnE|iL(W$L-̲ҏ{C첡9nVx41jwv(@YE.%#*k/UIۇ,UTK>nl! ="wlI\[2KqP*ə4+:r˺Y2*>w|wزC|q][/"Ҫ(6TP~wS(鏬ŜA1vnЀ lUH~m?uA(q*wDQ&zn5Gv+~s >0;iiktS3LRb^L|c1GPG_ P{m!i[% 4xA]Kތs*غٻH`çnx9u/~N*[KVr)5aMU'zŎ)Z4)_QD=y+*B~IpzP'ˡiXyNEKKV<$899a+| m{[*ם؜i&Bќػ790S &>31.^ 赭j3}Ha hU +U/֦}?Rվ ĥT5̌L򢚏YQ+:KUAQo%O ↾>vQ~?_37-9-&[MοGvl8Jl\mUxf?$_bn~iG*=QJ}ȀZ1!_'o~* eǕ!o>۠X4k1)[bqaQӜ8}PzV|; 34nr(zǁ=kZv0BG ZhZϜJQ҆ )m@ђ4i"}Φ1ykތnD 'qQWna07|׌?il3 9Ι@3k:6΁ݺnGl-e36)`0jډ׳6,us xܜ‚= +\O% +:fAJKTR[v +dj.[hֺ李W . x~z[1?|S1߂Tʶ6ڙ{{8@Snρ*,;M'NɅ~opKz4%uV?ݷa ?F->m:)sʺ=Ң@;k%<7~br}l\Լ̽,|iu;3AC~`6nK%1Ay +8$YgbL5`J8|'،UfZJV:]]N|΂,[uT 2(qĔU,/ T2!Snyv 58M^P"gQfZF|Djqٳ7L'ȍ_v3 +*^ 6S.~8}uSWlNJHs<5zY}B{Ζ7*gMWzAQlأ5!5Y9tȴM 6kC[#G_$['ؚS/o9: X-{'z=f$l)k]'*{ +O]3B/^}SЇ#XСg8:mnNڵarl94Mo} -|[HASvЏe5,aӌ/uFU숌9IYɫ YqMk&xZh9p0/h.2mXrw\̕o,ƶ==P& -Js"k?'p-C͇M8rZ }b ?Os(?p;~ugu><]7f#w3eqvݫE9٪q9V}}̦9W\\Ĩ5-`ꇋ'+Jh0>cՁ ݊`.nr~tf0"kJk\CcW@OVe, s'U1S}:տ!~W45+K;]+:+޳R׵ѻ*hMkZxBHЋGsnOtߜV@[U~n%.0"pf-yM}S \(Eܷv͐&p$jCe?瑅QUCsҾTU,)+Kç{KoMs\׾]Ձ" Uo>y0_ز}Β[>y` 4O+wR}X}C⿌P\- GNDfCͰU K/51_gFfn[ A)2kIژ):k qAV*rݜ*e6KCF8igM84X}Is`'U,*>Pտ^< =Pk xiymun͈4F[CGڍup[Cܟ~|[`4o?ًjݜȿͺ.yu VE+o0=MFׇ +W6=;nlWD~y'[[PpW<ĤFD-B?&ntf}+: ] pDgyYݯ3XA8}O8f(*P`@{.I6mDȧ| TžYqF KMn3?k\ͿB809fdʖ6rmو 9&k)bJ~h(G-ɐ^vޚ'kjX얶96$+7!L}\` Kh3_lqFMm-m}38~Izfgef]۱A +ʺƷC ՏB2x{éކ#pK^Y9SK}RxTr! 3g |G_/̼b?k!8m+i9ơlFL极 +Ƨ}K֕o,gԸ蓣Gh!qnoX3UUOF8gyOWU_= =!DDr!13ڷ_]#{ E@\z~6+K;KkaԳsiWLUQ{r_~ko!q|L)T528S'yo@6笪 +Nw%_vߝ#_4KfiEW=g_=mNBMJK;g_RZ~U}pm27;Ɗ㢌+Zb7h^Un;ښlٵ7.)Rx9va@/gX% >ov,~7L qnNII@$~8Q|ۚsI3g^Ik5/T¿f38aU{km"jY3$:;O;@dP i\tX[Nz¯]UN2~`g'Ġr~u^o, +nNB|7yzF^:c]Rbigk-+βT<]12Wk +KSP1>h/| ik=$2>>zW lyh4 *1O<ë:z۔YpH+9/L Q /0>tOmɑVhQ`|2bS۔AZ +ֵ-#8~Q^zrqsrd{+ҡ ו϶T/d~=vT@?\E\ŕ~r*RQƮZH )[~aޭ`-֖F/b7]MYѽ'zbÆ8"L\TWK%_k/y(5**zmWs}{=eOzcGiE}?#l-i_pWMK7[􁞈_Q36,%.L,p<+:޳a=JU-w-缛~ />׋N~h\3Y8@~%qb~Ж%{0#R\`oӠ鼸@e +oywgzre,- 25$~xOcĬ5Qc췙Co1׽߷Awd~8ujm-Eu{7P!WdAZW[]䦉V5u^&,Gb]4 +))sXLPۋ>a-aᥩNP +m/{8764XtZXpyFP|}a;c {E?WՈ +jU 102uDXTXq}Jd:G v}Y^sF|'@clihoNw^]Q1C$uY?*9Yx?}7GX/Hkmz |i}]Ղ"Bi/w=Kk3d|jqį*܇GL͞ Uo34m!ʿ!jʼDt<Չ-7aKog6 U] '~ t{8yק|О7/ CG hM 0%,dRϹYoOM/,fYOn|S;KCI"; +9٩w$O髋ڵRWuaBo贫^H!b?6ĞjCʆ7zry[w)K *U;7P){QY"|QOر&^#Na?Ne_fsnoK_'oW}1,!Vx&q\德)q]_rw4=n4ܘMKUz8_~|ѻVL6dzXh>y# iKC3eTȤmnAO[6O<—Uз;_3ĥVj"󻎽 4ݖqݖtiYVd}uњl+7JP֜kv2 ~3NP15-Kv͔R -qNіT>?];;n(Qkȷ{kK鼴0>Ytn'q;: +x{V4ݝ|i4L<`_u?Kç@)-V^5#ƸIg✫n…G/#TW^ᬍQ_~n1]pm#|/NDo N'?'=]g]}hƜ;i'9_#x乇{NRl_ <;FD Iq_s˾κ +bƍpԊ!eQQɉ,vvAZp22ʾ%%6Sp*m |gՆ &+?-̺:)(#(.}XW۱rIM ei;ӝ-+άB]BS3[zH|o#?2WtVYpJ +i I]A"?!2?$?g0=7 ͺ>֕x~EWox;s펠>_-?h[#Ƙ%"vˈ8k7 {VtƦ8U#"_e"- 0*iRTyk*|^7"H0Ni鮚ǡ_=+2mS|k^@״[*/fV\訍8<0 +,M]M$jC[slL8"G%^ң2>>9!ѵ&M+ZTWq_9il^5uqU-n(w7MY_'p~"{v>IINbl(2_!2nXٖ|q3ݧQhF@VS*(_smReEÀ4ubCK߳w\dpH2?nij?Y[[᳽56;|E?mmk%sp6ƶi~E&A6u];dJ(:ʯ/+w޳,MtgkLQUI%o(G9J$E=A[zQ{zCxGAoރSU{w'~؈eLU@>y2#7,}T])A_a.J\U:(tEPѪRlNX/2=LI`k}܄^e)3 s^Q`i9o}U\qfss;S {4~T?ɹAL'iz5h~ /ؙ +>8IȈ k<0k^h.DP%B:ʈt(VT!߹On͐kvyt[9PO䦩]imLXPY;H\'${8 QQJw*u! %~ieÖōƘTx^sd-* FQ3|֧Ra ~R^Sm>k< duDirOR]+Ug^7͇w˾caOFJcΣMEdMؘx~X@/\} =,0-/E?,qV_Ω[x 0zq/$g,\̆RS+6%d`bf. ҆^T=9!sUJkڜ3W3/JE,϶xL|ʂLk쭰X^ ̩E듊o6}s?Ye}٨N 8$ȯ7/ǜu>tx/sU[T"P9Isĕ^oLΪIٕ2!3uߺFe <]w_BO:xraN˙W A)f}xs dmp7Dyrt\D LsY>k6Wz'ȹ ˅9o|\ZBl:f[}8@WGyKC[7CZfs}>&=!_=mݮS  ++QjvB|#i816 "ôb170Nsn`.&7#Vl/qw~kuS3G-dIw[D5 06ʫ^l%qj RrfB㨙O kXuKqկ&qVekKI7f7bbf!ɧ6腋א_sa- 3 +OqgVq1&8o )kCˎ7-ǁPJ5<4=>4E*:oyeD:uem}!2-U{ֲoBJJ!5$fLMOIrM6%eݷjw5U0j6u3$n9ޯ#vn[g]g}S1@^`A~tU5 6%|]dŽB+ ᓓ&juXE(X腝| rGK\LTON*xȘ՞q썕~艙_ڲ?+ȥ 'ը^xdVrgλ'i)[gW8{>d%r@ɅB㮇{C1C`jRU + +ZuԆ)}G,Lx%@ɵ?Ͽl8R6#DM>W 4iൄ55WOIINoth%sQŴBDSu M(|#A5A> +ِKHP/&OD!)?cbUZjWr6]~S~Vޓ'ٷKC2R>yrMQmWϽ ~xos:sw|[^Sg[6G/ri}yueqfp}=9si! ޶d8|aWsbEԔ씲W.EѣCK~>ՙb/F@B |3NvVml0e㱈Z(A5R1Q餡φx\}\+i[IWLuw MQ7ðsC^УB5OpWn}RKv@srwGߕ}me_dlHܓ $˒nR0,a#^m  kRg?e6| {efX%$-c2O6rl} v6Fem +.H:ﮌ + V9츦苻(g[.]OUm|eO̰h$#1a.*FcbmuUl3Bܺ!a]WR2.NN IŞcYЭ׬3|S]".wM+ 6!Wa Zw^2!;$!c?OnpM/ KQq>nx&/eqec%GVߠO؛o1rZ*fMz^K/,+}'VzQQdMgyIϚ<ĸ=yS$+_+Isdeozy }ܵAFZ?麺误Ww-W./2K}J1%_>Bg_YyIыȎ^|_N5,scq/k>oyRA5AN .suR6L- +k5s|V%P׍w^xtC ٟdDT4'h+ W +{Q^N#S¯㌊F/oBTV7\7,]gQQ/]@:'W O[5]fU) H< .NowZ*%WE4^i +6ܴpЎw+M `YՏmL0*bᆌՠ9LR1B*=;ngBW'YuQ{FK^Jey"apæήfc6Ja8@ڐB:$1jޞ&m݋lqy; 鸠DT./OĨ :64O_ͼX_#OAּ3TjN$X訕CNڄ̝1Q>57gEq{bi^.dwFg}7M)U[A9g{ٛY\416&H7'vf}&;V>8@ "]פAP??:n5kܛݥ/OtEC^µ%P]}-=c-1BHlqay.y}LX6HZ gh(%K^7ezQn2Rq!5vqSn̼ݚ*=tVO+[8  Ɣ Cg9hʣ9᙮àX1V pC>9%L?,;j36G|\q'f[,4. &3؉^UZzCFʋy{tzЧAW~_M !|NXOO +Xa sћf,kYa4 Ž%L濯 n9丅 ]vfYԸ6 $@~t\|! Г㳢yIG|K aղkb]2nk8n)=̰ޑݔ'O%LbG*[Zzǐ#-g6O;~{ii#{N{ڭͧ"㰫P'Z.W8ONpB-r/(; >>m8OoLHkث9״VXƟt/62ZqL\gy=[|aBXHD;8n9|}t@I(VŸ}2HG =bsmkCLظ8hysm}?G2OUpB:>=A>)3 b~x鰚Zvڞ~ϴ=gV(A).e 7$Zl/2S:S/vaUw5P*vKDl]6<#ꊘĤOIBa.-ݞm'dzOUzpŰsnZoh{~u!B{Әg[@ž33 k[B/)TPƂw@EԸR[aS"}S4.K5w%ed"(FԤR֝[l# !pB ]|=(fO+96j`#ZfEq)?님\00]rrn`\t4S 2R[ʮ{:WWO(:'\&(pIsm{ůRj=A? 3/}wm|,tt=]NY_ 91!kN7?+ k֤Zqg 1DVT/mYyMيu* hik˫#!a{^a$Jylm߲=qkwm Th˜; +~pGwߐUu?I:nw^кgebhٕ_3|NzaBxgї;> C*tJ/DHCBoJ˃[}j Զ}Z~ +ؑ vyrk {D˅%g$P}@gYI^kxcuQg'*!ݏ ]@Xz_w3 i- P][n`݃[&>q{F5ks}Gg|Nr*zu(&%@&E!|*bz䘫I'T؛a=4T'=1B:.;k:F$GGڸ,eJzyTlص@na% ho&,m /jҵ'>ð  lYNQ A,6qu$"XEu*. +8g\V_awgEv7)՛#]qs+/aNsh-X=7qA5Uq!Kc̚WjDUxd옉j;d1]z\[{kXC*vB/XXX+ ou=Jwj>N#!E,fjV +Pn 1=|j8(8;k/p76zjJF @:V5ݝ; kEĉY8Y!'9gGYh^ڤg0Zb_! MP;#saW>Ψm喃Yr؟V[uAۋBSA(w r#fh4{epM)˯R~sN95%n([1!c+ݯ=j|utsys~ (#_u`6BZrsԸ'1VkAA=jcc~J%)L)/oF:Gi +-I rE@<83sju t:&cmy!!"S⤖R"WޕwBNxPos:6$nf5}g&,F8"ZeٻkҤE@ hىiby6vwk)U)ڦR037D\O+[.]>3Ń8^B.;nQ7纟]-BS +윬; n 3943W&95 #+ CjuXڶ`ˢZlPeas5}FWS,31z~P%!&-]@k +Y }R t8;aն36ddz`L5:lIHK%Ǘ4sNrR 3jZVsXM* kqcw!+vq-KJG^k?# +SCrBqj޵ Ъc[v< Y>5.?'g%{oV%wSҀIձxiqai} xzrQ_cئc; B~LG iWP +B XSHGouUԹ֒PN enUQ+Wi"juIHig"6Ը -IPRw=NO%ATKA>/H酛z!qR8M>M+%{D 9dCN]Cu +p\R/ B@I)9JY\=SKR֎ӊ~ 0>lyVh<7?: x0V^Zԯy%%ȧ- /ye q˿sL/.!΅4b/SK2N[bF|oHń.7_ +*>I-cσ^jkMt s خ7kwyԝc{EJY5s]fytk8@9] jM F LD,mTcnzk+oau WJ)hDvOҋNToE΋n>؏ȌNs N9x9RmY@ݱQ =3Q{bm\5VGàxl fKok4+X <ȉܤUKsVȷ6h%1 [aL!Kdk1. MYDhWb!'LOuCFuPUD_neXr\m:MI eĆ|h@ItK>%7ũM؏Dͩ_xx3ΉXMQ 1uwx@Χ!#^eXUZǩYj/g !?%huc<77U;hC芌S&$إa + UFīdAz1>fhw*8u #k2Z[ԂZ0Pki)U #z -zXɨ\])Hzlc^6La =Յ75W5"ZLțȄu61#$%\ PI#RC&uo44ͣ/#n %aH9U:mO!͝@l6"\/)?WƮO<ޢ2ԝNX| }Sc]7FBEn-+7/-$Jfb%'_ а۱ yhQu?۴wO8Tբ[2us[jߜInty~yeOKМX xh]AN3ts{GٚCCuy_=j/ E^9r!ryPOr68[N +fŖM@uG0&-ZbW%m)nYx8?IC+iI.0a=VZzZ3a>-hfID#@U,HTK,=#\Z%A S-SO<[Q쵍IjCLϣ:zVܤ]QSoMw_\f%A e{ۢbzƁn!2"Fs?uwKC)6&bim5 zR][+.fD-l,7/-HDv.6nPW*\V\Ǩ4q q#9tΖMH۲hq nu솀F :.zD+D%L\젚Uճ&.b"A[^0=/) dz`p^;!lROʾwsEqSS<ڦ]Ċxx:FmB( h/FŀشK/*Zm ǽR؍ dC RF%j! rtEOI=|At4s? ltӫjՂ8!w azǨI*PFƑnmY k'V*~Iatr˘## _(AySNTZY*cf ה ?94 f5;!7l7̲Wu.8̓o,+< +r+asM۝Go, ةy&5FqKd3ɝ ~{{orː'u |:%-{1дbaֺ='nmLҰݼ(m|H\4Vm9eNkIU^և{!-n_ևY#϶GQCWRxVY~w2(ry&buDk4>2k#F6;xYQ`iBq„ˋzmvmmm[GkPno:lxP']Wֿ?/foG -JěV*=~9aAjYP=Y)9QüaA,ܲ +1Sz|@9R|*᦬Ζ'ж RCJrQLK.hh~5vy=675À&.L-4U $r5zd\$导?^b]M 9޹0\J|X/E]IWr mFB +86CI?ø>ՓA+r Q2)3>ܴ?/ ~5UbgW6,t#߰> o؟T(SEp- ұ/ʎ4BoPS*C*6$n%wD |Ga{R77 lDHOXT9DH~i˹4VL,MZ8=[m@7tEgL2@)r{5|PgmuOX %i2"z:b5rb7m\B׋ QҪf6&if#=cGeqA;>U7rjK#cČܮ6n)[GOHK,ɖ 9FX 7.^ <%_\2=Lj:}TҐwX%h{ǯ+x5d{_Mfi} %\N)x|*fmYi ! 2K[3d\F?oKl&6tgM}+=Wz '4q!/{„nx49# o|S[ $5Ck1)\?`ro]ڥ!ncb&"}#Cy hZ$RFGm1om%S/3 ݹsq[6D bFG 1."+n(fs11QNj5-r䥀; b/cևU>̊k%O ڞPV/n(PY;V3%> Z\JRO i6ga&>گfT{'pW>,=:|@O?w_܃4 ;m)id6Fy;,ԇY!k{LY8ZH^E;SWkI[ˍ-r@lKWwTŬeq51"rrۊÆs->)>ѐJR6>ig#i&f~֟J;l* D`z|8u3|RJ)EA->iieN萚V~ʯ oN"1S[~ep*9Ru3)E(7t.pζC(؞㳷xTA >7 KFu{ciVoY9t}LYF@A9$|tZW\ͧFɍ~tկXR`s w>Xulc"689/ cAZ!ᣗߠrK~\'__z%%d[WURz㶝ߝeaRxQ oq6&,#6U8?:LI7#Tjw+8RPK hM{ :ZOC5j&VХ)w +~5iv{ރ:WQwy>+#V>;*Lm>t< 0cٜ02~9^h)U֎G1{<bE' J6͔x؄]}1ZBZRdwuP!>5de|ï4L||ӔC񃜾!'rP 6Ӱmx!8GH҈7o9'OA}X^$}X`mJGlF8ZLD*R_VibuqM<;NX [ZMTt.;T"Nx@0ǚNjr~r$0P"ض1@n-VKϽ-9aa &F5UNHhMswJx8OF (y{ w^.t9̛S;TF'J?T[WCKp;01.;~[&Yv>eoNڬ=?ۯQ`n,תּ|*l|ᄕs=4|5tŒ?Ź_8/i1Gʨڞ2Dq7 7g?kd[;FrāX-[&f4hs0o$g k^]P}m{V&l.K3ϫ m>\֤(>]WQ9zԾmrB(˱ +F%]mqcZbb1fd7AM__wiK#C_ml"l~MͩA oم!o]!P͑Qkзmߘ`*>YKsku!j9+0rzQTUI6p=:obF +򃫫okAM_ He;dlO[@{ͿAu;-yO߸*71'ovdf@ovdf@ovdf@ovdf@ovdf@ovdf@ovdf@ovdf@ovdf@ovdf@ovdf@ovdf@ovdf8~H>>R'Gr/!cI؄80\b]Ko;wCgkp(c!סJ6@wЩ?>_I|.!V0ښt =q!zPΧ;>~qQ%l8w!,8R'3/_8Ν?y?6 ˉ߰e|< [@g3;ޭO$ vyS!h|[#]zBffC-Ο8/_$sxg>lnrЕK_RIDρ&LjT+!Uާa4EM-;!aU¨Vf$"fHjv 9~%80ŨM0JQsUҳ׺&r照yQ%1?#GԨI16=x4uJAOJ/Nbb +ziB%DLjsY3rZ*Ly9|6—nZQv\OMZ13n`G5ԲZd&L{{{j8-q9i.ʣ 筍3|쐌Q4iQ=BxB%!yc-VNOD1ĥ7 G}A؅ڣAPҋa5*a7&vtu,Qa> i烎 )31j#JYDnQ=>iխ՝pN@Χ̔ii.o[%$!wCJ.Z KϯT0hGݚcqCMl>0p#QDŎGY>u'\BD ĢX4JFr>ib3Lxl(#zƧ>y&IN@pP)+>-ģLlĦޛ~]x|\[Ǧ#h}:.qdٶ{ι}P]E].vTefe13$33-3,KbL̔\o߇CNeFXkܱCܕ/jbPk6yF S-]2f/;^]:-jb~'9/Cmr&鼉yUl@ȅF+jGb(Os[G- wf^\\œ0~)[SI"'ekck Iv*6%,P#v0m&㳴 yiCxXr=0Pj>o9[1 bDye1 qIuk~bY[C-SǰYN!a,aߺ4| ؞ڢV~q5㐴v u8Cp94U@ )U!si$PCI\W`Vi3 +XyU]j2GY7_5|Uߠ3s9ոs}]ӒV¥E&[~ =Eb&9D.u{Ļitݠʹi}ـsB?[YAYzFPNEu_ukdlj!fcW.JxK͸5Ҍؕv1%iְPV +, = +n셴Wj: oe†[F {zZq2NIF= +~Fyt*ji9C4hNʫܜ]rR_s=^b)=fanQOg69m7qzW HY_^qr6Va!nɒ7Cq^U_DײTKX[5,#5JD"F=iusnD7̫WǺ(vDRܝۙ%w^|X/1ɾ*DP%<6-cµSEΧ.IqEڼcOt6ȺDشhLy˿2>/i}d`^.a36Y0)vA]ɯ,;S-GW^7~=źyk+-o OGeUH,z$_Ya\_ˆupt sa&w*-P{ z&b=15#wH5\2:5>^=nhtk#U_&gu9wї˨q.iUMښ h_@`˴`Ll,"<\@؞ i`,ؙ7OVx] +ZN~5b4ܼ]7*)p]脿>ըcff!NvEƾ1|{էY7•W#3Y6Td݂!#ymcN8mWqR&q-f5e՟ymueFGqQ5f2Vvq|rrk.rw;4i5lǬa nbdVTaVrav t5^gkOobMNK;o' y~Y& j:1ȆWaACD9:8W zݐf8U\ 饻{!~ b^ϷK+mOZձYIΤ$2΅\z]]d:+Zj96H;]^➏ W}iqwE"sj¦.t~^޶5ؙi=㵑/#m'"I+#XuYJLx4ʼOϖa+Rva- +f2b|+Dd3jmu`l.- +%'mS2PP+GwpB]CJ)P}уy$j!ݰR )$݅YVOg2nP&|H#|–]S%2rGJ¡\ +.W6y%h́ Ŝm֣3!9 KKҶ]P* Rǣ9i]k\幠q0N.r.d}>8٥hcSG·wp;7|/`8U7ii){lXfnQĸi9F9ը]X3˼9%wic5;mT sCkovDe :ɸT>9&rzbNP4XfNfUnOQN-h;Z0ӪPwGnG^ usvni+j%2.PI@}̣>bwA}1.($B Bz!A-n}悆|X.8)_5g\r3d:b嗃.ϸ#.^]u?z_\Y">6vwkAOXg%m7ȼ?;MčSo<:\7@W&5/Z%gyŐ+&I}|ZV |t14s>tA6dA ѯ Vʅ@+?-[L+&֣߭K/wީ&(˾D- 8D|Dby)>ͼo%mb&橗RvI#gm#Sp-bs[çێ-w壷>a_؆ ͱ.L3g+oV~ K;šoZ}v6j8XOὸeC +H*Y|- r)9VAbq! Zā1':UɳK26vណ'kq/ǹ9;e<D8Uk)˳AAKtᚯ}~N5y Og9;i+,#6iN!T VQHӏ;0h~9qO%OdglQΡ.%/na&l! +sƯYMz =m< +evn1 + ֊YUL[5^P'w8=͇moWصoAs^&3ipVni\.ZB yUW5ڔ[΅l =W%xv4ҥ5_%f)P+d@7A>ϳ5ºՉyS|VP5ʸ`_.s|^TfZCԡs+(pLdvjg@| L=A#4g}b*oȝ5JwsL )+pN3O9k; %]w]I= +v6h YɐhG`3r]lHH!wχZN%F%w)ȅ5 Jy6a.qp?wC}#DVo؜`_Ld,pŔ32en%k΀XT ԮW=Ђ?A/lnMp.6ȹIԤ5tŧieƤdjim(lƦ{X@kZk( +>Pa3N-2'o.:/k"畒3+En}EkíGe +Vڦ7J>[|t +¡d-5&2Ert|Tש[2ZHOC'N"![q{UP8;Pqwތ0n:02)BJ"lO.E!lJd8ϠSp=.$,Jrw Nr)D{[op_m"`KC&CFOe턿xM'Afo}\HК {a-S= 5Դxxc/5dr^ƭ灗} %kŸSN\<ŽZu>%j>)Ҟ۫S U)n )e{P.!uuw6&ýJa. 쑬i1Vы"SdJqpq*aֆ vKi^1P1i  W#KpM{\ۂJq%P;&cw?C7Iig_ q1)mLX{ֻ#;qWZ8%̋ɖ{N{" 4@~2IP{gGt^/ VNRunyd RbJP4C5MƩ`$8#`ɶsCPz 5JdG%&:5*bG7P~^Yz~09-OЯdܝ*X|R9j4!,=lsfrr! <=׆9}}뺯S҄S)?na㩠ۅwjY>:2AXem+3 +Jb`d΀ZŜί^h8=˸quI;V9wxXGCOۤȼ^uٸKJ_ȇ·+rů+2)eWƠQ^ &ACŘG-ˁƾ _$DiZu2v;軚艚TĭUmt+dd}*q6(eNQC-%lX}5yNtW!+PSi U#Lp^{p#u.*?;w龝w&Zag.tˆ{^e]agZ:~ <7OmOT\O+䜖aQ͖3;O n0T6IQWiqS.IK/Pr1GW_dN/\ƞݰ+(`>)-:'(OYfAf0a/k*nr{}yž pmryXr\ e0RJ*iNXuӂה[͇GWdd- S)ߜ?}ÏJ59n֣F[<h=䋵u?Z>z/x0 J(d_o%me]&ߣ}9JE4ru(g6(1qp-}o`>vU~gSܬ` +jWDo(yN:n^%im9Pp[/0[|Xۍۧ\Zl¿)<+ =Z:{.8d=V!cIYTQ'e4nS#Vi{+A\2 +IG.C.g<Ɓ gp뉠vj3~CƬ2&lrz3ACw.5BhA*2(Q*=kJz쀟ݝ7·D9oo[аKZQyc`ԩX1"6&z 4qakysk살SА%08:bW2˷7wE+%6jV,5.u߭"2χ 7V 'a +rϼ*pͮɯ7*&Y,0aVAfKŵE֒4h'mG_vYUr=$rL9v,z֩ +V|Dt=oDčၶPd+ +3Bӝ/C|@3fWS-{u:r66Scl""o6Sϥj T֌SɋXYEkÔ9ܙc]ZBzIj^/LLʚSSҦ䜼'a׿k0bRSq«s)豕ל3y%u i)'E8cmSzZwN;$ԌWB5 ]O%YxE?Rv_}ӞIg] нuNQcb^P6Ps~ : +endstream endobj 36 0 obj <>stream +ݏ[f Ȥ*2~-2w N@۴,N(\"FgNeB}zcʣ%8<@9=.'5{WgP+hrt4&Xg-jrW&Xw_%ϸ ͜Y%ݳ7uQq2n P#67b'@=+1qJvQ% Cl7<'^K[Pܖ *{Kj4V4̄MIߚ疄aAŵPG4Sʪ"gRѨUIK9ybiYIM"K茤ji}6>),իMB.!>'is4,UaVdwͱGVW}j9kT"rm$4r.65ǯH͑άⴥd(ٚ2WMfP*brnP!pQo>GmwFPgEڲ98']hq3P +֡w_"ۃ؉$;s'S. 2%-m.Ībf#²X͏Up !,%sqt;Ì3 INpv!;PO@WBE]]|@؆W"_cV^MgKccdqwCf> VĦYpmxKFCeB]1`乴_;ԅ7c˲,~xܦ ԪRJ䵝yxnMa͔OA+#xV-Or'\۴S-B"vzc_uɑǂV;v5f]"6dۤL'2> УVڕ_̄Ն Z>hww>%Ʌ  wdnr9V3A%bЉG,4]g&qhPo0 rRi 2q:@\ڟw=-v> և*KKPI9H{xuq+IJAQDI|CI'psx.l#uįZJΨ{ЃY>mk>v/"cMKXz~˩ z ڨIX=˼m?r/h~P8 PS&NG V,GΉL4NS5z^pgt_d 6ϪʺlΫ7k.E$9ExE*Ȍ̂Z$b:݈¦m߲0BRnϭOکWN fW䤲-1+ܭs>T-$:gS+L0DX )i;::|lg ;Mb^=4-(${ c2KʡׂV?.yF8 E-cm$v#gEmXyR֖;6/Eqq=zfZu,i۳ֳ)Fɶ ["޾A|-20/CT+P i:ZbA@E|LHH8uP=3c@C~'THPA! u\6><+hِeؕ+'B)j]_H_ =xHہb/lKI=x hxLHܞ9C,Չ>K-FO.e}9|' +(*9df} *ޒV&Rm;m?+VWPnwwͭCm3*r}:SjYߢ#O m]؞`_AszIbF&9ej +rtbr"aUA- 61Tؗq 5r]vz#c_9c.=yZKB]K qOk lm'ZzD;.EB%jK9?~!:wd^.[TwփK"6%bׅ&(#V#226cG ҫ;w pE+TVw\{ Tj#n)7ϒT +Lپ0V93kGƤ+a4e9>sx+fYʬ "FFi{3.R3>NeļvE'hHNYI78agR,@1_-nnwW:J]$Dze|"Z~O䂬WؖKePrf6Nl/SDC!}j9C,t>!_$1Bx,p) +-wS٠Fٙ |Դ3GS!M{HZ*)c8%-[Nq dv(20 ߚ\٘^7 _ʨ{RfeQ~r8w)koI*ȇ%Ezb٠V Z=B23#[p*RpV9+Ү[#S.2  rpƯe4"{.C5TJ^asdx%efBf~ڔ*蹇ɹrH~x/d HXoú !5%<,XwomXw]?u{qa2?~ ʅyq;3;Y9PJz12WP]+$=*q + O΍^B9Kˢv0e5#vYR0ٌqS/0V2Zf!A=2BfiIq&պ%mw&V#NiYcץµ<* \%ӠK-?n~nq"clM J݆ĜA _Z"V&YV^ڞץzU֫UGBrI>$sYI9D +cȜqQ+9[xYP".#38?uw;w7$%lM*Y_["N s!Q,G}Ȭ yH׊ZU(0~ ȹm2ɹ~E-V |>"sގ>\uez.)rN"1 +1t|]wn!Ò Ijf̝p߷Ž>છ~]%\\P"_A}θ u?BA,c&ʅz%Կ]TX(W ѝO-_8eC[{_CBoj4$@[E's +\ٸ4 +fF׶G"~VFKY)jFI+xM' +&L +.iݙ +FxWv1$>-y[Sܫi-sqy~eO +$QҬf7ކ+"*nzZtZ@,=AO 0nKu+j*ʩM3 sˌ0 2SK  w3Jq Ѫ h­>qIkqȿW2;baaN%/W+ Féȸl-j&y贐uy {3l#nςgkZ1 +9x8(]e߭ S 3'DXƷpdҬW΄e½%~w1pS8@ӳa5<_ؚPvt`#x/k2/`nak*nHk=<<켟> .C-K9N&<18V6Xv&'A\v?@z]>q;︍t ++gQ2.~+O]|Գtc:&lRZQq*pu@jv +鸓MS^.S3m?n SYbYyN;%gWIƙm? 4| *&:&n@~H93 k59#J̫h]#œZ b5'gInQrWa]N1LOLF7FiR&ƥy9 up?=bs ~ߢf!V< &ڹL1J"œM} Y4Y!O؄)8d|v +*Rȧri>40mTgC/LM +2Vt[?TkQ <1v o<2nx67("JͯE̬k)֥GH!di1c#cnnUz"ef_DdĝJ攰$ie_,<=upX[!"E%sa*Osr些C+6OG=z. f 阕SIiA ;O/}@.hφT +CfAC O\C냬BIRra3N%զ20Dʣ%7!)+]Kva] Xz$mZ]E]}й=#Zdl]yvdR̥`'L1qI81C84jc\mM@1͆9/_|18LԮ'̼іC+Cm_NΓZkC!u=3;_>Np. R'Sa晥_nmYݗ)yEY|I9b]lurNT=>O>bϊ*6GVQD9ȹC-U4͸EAIN37\1vO]nָwf+g^sέlJ^ +n5 0ksw߶Ygzg}ګޅaqe=u@3Va g?nnIWLIddtyu{RVõjN/ d|8D5Y-B>K?_~>m;5XoV[a]yyݏyer{a?P:5+oĬ +hBEjVˌMk[Öo?]xuqӗo(?gpY^a)nθdIRG@%r^ wHZ!VY啡߀Gm q,FPSRAC.F"c[Cԟ7^ =nⳖW2CֆEgGHg&y[~wyݦ#O[]zғǃw^x8 }Ҹ1"ao~B س1 gd |l\[^, ̀@SE_S%fЃIц8=@ycϭ+#itD@~l^ָuF&]# ܪ8y)@LZd80^5_lS~3ϓve*a.oNˢPIA1wD~+EmL,̸xir ׬q$iO KOGilQh]g Oe-=dZ~8Gٿsbe,˸dʋOM~RU{߽W_AO\Z`_yyag}//Gmk#Ҋ䜲-:-Z}:E2cөqم埬:9=+ql 4~3Stptiہ)߭=o=PZZzQګwF)'vƨ#qޕ`uԌTlOjZ^υN~ntI˷aօ䔠lsq;cHoXSPkf\z*M 4>kO5#xOhavF8SӢA+ϛhGk~o_'SC#-[e =lyQəU}5>՗-?>dQwc㓪Nh8>\92e pf)ȒEX98Ezol]ܨh|G1Q\KaW?.VqcIب1L@Yw>SnBj>uܨ;u偦fh[Í7t\ʳ/&^E|¦dMC ߮ht!O;蘬zkTZydeOʿZ;*_xK*J>ވs1?Y\݊O7zw1 55ץ|#)]x菞?x;v~\oB]ѹ}ϛ[o<>3|cvjDzF͋KvFWׇ'ώ,=m,-|hcHRvgXTυ4|CSgoB=m[]z]aWlWzXilvp9YyZo7~u#Q^ztrW9@yyۏ{5 E^bۙQS6AfˤqyxrN[{}GWڂ?>{ȸ ഭ!ggc 0/9o^Kx:<9yl{%2: KہYߙEuU2hr9bR2Qg߻6.ݜ&c_qY٧O7OYk8k>Ib#aaQٹ>,*uV}wF~{O},<91\u`Vu~O̴4LLROafNIƪd&)7xܣ{wkhq[CONx~zB{ϫU6^U~]ң/9A=Dŧ8o\wO+tT|O9߽cQI߾fT|?4_  +~O;kҔ߁g-QP)_MŇO=l:_k+ʚ9~)}Iwʫb?] >du0/>^M(A~Y{mNݧ 9:+f382)kBѥWÏ6T/ϭoV֬=]ߥ~Jxq5 ϛ ޯ]𾥣/{cܟW^rN7|i]Ghcw+/g^.>77.9C_=%,dcȰs&Ѓnx/[W{ξʿ|2&_ħ~.Ǖ>EgϚ/?{Ѹ?kگV]q+#Q!2+rjj!'͖/rȖ?~x`u{skW݇[MsmJHΚ7\[iRW@)-Ŋwww.!$@NxC;ss?#ᬰurN_u[j<(*liNr\3:J8ouUE;ĄyqN|=`Z+ ):#eć|iVg+-74d6UYWWaTֺQ*aQ|Ql%-|s0hg8m }tgS2~\Ss"nӞ]֚ ejq8P0gZ&PC]my// [BdN3 +Ogـ՚|#Â8rCS%tR<; z俙~H|0_PM~^i.ZT-A߬6|\mA|w0AK=KV:??2buC=dMQܧ~/rf)!Ⲋ}M'L=A!%.BoC>\;ǧdeݐ 59O[SCLLs?"#Ԣ*2a®uÅXW&8Js 5' E5'ڥRFF{'Nb#ԭW_ek˾:jv0tgj43ΌDW(jfdnt!>y~rAK\_w1bqCW`6/⑹'s+mvsN2@Xb!&Izhs%KLzseoUxM%ߍ+oVo6:K>/B}WZK*xSۏ Xnyihy=B-4Ntm>iFƺ<d}u˹g;AQ|.cߢ?\ct '&+[i?+ +G].^J~-pk `'cOkLC5YZfSm7g$\Wz8*%q UOk2އjdQZCTp~yf|RM˵+u.).` mBlU)vܭEqWi\"b&:@e-6|6yA_SmObz)ZWt>e)󹡩N6` +V\|xXWb2jsItv?웰4:-Xz>R梯H1a a"5Fa-ggx]0ٮ,3Y'IOw{?*Ko7%kor<݌8q/5%zW5uQn ͎̏bos?<\<`,6JJf*a"ov"BFQ<uDCZҖD(wmލ +Ts\ƩiV LCQ+kqxSMtjxCp{RL>J{]-l"6{lv>JwY}`'>$E^x,D%t8MC:ƐRLMR2[r`k?)6BL;P%[}Ҟ7dtNҊ?:K:i9bNw'.)bRwIE)jz8+åyu"žz6#b[%|q ]^Of?Rw\24B}#dF;)jwivCWt69.68d +uQcf"h~_F|ބi.6~U} +R+Z_ +rl3,D\xfvQ!21BMM/5 "Yg9O[>ZQƓ9q{%y{gEXP?0XE8A W\Q?M̵w_ߛ@GLbo)&8Dmu!\ NK9? /n"@ 7n72x:CNa2hvgʛyQfk /;r[]ogk/7^%?Ҽ&994 ۟ݕPh+PY]$Y$</`VO&BG- +Ѕ +DXlm #ÔRv=%5.X[ZnuAC_~zZo+hAT{0\vJؐ jΉ\;,3I9](I9[}>үkw>MYǰ4-Ny5g"Y($]T %n` /;^2zOGZgDP +Dv_7 ezKFAMc5urqi's!eO-ߓ~rJ!t'yk͸.BeTqmZ6zȼ?~(g`8z |jƆQ#tMf.Gs#BC7%V'EERtU+U%kc!~kL*jg5JGמBCצ?%=gT_@fcG ѷqy.T֞/ yo"2\ HO_hJIO6빫 9Q(q&i"t-wXˋLZ78uh(0Y8|^2 9F[!_]jb8#E<>r恊5,Ǜ8;k:Mf$a#mvQIjyd(2tkv2PͧkKS̘X׹4wDiy%g85,$W)5V1FyM͏ޓfǜ?Ԥ^Zc?>sm㨘1"dYph<^ncD-d'96׊@|<FpǒZH᪨V/xQVkdE.۩u|LbM}U :QE-\Njx7-!%!ܺuCAHc#qm}W$#\ŵ)*AIZi&}hgD3ςܰ}{ib%ב&׫瞤%_[aUmlΑJ7_D +ܝ^ڬVG XaҜemyaElq3 +-}SCNPM*~C?ckYklwVך)kN0ae>$,}-qNa3ghO5x-@}Tqʖauv.@[`}5#`Y7\O݌$(9SŚiqCۖ2-Jv42')إۃЭO{cnrSu3.T"FZk&oW|2_~<_|4W!O2mY`_Ÿ̱B6z/{W }Z>{G}DhƇ*z'x4bc44x_Y=BaS5R {x!Lf?!N9)8*0_7|Z2?./q+OV=`{X4"Bxxߔ~Neѷ弱*PzYʄNNB'7Q."yvZ1 EW) ^`D\⧆_!D@A\@aڙIffW1p}7,֪*^ ۏ)y4Bĺa/z2]tmP)ׇh4uni==aRR s>꼏r񁶒6ȐKYVSsM%aPQAc<_D_%\G|sa SclMem <M?R6dMcrn\sa^}hEa_? +y"5!A;6魄dAO˜] -}GBwNQG:.>EY(T +V}g*q+n\] D]FF~OqyO/| Uwe"ڶއԵ"|z6̷ Qx֍v;+kQp1pRp3^Щ5*X@xJ +r.DE½A\߹ !գkW=us,FXKwhP&hn89TAG_a^F\ssP;(-P7 @7\E|j9q~FgM]qvѓ +ԇ6Vd-;Lz,^'\ 5՝^=}q}w/ _quCƀ<_n|3 bT7n݌A޿ +z0wA/n=z zp:?@πK gFm !V]]-N +료4e=C?Z KO$Ow7\A^u2/?ݸCgVkmMޛ9MnPl1VGnBd5Q͹G xD]P߉^҈K䰛 eafyi8Zz(Fɇ\Ƥ]$uܾ O/R#a&EvWlpQ1taXU3T w}<6BzpSgsnsӅnBS\WN|5UC6 +d=o#WaQyyW=AAn A?= ̏\*PetPC/5J +s%U4.:µ4jeYJdMlfo/['@y<~z=s`\e^VoM^@/~2+)'7\Z& sPS`n'Ww@}.xTNx܆ʩ[#Х6w}+)p~An#/$JE{y<\n^ zr0A_^ݼmP Y!_o=Jzɡ]pGo9' 7ח?qkk}tIhSU]ԈNVJxRĥOoA|_{uw@o,޾zXCgo@nO +\$ Տ"ڟc3ʦ;US&7hD|b>ys|t򟠧7nSk`-|@J#g_(6d SFɞbh0vkÐvpKTJ魢d]Jn~f]|5ܑW@V5ke?7y4PEb1pk5 u]cBbro3onSR\;PHZfa]50+;J10VMXi kja"Dx3I8]\ArK'\g^s|Ǡ}/SO[8_m0}#"q\ZEHKp +.+@uqSor~֣EQ2W\딀`VW+VFH5Ͼ"Ag`=7ķyբϣ'obX4 =ź=`ArR;;7aawTr?E3離6_U(骚.ꢄ RƛA}`ܔ֊8?su(gWy"Fё!B7(S5.IY.| 9fC +hWUrQv^vHDW D&HɆJZ@DF+co A/pg9:̪ٵ$(MTb'k-0e_]jk-JhKäBRC+|r5}]`Ӯ0*(_CnȹieWJL1ɰѻc6%Ij4yW[ԜrlhEz2W~(1NqP̵!dЦ.e^lB?]%S˂͐g)ŻdY7]d8BQGoNFy9]ɲIARV!b-mma +=VBh 6pJĴ=k{S,S,N2!&xg[?]Trlj>Ω6O +ZѮS.!DmHQ J1<-.wVm=+5Y: +Pۃ`wkI$O f7WbYԷnNtoۻ7AJҰlUwlȡ9rVAMQZ޹XYpy?ty?-L@9EF F|Bc?yU~|YIY3 9~;[]?t njÅVRuYM/<h]3N`i~{ *ֵ>L~mC72L2PSƎ+x4L@4z4/n:R#e6YY0".fMq*tAױ;#%~^tui&.ΜZ0!+dVTǺJ񞖉6Iw&+bZ_ݶFpIA<u|3 ,Tגi˱:Vjvqgăy!ߩcE{ӄL$>igosuQ󡶩ϩwZ{ifCAN5JM%^!cLS)P!Nj<](?l]X<,򞚜oXd,ءcomgV\j~]Zk<}=H/n8+ħ}@mqRrF\csmUՎw{S$*t;^jB +]JP3jW2M&iqc"/kN7jeYqu7+8){ϷMԔ#)КfWVyfbW/u[4|yf/dlZJb;6y}Rtn?S-|/0SMH 5Pug9zJѿlQT}8B-UL7MlI1}%/jc[)ƜMvn&S]{ѿuB޾E@B2|]EiF%n'%y^iBLkxtm˹ܟlJfMM7#J\n3g߫\> O稥oX7``v9EvXh*y>\GJl{vTĴ=-!HK-9n>=I(:Xnǝα{dz|&)dG{Y 2a&%&Р1M-1MIE'WdT0 cㅊF| rpz4I?!ғ\d\/s2BYH0q5.6K</V4ukR {ZlK;2:ӞLޜPaR}|hfB ^l*|[ +L9}-p_WQ7(9Z:Z5KXdž:Ք=Qw3BV:qHG c7u{3bV|2眯Qr%_* [6u~i D "=% ``އ ץڬmE^QlԀ( -TUAfRlHƻsuhȿxUz:¬%Dr!d+q9;ؒ^f}/Fp}v)czwf0I`v-g2wLz?!:-؛Mf-{s_sYn'&mI P˕9>tF\y8[U}6Ci1 #A ,tæfk,k] +\R?:ЇW3|MpڲӚ]"* F/UYd?SE 7#"3, QӶ1f)-t zG3bӶaIFIBJ &(wÀO:/h]aYs8R?k nZgSrn}]-%n9_s⪣i!P8aiOFwH9`xYo䷎)r%.5~2r0"lubmeܞnPje2_XΌ[:O8UH(INЈ Xh;Ui@,?K# Oi.Ҍ=-Md= >~ԢCJI_G#o<9M `. +};/l ~As@i?E>- `d}諔vy m&t5l冒 5U*W&3I)S6:MS4u֓$- :eJ*.֞ +upIӨc-2vO wCULCE| .t}9T 1"bg7҄.^`vK?[w4AL>Jg{Ye .7'H֤LILP6s))jUArh% jMO:voQzLlP_vPYeVM2bfOÎ?I5[QupSC/)'@9Ps1ʢ 9WyܕK>I9ͮ"%踝~X ,o-w~IO+4 MK6iA}GJHږw#0v}#*烱}4Msz6%תl: N &ɬ, 6)()jBW#*jo*n^z4O.c6>r:Q>KTQ{"k@Zdpv8M:j.fEǙۻQ§ ƒ ݨZmi8M` +iXʺ1\1թtoʘ`m}iB}w!v"E|k/3RģyPNל;qL,{rN2kxJ1i6>*?1V+jls +d$8TC=_`FGkZU"hUcvبATf?2ܮ`m$c9]WU`i ]yZQ/şM=.םM`wcMEH@{5Ixu6_P 6%i{_}{۱VΈ8e2"rjkbCޫaNJ'=F?5cCnvy^*+IXIZ:Hf(;'IENrZZgrXEÝif0-Zmhǝz:EJ0?u7;`h!% 6{[(?V7#}=Q"b:J[GK-#Р_tL?/ōvS ?2h\a\QbwHܷ1s{hƯ峜3-G\w2oV~%OQoZxsC^t2Zȍ~@#w$LV/!2D,c@O瘘YtN^z#(GS# gنJ uOw3_+1 6Ѓ Dqf).ags?[a$<ɂcK<35l鬐e yQr[/jlS,#)'&wAs2D;TE+rYhNzkN"n;`lrXSI4J+1 F5 t+$?S, sԩ&'1kgEqrERERcG!Ѣ@EYL笐kN$<^lpT8!4?071)ϹzHiNs]m;P].4!L3_LĞWZ3-CDZƱf?XEc[BA|[(\ylĆ2ѓ<8Pp1ۃ؟͹/f̊32] +<[>^B/"NLcՎ7+Y"gg3^bD0Rڝ`e5xNdwgy{i+)Ie~3?tE<p}6󌗅ᷖZ2u od@4 ~{@,84&9rhIeAEK)rs&96eow&ٵlYɀi++6٨ޑL#vF2B0QOBPa""N]>H=HA0)ѢQLԁ] v{2|Rr7J1*V +?ny$ڌja6_*s%rgR[Zs7+෎ ٻRB0-㟅-FBJ[_rS2vj.|$dwc}Ry]&փ}d$ H_LNӋ ƽI1_rRb/ tSkYTT]C-89 fmC4,?+M'z.eOCݟՔ \vwi9_Ё +a!QzyTr#؄.tTE{C_*anȁBSС¨s5zJ~/P':.ٮfTM#ˡ&[%h:WQ~t{+ ȉyޗp®Wz>BlRLʡmh4#訵tVN,i0fO3kgrj4TruUw<⊔y{5tgYPkff%^d5܍~Y\Uk-?YtCa\h;Zkg/ jKs5.vj`,P3{%W?3 C-;}} 3|SΆ%؈soϱYfEtc=.>v MxX%oc3pib־) =?`qGD<E>]%*q22| +xSg٪'S3B]1vzosif93g#u]4M6nnqw'  .mg yn\k!&~!l2Q~q |^ _1Y!wĢ]5o-g"UAgmIqy!)SL$"u$șg2IU*.sZnal)r~ "{c}wg@|11 Lu.Jߞ5\qW>qOּN:\lpvM t@I(QGM⣳⎊z(8Uq1Kjd\1IbT|[k^ͻ?BɎK2Bޮּ G&?N苕EK] ritZ{ xHmנz t[zIE7NQu## 9)䐘E6ypGC)!G&J5АZ (35)je۪ VEoA7kԬ_6F F,;7-u_KPi; ,:qhԖ SqXKG- LCmaM7/G0$4zOGZjG? _| gmH.nWP'xw [¢|^Ĕy疮s_ـF$I)cy=QwDhlջ?QSpPa㡝EJoE%?ao:JmXCӉb=\5Pr՛#<̉\wVژo*,&3Iq Rx|P63ι}Kرu쓍/b=`K +ZuH/d1~`om_pTJiӥn;טn}DT1ɮ\"=:^1zo"U\@JFF +kY .#4Nk"T&7kumi=&2ҫJI ު[+# ݐqK={;3*D?VSϑOiwe(9Ӕb{_ܫ垒ֶkމGVDΞ W.A~p|恙;^bL,`ݠ>ySC.α ^ɡW|xݳ #ֆa㘤do+O8=c8Hlps߶HN5MlKg;N^{TF~.dWJ*Ww`6C!ȸ4FL5¬aU~9:CԁM?v횄\,,2f征RT!WG`6F/"Is㈜ hYxO*%Q]%am:u?7ꑙF<0c[w: n{$519@>uYX1N^BO˭SGVaK[7>(DBj\HE-_|1tڮY0"M: &+&fIH˝yW9N-][=ߒ$(,v{PJd#to,Bᢸ峽m:ﳍ?Ґ!#*kˌ/%Q!bΥR'eh˟}Zk)gc%et +o /O\ܮK58P`CXW5FIBWN(yaFdLe-"10Fނw`i8Y--/j?䒰٘(9uׇէ^$x&I|9jxZ(k|ցN9:B, )x63 Rw;F +̧#FT趉XcDo1e!w9,ឌ\WYzEA9Eƃڒa|X2F!WE6Hژ%;s1 T#a/+#ǑzFb7R[rkHHaT<vM΁ qޢ? +zo o~t=i(` A/2F:ڙpшwWGq9Gjp<&RTGKŞWmkqN[󷃄 *׆[ +op/w_mSKtK b^c0ZB%+Q+xPV.g{KY걎MFul'4llenގIԼou\rHF(4yW- +> 47x짦H k]|#/]C 6AHE&=XXwpƎlm<9,!wsR jP <{%:殌4dX+^ @7&YYhK͚1Jͼ}a@C)~5j!5l[N+hX0Sw;Xa?8y CoV{V/*z"?NBxxՇ/pM˰Z.S[Wh?m=uT x0&d,_yu2 1I*\>[hGcd^ ɉe94'V7ռTI!z`&/b+vL( .1Y!#Z`"KC@/g,{v!KOՃڧala"GhYF[g%uCbFie1H ==scߧնMϳ`e o+,h2 X;x#=YޭyZ]@\J/ bJJVaA1dږ/w lLU~ w-sSǦIV˷tbށIiQְԜe 9Av,uo(l{{~[CD*2oyW{zjD3Cu,l94 y{:zGEt(nҰy&rSIas5G IdbG5SSu{/96伸 #8:)㌭wnh>aҶtOh]Pl-[fZ09sm 59RuۖW_))%Q?2~om +p!%:=dy!O ⸳*j􉕮'uc >p4s#u͋vNjXkIX.?rp\xٮ +|`bQx$TOFڠE5g9!*{F_" ^\r` ]{1ʹ4cFDkZ^- SJ6uM" +19a s`?-V"~׈o5!-0.L.&>ce6Y*ҠzfX{]f*A'ꩍ>%%|l&]DhUwi対q&x_ܴe`A 8 +jRt -F{CO}[|H?ﵡʧ)XlHJXxzy.6՛B/piuLKB(~y\Cmm#mbbvMl䦎 \s\\6pin%bd}a?P$`O?X̀^bmTS훊(!*5J6r3h`j +ȭfر\*֦%kqm_melp~qU(73v7j?O9ʮi'+it掣p#~hsPKp!ׄ=>M߄oi(YE{|} #* ,*qR,=C)]l~Ϥ7R6i}WCuMiGP/NLޝ8ߚ!/I'&m]CKR7[#XPt#WJEF*1Xtou4&]{nVx{m>^ Nb~k{ W+RN]Nɻnӥ0،Zr +Xlkߢvy:zGGrKKޮI +#*3Uv 侙ϳ3>۠A$ڳwPD'1fMPGo`KC[qwUHPN<~zVDK#=#7]uwZ˯.BAk>81g +^RN9z﬏T= I zI?OO򝣽6g02+mGvʦFt`XXSwf>{WM؜&yFI)n+sKU{;N. +.%зg΁^ * ȱOUBЭvF;4 [j*xsRidf648jO/VbZu~2%ԼM7d`3[Q.IEWpay9-4*:HZtsT*#虂X?uM?@=3C +Zp}F$"p:Vpl'CZDz@Q᳕7 +GHi=? yg.]X +Fw4M=3 J RM?p;GP3#td zJ Y8d_y-v#mPrռ?[\UJv*t҅}S˂ +L}bG+=2h_Ma#>G yP9g,1S"uR"rJMt[KʧW?c +l<2'=2\ ].ǫ&B _6dᲽ:ģy ,D_];Vhk9ޘjHtTed_(ϱ+][; )hΠNmJh9Z/ޑ-).=,ǤnE |yaT|;0I'ٻ4a+ cRB:>ū$bL|KUŕ\^c} /PW&ڡ 4 hDPHt L RN+%nU\A̝bz\m9Xm-᷅?~#ja96= ynD^ MyD`b?ZjbO}@,475^ KĪm>POEh,kl-E~hɱ;߻̘C+ktzvXAhFTM%Eλo"u&|p* P@M)~-!Wni=iI|^#_-{oɽb쬏%V;*cO.wU T莒;G-x,9(Cm*E*R9e:eFo/1S>QhM, 8Q [YOKdGڐ?g a/ )麗kU z1(A7gPpo_$}a|%ګ-K/呪7ޒ;=wm=77_g/`X޳8:X5DU`V9 *aaZ!fp)Dŷ܂ ZQм1 n:3J#{HVFn}JӦC{_I޺$]-H(c7sGch +ٞ'nLp9HhA@\g65]}S_g+R[+}o}lIa~_ +'EhJ +V>ɏw/~;J*zMC@ C㶵x`n0;7fi>(Ѱ ɆyBy`of]Y ߌκ}̋㨴hI?ih6<\P4}KJ;P6f1;&ԭǡQ oӺ6L +)Yå}{z2s`w[{o_A&0Iapg65TvŮ^!XXdwsm캂$2' R-'UO7wǝM` QMsSΝ$QXU`:Zr,⡉nj\W7{ZZͶ\/[l$g<$OÈԓ~Ɇذ_잂gfij&87/:'c'\LSlB'! v \BXN j^%ym}2rz.;K)q):3M]rR>,x1ϹVS9/A|pB4E%sZ~΅萒@>Fckdc3Jx{Dٓ}`WG@^rM2BogoMS!muyVƊ#{U"K_} pͯzȼuI3 m=j.'lZ#g`vјΑJ@?c`[-<$!F~9&`w&۶>KEQɕAԇyϿe~~̇<~3~s޹דwCU? EOwyV: HRW2*|Ž^H۔S}lgaW?s eֿq(igt+j^ܕYZܛa?DŽ'kCuCee$U1[:tƎ^Rb~xrWa!<S<2JBl7S|{,%.m!>3}YzT+a.Uݝ|UTۮ'l-U81\>1 +ʨ 0唂E%H|j~s``DB<+yynOoS^U|UK=ؘ#Ocb= lnλ1Wx_9n鈕9.'wz2U^ˑ wO \ ?~ [jzwK'̿ʍli @wW]~&!eJ{BW0D[Ok}s~dg_g74lݛ [-Cj`FmL:>&/ak6Nxd|GA2t5/3{F\% +Ȋy,Z& 6so ം{jJ IYRGGSq神7dI\z^twU2#}G.d]>"dOL8*fu@$F 1نؠ )æh ;6-%x%q^:qDsg-k7u"%Xj}anx19afX爫|u=Fh4s{^):9{'V8>!YYIr*?w$I|r4lt%%짿/.tܷR} +>ݥ֦0{ ђqģyfjQɽ{枺[Zr"R2ZgV!!fzgRvRׂ-1 8᱓k3+zne=o}_V?,69~ǧQ⿶Hџ*Ⓛ +ߑ" +#Ɗu)9g1ļ9R)NNc~e/c=p燖7Ȩky4@m n흭2 GM:lSmxPVAtClhP5F1Kl ;Ūynl6T40SH_Ɋqd7XiZ~pQTc4g'G|`aQ󸜐\=G,q=3Q܇qXԶR{h j.;ǪrOS7ԥ^īij1\)";* +5A &Cz6l6t_EH1+C! jlLAY3`wմ: 867nX:0I t 4jSE.uRBZ\^@OsNԿy;:" #EH,qXa3q`cqJJKoLSrRJzLġZg[cg uȡl5 5w8ˈIc,aV[ašJvqy$!iqT+,^k^%e[ +.4ӳ[zr4,vut$lڷ + fFU­q$[z ^曣 㒖ګjDŗ'ȹgpE?!r˘E׺ꢿE|R؇T;nL&rzYUG ~QN--hg7=vu{扽V/7oAW?<!%nsꦌXSp⧗q?ʟ]JPm曛_>>c{Ž֜+R 17#'V0Y斲7{:2|WKCf)E +Bk쮌{r7K-—9jZ[ 6>(k^kmile!ɾqXtYJ9ҟ}`: Z}BWh 聅Pi?Z$|^bs,@\]@o*]B;%dXFGaQDt#5>i#i}]6FqM/2y$a|v74,䚀}j]ȥn-Ps:jîY_A9Rhhw1Xؔ|3YbӜ<@d•qԻE:9|,;KH f(u_]V]s@N,HPAl9=KsRX䷅M-E&Դ bWKR/w#o'fXg-ߏ2_yoͰn 1+N f! +j^McSSVr?9ii>1cUl1ro1BizM79v@k1qZr_+Z^;BBOScK?O~!}7q|Q+(&Qw p|dqӑYT̤skB8%& CgM`򱞟sm2NʦW|T)R,63 +ڞŇf*ObVNEO=(ba/cČCb~Y"7i1A4Uxepiy90Yz 9-2q[/LVR36e< >F./5ؔ2{$~px㟣AHr&13CoLP + +o$TK\Tp.l 뉥!yo&C|RLRb;kv4lⱕ'{C뗣*B"zlaqآ?Z4D;Oo@C\rv_>]jx1Vh 6г7&bo[ z*oY;.:.qQZы{T +0A+(9Nu;Lk[:>{,l\|4 a:!0/m+_t`b`d&9\JT\Pr7(Z#e. k= /6h(įhdSk.ԙwy}iHM. ̳ Ak/ ?l@Ǘ{L2zd}9[vMbԯ/elHٵq~@\e䛆sB] 4 X#w[1o̍{Jv ATucVr dȺFpkRLXҔvxI%isuH1mPNXhZjŐ ^)*(Ǯah=; *闥ΚqzQ}N//.GK S$KS 3?{F쀼?o/tk>>S֖ +KbGAZrϫ8ɿ6UJXT?:~g{ltAt/ߊsZhSfhYw LxXC ?ji!o̹)RY9)9/'OӊΠlQ>"Y~{v)f`ޝx|_aHі=\z3 +z>Xxwߩyܧ?aRods>[c3c!BZtᦢ6t汃) y|r˯ #G?F=ܞ#3>^p{Sw#SrnLSGa1)TrX/a4+r\_ɩw5Tq {sKkM)302) k~`y#3}leѷ ,di7KF[!Ҋa)Kד*BjTƖ7O?[?) ڲohtsb4ꐖX|1[fZ[J_hH`a-d< (x𠒇Ӓ"}}ScGu̠f7-9uLS6 g. Ox~yWsok%|dҹ_1 +@ԢQrꚔZV!9nUYM;F +ԫd-4 !e.c3?P0 +]3(!Yߏݔ+$LSkJ+VJ}kdY1jƞ?qR|!xeZjD-=qE2[q{s}qvR]s+g[1o!igwy\h1eSҪBz:xuʏș- *ke2kYJi?+?p GkzNoZnYC詵k_6;9?\8xqˀU +SȔm@lY|(<짲{C*2?dߋ2s?X/3 s_*yC0p`smi؟vMLl`A\f{Q&9j/#~j^tUL'%rA-u皆p3 E#ūik~ jkuקy )"qG)iyYL,>M"*{2BL;blJrze0XKSJUSm"v4:H= ګ f9FKƁ,_;iYFp_'.j.:Z\%9c|fNAw[Ffg ]=OR▃c"aCnXGqV63l4Ա36؜r5I+#h&iSt ׽߸emoi9H n_NqR.%c׭2*Jt@/[&sMƇZB&!/ү2VrF&TV@7C,4^B, "'K9˓ԅ!j8ȧkd%m;l}m-ĨpW95ۀ+_GԔ30I^sY2Z\-g_JGA*Z%XG)k +ħ̓zn(RwE_hjZ %:06vc °!9(jx32ԉd#ߩ[_=AVF*)9pNLχ.cU R1pW·mL+V)^lf}Z8]`;XZMr}RV 1uAcxMG)6iM7 61ͣЕ)~gꀊݰ0Fn_Wb&g(y־ʻM +TкRLriy~c=J6;x5\[+qYH[JIR&~.rv]PhiiunMbQxQ4s#ur`3_ҐJww&ɈEDT@߲ͨ5[DžMƮ/~THl^.6 = # <1PQj:īՍ 脠Y6ˮpN0rgZh᮪;gZmn:;ز.A*uϑK*lg/5X'gd&lАK-5 gc7\WAͲ./crZ%mTd2 [~Sc˺[vD!3RMar=sUOllW;G]e' (ZGeqhmFj[;&}ug-v5\CoD|Z^h4NEg[*"ܲW!oB>w^؆ 2NK){B-hմH4u4F,$m>]טG=jm'$0c?'>!ַ}ZDZbN56Uv_/Kebe$~tN#ZM=S,$> Y6s= <԰;Kl@GIMR>,.LVَyo`G–M66ݳǑFlOMXE9ϖo az80'lڐ b-gڶۀxj>M3 +9{~lc"[14uPnf)McSoAv/p YZKC ׉xaKU2/| d*%i3:ӌpΊֱ!M:>05$δ <@M\ܰDO4 +uh/\5GC+-3[+6ЧgV2$%:)R3-B"&Wo8_Wy ?Goغ;=ft3N;]tب % )v]3wy~X.羯Xu_lHc"xRpH/޲ڿ..lؙUs vwv@-ش5֮}=jCZ_ Ք|v 3,_o+&D\豪- 6xb-ξ<-QL!> +xفNΦ}TS>"f;(}@뚸j:'l;jW,zČqKf5EK쒉~\?;ߡh/KxY8әowTwR{#n@sV_t4 de7GUXuTV65ZEii&q/*njiĊ{'E7HUYMbHXЋy45k:hG焵avtb^ဨ2(M'V1iJ f,GT <*ǯYh=qlqwUr0;o>v8 +Zi;oOnױS~?kNZC +Vٛ]@3Zrcgg`smP5iu:I`N63Z6཈"3zp2˽L(dR"85 jN6'݉.dddh;%}vNxض +} B H$-=JF(/~\{-=y\O H~Ftvv+=̢mUG*5OH;}݇:s3r~=E4>ᵎuZ5mS7ICP3[Xřg=+fǿ*]_G]z ;oW>~mID>SwϚ z,Pu4Z9Ճœݸ,55Nf2_ɊZ/%yI%%PCKՁXuƍz/! +^{8nTWQniߊ2bп|xGZX{]§_JҪߦx ^kD` }EOJdUIbg?]^My q 7Hƥonށ8^˻:{f0v^.stΓMIeUgQ?z_ )1(qb7PΥJܽn*t$i$Gњ0N'خѪ|ZxT%]z\ZnIw9 v{*/Ɠ<˗/AտzWt5!X.,Zn8jcNjJmjm^m(Ξ^'ިg5N'aIWU8f%?@ ~OJ\Jp4s +V\₵ӯP;z 춙tb|(:Z"L!:/J9nq{pAwOu^fSJ]Ya֧e}dDi)rW+qBNLf˿Bn1Rp{Uv8ֽn|0no}a,(joe%bԼW`F = v0_,ʥFG9kp̮އn>xSž!} /[@\%X"k^4u%̚;[FV'6[Ǫ IïEFL-> >z1,ҵ'n^s{2u%/kx&B#tv1C+K%!kv*!؃UT/{Aq'ť]Ck/ǥtwXw^W\zKnXGpmr{KG^~ʐ?΁I^w5I3uE}UKȱIۋ{ZZAum98W)~;(|z|jǿ|F} 9zX?n\L9$ +w &.Y)v8s*ƝCǼ +QQiS/Ɛ~~k^xBzc[ E_fU) &4,%[5銾QK`) qꇅI c[jV om=CɿƲo@%/(D{Y{X+nNCI\11!씮T'ĉIbSyMX69=˛m(oK !RS|6FQ.Z{۾tYҵ]j䊙p+GaVu+.wvVx5 ȟD\C {_Pŗr%\=w pgt[d2+Z9M'l^4u)"m!5'O&C5™b+ƜXXa .^Kil/^B=(r87s)!SVNT#o^.X21?!՗Wת)H\hV.aq~N,/aK1 ro*MBv"5:tiȕ榎 FMOh#.H.hy[힒W6WB0z,T|䐺 `n3u )ѩdgKۛݒna!+ UKߢﴒ'I^}pȜޛ9 *jCf|eѧՔ9H(t6O:ju+O`4 +%4p8z!03x7PKKߌs{ +`3쇀xr|o[ .i-1SQfUm2+y m$v!@QEJgٵ$e6<+.eM]QNd1GeNM}V%w) r ;YIJ&$^A#[T^ ҧx*N!iJ  QNb .mQCLXҒBQܘ + +Hrݪ<^!N@E^a=od_cSWd[wWHG0KYl).}/}ƥlƼ7vt*NѤTН-a5q4{(&.vH\OqY-EV]CDNQkқdWO(Ѣh5oۙȕAhDr蓖vJ_oSNjoNy.fZ?Qo}rыL7`/Ubz:hKӒ5ߥa-Mca_O(RCy|3k '2 T6ITO찧KQ 8eɳ0vkH_X?9gMcjFI#dhufNTzreIw{\/'Q  rH Y)B͇:|S#vqlC:Q>tP{mvʲiZJU|Z C(dh*ɒW,Cf>=A懑fCxM6됨@Ahwϖ^6ݴJ&3^gik<in۱dE9VٶWcYyvY}njӶS#MOQՓ(h65ZUH 5cmXW\ʆz0P{2Q_oʙ佚_SgYMm7`eNɁvC]RUK**0Dʞa ;sTIvk-{Q;X_2F%Gn֫q1NeMU0dݽقxn܏DzY_- +o%uƊ]i˶C2an]8[ۃ蝙Wԃ5JE8jV"thp(FџrbQ*{*vή\k@NU/G{ImmQ+8H5mqgr̦`$0-8 fG`F?[vjWOF "d\ iH3vQ4cq[Z&Ʀj/ RM9#3klyΦ.ikz .{IUS:qK:2ؐxA޲С20c; 'Hn{hXv2f~]谞NַJL=o|+:$!DcL o3-Ceޢ,7`N%>%BOR*ep\zZQq8ժ8dae~gSmPY<|5LhOhBڰEi5`%5.tV~l'i[Dܢ3S~Yc$fO ~gKjl쌸,nSِNߝ~8]1gI7$\]Vvy!>aS](*TU1qX9XvK#|9b 7#; għ1J<^Sb|/4vK =6E _Ǫ vb^zlcYk( +۵XK +_U"b,ĢUe闉< ==,d˱_`ɻv:lII>"'#>kK:4U3A,gUq`=pݳfӫ#;"}x|m3RO5~4T+jt-jG bt%ie )C3&qJ7'd8ߕzUy'8?Ko4ںL>JPY9gc"m׊͸mcL 'a |:F(/NV6toWv2S۰;^u2U};dFC(Ǝ,l% 㚴Se?]-<`KS6·yr˂i9쒽~J9kÂ͒ ᷢ &uzNuU|>qmuo Bcn99QWSn){Ffن~*w8Pvbȝ :NT艃V*u /K2^liUIVBξ .`YFĥ^|>Ԝ|#錠cyۍ&E(Q )w+ +t\ц *x "b%{:R֦"lE~5Ή3}-,L]yFO @oeu? -x)*WM bGPSR>_<o6yOD*@T:|0o#\RxK 9㎢á48jkM}=ڝ8}@'sdLXfr$?T~<Ff;:B'GV߳,ֿiU -7te![)^1gwNsX!/SW̨`dh;cF>E;0VZ2w.kOx |y>G*t̮>׷joNkX)<&whkD)?"a C:|>\~e??qұ3O.4 !`8דM5Rw m-w]Qq}KOmUKk.|6zdݟ(pKlȲdޞ)yDo+]Wcq7G7%dW b_G^}vt-5k[ ]?$0)ޒObת 泣+ Z|X)~B;{Jvum->%)դ2T/p%ǥo.4Ю8ޚt 6@{O}ovt~xWA?7Rr7deJegC`W![`6Ej? |S>Mugl([Q)ǃ* ^q<_E@=a}8bMi^$ȦzFҍQYV&K{W"K,.Јp4 ǘ4vD]*sI +k}q2 xe>ӠgvJȆ=`(|:{ODWfm::  E-u95,쌛+J\[Q~׀MZb#֥/a@ml*>kκ|* Fm&11_uYK0іDAX{3'-ƔI]L| )kw7nO=q4e=VctCC.!5 +j-Wo"fG'en:H$%B%0!홋_{ xis7݆㶼sM ro `ϹΜRD]1Xm}-4ໃwb% _'{V.?h|,=NL>^[=P,G/pr=UǪ8i>$pICl,O׹7' Q̸Vf-3֑E\琢~e&l;Z!8꣮n=OAo1VJ\O9^·^ת03ݩoJ>t`@S=QnHcÿ'Tja~ *0mNoh+Bw Sy®<43c(߇;@>ǀ<0/ND/PS1{?ԘD3滥g-ȑ_F:~`B~rov~vɈ1ɷN]#̜/7ǛSnMfݝj/7 a5 7Z/s[x!:82o=W6^Tޟ,(RF%Ѳ7Z 'D= #c[Gx[δҼ.ػ,!kX?PM.gA7Ew*l &rrCjO v{MFF]ȴc29 O͸}6@__,U#㙅"马*+mੀs >@ϝȱWkxHCӉ6tgS@MO~qd&e֜ܤ[ܸ붚Ǹ oAE~xs,āp>z%뭅b )|ߞQ(I7DU-rid7l- C<:B]@--zm5ͦgg] h\͏ܶ3ыrlx?ґ}XEh)W ZE&(Q-2VZ48HkC.?Lڷ \@(M~3ߛ~d'#3.X UhNlh>LOǂcb5euetwɇV ~d/٪xSDž^!lwmQwW0]-.ʬ\aS ĕ1+R:F?!J?1z6 +{cEPg 0S\)6PA BL=8 y=^|U\n\ "J[K>,` +T00SVУ"7] `– ,?T7[t)1*ׅ.tgFyaEȼ#"XwgπIn>um`!(w6:e~Ͱk&v GS-wz/Ez?/b~y>^?P؛pyuy<,>(Ou!Z.?^vSjsُJsgB%u6/xǯ,H;SJI|2-Kc1'L w+)uqE dL&垚}c;ŵ=6y1 G<[Lr3r>G@) ^]6"'ɪ##7e9_L'֡cĬ'rt%"1V -i~l}#T|Þ*\ 9!H~<ykU 55d8> UNGONTAWVem>AnbU[Pc:BSc FM>.r__ qn;9wvAftG;W7€1[*d6Ғ|IQ5/{+ )ヘpyC +Ww贉ܷ9L]#!}UA>ڛt?e %k&+>tKmxiG9q ה%>kca6 +{ex!0ѣ9mKnJ5rnp '.=vrBlu9YǖG :vUU +p3>h=竝Q1}aB̉ Io#o3=pu 1Xobf{f'CcG7&w haZ`-KX({+/f1 59GV*QoDFDE{Is/&WۏFOw5WHXݨ~j{b%dGyq9ylm-*@:@liJBĹ~€#KYؑ[`[MN*Q2ZU]iVXuhu]I>h{džˉ8!. F}^x?G3liqXo9# .?m TЮqIzT춪Ĉ֖LuђBNƀNSD03ٖc]A–D9_-zkKz8ξ|4D*>m90C،)2I(;.wIaT2pPUmFX$?8YN `/Kyđ^LO%9o3ᖲ{Q{c5βbT {&Zᢤkk؛?,D@_ֲ7.ƌC)cSRgبM6~ f% E:ywӲ@^#×g~Ϻ.5O3+o͍W#͠&bu4Vʡ:z s##\rnz8֖p]]濬yM s^:E+jlqyh'++)cSLM AӽȠ=sS;[cb.ͺ9ÄrZ}#JV"Q몊UuY~H1P鞊𑎒WoaĹ,9L8y2]tb0 Į u1Ŭ*@އ_/f -wҐG6br_{-iNPD(r-+頍~V ЌNZU +A*ڳ0˝%FZ濫3N !s UuE[N{uCs%{qr!%?2|攴y))ykV ?gM2a͌J:9*i3 SOr`eO߸Jr5guٗ"hY^a38ъ8źm.[RPִ{zD2*6t={ v_1}k0W)Eۺg`|6UߧvLv^W}̤ܯv6zL;ys顓8uӿM\0I;1NLUY7!#Ҡ>dב./*{984m9aL%Zʂv. W+rSe:+%̯́S;"a[W8֕іp+?MsU)LoeЩM9NHuel<Aـ>J9hw^S)`_;ԁa&TܡY%&Yy4Ďc[W, SJ>j+M 6#,*FL⚶"%}XקݳqnƬq)%͠G2\M2DK5:}j$^wuYC6!gEkؗe9j_eKrn%gc,҂{3hsu{P|l$ZɅRֲaEn[iE0yq:`]3o"¿OVӷvNԵ) +;=v`sǩ+zhe 3P [NܭَħgS{5jZ 6d &iK / ]SA>)K}vM"[gEP <6o.L]xĩ74NX{o`zX<{P}gݱiAe8ZAUU6C~D&bQ:qD)9O͵# $+ z4']BfzNq6t눠n;[mmn˚kgKtoiH4ܱ;rҰGZA;<|SOL)BsT?󜶯 g)j.rVYV+GMpr5^jOgM.{;Xܳr|$jJh +Ū]t ji?sյ}_b7Or8\K;DЕ-+r= 31lRGF>>x}o2t0-|;ّ",9nEΩ.wRڡde[YTEI9g r9)*KV(L f IU{ܧ}pǸ=8= z`썽Zs~vX' g4ֵe}vd{۹9hpm6B/?E3 ~4,E~_⋄A&^YkoCwͷk}8?TO}Cְ6JQ[@--ܮo`ZvI+I7˛K9j=aLXP0H-c- Va/o6G)ayoL9xv/N~a㞼ݕdnm˃/6 p]=L/$>0/~9GP7%h. u+hqidmwCYin}]:OZ}ky}f rpט6iX2EWݒ\dTEj(I+o:OȑEKi􍔉r[&BFXKc7:N:4~mzX> +grYǮQ͐cKm4Xn\ ݘfFm5gKKoEgv c:zX'f0k +us{_R3;FfwvI,IZ+laKwsyAm)ul.{K2Y#NAd)NZؤUMoW݅Mk>)$+pu;jjk$d&}2KwD|ZB_IZo3o^b@N +˱7s87A_If؟t}W !v՟4OBJ\/&MJHAiY_ҥdu4w/7kUMl2C,<@lBNg(Æշp]vn I{Tvͱ:j#!a9;a魘Mv{m߱kB5:(+q-~p)1|-[%ӯ'o⚏P³Ԫ&.2zgw}gNp孽=8V6:)3G9XėzUѕvy !͝q=, +]T&eKC+Kov٭!5"DU6?,8w"d d{BBNxfx?Hm-=G*, 䊘՝0ERgXaD4Q̅Ҫo_/}wIƶ1W(\Y}U;?2.~wQ{Vyt{Qr˺/WW}\V& K:iy|tDK]#v)X6$hޜVƨ튇Oy[LG_D!ϛk7B46lN.mυS$y|cި~asד] Mw]xV+kdɶF֧yA,mwI,7՞/ٷЉQyOohwa3뿽4U~!}~cpt QoC." } |wմ|9D/\έVEU$|:k zt}tm{۲6LiQqI3jT,( l CsIXIrC[뇰O.?[͟~N)&FLbFTjV%l?/?[Z7n,pZL̴_h)-\*d^[oW7h13)X#t[T*,"?EU@Xd~ly۲5IoeC,7AOmn7^yNg5s C#p];.=)+)ӯ"]3v{Kg]s(At_-&x|$;%k6ekoyUY)&ae:,QP._wS<fϴ5tO =csQ=!5nO +NXG@YU +y=I)->06 ?}rct::osq># \A9yy;7R,8fu \:xᚄ]\6n*`9ɨI +S0j;Y=; V3ܔ007/ 3+-{ \͎Jݒ+ī13 O.)M)m+AlRSf 73 +=᫥Wǧ7h9wڞT}9T]sb<ٯA|󬦐F8\n8o;]b Z!%48,n]3KBJ1?ǒF4yy sxg\Ki +îgMڨ +S>}j cܚ]{&i5{} u3.&heA4lMJ>R0a9IᬄeΎ=+F{fpP@VTe[fC\XY(mV>5DUXV^ΞC9VkKI vq_ ? Q5)4J{!=JjS,588u[7rpIX6bC|۵ \/5VWPvOOu/fʽtupwY !%󔪝y|q=T&u!*FmNt yE+!B +\yRς dRȀ"ڤ҄ILt 8з(2f8wM1pV q7 >9" gB%@EUVM!杓}r12i ̓ʂZEJ# X~-˧A΂=Gޞ# θ&Ez=دf ;"v8h-5XhRHBz =GrMJJ.4|q9 tzAnv@]U{)>9vywѻ@Mq>5wvam~6$U=:n4$qCrdmױΓ_߭lNhyn^Bŀx9jBj>|osкZ˞K]֟wf{K3v.7s=gpY<2jMD+D x fW +*7vP/ .I} U +.2{b +bmxw3t^pۭq܍Q#A7m |ʮLhީfn+-3xt +vÿMmV_6;lEroͯ"&r7aqAMcSЗ63ge1+PZrUp:܋|H/nLM/h.=k[zIM.ȹOBiwvXXXI^B,`߯M;y%mLnn/PcV&]@TǵlP15󬞃Ih.VU |Q>S<Ukc/CvfuiTy?$ܶ u%M\j +x"3C*-r;| Vp|HZOS5qPtg h"pb A÷mZnޚbNkw~~뻘ZXnLJ=x}$ !Y9"Ƭ + Aһ60;NFY}yv,[RR-2"13 "ac{ї6O,jiZ(jTɃ&4<$W_4v>B_HX8PGZf1i᠁レ;C6 S̈́\(:f4S[UUGʿRKo`'&e>;4QZzS>b^h9My_ȂHw ++B"ee\stHXZPn \Ԏ>stream +| +M,ʞޓ6zS=[&V(v6:E;Nw52XU 1bgu5dwzA!UƁ,0ONmO jk΀ElymHH^gWo&+d埸FZO)RŎ׽(/O7'x]pm0/}ʻB5~ᛥ"r!sY-~}0l+vObn; +tɰb3ì+$ >7[ooQ7GrnW\-&zHΟ:X{u:ĕEUU权tOj/u` /̑*ș _,\[FmkV6JE!ݰy~ON8^ވix$ϴiwjsU}󸊸;v}3˯(#ۓK[Բ.h0=jRSXEkx`7g +vmfTCu|\kH]!u&|kbX +iP1D1?GZDjإBF糖ͲI'+VW NnOAY-&1b=䚵wKg߬B +B࡭I1Wm׍1:#-ԒOt'Qo#X,j -p|Q\Z ߜ^`L +Oɥ_ba&Z[PN.:.""rV[RdžFU O9ذձ +#vsL# +]ث)52О]֠o41= SfaTG|DP쌪 G[z3C)}ZBh԰f3jva@&Lluap"pۦKK|z"K8~jx\}Z fv5i͝IJLhoy&E㽆/45ԹtgNDk]ۓ+'Z}QҠ)W0; +6H͡+Q r02˷^ a@Hˁ)50~jFg^^]7_ڿ|<5B/wqBslHD΅oNPK/Pyb5 +s , I˭C`I;@39,cB/{ o6iB/a9jhP'ۂ_+me}KJ-*c*RmDIm+-k¥]0i3|+{ifsĵ4"[y EYĎ2KؐALϘ⠎eB7=GZ7owr=н%`0 [4{8ND),zrA2pׯc;/@lO1j>:5oOݙC\ (p%I{15-,q[cq%w'85»nZ&ol~Si>ka‚JR{w_wTC/ us /iwZY'Xy1s-!'T$5 -[g}1עJ63j7)]bbwmLBX* uq1Qӝ';;yB@l范Ni=[S7WV!ǯaA&ӨEbmJ_,KEͭmS+Cc*4"( L}yD'blx~?~hK_=IY9\eXǡ&-,ovէmaw" F7pN$c㐓|cLoY(y(޴3~W]^ZZ._yuPg |J.JwL{5riSQjJ1ng)+D~Sqtx#rFkTA+XI#լV+=GUG"Jbu#I99kYq`dR/51Y p@WS &gyJePlK$,YIRPV^Ne)#2 +Ɇ_'_LWI Ɠީ˾E!3k_9Ŭu%+ĥ^ +꙰aDoYu(Z}=xJJSc'{&ybIE't㽓nj 6Y~^e@.yu㰚L<6e #+]=S肀ܘKKbxNOmq r1 s1{B*bcv\QLE9(>z}T_dw̖yzu@A}~J[)I!<%ȇfULYWJIGۏܽC|xDlϘQUٰxp~5H  +qk넪wk/:sqY+kK&be,ZLxWO\øK^LX1(kEHQJ6eZ 睄_܎[?-KAEMLH„rZ댆,k=@͑YƍάCu-=t@Wm%ԸڟmVLE\vw˽Ƕ1J9ƪ { kSe,bgP!cEwpi!'ZmT)e2[eINGKKY[$aEWX: z[7FN'iVD789:#i-'<}s糒*!nX bꠊҐ0 +h{+V@;ؼ=K,ĸqod,^ ,;tM.oN +^Pj6tԿqI#˥WȼG + 埌0.S鄎yM$e] IܚYgmVot}>̣K~Y7>9ۄw▽jA\痔 {;Co}'8n]~cu71=}`sWE]'gtdʔ]Т +fZ8>5m *f"U>Lhkz.l7J,z!iaѧIMs}PVbCʄa]qc*BPɟ [1cuA]_wQ+VWFE?[YsXM~eO_26-/]yp5|4!7ŴUk >:G {㇍Gs؛iMyy{+cek/*?4-p}+w0!=aoeS$$$I=c{8+7_d lDp^tZ3 +xlyo| +R4rD+MRh)#?lk?g# WYܵk; 亨x?e*Ă$yRYHͅ'|]"HCz.vGA=^Oޙ]{Pױy&e{eIoʸAC;0"3ΡuFtvhǕQ՘O&*{t?xF 'CjWIjG0.toTq3VE1{?-ܜWy{eOvXٞˮS)`Ȳ]XeqohUjyVW?td{wPfY] kwѾCY=`wșf,rH'-h${ܶr|#yG_N]t鼋y.={#/]8}˗/]|#_:˗]:w•׭˫.^:{wrޕ yV{[#>h~WpHgG"0_O~1-'R`s`?8Sؒ#`!ȍsq27gϝ|Hϑsg䝽S.#Y]/{_4G\%+wel[*ZjSIXUz}\CBrB'EU|dTÁiS284@(.jbUD4azȿЪv1\<&!z suRc4t]=>jRJ[T+k-I2q--ԆjrB|oKؘ ii3ryR8,7+ Z5# bw\K(Yg7 _&z.&̶ZK녤 ŵG]CSw-gFD +%#2^^"}LA}Lh$A άKBE\Q +z]TlK]SrӮOܷxYsoϐz 'aUPcq)3 +r]8ҘY +wWv%e>meZBeLE(O5 &,t̀LXHKM)7f)k'\0/ld#$M557J [3;o2@$f:'YHXiį iN靌O$ RVYh(q9%c`ugLάޙ1Zb +vgZ/f&渊P5X06 iƍbfPGD4RI9Ă +i\ qS(*{vJzһ&=X6`i#1gmڬ6n\SỎhI 9k'fm_C\i]{{I+Ԓjw؛>5(biOI=6ld# v.!.c,RI"b:XlpYYIi35B"fi_$b嚇ew&r{g|ɐX4ҕ?9INьGo[knhx\ Q) NgvBFAoOgA-30 s՟FI}/k6кZRq I/l<$0S ]+W7zN,*15K\}8yGG崺X^ėx&Q4>݈h耚鹰3u!dltXBGoM܉=jr^,K$M(-vPMPwq3> )?sFKj鞳4+n7) >0ޞ팑nƈ7rbwy+oN螴|z9Т3KYdq@х)#!%o.;y{XY=I=g11 ﭔ};&kCWf;]@PE . wm|{X]yQŽ3 +qv˒Jߝr@!$<[Nr^v.[=]:ܣְ +0 +bd_uޯc$<|Ȃe4HʂXW\G]W i-#nbz.2$M9x$p*돘䤕Xv贃q;jbOq/}U(7;bzlBڷ઒?C:> >|IDb}H펙ȭ!=3Ϸ=v5,k{3ŨA_ &FWHiZДٝHiL4%fw%5&7&lT*ᮍOqo on"7/̒J*zs\tP9)+pq+evM.=3a׎Lo@NXۚΡ +yE,J rTǂƍBJ\/$$@ h- wR3&}ZrSK"~jŝA,8UtU(. 8i?+^i^XE޳Nse-si;RkSEt\#ʌQ@5 )##ǔď]Poz{H-&MެU5eQ 'fץ+Ba<ŕ9nM-N&.MoLSJ[~mgebQ@DnJ/nOCnnd iPjBiH(Mw$ LOA,^`wTAW3Zc*lv5-:nkPxI#I#V2Z"PR4v07ߢb +򽵿?k#ՄR=M&9xU|` +1.@/bnxou2}48OkƈfgNŠev),G_0ٽ=+zx$} 3 kQ@O❁~W-_y'pS|1W Ra`FLj9—(%5`{9=p쬓MHؤT0i᤹.eb#6Jϫ|2]v{b gW) =BH JfzGdBf+JX$m$%i,Z[.]z*nE R h٥[Ow皮쯋e69vexԊMd|u{ dܰ>Ӂs9 s] +kX I&:׷+ۺwݴM-iҤ5.8$.{?^s80}_y~{݋!{44V-Z^lMngN,wiHYƎ}'H^iLiبAZee0*hmYx잢e@~)8% ^QlO际΂tFdy&OO1\+K]Yy~>㞡90#k~ӷ~Iaqa(59 >vN#U7| +bkأ"gL|s5Zy1^s};99|4͉?~0J4)a{9IwN,_2+86s#UPGŧ;s~v V^i%^Y͏ DsEhlaȲA@ܝ&%|n` 0{@OJ E"4M QϠUS5}nPSVyB e1#,VS<brDΉ1ɰP3@&4nR⮚ %1br?+bY.{#lY ^ҀOj/LbN8)h ("i_ׄ-25xm켱-囍ފ [ksi6z"fRB +K!ͩ"4!Fޜn[C/\P=x[K/1A{m[\6CHTB!e\D-Yb.#6=*@+?.>GRIR>y\,8Tr ZQ y7PFZa*z|*d#aZ4X![i*-X9.`>=bp|FFWO_Cn9<$7TQ2'\*JdߞXUx. D[Is5DMQ`P!IV2K!ٰ z.?ffKIFVS [xԿ Fσ&>ݥ8)>L5VyR z:JY3MIr/7QcZL\6f +;IILs:1 rIa3`gkUJEۣd4?*YA$1V~kLPŧ5b_%_d='|i*r W-mznwZO#XI€Z,UEGO)yQl^ ob֦Y%:Ỏٙ\CZ*A,Id-/brijZ@-xTYRR\Yvt<̺|T |ei [Ell|@m򯅍[U +䁿at4 dɁ(Ëjm׳+f}ߗYk1$^)'0.0Y,dFm|>jV4` +|cu##Q.w*.%6d0׼?Fm"~@b¯kf 9 վGDb7Ӯ͍kQè=fkتp+xeYVTc\KT?Vs"6Fߚp6u s,Ȼ2q$d@S&O +n_[W3#g9%a6tLnud ('<'c2Ϋc,Opxa6T;ëZ>>LM\lC'=v4,bW? rbGэ³1̣yLC V6Vves s=8^ʍh4]b|~QlWͫ\]wO +0U$ ՀS FK/lMRB6ީテ'oH6!4*~UApI!+2?./~39ozЯ% I̋~-[[mP-c_-!PU&kwB(m(xk7WQ͉XD숝KY*jV!D9E"_;lS/dVJ8X[l +xZtL+z(di kc6YނB'{t48Vɭ2C\|cwX y{l*歌T%>ß!h}5յLu-aY}i^_S>z>h}8QZWn`=J(`SAޔY^ 1p*|ui7;̕zrZӸ7/-9 Ո5rgQ6rMK~z,sM=pv]P+gisw' 㘄~Σ'~CuGŸԜr]5\\!;˯ qlRaS1ZrIz7?ij  +(%5y1Бyl5{+:a4s~h.=gwOMHe7ǣ:F%4heuRU91I\՜shCi^M l⁻,CLJvq䤱_|+m#!kSK.C|ŭelO3;ӂ*RDLFz9vM0NEp XR-٪[-/IO 9ߥٳ̩VH{E1{Sw6vm/\]VWiI~҂&`yicV~cЖFhu}r%YH1mDb?Y^Ԉ5ʡez <IO'K~۝17 gPKv>d g S"07z󰽺)dnKkG$1X" NjW>cݓu؉&!ddν/>?ZU 'iM$:[&jI +F81!>=4 +֊׽Z!qr3<ނ6c¹bvgDZLt,y1($6[ĥP\j)Bj,iEpFUlMR]*f>db]U* +NڃO;IO%Z޶1RysmoQrZD/tsSJl|WE]T3KݓTE[Ңg:j&{t^̎edݩ=,rKŜ0_ǂ'Cz!͡&c0h4) j1߫s<3rkW疹Ef/vG$ǡ滈w0&aGڈqxǖ{)=3B(TbK#e{4| |܆oB@ݳֶtl#= gIΉgz7rjfe{gA= adJVH +Y訨 CA o|JB(c3TtKܳս eR/d `S_. vU<W+m fvy$슝iZ|̠kkIJM^J$Q:A^. 2"V^ lCGxNDG"~Yҵ֦vc|- Z  %;d` 8~M*YƷ![ #-"4 :oCn-s ٕ(FL\kuN3~ԹA} Q˸^3hZߝgnPyw'i>쭕K)N[*؝dfg8%;>3wptr3l!T;9eIfs3LuOj}aw[ouU\LkD,do#'E R4=3;2|;1#!ss9o%^Iӏ(m6 Aץoڠ^y!(٘~61s2F,5>dl A3kxԽY1fcajLz/TB`]s>Dss˼S#fmU!25f׶g@gtl48/)^#m}8>!ܡdxHHNxd}cFL̊=HfP؛cIz6l@4t*)>%5ãW<٧ɇvK LJM쪠WRsjvo7]rY]Gvʡ7yQ3E4R*vDȬ1lG>-qP(ĜMVL*(<ϸ=C ܰZѲP^h5-z5"`GwMV +OM\d\=ʣd!$Z.Svf2*?+,RKZl[E hx=&tM2Fèl§}s"񦂖3!-~%& :=f}ZZd1ԥ0sP/4BbuԢV019I 2G'V?ȚbVoeV,R}IaЬP5Yx9T]t8hJ/Bo4FgE‡s@Mʏ0/&>|NlN$_? E"=Zy_6IEP9ۯbC'1c=r3z$-ٟ@WI^Xl +FBRmʖWi95)(fd{(~5q=vD*؇ZjB& +jCƚ0/RvJ𛄓g*1?f .g`@3"Fl=c'Y0&\S{29˯# JR!u=O>sAX~qhx^<;PNԖUF4-1cm[EE_[(:30qn~cŞ @M]E{MjGQ0 +!7G-aaKr49ͩ'fXPZFb BGO+KXSV Z¸*%#55nu]KG |nW/-+yeS̠ lI~gi XjBzD[BJގ3YY6m%帍 6dؓr}WtIvo+$EؽȚ(WyUqaψ1+<YY1Uy#g!P op1om ս 5wq'mRԲ<DQ;Z>Υ@)~BNa1su}ZKB~%"C}\Qh1q{|>!f}5vF5M1cM}H/!^R < +RrHS-j*e,Fٙb|>! +criN3@74 x$)q{Y ؚGF416!D[T2洨ꏵP3ȣ9&nufZL+E,BF Ec1S˰Qqz4|#~ѷ|%Dࣲ^usQ]KoA3!{ bΎZxm p[ϩԳK'{0{GF..d0c|R j + e5E>524 ւwٺ00!yCŕU^qI\FlC\^~ )bʁ#@!HZPQr=0O^T1h^ HdB& rY55^Ss:6m.8r K ͂*E|EҏŖb 5/bC6㼬9l54L/TٺJH +p! jF-ٳ[G }όYXh^=1 EA^[Vy$b{ b8eV"Cs~QʽZ^  +d3lH*O-A( v)<?h!HdlBNlA,[6fb/dc[gpa&z./T7@V*ίT\~. $lGgdf]U <䞡FRMV=]tyk^ETݟsbL̿Us>ťb:+o kAnaPs"Wxߗ숙XxYKdI4$o˟A-V/_DD2Mܞe-un2Ԇ]MEF)/lD wLK}lgi +ګ "0懋ήR4W7W=ϫ.Ebr"s_k7~`$L Ԯȩ&ts,[>E0F,-jbVfEL/#.Ef-N# 47BBoJ$FA[V69EK&^`^d~@CrMNPjzg5@"=س6G,P39!Y7rVD k$V@ +Uvs] +zWAo0Wɫqb|@CtP3wqj΄C|_y}ZT ^& +U[CBZr+ń=\y|7=3@afԴ}+@O Qӡ_ +"f:Ք BwS5=2?_5@VQ}rVD >"h5QZ`~={0b_W- @^酴U,V'@&Jnl/$rw&.x2ԥVbDLxr- 0q#[qv笏P⷇HqoQcO6 ˟gY*#"FrV@ˏfyE|o8ڣy5:@^rCVvkkxM[ֶya+02N5m52y-m3A{K 2a#x +phYtƽ'ՆRY7 zZnD/hŠYJ)`m f.+KvW*ϯco/w⮹'Ir ogpjW厂ca-)#c4U2faXA'Ϋz)ǫ91j{$='>۞`gQևp7= +cv[8-m $܏@X..ngf@Gݝe:FQh9scv!קw'h>%#w>el ]^PgRKȾvԯ&*ozgP?Bf߳< [2íABcο، E^%)eg8d<>q&`qGIN iX%H8B83ӭ&$<} ѳ˂Zf܋KGŢr}OCrp nB:)ذť5qQhgjJc{ߥ=9r 3biCD5-YkB2 tǁ졵@րq [WGE +(yA#CxLbZ +idKrȿ/9.-xXzS-[%y^Cu$3{5dHr͐ӷ! KXfgFc1a= =kIA 9#a"{L#5ٚgȺdl# +c ~RҲ6*./U^^ꭺ3{\_U">~\߃pgx҆u(%a{9Jss;Q'l9߭v'>DYQ) 0\㤄vOwkݤ[)Vr6 ]y~M񹷕g{WSd6\ymsV*JcxcoyUcR**Jos=Q~uw{ s;"y$t Q"<=SAroJPU{WnRp7zn _rNYbcBzjrOr/ABy,T(fʨA( %3MMsJu1|W)ez5rcUs+jNk@ԕ~̵m =9AK )ſ}x lT]N3 cViu 2dX'{gX%)jo=H 7NKqO2\1A_ů*aA-41!b`3[C=LB |:uGI9xaޑ=裍y88*r-̯g*+;n5eʣ CXYUn-=of|g5;ʭCM](}ӫդqzvp=ȇzlQ |¿D ]K%x52B_NtN## 2phKӥv&"?DL5S(`4пopwHֻ1:nRֺX[8˳c'G6zHw6i񋽌DeCw^`{}hzch5BI0F6HtU]@c۲;ޙ;;Ĥ1q΄ +bg܅pmp+`F4Jr/(-9FO~~;TyuڇS+ +Dus+cZ.=EJ^ESVYxehg +8Є\ϔ;!%lql+N[K̽8io/u}s=eWD!C?tMRCzvyù0[dM)j:NElV$ex +f!au~k cfN!{dY3xG07wvF5.bnЃBPGqqo憾5YQB"^} :"x KkmBspY!xcUH N`5݋ +mc;F{BfӥW팱w>v墨`{>s~اӂz8GIL h>dm[^RW)sN09q70WW/yh/ak7/0gW;)^antomQmCL2)}{lo ayQГH?Ͻ.:֙7+Qvƅ\rgM0j'70g`en썕íZ05q ufPŕkwƥivoD4X.m{s{{{}3BK$V]L:֘7N3 +wZzdmiG?{GT ?<C"YZ<2p5ȥܦ|ֶög%/~(e-%3d$otot^~ZnP'a:M~g2$ZwKQ'O9fB;ʇsƖ*qW*q'e?/wnZ_oJ->qQp 773OsB,Ǎ.tNis5=)qsi^@)qdo_=-:dm)8&=(!vWظ=/]ā6nZۊN??#'ޒ\*g#lG]/?MrW<p +^JKw oJ~UU05օly/θƧloT4lt孵/7XC_ѷ焌"=s|{!mSҁ??ǞS'_s/WVޓn[ʎZ,Ɲ3&rsmvX;ü!nbʇoյ^@ɔ 󨳛;Xܜ}Cdi)9^#o+.n^<-igXLK69YsoOӿ4զ\qܐ~`8[VJgٙeg;NZK*e9_[ +^]Min#ix;o`I}SA>N{Z`7;cSG$ _o267W{0Wցm;K_зd|iHvu֑qAvO6kaoE[\YBHc$;)K -M3>e}UU_FxG:Gyw^VC)9 {]6,gސo3ʺ~V)a?P}仇Dwfm3}蚬A]ra̐ZHcfxbS)^R_`~?/Ԓb;gh*-ѧ=;%{+$g/uM9?k3(3|6L$_j3qDX= 'ƬkoL #^:sk=M-+QA ۍՎmGZQuuyisWx?*}wq4NdYuҘ?M2vϱgֺk{k=g:N_nH>Mqz}#cC_^#cs39FiOWg|m4z?jf1a`>KSy@ߜaޣv~.9a$3o[ +NמXx0;Jfc d|Vub5iůs.B<= :A +]8S[)u}ge:)qClfSXzbj-?az +LGgxZ|Z[_txyIї&?kN-g$QGސ[p'y M%m/pfEGIM|Oی0sCC'*{Ucy:_K3MVGKz`y??ޣn.5QH6'Se~go:hk-T}1Y)焔W + R+g+NY_W޳sFd9' >-X‹^b;n~0jpm@\MyQ}Cڔԯ\S,mnjN>Cj}N-+15M-Gŷ<*1ჿ 1RxCѲ\XY4ɏDS;AƽޢKo|˟Q9Tumm/FiӴ4na[ό8.ƒCڼ:ѿl{̄z+]y3CSv3=%?kJq襤׸s*O|]^^2>+?IΪ+>i[u|F?#sz/P*RMqA}~\;ᆱWۋSWWF'H:`*e>>>`h9CaDӘF5aō/}ksܖIAӂCyI~w}V#_f(9`.˒co:?c<0^x'.RfPӸ3FZos5D]>)>>݌9"/m[I={쵵n +0ڄ([}̴QKUWYYowvg5A ̟S|5[1QaN濬-%?;Gpw3Ĥ_9'j{A<3Jǔ$ғ;Iv);]KQ˫[Cʅ• o[so1ް~~CO>K{<)q(?an=ý3v݊sӗEo*f s?Y[SZ c̻k?d4eu7Gtu+c.v7ڼ![x}CASK1QWG?+o ϪLvp u f?掺9;"?8KL)|S~z em/tNfs1-36A_o2ҖޢN}(>_va-z3,_ 5~f|G =!rF|WR>|%[$AvV_+4e=꧹WGoqWzSM]w"kaQwF[=XOje=rsxpFm(;)8KWzg1V {GVq5%.;..36x.YWjyq5jsvӌWֻֻ>lPI1C@5׶0 +!RvFHqqr{=ֵnNT3"f(uSoU!ãPI,_[BNP+aTb49yk̾=Pfѥ#}K)Q磼l\vKuSڏ#Njj}/gbs=[~ufड)Wsf\W%W~-Sso[骸)kܤ4 ŧěK![z&Nr~>,ڙnrw& 0 'ֺ+/>3@ѽDS,?G&d^vuhUg^UP8?{]y3ͫ$=X4]YiY#]e ɋ}^[uuR)O{G_j[ +NmCn)IvEOғ7(zVHj7%qCEsK]}wu׃Z!9)\`$^ӯw'eԍ~RrmOy c }}tѫB57?^='\26C\V:1W%ګ.?04μ$jj8E{K[Zx_zi3I~qiY֡Y!,w{A^p_FxFVuO*/YUr9 i~()ŧfF=#OrB T{RBFHsVWN0S,WRMQ* ,*U/7^'+'髃(~EEym~KM.7?"F\r͵d=YhM{# bvmC?ӟ2Ʒ6F>l M"`]ҽ:IZl+}U4N#Dߑ@F.cW\oYWK.K0q1Dy xi)+Uu1,;%N1{:R龑Pص%D]7extCFy4dG\y?==VXrd9>#qk!)fS p{$hse{vaGA/ ,ܖlk(wgp5{c934^a ۋ ЏMؔ13\rtusPxy[J\D[x̊1"b9o|~{ d_k]Zʨ?J2_p9=ϗSH)ߙ&:i!csʾ=NKB;I {JL bh/jG]0nm#vGqI\xkvGukx$R@ty PsKP1!-#($:NH&^75YĄQ2+:ݮo#"6LSA-ml̾μ=RURJYWRB89{lCg#QJ}RZl"N+pLJ<*.eT:2ed"jO1w ajuUCՋJua- !nR\@8Z>6) Zl˼Y[`S]1b)j=B L"(i=8B&Ya~m8hk0$bWI=Qʼ*lls.jU^꣥hxw֏Xi*k8^ V Y'Yz(H[ 5)g۳?MJ~۝" E[.w>hٷ-}_vnqN9BV[Ɲ\bSqo#f8d  rJ{q\7jos6Ʒ!aZI}4@Ǭ۲ 듈qu"VZ:!5/~X֥.ɴt3M`9` pkpb^ԊPկ ̀*ycc f{sI`ɟki߶[9iav;?įBoH6^+{>FJwɸmة2J\s %7J;7cu UDUUMYnmug!gH0lq8ȩFg(\]S% g[KT*[  Kv*9F1 `wW`}^m᧺FCK +rz0umOkRZަ`9؃i.%coB7:^qqJ:.mL=͸8+$DxGS|f_NqdcT5TrZMNxn-{``w&B7>-<_+y>+Vb^E^i->*`Ynq5zQ= cwб.왦 + +=/um/G4 +{IH40.lf?S3a&Dlk3CclA5Wܳ͒v] Tg?4<ܕ!b89a|燾6Y=p'Ɏ +?GǮBz)jb6tY~~o'ʂ?K }~xtY'A~gs.Rf*y"jQrԝ7&ԳI.0uUvI<I~s&37VjiR'"<<t"v4馂 &Y'%+ݸ.l +c(zmʫ?h)'aNj>;ƌ ?M ;x2cO>*yud!j$j|:D[IA9iHCۘoJbg@7E'`S 1X[C0#gT>dE\. }s\qr+GbvNJ/,ǭV8YHbJT3^=oWr:KT3ȷ:!cU^_+>&<)lBO>u,-ixlܸӛDO (bVj?MN=č?]+=|%qnѷsV|4*s?+H`JrU%%c]9&ޭ۔LȖ:Dj aĻ?_}~085񚌝qwk] f`7J. y)9' "@aAo\ݹpUkAgN},(Pnpб A}-1ߡQ!F9\Exр[~z$۱XJ~x +~|9PˇOo:} +/ώ44_kO2oNW!η3uDzahrʱPO_8 zw:;7~W@t]0@onup*KwA~tkAWt mzɯ@̨K:a>x{MdWv<-My:,B/`SÁ9 =л~n;w.p{:;U$obFmmõ/^:j/ZƘ\dUd +}Q[sy"Mg51 W.Nky @PyxIL]߭In@Q 2Vx>J; I:Ek/.s{UГ[wA/?Ĥf]hC;\`װ+㜒Qa6glfqXBc_?@w`Nb^<>ۥd81^߅k)Ս.zŝF,z5 +{W/@=ݿ|t|v +%uP?*r됡+}丕~F+|ʳV%WEgf +zt&gn\}yK;z]` Pd %+}d -Jj |GK2ʟǍU7bN>pzq0?@O>ydUAµvt1\Ąη>_4]A|AxرA AAW~@gOTz~2#[7@o={?z?5 PaXjphdE^@Cxuia[][,#FӰ/ż|M(]П~,pݛok1RV4lgWmcn2ZC ގz(N<JH)?W'"")>VZ[i m7ҷU8;35"tpY^R in +󫁠n5)Xҋܿ1I ))~x2_)1h[ +ue77HA мZQ\6#>_Ly@,_ݹt1VVODoM +-R<)@ pܙ 6&PגƟ|>~|{ + |w<]Ӭ,X|;]UEL9 ZN7kؚx>s(3̷oO|](ͷSr&8uj5m2ŁX8kc +P=Z&SweWN|:' {tsw@')%7:jUAn=]h_ 6TLfv3pBVEdF }ȷ@C'|<1pZTHT=1teݑvUxU1Fֵ=X)L#Y᡿2Υ=ЛG's$%όK8E.(ȃ!wo Rnֵs6Їj΢*6ڷ<**'o~G%ԫ7AI_GQx0&`Rܭa"zKܼ zxvkAvK,B;Y#MM!bXd|Զ]b6Xhf#dr]s +ta=7v0"f: 㝂>Xg~__OP/_m}WA-ؑ0+YEU_.7"T[a$rK=MŚ~(oJԇvQ5 -p*ap#ήhv)]{ؽ>5]\v"WYB HQjʗ7gNԷH&OdUs]> #Wdʙ%[.BأcFlf: r8/9W̐%q :ݫ:BxoneMt 薒8J'kD*Ms2u7)L7Hl:zOUiKSU( _,GՐcȈa\(;,5%O0kCĘ #΍1YіV]-fypWïUwljeBv:|YE.toC~mN2ˮ2+H;6Jԗ~;Qii{bQ6rrk E5;*VSLkh80wxDf5 -'e.à L U|t5ϥlbQfHrl^nhޝ9|YEOqfi59-d&!BF?.|y9jx-f}_OII{j}W!VUwdhzj©`]5.tOW!˦blXeb\Ԛe"mrv%,{܋* ћC2Ǽ@d +ei{W5 mӭ=k5Ecn5?/X L𞑆:0YGF527U:65)߮easZ}zDZR񑑆pif @V.}6ȇ(FSU +Jμ^rnuðwVԴV/5V\L ]:`m49NXꁼU!~wckAh~"!<ږFe<ND^<#I*mBRrW͆{,,3[e6:Ro7Vr>{fu.MR_㼋}Pґ+ [2h֏Uam{ "C|&L|KpdM շ漜- tq؎ź-`6csz&c q96ikP럫=msS9T:4ݮizCFL5se;2\LW{]s(!:sN jB]Ihhn59w}Sb,e&lp llż1WݱghsD] >滛.%lc%|Nq̎Y+2C=cS=dfi3,ǔ-)0RP?U9*jpY0a5vښm*'fT + ?@wSq7C{ XyTPhS=2xð+in_U~8D }olH=}uk}KM)t.V*GcuȕW5M=cp-::ԩ$dl l >QakdR7mw}hQEg]fW` ]܍NZށȡ'O˽*AcC 52ؑ`7+m uN"~r;c;jfqGF|ѡ\S!c ,$خw"UBpd2|<@'zv۔4Ւˎ 5-:`jT`;CSe wh`b}`r>EB80q(xmQWU:[o,Sep-0hqRlU]Dwq hP^*ݣQnHv߾ .*%XU&6IesU@YT\tRUZHbfZge[wK44e B纊LtkQԲ`Ĵ,wE5A[ѹk*ciAT4lS}.> !8'Jȡ&g^ +8,ڜ;gjZzw ; +)6KAґ+w!L5Iץk}& +ʩF !&9|C# {fY=Ow@x dڦ)!#c9Ϧie]knhϥ&vSa' ,ѩCp,Wug40=MRZfA=z徖Z; + Urqw-Ȉ"W(H.16~E)}uqpmZ9:X4X? pu)`ge<9.'#C&/iQ8_81nlmcum0I|:X6ATA?Ihr6ƥf{OI*v(N5>mGC4B}{SC l_Gk x_ݓId4o>EH56AZd4}Tve,Rf"g& _Ǻrߞн!X׾7+ >iAÌCP+l2ze<*6j_@Pf):cWI]0FrKJ+lUL@Z'!6 &9EJbYul҂Txns~`N`6%&"%x[3ԭ \Ҧ=A)4c761V<5wB? cmSĜ>g_c_dq`dU}?a^fv٪Z폖Dm?Wm^ܥƬ 2=sϰ{zĦd =Zb~.Qp.~_, 4OVvMVUyu<ҾRPQw&q :R澒 +Ae/:!mR+$h[L%I6 3m .[Zdr]3R KiX9ﮙ0^RkvQLdf}>4R29y/^8Nx%,2*dC 5O]I{`j۝].71]/m#%A[9/WRtJ؝@qؽ9\ˡ!A+Cx;YF]Dce_Uƺ'N)- hv$^1 ~8_r9 VDl <4?[]P`+ݥ,Õa= +__YQ˾.|U3 ݑ R=5:H{<>I/8_zZKM f{_;)i4XaӰ0w0&al]8&n}چu @PemSfG $veuo&Ljj+~-iL/'PiiW3* RUî +T#vP %!w孌 #:hU{\ݻ7GPI訍!D<̮$vC>IINMsΩ JJWxLҝB+]f y CsyMKxK*ál + (~]^B7ՔBe;R:^ExݱO;%?fNs\Rnnؑݕ|94{ s=IL~K]v$1lJ/0~-մzZ*E)zs\#Hk"7v`#^x!Y/2y)%o ׆%lwv§e_F +@GygxCs_-|_O,>ГJjBY+鷶:2+P 6 |=Mb!lF/LuӥoV9s?0q{&pϰYp4 rhTgDM)bW[hSW1vhN)>yj#!7ZQԍٖ{?fveB;UDxg;hAc6FJH}~0P3 ʝ +tu +YvuB (.XԚl{TmpTuHIGv+>ܔ"v&ɾ9. fKL8M1>v~4`.Fw!t'65 BG.ޝɺe8#ʼ[n/|ߊ!lb7A>")Beԙp)[+u;jWI+?qH?Rh[C/:+;+J0 ${7M$|p܏5c›`g[5.# +5ٯ_gs͵R\sҍ̗4vK\l) *=jJ鏽:RM߁D|1hX#'Qs;6)J1&sS˼И OZd|sV?Vg=5 +/V'\6~1) m :zBHɛ䘿?ך2)h\{'Oshе@ RKi;wtFG9lsڟo>Ymwzȑ**{Tҵ7zAif܅QS'a7e)ⵎb,t;41G@^8C#pɊJvع{zܥccrxcf@zWsY|!%QiN92ˡ%Tzx;ZR!+v}mS\:l<`2aV +FUqFeQ\#ȿ3JQQ3U7gkoj!ȸѷVam :DjX#kD%Ρ7NJ_PQ ,[|}yH)j)BQv#%/cQ;[l.zQhCCg2WKWU[&yOۋ[Jzk=d=[խͶ?Ӊz f +_ aDW%ȳsݥ?| &iG΄d\GA(*- )wQfb}O;btSKK*$W'l{fa2LI + +z55{up}YI-H.e>%$?[m h_zr/iL 5ZX\.ygtdyǣgwd 4(ޝD/w>3b .͵>_EUW$,h 692VF#J]_7?B[%+hz?\Y=Mu(iRC!n2j%}]m-[KN<=1'J~1n!;M->qpn .ӡlK5U|hd3vUl"POCSi"A&)gj*G~=54Y,x/율+^*x`sI+} olABk}}g.oNCI5<ؑ30B ̫S9?`g[/_&\[ K8ZfIأ9@h0@ǥ 79d}u-)o<2A*9 ٖ1LJkGAT{Zii4c(ƣ$ё[}/S;Tu<|SLL%xԌ5H#=JrO2dK f v&r^,vD_ 0[7r~ǥ/B>lOAhVq8y 9>nxpmCٳtę'BNВSrnA(p2\S( ԧSF!|^d- b7tϬv~{`w$e!fP_Os^ `B$1wO#ǑK]'-'iת?^r2P_YxOC~?mϻЕu.+k 8[ZKM Y{u2SCivƵ;]؆xVV;t=-%a_pobVʄg__&wdrޘZf[Zjr6宅cV~giJ[Vٟ3^e~M'H9(`E 9N[!k?v|11M)utB6X-}ٕp=c⻇i.z1Lޕ[qL̖jCmjt@x ^c0p4_?c_k^{8s&dZUb9/M/K7 +?Gq]Z_7De}²a6x} Aȗv>Iߕ1*!ˡf'q v%:GO,( LתK9l[䷖:%C,xl{>dyY1)kF,42fЁ +J R%(1E'>~od/t1֦޵|^ly1ېrrk> ru,he 硡1Fݥ^h & qa \ VֳiLu? Y^/ |{DC YB{oQ镲 Fu $ r*YL\v:N?Ϧ-GyUqJCgL2^-&GįmAnU2C&I)C|13󹜕y<ܛB(i%6Pؙv=F7kُ35g<) g ib p2߶R_X=+#/ Y4X/f{aRaycpn.>:Σsƞ޻R-DGQqR겯Rcbs]%'\cڽnEɅ7!.%!,<|ۛspT%:0~.4giH4s:brkg=HJү5 b]ZFot*ʿZ%@ 2խ@-2:`iVBaZ~WMC{֖5?/2#lS +ۤo<$$62YAKEϯ!6qKݕA L"l;?`mӎ#a]^|ޯ#_H-90ObrR|/*=oqm +\|{#;񲔞r霩9]E)aehGF^9CGo 1N0X*Q~\o_ u NӢv^0o@'2Ԟ 鐃Cz^2pg??mMnîޒ "-kwg[>қqe u0f$ Pٔ,]#O8[.]]KWs녵^C5%' F"{4L`lE|tk}-Bro%n1)H׍JwE#sTodXP݀pֲ?g뺏L|y,>4T߉>oLr^+9-lgOdj2d2ޫI{]AwP"]tT&{\!/Zw|g60DʚhPˀ/aNK/jNjBh,ےCJT <5Lcr=-|= _Hh^hIh"*H0^Ա?piV.kw=q667޷~ 0 hSGQjWyӟM r/Ṏ{[JjZNN˶aL $eCl[&G(>t br0მDvA.WB- rf :#zݮǕk5qx򢽯U)uPIneU\ n53qQ@WL[^{[;9C+b­b7wtDO\ ЖĆU"m˱>_lLrp7*s{ȇa=Ư$tm 3>&C,m2` $!uDK + R7ĭ/VZNeU FH<׿R5&ۇ2X2ϻ_{+zDU2y^9"g^HM}pDԑ(-{ 9Đвeli1$p '?B_V|KCC3w":>M ~ds ΋N;YRh[o Q*b#cl)]G--5RV\2v]K4ؾ]w^>r:mžM`];M=Ti/,鬂gtV_/qO-SwJ@R\)%B*dsS\g3Djt}*!ֈػ!G7k{ ڲ 7c{5l>pkh{VrW@ݕRXRHCl8r:|ZTs=kx%2faB ;v~׶w!i)5F"mYR[(NQ}r\mͯq1ȯh}o|f/WaGFmn0%[:x~@ JT6xƫF=횠YŘ7[&6+})L-T䑓۵o剎,<ճ. +zF{x־!4Ҷ%Ǽߞ'EU\{ro%KGe!% T sԂSΞ9L|56rA-moI:tƷA=xD[2K',6Y;`B +l޲Wg%g sw&¨ H W-ɕ%AepK@뚗ۃXFUo<qoO\l%96[hO 8P@ ˽5eꠒ0w~y}$͏vaÕ;X<1S+C, "n~2O/}AX}%w=sH[~H1= yhaR>:#;n0Q4f$E{~w¡LC֦Ŵ7zD ,{ IM2\e_^;J?oL8X$! ̊?'i-Ύm3w#zg ]}B%Em&~\p-GoԁWura`a65icI4l&GPOmvI)2l.`9Bw^m1v9 vĖfbo<&#,OC]J[>^"A-.V@w;'kB6gy[phY# 1ڧص :ݷ ׮* }ֆ D;6WUb?FNe ZB4amᖷ꒞SraYGӟk^EdnLA_ۺoxnKoGl@rl٘[ ꇧ ];\汝߹a& < :( BiU爥*NkGs,"=\z#.l:#?99}}FFHmxe=ꡖFe"ܮ_}1en Fl󱅎heFBI8E3VvkU\yom͇m\z}m ?u^0r3~'Gnhʛ̊g<M^ TR BjH9o~kd% m3.~J }ra14s; ,*;֞'\^eD IR`Ӕ7 j݊R:X܆o?Zƴ;g +Eg)z^$c*4cJD͖ Dr(6d[ 5Nkӈ P*J,y ^t6q6'Usq1 4L3 +yLR=GUSoGm{!3oo\GyI>X*dse\]a;<m*b]=[sFZ}1Gkq %:r^{WI-. +2+ @=v)~)jMGWť.QJƷ7uߵ_ШVdgyc[P_}#"4 z(ce]@߸%RJ }G]pXxw +_tO{:^),EʪO.IqRNLurQ ]kxm}ᎁ:яf?4 +v :[n! +Mb +~2ZGykD&28uN +}j\ꬺm^)`; -ȄWusvT! Pǻ]Vd5 +%_;e m!}x.[vtm__HCxIݕ~=sl3۽2PGPzejg[6KV[Kסw٬5IS9+Mտ +JavA_ rn +`]:ࡇ˸C +x^PX- +!mX}3 A~Z_k^Xk}9N,&}]ˮʗ'z~v7$()x솆Q[`T䱌^Ami5@ )'`PF +lakj-"=O_іI9o#oX j3O훑UsGw\\Do9 t}bf>L?f{9 +Is4[Uqni P `M`Սg9j_wTLJC̿=-:;>/7i:fۡ]A]$J[':O#Ur=Ɍ.p1#S"-` a%!he/c&:e9rǘ4)զ gW.bkL-|S,;_b/@; ʍ) >ުE핿Α/3[:.OO >b 4 pt7?3 &U$\- +L_pf[KoցWuO:8OcɁ2l Hů~==9K|XbtTЮS)*5L@e#f历IDfLA,P1 (!ZV/Y@K4԰]m"r +L4聕Aؘ,_I r"sj88ZŨ?yq|O]ni!oې +csK!GeĊE`WnN,`k³ДE^y ۝/}3 =7 NҒ hao@)EMإTܪ)O}w +<;1גk}TkkM]kQ };p>wi>mpG>c Fdצ+ 2'iy6lk_ W>30R, S"W]VrnONͷ6^9X.ʼn)dvXޖj^v +Ŵ+~ސ;iҾܸ"F]ͷTM~UN{Szyk-)”fys-%f !8yczxob`#D4G31%}D'+xdq;09r"4,p K]  -W3*Q|~Rt1PwC7apyk|9zXN;חE-OZ^nA^-R3zTؚ_􃝊&#툒c4 +8T1t=+;@pwW^TSD/{q)5)n#zux햆Tg+Y{bǫ_u"jR{h +W=;7|?+lA_G ge$􎁙y! Zɓ1L혎 %!o=a3~3p +.Կj(:g `4+쎏N5fM5܏=9uISE-%-Ew4JYs3]ϿZ_]3USlí)'[R~>rD^.yPwd_blܞUvW 748t3n +[,*bzlCڒRa#@,22΍4&|]u +컟C +\_qa S_%NCX9; +LO&JO^cb>46͉׫{nfam; +-+Cj]l5[*byPJO޺iU +|CC.>md^v^ױ/ : Ɣ< 웂c_]%<<؀ArZh{Hnh%@Y2|3b`}-+'91$No=OYàm: Ce`o#u7W9~_&)Ps깩H{GSτi[xObHHݫlIyspU_M -$)#/ホJ_D~rav4įuY\X+=$0KO-]W_O'.:,ij7>ث'֎'ēV`^-yg|3 خK]_6< (&\͓*]XBpMN׮ݘ&EeVoٷv14!bÚn^HIѰ |4R_m}P͡lِdw +,l[WZܲ6?609ݝe9f Շ:\!( +F\ K Sz/:Vn-Jǯ8n9rW5gm8yX̳Q/ymi580ܜG+A-,Оm5yr{4&ǎ{_BRQNN':Y{_}-=c*((0L9-)52k/:Oo+;jx<>xzm ?kh&AwkVX{S@Ԅ_g٧T36~˟_trJP 9ɗJf-j/7ռAIz=t+0K 6deկоK[m䭯W$P aK&{E0U֥mIlCLR zEQ5q\-#[صYrqdѡd'/Sph 肨PUrxmvm#6 }=Iag1{6K??N+%fU151dD-b +d4'o/2;a6fʡn=Y.2IM+9S"- s +<N*7̨]CSJLѮ +qe=&=f%B |rǡiz, XZ=%}r +?e&qeHyxC95^'}Uk1h. JxG[NcӗG K7MU]^[m{ook)Xq`viKLܮݵԠRTI鎞z~)Bat/ԲoaK/'~)jx 7ZN 2>{ì~󳫯饣G?RTN9m"K歮 S wuS{k} tRP}Kiԕd!UTbHȈXmUTR~vU? IbL#nLvt'^nؘh~fei|Ś؍γ2d=H%mw `кm mƔTZ6lGzkhX lN-2|fU &vVN+}udcwlNAF-HKf|kҖԶgrVG1c ;2.^,P0IqPI(]_ >yǔŐ$5A5Zة8" ĺ} =łYc;yhe`TOس266+/u,6+k`_YkL]RR}٪d}uro-Si敻IZj|H Ih2M9A3a&&a9r蚈_[2}\> jNXډt++#ně tfaS'eik#m .1w6ֱ1634ό(ȕa#l M2}hCMO&/RnIv{mڇqiS37_'_cS_~+MeQwzStr;_ߎc2e7 +p[ +<C;lV`6?'7--qdsXܘहpԲNWO}h[Sj^r|'CRsofɉn}d8 +W.'L"r ^~wa +[fsOxwZNɼ"mO`S @76l>A(/{sZ5W?(e;!?wc|Hӳ>EݵPCl/h!-^ݔ!ۆ5͉zVٍ;15&\ Co7dPP,w B/<؜FTت]={;R3"Zl2FgdlE;r3WZF\lPzWt~}aTG +/A1͟5~6+n?XDVX=1O i8O ) +F$T3BN"ǩ1%g)÷^ŷ]}TwUa^BV6믌+.3 +j9nN):mMN)eY3IfaT=\N5=KnƠWvun5 @g +l}DՒ*Q`Kʉ xƇIJYkAO٭X5ޜTZ/=YڶCƫ9Dǧ;jo}nV<4 NR~BA}0 R"v*7,{sf4fI#W_ +ncw1/*v˿=+.*q/ ajONzeT39ᑀʶ-};c~/"];d惟L )-'OaɰQnJCk^>R\cOBc+z}2$4s}蟁gt}#2o+6Bg4VhŽ 9m  =u_UЊ~g~mzWƞ;Ƈ:J㡙>RtʎYV8Hj>eC A>m` `Ĕm*9tv@)>=wi?98#SWNE~tRqVrO^ꮾA +c\u(fC#6b@hyHCǬlFp^;K 27ؒ[5-!^,?\`׆T\-I f Afu  kONk +ROyY k +ztlu.-2 >96ZH>oUETӪw-z?M5*jj7e9rwaA5_Urne\KW͍9ZzK]QbK(\Gy Rξd26"ssWPҚZ6:`/ < LLj;zk.{%ds KyJ JUͯxZ@nZG^qalFPC(-S̠]Ϝoy+w܀b8X·>$V )՞?<=eM?X9;{ob< +!QGWۋ@*?nu4RL{1v<́?*ֹ vϿ=쿗U@}k)Sq<)(~~g"ĎOC; ozk:F'}gK<{V8J'k4䔲v- |yR1/;5`Zw<:gcPNإ$`Dwn>C*ZQXޞ2˨Uݖr7kg87jdW&48dRظX4`K75lxӠkD"cdR\֙=-qKARQbf*bJxOwM L+60xU#l(XM%yMN h]3fm[5%^uG-_wS>`!jg:͎ɞMwHR5~'#ZYN+ʰ2СV /1A('59>N|fF9S}W^U&h6JPI <(8/oTm%$7x';6q|Z' F"a2~{rq& +';AJz< @. 8YF$1>J_ϒJ'Kb [k3 b`Mi_ +NE/(kLi ٞ)FTѶ4A”4d`Eẛ GKoդudܠk г}jjmHρ}jxvLm]2ڳar~g4G5-~]k m 0Ra#WjB: +(t¶.DjD)X3jSԂ9Zw\2ςEU]=i҈)y]>&ZWzU a-cCv0?v +ZY&jʢ L^u~Y, M%l X$Tm*iU4^ Yu%f :Q+0,c7V !j5Qt=+O(٥*$zmN>dyd$4>I^o{2O69!9[{}>RnV~ `Me7+쏚ґktD G@1u~]ރ:!#,MJ:>=C-";&(J4NyQl\C + .5I">l ,\`#z:v`ĖE).]y@\22BژWZh-n}Oefb=yETeP N]5'x'ZmaJ$ 9K+J~VeBP٘umSFXc\6ׄY aUQ$gYJR<) *eMe;^t +N0gּ2ϵHb#wc%ggGk^{}L} GC !=mmT.VDh-;&rS@li 4`EoDT*jQQB ,TƆ OKoqN6x}}R 򀁁Dk1? 5OuCֵ}]!}WW@ņڇaƎڛ%"jbf^P}{p1eP \Oh%wx!+ca%({9Kc~7ng;vb@Pur59g-gwodʦ6[ᚣl-iN2# +EbV#Z6: Wj,:}CIVYWJ ܱKHk +^wWnӚ:2 h ѾaXM.΍.LYF<4$ +xD:i ,PY3|3+t|̦.]x=Wld9 kO]E1 `}5:xɩ`8T"xjbt|kQybuX"K[ѥO:Iv {_>`lfm۩Pw3Djxm't ]=Q*󐎅>q~^"^H}c: =|g0:AgR*%JIi"6-:!˨q0:OI%rX-CxԩbRlR]iS^9мgU1kUS핬ad2;UF H#O͵!ZȒgp't>UqkIgIIC|}N?^HK,^-Òk#1n]BN8q9+tY.l}!!3Kx.m/o =3αɅ0Ü276᫫ԙ|>uOV$bq۠5/ +h_y-_U^F6Hh$}  \<ڭVmdd{"WQ-dϼeůXt򺡸V[nu>Va|e^Y13aY5-#'B %;^`ln{:`xߌt+T {^O7M0ba_ƄPN9֑ed9䘽_蒬:ٹ^ɸ+^e$VY8Dr|%w/ P>rm~N0;30㬄7>c zj8sMu6ے+'/*s?×QUX.>ru~Kt]vkV0Ʊ TZ@SnL[g֬~8ྯ t(d'޵GN^{Omu[;'*ziwhҳ.%U/B"9?{@GQ Iw`8+7y?#gkOSx" !t6 dKZ̓Anz9Eh^DӕŏhŽ\?d_{ sGӭgNׯvz:90<'07nZ{lJ:$n񰩳f!Đ;)b&GDWA  +ILd݈FIJ=P_jˈ#TдFZ Ag\R`"8E%rV#;No]ҝ"xN.XSbH,E ֋Z1ު s@btL^KIw/:_8hw5 +9=:M7{_ҿ kv53E[ŪmJY=: M%sOHo߻pn;zu +\s d;=u8$8\C`u߈_@v׶/['jJce5%ߒJ}0avN'B}DJq߿u-pr*.2['9c4U}nԤ%MuϢ,Nj%npk[,F!gi yG@zL'5rGnHGyD:Ei)R8sԩ5Uk09B7d (]E(k7_v/(Q ٍ?{UۏXg.N8ŧ}K[i] U<;6ЃCV6/gZ|C1"y?GP9w +1lv"OK1Z2t`פhaږY^Y$W. p]e \dKR~ëɹe/eTL, + w%]8nXrWFI,6vw t׉x+,(sa>ѮGd܊ΦwdѻREF\.HXɋ"ߖV`3T*ZhcېWmqa28q?7k܎uz )Thxx=]+i6 $nYas:I(VXx 7"&hڽČPt[`$A>k{M1`UדE>&iUlDHmoM1K_1p3:y|"W1 +G>2F+EmRlQFDߝI2FɖIEa{ c$USQ)qz)M$j;۷==7z] +%,XwOW>з4e nFӡˇkŒ>BkkChEY;pSTb[ǖ}o ߅g jF3uStlu t4tu&tɠB)O ioewjY= +ΰ 2B^djHk5 U%A׊wՂmsmŢD'm@tq"*Ok)o[zEYd1sU#4Ga]ze^V* jmk'V::wM\6Ʀꅇm sǰF*{͝)ly!]^82%Z ϫjuSm!zLs8#{r=;RMzVR¡Ɓ&YNW,CF{ m-q#ήi9oוk"vᡮ|O_J\-U匵ceT(Fw&ZjT9ڑVN܎_TTo:֎}8U]q:[UБsgoF)"Vܒ:;@1d,(s< +4܄y-<7ߎէO;1f cJ̈5Wi%'r*hs8xIB[ =5]dN^G4˲Cte}PGOVw`\]ȗpK> {&UIy{pUPRSkOL_w{ʜBذgQVlOM 3W{ؤnu[U'G)UV{t^SツSn, +y]}`o?D)g$=AYpaAL^gMe}SmRVQȂ~@cNr֦[:ƫtünV0/2kٚ,Xj:t_ +NY:tY|`/KifvQZnk36ky6CyGOTeeqIݽ['˙V:p[!㑑C$߿]ρ*"befΩi 6jaj,M#dk%Ufu3sQS]QfkV  5xTpj>Yi38[-Rz"W=P1 yK0!mʆZ!#2IeXQ2(eJDBRR 2u3<`.d[n؊I!z:@ZR6Agss·|h4X;+W7N6]L X62h]q]A/4ixi,JI=RsNta6Q]5%./2I툳߭%?ڕ( -y`XM)HGJJׄyJ왙>35`W]":QCJz|/ ~.!,dQBS֬.+c8UYoÈȃ >voP޶c%1pcGzLT E/gd,;1p1\̱+)rR?ُ8_Y!'ꢨC$|g4r 9s\ԉoTKbU{A:Kh2Ecc5-1lS1Dc󉆚 ivǩIz.b]FL:62l쾒+GRRqDhή/9TU)ֱhZذ5 |l4"* ZQiWQRU\.ZF0Bܡ-~_JKv96f]Bw:Ra}1 +O' +os>vf]tg_eñ,IGZȈϼ->ƂmJLꁖ~5sB`_AJ^ +uhrB|a;ZlOKbEL'۵伳)&ʡg:ުbA U5-ʫY؈Om!Uq_[WZ:Ӆ+ +uxLǙ=(^u!uk9LOnAy̷c>q_u/#5wL呿M$?&$ٕ6hk%p4^zʝD,w<ճNқpc ծ gWl +#) X%PK?Ћ/)/[/vtAw`Cnm qb|Lu1ZÄ_ߦSo C5m^l%f32mbL@lck}y=su͹rfΆ8exͶQt}kBDqI.>D +endstream endobj 38 0 obj <>stream +s-ؑ~>BG#5@L>R2žmO:X ŝ٫P.{j|(g[X9ۜSK$h<F~,c +t} bڤ𽉫3e!|w{8; /@.-\O_s>3 +.DHwQ;reu"$9Gh}|xuг1è,1xȡl1E^,V5ͷ*,5"benI ~kmrl(ciuC`shhc--*2ݓü'[$ 01j nrŔ1C0al\ +`pAJR⑆+'}Ҿa:Lw;ײa'!O] QIW~=:g}0V3m +:E:oA M)nQsw"b&hST-o}Z +!zO]AJ8u{8lKDHI}91]]xXws-񡎘d.w6"3_ºmT՞s-g;"K>b#F˝Ɗc[V`dM!DMׅk0wKo;(W3D7UNM?5sd½fnG*T kLy;ՑmK83Z>oӝ-IOm 3.+/{v ^*){Cv(vlHz=q#/ +.GUU?Wϊ''GDL5]{~_癤VK*3-9cGo.x!DC}UTI,rbٗ2[{?kU=SU*H/<&G:BY +HXq_hzyj⒮f4 -pܙPKJ9PSR=:\n3F yk4ׁ/xa=Uζ\,}RF?1Pqwj$A\Suqo +\ĥFqYYk}Ee}9>|Wܓ}8T@B6`['Jxq5ޗnB:-!3^&N'&XP޺; +r/]^윧wH3UZ|*lkq-ץ ~zL*jy0foCXzUUgf&G#ĺDvA qp +%cy ||'$o@SEZK>6@X{*&YuP }L, ~#4ϟr^ܝ "Į,7ק93 +̀n#æJXQtU|k-Dm '0n|Lt,^y~ |0^7.6 +U$ܛkO5< ǫ93 / )O/3 1^)ϥ$t{(u0wsEkY-(^Tkͺ%9c]BS{K_U f86pЙ?׳ + ul3'kύt~ׇuQXDIMF +pWMe uY \]M1%B[P@AJ­BqL(P61ve%Ϸ1WF<]|~_/!P K/m)0=/`[݈Ҍr~tSkuI٦ģ_;׍X/ 0;쎥kW!22v$=9$d} W#.T -}k=v +DЏ#D_mܚ\ ߏ1]}!5rÔngS]Zn#DK3i/f37@ST퍓S7DX>Jmgur^~= +rX(ۘ}s3i-HO=7Lmw /LMYoƒ1rJy#uV~5Ux5?-{.r'D[BT;wCUojO6I^+,MA>Ҳ˝nmnmy[4YHy?l摁{7k{YPzjƥK]/z:xG 9P U%: +4sc𾿘[@'lCuƝܗNZh́␇U1!LKy4J}1L565"oC{7m|xk)N1bf?.{Y: kW򊶥af>r#S)Dyu@ FTom''F62 +q!7ل0o *AWÃoVE5)\_L[:ْ }"¯C&XuCqA?U%?L~5Sr_ *FK7ee*lVphDȠ +Tm@m"tV/B]Mn',!ەd#ӏX丫hN ‰h븍AbgjUDW kRz܆8d6~): o} 󺜩m}X_]U}]U~ׁtoI괇ћRF4(-QzA#5ܘ[ݘP;Ow5hOv΀V۩—[C+@t3@}%|9s[Fx Vf|'J3c\0ыZ^z3Fﮜҍiz5ﭱa2Lc$X{Ϯ &coGXnKy4[zw/{n E*A3խ \RkƓ{W];u +c\GFHͻГ3㰠wT]̀_2tpMQCP'*ܾ q$8Зc?k&CÆ.v Й]QE=lFxY z!["T}!|prV):Ԙz2_Gu#N&F%?nwd_}2F3@^Mw ?\ƤGsurYG@Yٶ)*'TBE؆?,4ZhNtޓ̉g"Bڍnls#'CGMF9}f +ݖf")EOZ|,?U6E +ڡev'=5Dْ"BTTw =2g8 ,-p/ő9X5DړSN (%ơ$'J=OT3 =go.hحaR\S׫`gc]]SyĽ}!6d^h}t <5Zj{c]{0QWw7e>Z6@v(qQCdG9q5ՙuwo~D\谉˭j[O&R.t=PJ_xub''O lu8k+tCݹ+Oˢ- pd#3d+$ǚc!ўpĝjЩ_/s,̖wSn1rܺ8xC&GU`.iV02r`KgO f4UQ]vOM؄~?<<ۯ+U݀cqC.g|< 1F:PmZc :r !oo 7;Ub#dK=鯗:\(5y %, _Iq*b>59. +Vԯ+퐠/*m)'!FԃJII Z΁u5Cg tscWpV{a͹/'OpC.QS>FQ:S|⑑А3c56𖑶BL.\Աu0;Lng/#lKI][W3BmDpuz墶mn{#&E|aS6.!aZa^뀸;P &*Or .dN\qY/ʹb8.mUcE^BAL}p{4]q=l^g&.|U ~S|~tc +2ׇDZ2Y2W:GjQ9ֻ\ <-'Iqtؾsc{YoHPW;ϴ=;7AgF|RGz,Ti8H 8]7c;67/63g(K|rd扎o#%*Ҟ3jt] Z-p6ץ<1B5%b&.>xbw.e~!h2T[a]W%d|خd|dG#Ԑ{ >ȀͰv Ĵ=#)bI<2ъ.XxK,Bd>Q Y6 +:ÙڽIqU.c5."uw5>d5ӘpocyjaF:FK8kE6o{cnkb}\)iG +Fm8!p7y7ݐtGBMYb ՙ +] ~F*Y"\z/|DŽ"bا@kjZ&ء5`zЧ=1<7sm1["%}_NZ\Kye®Օ[%E~b|W{s]Y)!Ŭ WGzZU c|ۤ|MczpvumCSWunZRrf$YEOn;("zy"NSĸ((>: ߒNLE!1eЉ l[z +/E. g`Skh੮atԜy:r_]5 :G%]^9JGW +VNqp:zΚ0P}lt\,܁v1g)@[۫YXk#Ը6 13ZRt8 [bR/P;O B65&sMw A5CCq9V2pKZzKSH_H] R}z69NFK!?{Y_2f:=7 +V#]eWe,6.~[UP2;^Ph}lW)YwA7Kube&J>`7Dnsql羲I{ҢaV涌|0Զ8> ;~5ӮzjGH]0+Yϗ^ cNUԬ/zkWWQl9ߏ'XgÁsݒcmZ@WXsFxEZf\zx ؝nC )Ke %/m55S,%bU&B@e01s)wm3NJ7 +xJ )&=tP<:63W#ha %H=Q6=ѮrzRʾj[My=x6y b&( 2L[N_@W{u&qSBI뀹AO(pQg%h]ys%3妥SwOMXK{-E|?n [1E~wt4t cԚtw>ueWNĤ#-`dn; +ܞShEVޞyaC*:\)wOjio|/)AwޟH3l⡖?ҖyՁ|7SUSE}Cy읥jL™Ѝ V^ǣ b? +|{*^؀ y_AJ蟫>}86_x?גً+5'f&ԡe]͵< w!DH-Ev]L^D|M;FE͍wƥ^NU +6d9!?y^Ȏ[dDm S#ڪ=G %}}l%KP4>Ў~ҞOXbDEv%9 ఀ]9>^=dUP `*& c6ĭR±2~1*溄Gn>a˅6׉Nԍ˝o\]2D'GiIqȮ`#FJ_5Ӌ5TflI!du6؜v"}cԅ<繶\5aa6 uQ "Dž5y'di!c_Ɗ¾0QKRL4Ԝ# & +j]=:9F9]n]P}9>,`OVV-JhKb|Y@;d!-"U +U'izeA|E$JL̟W}A:ѐR*{0UUںg(s=7oon􏕒3.'34p9c_4^2~-1M,%,o 闋5, OgyyӕR~DIa I += +B¥+LJ \ 7x{hgV1wƸyƦC놊[;P~e.Dmsuaq;P=4*+NܐA,:¶5L +Bg@Wg\`}ϝ!5!{Wx))ړ#g[)6R]L +w=d';|],\,x%)J=R]l|ߋIz %qСٮ.'|oz`={ +rfG9'6rOQI +u\Ċds[FŝJwD/ "*U>pPmUץ<̴$<Fl/3J؞ncpA[Ʀ#-t>'_HGZREUkg0U/{Ĥ0@"vaqڢ䭑f823QwgaX,̡¥_Nis6= JxGKnJyiya9˹ʺu*GSu!:8>lkjw#ncl]Kq9U16HȥF ӝQxSB-=WԂݪcE8er\ D@k1\jix=c'H/˾*gY#> +S]mW1m +jMZzO  ʞ1B +ߖe_qW Xzd b߽`FW +OF!o&aEմ,L̽02,}9s\bUpqdW$x8_땝Vʛ@SOoev- ҇o~>ךtOu*kC:ZxKt8q{~9 <#; < 쯫R8nu4Ujokycj 9ˡX?S2.'9#fS26LS|~uT{ ғGӭOUQ7g^pwL3 +-|~4 Kә;'GJm=BWpr&8`||BL[?/ +XNߔSpaBS.f-6}qus`2 qf&u-}_UڵeD8zwBM:A= =3r&Z $N i@M#m +Frs1XપHt(|8gw9U4ky$^ S>=ؓWW4@07#H]5",ti!קzgg7&P@f|b`q#gm;`עcy2ެVO&]`748mL ZA.Rv`Vr-2lܚ\ N!@ժkw*8r#bcc]"~&{_\ۜ<S3q@,CfClqs)Qscq6 4F٭ j53Z3kI|_[,!Wu?,q硘VH{]RPo?}V)+aY+DmiM7}蜺y3<~/]qyYn7КpjC UMZ،KMu`NzI&hIlqhU2`2v!`o߼6l8sWxsꛆK}LƿnDu%MOi,~龺 pʌ Rӂ6~=/gysy6j1B:)ɯ"V&ȗbOz@/%^\c/Tf8,g:, +i/J6DžMSqv8(dD [S嗈*\ۥgmAq؊pΤMRVb//A<^yG:{buu*#sZF]]~^ێ) fH1#efw^p XҾ>8 Vmuy>xwuU +a-*d!z9mRӘY"OEik֮mdT hE5|asyju1'JZcIDP+6g36? +Y-?LJ/7ɏUBo~I0 }UK}~,gTٛd109{n;Bs؋y\ڻc+o{Oƍ"j'arJ~yp*a&5θZ'Ot]xzcǡ:d >-W5SpMo j e<g.M2SVu}Tˡb yuxi3kyŝ8ޑ2cJĥWʖG,x ?|L FMoy!1tWsJJJ[&(׀>UaI#>x+cnHQprQ-.i`?,>.5'.v_ėd]~!愖SkbFk(mE|cU_>>1MCF̫ 1:K]v12 a 1 ߿cNr)Ɨ,Y\#Ԅ\,K!cB$$lcߨ[ I+|oIO$HQ JZU@I,؄R}ݎ:FqaE805^(4ym_.2a"Κt8(e,_UMNX9{ +EP@V)2Kѵ1༨'gkp_)>ާ XyuDETQ+*f]&fxm{i- ~TIy^kXI)3jWTprCngP#F4Ò5˨ޚ%.['uบŗ=WߢN穕@QJ^cx_tUg튾IޘWOR4gK + q9Ӑ׋ +vC*nQퟧUUZY YŴ>SK#Q * t"U^w~pD& w #֦EƉmgL^>_HmݜkvsA%2jM ,d,Wg=G,wH`z#,/(}=?}ƨ<g&,Jkc q}V~=wKY\2 i' ?m8\Vӛk4ܼM@uMmg 5}ŷΛMo!# 0KS5EUQ_Fl!xVaIڟt:F3~5}c^ MDӦb?e=b~#¯ֶ1<{M,kWG)a-<:&V derek^t6}+U2p&%u/y 8VU;}A5t}XBGMyȐJaX94|PB;nJgJl9'4&.tӔ<=8mΚDm=i?Ĕ$M΄6f&o^eW$5߫PMkfϸ_6[VIeU} g3wD[|'F\U!t(֕( [ -2Кγz)msyfL,LIs{A{ΣYĩ{ & +p4C69maRv]HyN8ovLG-|;䱭YbuL/$mo(hh r+=/?>Nk8dp<'d_lIOX&o!=1H9;wҭyV+jI1!~}P1-_pD݌ٚp >8ngM\$'W'{OXY!˸l*AM4`(a_OYH~%4# 𮡔{@F!14MxxIct󋿱?š6èYev6|7f 6gIG?\N));΍R * )>ĕzFXwϜ:ήM>yo%>:`1< 4]%)hy.ruqs)0EQr!Oppi+5UG8 i#5Iq5m$Xxݚ0r:CjX#nSR/ +k1öJZMLJ& rv,ړr#a^W`Mim j9@!*bw$ +_5#>V\'"zLxL 5%hY[`|B$sXks+Kz 0p}ZbG5)ܕ4 +$BIR+C#3;_5~}YJhJ,HufݐQBO鹝[GxXѓq?J;䲨V S^VDoOi!q|v'Y"2Óӱ:7'5+o>ιѶoWߢ0o[\bNub ڻKa 1eg#s>0m7Y5t:icr-"l] &T @&k=p_ǂ:~8 Y?zg! +S6>1SV9jlLښ=q _mMڒz>Gv_W8sccZ}EyA39h!7hXy@aA(α@WǑ'fc:]ǑŷBr FRELO^9 vRA&$OK_w}SWvRюO*8y(ຑY +)c6fL<9evA@"z!L쎨-㴅5R\T 0Z2 5)gA&2cSc ߭k[k4RƳ{:>>vckZ~Pu0(1ǪOr b:fsJ kZOmJ-Iۏ*zYß|/Lg.'[@mZf{?w|i=FE'u t%wU-OK*~3)*84 t@J83+9VWu_{N-\Lvq<yh^ARԅTpx15˪hdjp&m~g[뽺A.}]y$c;%!'e6i"&eUH3p`R,وu9bu`ZUq:bj1970iLAgg~4@?VnNrG υ{CԕT)=9W膁Mژ#P+.Q>UyPG켧6d6vo!bBLXn Ro %a-< w&Uưޘ2si3ǖ54ޫ=6ho US|uݕ1-.1kNYcC1ՒsSUwSڷĀqncqpyvaa1PnA?ngEy|ϛajy'h~}~`G17/L6xmq𑎍ckG6fR{I퐞METRښdץtBlBhښ=E :VkLE'.f:ODsj۸9-hY7,ğtӴy%->n!k&lDDCژ!\ו+Cʞ3 _AI1@@N[#]^x>""U-kw}qn(x :BlRL)H7RfVO"'eTsSݧSfrsLR]:9ļӽ6>\ϓk3Zχ`wQ1qZj-G o{_=l>RR x^"\z+1?n?8^%+۾M4SU',?8㛳ʘGO9m9h[yg~N(*b + YDY9RYFD켅ZȠVH eSW8&oȼC@)X*VKBMM9i,=Ơ8 5C@.i3:}7i`eBb\2 +0VN`o:4Jih!6ή>XzoqJ\߬m8583F`kRawBbJ#,=E_qVZ5*!#7WJIY+=d"]ll`qz+3ܹU*\b`$tJ0EyG.Y[Ӻ|h}&6E ND!>!^K͐ tiG QC\HyC*jU)dz씎|OVa/.+tIjXƜY!%r}$86d]2E3p/ x[XC:8ऑS35ea>r +q#7%7}<muմQJqhە4 ì[ Lߚ%7@]GBTRn1:fB0Ǝp-e\Y1SPn(a5v!d Wȣq%91/DgU9\qYg+Oھk m!FtBd\nYM m+̆%Zzq0<X(L$ЯyI-rm7g?_C8baQ !:K4|<8?<!;_};YG +;mgd`-uNA穵TI) # +^.1n`Լj-rM뷐P)d R;ԹVޑ/r**9iis7B<V&IN/ "ψ< 1j7k/&S+0 pɓYs? 6K,q=>68뇕7ƑEYbr>Rl^XEq$kƔ]Vg@\@]m*juDK,"|h{AqŭILNY8V>+>KF/)̹IUK$ ZMZ:McbmIH[Peާ #rҔi=\WuYn}y>c%VfqEa%`<xuRK*[xu'W~c邿 +___W,/PK;8cM9!MՉ8wb'"FxXHAHl6Iyҳ[ w ˻>V{ gT&{/hbU9'$i?o5#>nfa~~Aq+8Ӧ[ŜOeuf hDžw Ikl{I6Hy>f$T훠~ޜݷfMۏmIۋxL5iZUo? +8s룝G6&ѧ"/- CRٟ}RyhSf\{LݍW9_ΐkwaC`ͣ-^0ާ!xiƹ'v6FZ +'1k^}G;lߑf5wdپ#{k^}G;lߑf5wdپ#{k^}G;lߑf5wdپ#{k^}G;lߑf5wdپ#{k^}G;lߑf5wdپ#{k^}G;lߑf5wdپ#{k^}GI \O?9XRu 4<׍?Ν83"}I0>O.87\r\R߷,Z 4;qɓgx:<~EۄN?p@w8p`GGwΜ8_ɣuCߵۆ`8QtL?1fV'2Fǵi | guN=p Yu}i0?`?ΆϜ󰐍H؈z#n7f\\hC.M[`]]@J[\W'MdD>Ž]pނGȸ!M.XCs[/sU伛K{l̮λ 8&a6A&!9vJ8yDTN6i!C6RsLjH~%N}1,-pj|;|qpv=ms ћ:bu@k%q":f4x}\ 𫓄ˑ9vcZb,c'Q2v!%kfv@j;)V n)nll[Q=3Y4W9O,n`LI;W"H;]@k'vD[Ԓ Yݳ՟\ϙm@\mfsv*bf!is`U2;bEpunup`R3K3#oWSq#%W6'0gw6J a?{:0y:Ldd@ wb 2zfZs꣕-e#%wX)ȸI)eRw'-sn /6T + GnEݼ{>=fhiQEU4tB:D$ m! s13vbuN<>]\*o?9$|T)+2yLq iۋï[oRMHM;u9acn61e#Ttꠖۻ110E/+jlOxѹc'T~FBXb=r$!#zr]BJZ-Q,|`U:=!^[Yy %ogd,쮜]&i2Kh 3 ㏋\WS*5wp&ިZU2FzǶ n'͜-c6&ɗ n³ӒF2p1C_%~z}|e$>lϒ'JYBlJXĉwTKVOTYh+uO0*A\@&JQ-('%Ժ4QڃJVChV\vcBjN;¹4bc~-:έ]yn?y~CRnϙM_VƴB̎snGP2RB␚Z7ەI9L5q;2;3>` `.m _!CʺA΀X[Bbwx 0rzR1-e PCfF3N-b3>1?3ȋ[iX8;R΢XxY?; /nnRWY>>#b:j-8Uho,"F&g,vȄz D̶1 nB  ;7iav bq2n 5nl悗MKK+Sk>!'JrVj#d:5}|kp9P}2Yݴwq̭kx3(7U^ V)ȿڄUH޶+Z42.]z*e7Gt]&ȈVuyCβ?B^zgnI,ID;o߯(NƏ`toqcE@ӵNXq-4%'LI+ $=ち._hEt.WS&PZ&noFki{/7}6rp`R"^Zz>W3~lIxyA'Gw=^ΪMC~&be҈+zάm[䱄"R\lϠ-F>j>ߨM%Ĩ,&:/bcyryh{!#ƴ !RZju`s14kgiN]l쎛L@ i(yҵ\'N"O_1I|.7*bD׏˯"\^ŜyH>AO{VSsD^ jhYP1yP69TԤ8VʍS"/ 8p1x3`RrM3ڂ[q3bbbb&$L괃ڜP's[O! hB5)TFȕPƈ]* p.J"^&rv.:$x!߯j;Mk=n2jZu`1$\IMY+;i14OXӵ18nTQԉ8qﱔqI)3جI)XM̈1@"΂|(hbvcZr .VP{ԽFBunxvs! iXØ0@Psn>-w}Zb+Su@^dbޯR;/8岼kv5x?k3f[Q%^.q B6zdgtd2y.m$λoeN\ϻ4|An/ 8>Bf#,du]7Pk@ i5*bI@1&UY}YDqq;Yaa!\_  + bIufgH}Y\|6A}dldLlQ | ?yo>/+~8̘PkR>E?qzbZ0Wg=5[0D V*4KH9=Y1ZzYM@*qWR +ΈVFr$ S@.vqh@;^1<Ԭ`'(YÀ4"jVTD) !oޯ3 ? <&4C=U"@mC% ̐K1`4ΌYD%#)m_3Jn;F'U'4E@v)9'=>p)\Wװݖ13zZӖyqep eLRdF2d I72j$(ir_ +Quњ2 (%(@lR8 Z*l䆄d„(JX)'0w{ Ox|zǣ^6[1_M1/ +#H {bFJM hEԃ:juo,zp7a!oXnp,g\g3@d} +h@w&ƤXDA-$\<?w"pClR!ϒ3Y:ӼK9yT׸ULG5XX,yDIpcqۛ޳7+y9pwg"|p2{f)VM~Au&xV&&FMϬQ7 [.z 2+DyPA}9%m%YZE$BzHIPr!輂#6܆w'SIܣ4kXkS=BsY.̚@&5BdF/CZWᮬC`ptXiqٍwf%eZbXKOk~@]nYĔ"^*%ZONAzXo y W'zOnVP m-8x՛4: +.0'62tjs$LRMV..PR.,Ĵ]@} p +GYjgAā. o?Lf\s;) @'l=(m0Ҧ>ahWʸc>!wwS.@HAL4pw'ϻ]|iwAq'`xu,fBX8Ay)fy2`ELZD)õ9a, +r1;>`p'`&dIO(2N1varQD ^Țܼ]m1=@|۠><aAKrhls f-;S^yP+f鉶o`p=r+9g)ʥ(jէejjXi\L@WVPڕ\_W2`#:?鞕2]35unױQ0pl\HL=J% +CKa%>s4Eiu"80mJ #J [Ee?k&z`KŚ{(ܲB־Iܷ ^-#wOAN +XXEo &g@w>3JXh l88RDNr Z `(* $GK<ᢨKCRVRV8bzTXP\X?Qdd ~g( `Mbg3ii?*>ojۖ'2 8ɯ=Zծb! MiuFJ_FʏťK\UK-R\ +.rKN3/oPs?σc,*]W YrBG)\*bz<0SYlCɂ9IZj(1L{<̎<݋?2ZA5ڷ-6'ʨrF y$y:xԞxi#渥X 7p^2j,GhZ+@^#{nk֧LQrv':d<&Iʪʒ!L1j0gJh\P0!_q*(kc׻SD?  >]̀P rizcZˊ݀%\aqDLwoA̷yaB,CKEOp?`.@^r5ܩ ^S +l%2/`{Nt<(%vf_YZACpi8CmB/'VԮ0J6*$uQ' ԧGv{8w6{ef:¸Avr)%l73.^%7MM%ߛyw_u:YN#coeئXqzF> `@ATK}oghɶ[?`Q4#ݧP?C~kr9ZKEk?oN&vdh$Bkꚁ =ydg]GPQ +Hn5)0>GlE$AsU~uاU zN5` vNzǼ% j1˭J:rwڥ蠞shN6uI[) @kIzHO)>%^ݥB|f(op%qj NЖVeu^ y,WG9t8G/Б>%%sTT遞or |41P^%*bs $! ū`->j{ y"]F/ a^]샿,nW i9U>d$򡑍s; tFº 5cEGKrWEkf;h ު7gukf#}siU%fȤ\?`y}I\o2&.c`amJLd*|bIZxpoC\H90miJO)an2[ُ=3fIGFN .`~Ha>7sr|D5tU2 <兞BCILZ쎽` H#Ulղ?/))9^-*ԣF5}?') Tq{#4uԠR3Z .|-/ d0B Q>b1?ӓ:JZ6Uv۵%eNmySiܯ/opcZzKNMzs +%~cImxzt ac,s\9Bv$Z +Ak\_Ci= B ({f]|ˀ~#07-b ji9~9ͥ oMڜƅ{$~'0qkjNlU/9/< +,"D- +s1(T g-98,P[P+I>f`=&` 7 bUyxaVf.,<^y>Z|VpN(؇")x lI}(yD pi<CN-.vkң@׺#/t9Ϡu +6vs/u$gqp}p෤Ԡ^*/MFOۙGئoJR|4"Zԅ}XLQ;ؓiw| +JKfQ=zF>}w0u0ojJu4u> ΰ}x(<̧dae"]rZ&V1`*&`gzyZTg yM9N5:ʩ %<} s SDDl%} ᶌhvV̵#m#G=45%6{;0ٯ<*>ޯgar@hx ",.T T +iסY$70=rKq^w0/*hh} lPsgS +W~_+>\,)o-DeiWYb[@`C=оBy^\p^3ce8 $bqc`N, %0Le> T$R z`7P Gf`\@/D.$5@`Wa"v + bdU0uaաӑQZ r3bmOQs!)`?f;2L1-nHY)lo'%{@.؞uL^A-U<[&5E}QY/z# FXH9#xw +!,ulGB]s2lLBh[Yga>\C&&y5ؠQPy/v2ޞwr韗e, YVeUSP/Jn%cdTEC}qSALC<̺aDIN;=|Qp wCiS!dL+L"~bKhb]9ZbBbY_R2&ʫgfD.dXsߓ9%6c7=*N^7`#לH5 =j"0W +uDJqTgfBSOHpq >7;\->X(:u{Zҽ—kwDxL K O}#&ae< լSEJؚ.x257~5JZ eNp>36p 92xЯ{oSs1 xd!;aCsaE\xh_phO[i`IQZxLhۭ;EҀVāAK>-U3\2Bt@U(qZ]%af(;<`fS:jyx %!)Rb9DHY}kw\(FrK +N"_-t$h}zHM| _'K&zӥ0^5#Zg +)}}IeXRw0'80*lGp/^ +}y_˦{3p6c؟V[\315-` 4( +cq%r?i^Rh~%9lCGshN {9 f>/ ]pXa3L쾉C=ZTH>Hk5F >J;KI~\7: BCWTw}0W/MҢ} rd%Gڗ05z5R|q֭|F.|*"z)C#3 +hj`lphꨙn-%of{ulYrg(;72 &jmnz?js"F:q6 +w^_mϸTZO rJOE jX31+"O+fesb}3x!6;};L^&Glc^dp uTv&p!SK[#B[Ɂ# +FC M_4ԽYJu{YO 򄊞e b^'0ojJg S.g{l$%#i;#VtE(*)ɂټG~d) ";C(p)]b- T@Or 1 Bx ⹠} =8Xn!^ĸ]'mMJb_Ok~5= `o: +K, +7wЈY *`?)II;~ha2p KQ6@ +5K `Q y)ͯdygC B\L[Ȼ6Wz{UtfݦPOua ?@m#؍K4#ukڎo%Bs{7z +7^^h-ً~&F{Uk3hVcAJ1uPp>)3z㜄=?r^83J܎bnθĆ 4.=tMv!i3Ã8e=GLtG'd@An9#@/d#5QYRk) r1ݭrӌ]US+4 #Ů n ^YA.qR퓔 ^>kw/3CdȠKt2rx4)zwjh%9EKrLpsy^-c판>la^:gF=KK*ٰ O/'Ow&F@)Iqv>7whϹOC}>s0:ZWKܓPJ:EIC(Y9gf jj.x6} Mm+ 뽈'@@qt!^%!vwk駼[ýrNA=vI:. |,3b#BDr+$ŌO [QZQcg{3mS7wF9RSak{܌g$A=\iG#lt3"w9]S 쒹*V/%l)/Ku{-cf@ ob_Z)䐝QR)< Z7>-[+Sݳ׶I|θi"Xmİn.ӭ>KXc85'۽7rn@_"D*+ZȾwfcӄuwz3 5)y i1~oRg5oks.,¯[ZnApLSbZ&,`2Vv[hN(5,ἀؖoSlӸ{;CG1ȕN!Zkf%ZGHag=ȇ-WpO\#AmXGqvswvDQ|fSuk/Jr[V^K'fc'y4Cvy'-CgS!⇽ihoD4 +8 nû61G}i*AVG+BkM@=֦5Ԥq"!wh@GDIO:yӏzYpT4vFJ'bh hhugjugr rk(#qwO|ډ;ךqy\ø S}N=ГW /W.nt$7Ն֙6/Xd:gIfZ Ąy#跮Qsk=k;h9r;n?m6|jn+?!~H#@ܙum'0m7FC>uM θI Ylo5^XnߴB~k顤? h~ +乨u)iYmr>~=.\MeK}K=J+xf0$#yoՃ{Ճy:אycenFD˸m32R|S5mUҩaֻ*/lw.][WSN(LUv^/Lҏ):XI;WA{p W7ȱS߀,Vгpo!üYjϻ*MPyfp8'\>4_u\q>B+yVX0qs:0@ /ugߏPC9_yAS}zr;>cw8@ޝ́|P[QV۳zd}*fW_맄7 n!,5\U7TF=25 YGq>-GEJɺؐtJ_s|X[uko {č-gQ{ }nVԏ kW MKIo]= 3m#avr;Z"eqɅ&.ۯy=!fr|3:FKo˟R/llu>fЮR+ivPP$ḱ,bK1aIm%r+#Ry#FWՎ܋rI cuo7+W)!>Em_>{܆m,= ;~I};\euSCs/+2~WğE;JI3~ދz v#)皶:ᔪ, {Ntpﵰ]Zm/yd;뛝طaJ.ͭn{ O?mBv ^UA)E'fԔ*GWg_l…y8mN[qzU7>\W}s̈́+ݤwȑBc E*3΍ÏMNq~ZuҎNuZ YQ/Ȑ/G9ڰoc!JRRBПig-9fnHf⫵zS^R1HT| 9OߜBḱӂ76%q͢?8{:o|rRb@\r!.PO-ۖO թg[& ̻iNT2ڐo?_Id=ܜ~=CK'ڏK ĿYj˻;:1+AQz򻊌ļ77\G}3Ĉj(aj7_H?7(.ic"崲8Ḭ07jؿD[ɱg~Kg>]nۍ^̓.ĝߔe'?i/L g]׋; K̳3uS#_¾_+}?SfTf[< pJ,J'-Z[waT[9%L;97W;+ͺH +po!dsbY~ӦOv ęʸKM_nl SZhSYSb~'dG~?@~μ+7a^UqQ \iM4}մ_-I'j[wKKro'DvL¶:aZ`w[7 ޚZ)kڼ;% ݥ3+MYWti{&Et;_/wn?e]ԖVזĞpL`wMu Ub5}좹q Gu&ɩcSј?DŽ9aZזjՉ7z|o;1^C_LqþR~7 fּ{"o0|0bk]Eco۱リ'O9giWWq溜R*.Ow<4!u%B0r;=F1lq-S]iaݸ'h۴0'RMˠ0 nuatk`:pϾ@>uK+>7[.>khN'#Dss ^̩~lЂ{Ϳ:Wc xxLp}nZ% -V.y82j6ڢo$=%uf_R [A]|E r:.{_DM 8Ĕ8z;Z'.碩&B3⮱Tx☔Rv9gƺs }J3cTsK.*4s#+s^|ɊWeuεjRo_ywk%:Anl;,zL\+I5>(ÉJBƀ b;Z[es}ï,)7ӌ悧檌+6xf7rSoڏq{1GoI,+X|zv1 [B*B<s chCEֹ37#'koRޞ{/@F,KuF4Ɣ_ޏvA&lIQaq1B-B>3]*oUWǞ4Ԧ_Yi!=-4aoUeYg%ic(Mu)r'Qaٱ@h$܍~ģff 3)~ MYvOnk=|'1]]ÿ~C|O_R}ޏxʇ??K01yXvJSzR1㬢$'YA쯫mW%wբC5o\eiȹ(Mq-wX!nuuEqj:&y;P/]CyUٗg*1/FYWM;=fh/qWZ{I׶~l g-{wԐx=EYA~34̷⟏ O4Wfż⣦k(-5Ĉϴ(RCuo;o1!b:1ΰ`Ԏ{؊z)+K;ߊž}n>%M?3̊n;^Z¹>N-] e)6c&1i_'==AI{䅑?A0{wُwlj̰iٯwaڲ ゘ֈxz(cEmMCP)?a_H||5Q v->IHE[ȻxF1uľ24#ӷhq+y77o Њx9 $+]T]5?d.̳{CԈZ*[Z6F|ijȼ`NE&Jiu+?,5k}8yiFzr C+?oQܟ~Ҁ~j ݳj 3mka]2%Hitlrna@_G~.˿.8+)N:;HV֡_kH;YLܒq]WBc~r%&dyc-qsR1Bsn㥶Ӻ&v UYMK J&qNB/dI!AmЇYIV+6/XcԒ{m!ЧK[w~EUQՖ'=olc( 斑6OYYh*xw׺Pg~$$4* ;ڝ~<4=TFRCu4D?{ȡ7vA +ҞIt(Y]<縘bWz/ IzUXvAS+кg~5gfe" Mg½) ykbs潲#]t+ Y>+.As.kڜ+s-.zhEޭNR7rnJV9dr3ZO6x闌U'7(q|g$Igg%)g䟷ڰoC;uV ?C>?ѿvMS5-#xTX\iUW'̃FK-򦵗LDhIO}sVyl$\3=4甘 Nbr+ւ'EIN(!.E:TSN/uf߄֩@8,09rjjd1a' OT"މ-$mFБ{JZm ImП)<jujs i-v9^MyW]Rh1@Dž-Po<ܽQV[Y[F>^Cg6'K{]3ttcmT-pb{%Z]ݏ1s?mj*xn~kkhE=NIB1Ҝ}=rgΝq\Młm[ƾ c厜GSҨ}7sT$sM .Etg;Q,5#ok3+`O6bH(n Qwu蛫ĐIR81~cDXe1\myYЇ{a@>@$ZһkR {nSծH榬K g55WI[+-Ӄ|;MNtKBmR7zYq+PS'R̯\}kW5mC9WG~PO~B [Dm`g;…٧ N85afOD(bV=j'̳2#TK "9[w~$;兼A|rk=S}ySSm۸ҁ{L:ψe|nZX'@] XC<ЕTBEV,C ^ᜦ$j..6s6ƪEvnLuOcȟFyWOWc9o(qrk]+#lB$`ǻ}OzskbN+ӥo[LUm%bx\0z{~|޴jW ^87-ތ$Q^ˆS;wAuHoO~b%X +n R?|5- a-F?%ڋ;̇otbWىa4i )G \s.-/q6.Mjg!y27a.dh&jm>BLx"UBrnN1{S2j(1\@&Po ѱZY?5g}7l)儬pcG=a2x1my@ +tr:Fn^QB+xlJ)z8eb`.[rҀ1UDy;UY^㜒5/-7\sSĉ"ʭ*3S'qP-,%N+kҬnajN?36.[g{Sqv6Ɣ$K$ydi.Na^n.Ξp߭4 ctZ{sh: NO!bd=uPY.}eS_fKڜۺO{ /ZHC*J f'n9>fkʹ +lt[o)a+/J?x0 Y)maa7ѣW.vRYifWgWUw=ݧ)W \Qz"0W޵6LNշ^mʊ{aeRf.j/n#= gWg;K_(7uՈwZSUn).:, L|oܻ~$󓰘9'7 %gW̼~XlgQH foG~kdفF=b,7'$)%]WIн g@__2)v8m{s o4-q(D_eX2ߑjrMoSVp(46-5 'D3_^+:AI,a^G\fopa؍GmĒ|HIrApPë@Ξ=| t9'<} +('͑Գj~֭] !ϡ'!z1\րSvr$ۑwXJz6ӠAy(1_EahVח?b_SUϵ#u/-ZA#Yw@={ +@oo\W1tq1| %nyLWb'W-HVj# 9#x^#q^2޼{{ U}`>.91ssbFZ­jX`kCrrіSƄxi|ZqpDp4+(mAϯ^;;A/ |'7NU]5=1OBWJߙ'QO|ȃnB?qB@Y_b?z9 @ϝGs/o1/O͡U.-sHS0a&X%xT/oށ^\zr<(mPÇ>s??z t^ JFyu0pkMhWw\5U~<(!Ťsr$")ٕ7o]w mw.\yWPK pD/{_}25VO,.1=i ( $":XۗG׸7_<: y ^BnOq*ZH8Ђ߉y'i }y3@s۠矎S26w|l|CIʷY v̨T]=\R &#(4>HeLԑ/^'+0'@ѯx.D FB U^~%P6h1+H%xnoA^>}|tEEs>0勠σNƟgA_<U~"籾G]'x9荪E +`P'^=z tWW/{zxڙ[zݸx@̘.EJ+)𠹎V !myŎW#QW⣏| +p(Kгׁ9 t_@.]8u PԛG_>^y#&嬏#V!sO6A:n7u_Qx&?,Hҧ7o@Q/_ݸ:uqSS8 +{HgFY/2Jȡyf9 qik8i]I=u5RoS߾%xU /z_] +0'nn_zz([/褨:~Vyg{QnR F,I ;wwn{?8 z~_k}@G @~_@DXV TĎK\Wᷔ5K"|-9 :ّ節yzq6y +5AL|13h2HӘyC;H!RߍB{HNBO.?]<1>F\[i O46UX;UU+XV!evj`5e7Jި#7XO91 +sĤeA'Ɵ$'(hi˃ظWC0)R'j`M:[ ɽ9^+ֆ3؜ٿf9 nJxt ~iu6'1igY|hva,I};P##.'.7v(a-L;ɬ(;̄k+H)fCʄԼ]֥zt1E*ۻwBހ~ ,(ЬrWKJ'X2[ٕc +P=J&'o.F&H<3㷁ؽ:i[/@)!q%W;jUFJHYn=o]yM +T=b]vaE|f9Dz䔳gwA1_EHajopzB -np t}m4cjvvB *"5Nf +M?۫w@oϊ˹p) +ļS6>9ʃf,.sv\ES#XUSmo58%dv֯ { +=<_%; +IUqoE +Cl[@Lަy0kS䥉:\/%Rۂy7ʅ<•[lo v2G5dLHHx-Į6XhQfYìHِ%2?Ujh:NVD'iO<Şl.Wlc|RCSEۑQE +T}C=fQ׭Ix .`{ =ReOSz+%7%C(³-0؝*Ap#.kv][B{,WǣTUAjL'>beY1! +5)Biш?׻qV6Y#[j8³z>QXo. z ٔSrF 1$-yixvZ7XS&jS~@wsOe]X 'cq +ϰ>5 >_Ɔrb!XS$=؍:D^: !#ᢩmn-c}¢&Y(QpqkC( p`2P;rR]%JYQX[6ƏnM2+cLDzv07Ć?94mG!VUw`hzJ:ܩHitsUVUQjӦࠝ#oIe+qLy5KJY>V| &v/u69.Gm 8d9Ю`2.ei{W mk֞UEGϪ>;D/j2FHEx#*Dg01YA-z8== H;b/~b<As]#y9{NL-\!nuðoFش{gvNRh..-*:ءb6&H=w;2إk[G~7?ZQR*|Kɥn>nù, 1ISb=4.&e,Gpn=9Zqc bGM}}C)+rWNPgPE[2ַ, . }MGvA(pQyU4Z>CwMӥ"#W~ [|&pL2*:Q*6.!-LՍ^H=V;bF1V&.']j.ySZK@5Wƿ8miS`Slrx]*C_شU9c*Rwguڷ%L!:\}5Ү¦kۊ_wBB}Vt+yxVdSS0 O'i(x +vݛjbF\ѾTS!#gmJ&rsYly;J!*gl80q~ݑ =mr\KiHe=-0n%2im(2700^0{zBTgLly.,GYdFbs"e׈/ޛ'X|Z6ALߝjk.@"0茥[CW'{ZRKoR2gB'ߖA} x$$l[8XWո M㾅nqx5,*ĩ {nM`cvZ}Rm~t}ym(yҕy2Kk$tk2 _L +\2J974 fW"!]N3#b7an-8?Ne}:=߃X?7+hvPdR<*[3Il8>mk\`nlk~l|Zi)xeئ K}/6pWĠ{BhY$yf1E-щ;JRLwLU¶+6PRCW_suLWX=d` tE2[ %/!|auU>- ;I\cu"]1h䙹bG3?悂uTj} kx +~5N*4S,ȷtª-6K\h|3TfKޫ^0_6w̽h-7ﺊzNH9odu>03ٹB__=Jt%ac- +x}c,ZIgj3U<\])L~btGOO~4f,wF_^iyS,B󡆅Whv 1{k9 +JzkquN>CЫ^#V: +mt<~җUz4$" ĽCJ,ܚxg{d. +wYB ,/R 2d{e)ubj,}U^>Zl.?W|9  Vo7q?[]Qݥ,ÕK=syO2_aˮ.\U,= Cbwoxt{m hw=%ǤnAW3=NrQ*m방5`ۀWp}~og}6KqaMD4i(dƬGx:߫GcǸDSN7}{᳭IdC@ؕJM;XjQJD42!x"ܭZ5KսYnGLܚDE`v9)NLt;:py>-Q2bDrw3 ?JwŖז^HV7f'ҏ69664ٯCɘ`'OՁOv5\֎0(cWGCsḅŶwgG ]h+ehs?ZwKcSYUqz6H/˝" +S8$);%g9K]eovd@c/ꔂwz)mT57q ۣaBZz T jJ?lNp ~-17-7cXђC9N~M|zJ =0p8;08|'5bW΃m.cc _á;5>`VƨQjUoۧ y g [6O s"?PkCoq a v ƥ%F2d@Ct\ھ1 ெR'鉥>%>,pwvexU܋ +Fۦ0It&bYWxUJܡeLẀxt s}ڭ +6ĜM}MYEߙ8ŸWK94%m #δ$9`,=jTM T ̓0|M^}x+").ۣ#wut8ʝ2Tu4Pc1tYaw;W6\!-Sh@7$lK2\ScoyFCMac-Gg]FXqWO14FZFƚYO>qygMu74Ԟn[O 4|{ +ωs!VW_x{?˦nbzV:K_e?\.y< +bgܤ$>;摰Cۺ:au}uƍgXD-tÀ-ݙZ&NN#nRQ|rjM<4 Kۣ῞xYXWhgQS44ئK#?IAW(I3: uj<<&u8/h9)l2yOO6'^]xAb6K#e!>9 <6Чes~.A~W2PMǸe4)閂1Cͷ>OS/J(܌9/6akcϷ?\'vFAٙ 7 Gf2R5A\M~O/)yPvEESN +c)cfs_+\ +Y)~Ǟo)}|է##ƦJ׬DOۙ(Dr5(ittMň=;|b4-xYfo&:o3U] +==ךԫ\Z*O*:ħg5ZbWLuJ |z3ϭ \ kbrxʨ.ju9~x> fZFq1%OۣB02RWtm&馿u}Ih؞ڒ0+Co80!?ȟ,*ocy Q3PKTc9aP>ma\=M>5mc2x f?vҋvFq EOV;_!!; +^¥j$sPG$2٫AgfM3\D0,Czn_n72N5ld8e,CB+GKx2$1J[}%yp?8*1KŻՁ^:cG 14fPe\(>98[j⸧*So,ޘoMTS<:|XW[zUF¡&jX1jνg_k9xQbGm?U*,#nW6%A}MhX91wu9EsY( +ڲk E!#@/ӶtY8$XWvMJ>b~GsM3Mφ0AOiqDSSݥ?< :q[ʀ$GF*, ɷ?gM|M +h>qTSM*A'W'lfa8>yy"ܐ.hi^L̥QR^pBgg%?rod@:z쓺19" +`Q@Og=z:j[Ow(F~6+Lz2|OE)ײn56á&o5]od1~vʵެ"j_OE*>M[|MTR2n0Pv3cs"bg>˼J6rOI,ya}3a#8y79'.LPd{sїc EǨO7|XZ6)4DE\ki# 8鿫Um9*y@[ +}8Ϥ-~lhX|3IKhM]IT왝QHܮTnJ8gh|܇ՋpA 1qnX<+_]er mQYy"ChinЊLx3E4"|\K)Z媬/W_ G-}a5+Osfswe޲KJ>尽z>{SDv)iY~KzTfjzb_m̻=ۑ0Kmn% u#/oN !qgഘ2ASLOSmOÈ=0RcoM-7fZc/\jr4Ol+|s8#l?3I? ̮\TFlg؞( +kh +,b6gޛg=J|ap`?2 o;m}PK +9u 6{K_otehO@$ᨛSv$,:fk91`!6%*e=nygj88UWoВ*|UA-ch?:Tlvuy;Uz1 ,[ +F q\]{ MQv$bBt(Э)l]-2DyҰN% Va fH`>^phfTOg(ș*K9$1BD٘sZ.`#gw5֦ܶ|Yh~6Ӑ|m> be@}Cc>󫽐Atd"rk=հ.ARUK-}ʾϜ'ozp1V$_<,"fyU+}b&=I/aN92NSYQ "wXE?1Au(y)FOC.Iq+o6 A}IzAx6oT̸cDxq{rjGB,t[lOov \@yjõdz鏶FJ^ā|jvƻv|ʳÅ]5::_yG͋>nL/$T,(qzW&RJJ+S߭ b=j*=˦{䲭qtyi ,,5fXhN-gmL y`sH $%4W |Jgo1Pv-2iXlm?{!9{k(]ns>1)1VWs1Oo!f!E\]dG{]6o[d4jfIq84>ӥOkX<{`1R:wT׵gLSɰNZJCm"RC̮X%'Kew{PY:1׺*"lk( >3<#̼dLUiBE_X#U!LX'<**|!RZ2"!jJKO(pkiN-:׮vTfn1"S;"6ͮMǃNtNa-DXWj+#̬g툈vshi0`y`'f B!,ҏM0`[C@]S5T'Yc[To/L,iajo3m]=v_xYOO>wӰ$nဿ9JXI ^<ƃܛ]:ѭcwlʁEw* y0.^piZ\*[/.dQc2bXee»uZs:^򝕖>T?N7˯Fr׈:Ρe8íaa~uxC >VąQ ϵعgdOJV:@ˎ}tI0F q_N%}mmR>K7&~}-Ƨ-T/6')eΫ%:l`4$/f_&|縵,/7q^ G~wqUG.P wV{ /ZNnJyiOFy7;wMy@ "G !# +h̏% Nbuա EA|ݠwFpe[I*;V/6R@{+^)5<ےs{9J_EeZ<ɾ+}RZW&_P2*|h*/-z.mJbEOّ ,XQ5KX|u$oK1)}xSc宊DDe8zOIxᶂ5Eʲ(EN=`U`mo-k`ۤ\(*|y 4vkU!G-}ٙ.6}}c諪)'Pה> O{]4792fNI3_^:`QEN6~~52"ȥE/tMP"vK/4,֏uqL|c=# -wW:s{ ZJ.4>:VW '4#j+inߘ鏏T?9I'$$TJ<\MwVֱ03l.ūb`A1"4\†]fWt0X Ag\w*။wuq["{6O(YN.EFİdE&\xqkӏ9*٪"HQ;o$vW/Y'ܑPr٩Q<:iϵA.(x;7 +#.5cׇ o:1' ӄi.jЉO ) ڑvr@(1n=Kt]KpLu,z{s^SmTݸ|O+S[3ck^LF<>ȱ"t rf'K} S>Y)sEzm[)%`z uR l3!ے:[.:\; +`n`^#5|yW[S˶Ř@mC݅>xUB.ޛlJ1ysX'- +:ڡgarJȝAPӴnJiNj +&ti0Z%mNRMei/-zť JT_Ԓuok*!G襀$TUp;2dYZ1U؟&EexLUf}Ge )~T5{sznO_(ԭV;,ĶؑJyLbT41}{ilJɾ;Nh,>=='f'D^$_kbi+_wc*>"C=:6ewiZMXYu4cm?cuE+Rᨘ~7b316.A%DXEBg+%)˟-ɲ괛:aݥ/5gPy`mLr(P8b|t7X|f Ʀ[#< i((OA33;ʞGᑝoa۱Qc垲w/z^rF`UggΣj\]p(ཅaϬїaÅN*Qh'UBB6YM#m_΋a7ȫ[%|Z +JښeQS85,..!ϥ-)vtQ&k~qT;kS< + pi6B_u".,tڦxm! l1qq0N*]@:U,th,ơMBX0utcCZ!e94ꦄZ xOڇؒ@Kzk YF.[!iF*jY:7Gb˨Gɻ3fAiP16 i6em@sMZDԂQRoEiz[ aֹ "W%O-UZ}7,%c­c(jwӥ; +N9/V'淧A1T,PxZoы͡.ȥ |~;!C+qh,!ƥg^#5?\ NIy dr佘hq'SĄϧ 5e;c؅ۋ=YwU5W]!Z*x_[yna#eļ]-<ɥFoL}ez&&gHEP.r?M<ΞY|ғbu '|g7MY] k{,VP@yy^ u#T-۪*-o(lS?::+Bhڛ" cҦ𜗿u{Xy;/i|0!>*= U^O4kOqr/;h9gf/*jl?|RZwlWIoɼvbFԐSmퟂ]ʯSL p &b^wv%wIBشAcpE+ ^;.UV#dž H\fCJЇ/~tдa7~%¾ {[Ɗ)*۵ 3FB,W=w7bQQvUߚh@d .kI%3= | Vb߀Yɭ~v}B)C(~q%b.v~aa$aZzf|6Լܲ-96 6.Aaۿ/Al)|)d \$F8}r0BxPek=r)%HAʽ(~65'lm@?;i@*c 𤯓d 5m<bd 27(P.I*5k%^5G;en|]y{\xi%TlSu/Ǻ)랄-5'zEBm(&|ͦIeQםx3To$lŗ=Kݜ}&uBZHƨܚkDI-mˋk +[%k𦗆7:1UNLOTuwl-qc {Јհ5ΠxaqǦoْ3)}ƵM)0.${A"4-ZxIךZrɚVMyR~k?nhO9%̫Q9&b+32s +O9@3 :A->DLI\A&c'm{~~¯8xX-/͸4׍d#5Jj,@&I%g&٥TsL(ʎ :+&*2˱iM< +i +Fm\QF|ʃ. +,#<?yu/\UՑnrKO[Ÿكw +ܐaI;,"n,cRY5wy/kF;+׷aLUŋ<\__\`DXhrx߻jEϨ_ + u@"v?%a'Vps:QUqǸo~;fS"Г9IS_aR㶋6mNR|pbǨszw|ECM/{'VϳPM ذ1Ծo+OLA"`nB>a?Qm ;6t񚛉^jv ԁ>AAg1F~|QY+ȿ6"nyݕxLXdwM_Ӓ' i/ܷ +ϯe@Kݴla%lp_IODýUO4-_y>:z}MRgO`askup-mE}zWo=bc6LІZё>Fe=<夋8yRTtS~qˆ)VԾ+?[``m@&SdV;28)rԆ]F#DU|Ux-d]ts+NҶ٨M9d%M)5[pgH +攨\-/SBݚW9_B؊#O^xSn|| /1wKG ><$sBC-Չ޾ز??>ɁxU]Pc$WDO7$~^ o? X x :SPwLNe=m$7YP% +PN4X]#$s͂먻m%[VDQmǵ:qFƙEYc· 6h֦Y73R 4ܒ4k|"}ۖUЏ#f߽g䫋JP +%J|p[`pºfQڒv-6|>oEC/N9oGyo"mϾn8%o=¥r- y9!0]ƄXȬ=aǂBvD=ch Ӆ 궔-;esӔ@mQh>bPCdH |4hKZSBwaECվ[TXD.0 P[)m_ȏsr/dkAoOvĝ^3׍I>n@GummGcʯ ƷzC*拟I9]p&Zqś&b阰婕V9崤!NهSrh_>V͍m+4,NJӶC<կAqÜZ_=u/ ɖ:r>zKߴԿ i MJQA⿏1 ܊_a=\JXO_40aќݒRܲ +H'zjy辇SlZ +JAc9g ɾ>n1AS`ӻ ×2àᷤq+ɈD 8$K pb>P 2~ѵfFd/ޟ*n#I-zrz㨦ͩ;4[î|A<^a'Ewi1όt?7;PzFh[&C/g;O'QEZP츠vm*JѫATޣm'nEi !es_RN=f]վ۲Vnᜁlh1;OvHZha'`PN//kړ,U= @nXhM +xa\V9>Lͻ2ʯ~hOWuȌ-j>n}M{[Ŋ#N}{-:wHU@cpz>Oә$qTՖ0lۅnP4Y@, +.GxvČNk͌)qqˮ 'dd^Q9zIY +,|"Eɬ~:ܲü]x/zDC ܯ!Gֆkvr0 7U-"9A$L|<(zsCoo'0:9q׌G;oo[( k& +(\5[U<[x8Pl][eI-#N6=s0243NtyM3D)hyOt>VDԿ9=)3d6(ɕrLlaEK4'[ˀMRe}my?@~CM 4:xu;tI kO8Umig҇[6\e*jCÝ I;c_s#o?hϣ\0Yu^E| O9nfY73֒ [^oDNm7K6: n鐱0$,|tFTp [) +endstream endobj 6 0 obj [5 0 R] endobj 39 0 obj <> endobj xref +0 40 +0000000000 65535 f +0000000016 00000 n +0000000144 00000 n +0000041364 00000 n +0000000000 00000 f +0000042973 00000 n +0001598233 00000 n +0000041415 00000 n +0000041771 00000 n +0000433141 00000 n +0000043272 00000 n +0000043159 00000 n +0000042227 00000 n +0000042411 00000 n +0000042459 00000 n +0000043043 00000 n +0000043074 00000 n +0000043307 00000 n +0000433214 00000 n +0000433773 00000 n +0000435125 00000 n +0000437350 00000 n +0000502939 00000 n +0000568528 00000 n +0000634117 00000 n +0000699706 00000 n +0000765295 00000 n +0000830884 00000 n +0000896473 00000 n +0000962062 00000 n +0001027651 00000 n +0001073521 00000 n +0001139110 00000 n +0001204699 00000 n +0001270288 00000 n +0001335877 00000 n +0001401466 00000 n +0001467055 00000 n +0001532644 00000 n +0001598256 00000 n +trailer +<<0413DE541FC6BB4191DAF83F0C9364E5>]>> +startxref +1598451 +%%EOF diff --git a/Assets/Project/Graphics/UI/Icons/Gameplay/warning-circle.ai.meta b/Assets/Project/Graphics/UI/Icons/Gameplay/warning-circle.ai.meta new file mode 100644 index 00000000..ee657686 --- /dev/null +++ b/Assets/Project/Graphics/UI/Icons/Gameplay/warning-circle.ai.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b043783f72271bc4ea400eebaf262c29 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/UI/Icons/Gameplay/warning-circle.png b/Assets/Project/Graphics/UI/Icons/Gameplay/warning-circle.png new file mode 100644 index 00000000..25a0aef5 Binary files /dev/null and b/Assets/Project/Graphics/UI/Icons/Gameplay/warning-circle.png differ diff --git a/Assets/Project/Graphics/UI/Icons/Gameplay/warning-circle.png.meta b/Assets/Project/Graphics/UI/Icons/Gameplay/warning-circle.png.meta new file mode 100644 index 00000000..2260d42c --- /dev/null +++ b/Assets/Project/Graphics/UI/Icons/Gameplay/warning-circle.png.meta @@ -0,0 +1,108 @@ +fileFormatVersion: 2 +guid: afafed8bb4efcac4c9e2fb80d3260d6b +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: 0 + 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: 1 + 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: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + 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/Project/Graphics/VFX.meta b/Assets/Project/Graphics/VFX.meta new file mode 100644 index 00000000..a563a8bb --- /dev/null +++ b/Assets/Project/Graphics/VFX.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 61f5273b86c78e140856dc23dbf79819 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/VFX/laser-texture.psd b/Assets/Project/Graphics/VFX/laser-texture.psd new file mode 100644 index 00000000..4a34e783 Binary files /dev/null and b/Assets/Project/Graphics/VFX/laser-texture.psd differ diff --git a/Assets/Project/Graphics/VFX/laser-texture.psd.meta b/Assets/Project/Graphics/VFX/laser-texture.psd.meta new file mode 100644 index 00000000..f0b33fcd --- /dev/null +++ b/Assets/Project/Graphics/VFX/laser-texture.psd.meta @@ -0,0 +1,108 @@ +fileFormatVersion: 2 +guid: 21abfc9506e2504488578e44cd25bfd5 +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: 0 + wrapV: 0 + wrapW: 0 + 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: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + 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: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Graphics/VFX/side-mask.psd b/Assets/Project/Graphics/VFX/side-mask.psd new file mode 100644 index 00000000..efee092d Binary files /dev/null and b/Assets/Project/Graphics/VFX/side-mask.psd differ diff --git a/Assets/Project/Graphics/VFX/side-mask.psd.meta b/Assets/Project/Graphics/VFX/side-mask.psd.meta new file mode 100644 index 00000000..bf335f8a --- /dev/null +++ b/Assets/Project/Graphics/VFX/side-mask.psd.meta @@ -0,0 +1,96 @@ +fileFormatVersion: 2 +guid: 1c5d70ecef2ab5645baa9af136d913d3 +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/Project/Graphics/VFX/thin-side-mask.psd b/Assets/Project/Graphics/VFX/thin-side-mask.psd new file mode 100644 index 00000000..85e95322 Binary files /dev/null and b/Assets/Project/Graphics/VFX/thin-side-mask.psd differ diff --git a/Assets/Project/Graphics/VFX/thin-side-mask.psd.meta b/Assets/Project/Graphics/VFX/thin-side-mask.psd.meta new file mode 100644 index 00000000..9a060e15 --- /dev/null +++ b/Assets/Project/Graphics/VFX/thin-side-mask.psd.meta @@ -0,0 +1,96 @@ +fileFormatVersion: 2 +guid: 5741643cf678f044b9e6d88464eaacd6 +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/Project/LWRP Asset.asset b/Assets/Project/LWRP Asset.asset index 0eb9e826..4770e71e 100644 --- a/Assets/Project/LWRP Asset.asset +++ b/Assets/Project/LWRP Asset.asset @@ -12,8 +12,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: bf2edee5c58d82540a51f03df9d42094, type: 3} m_Name: LWRP Asset m_EditorClassIdentifier: - k_AssetVersion: 5 - k_AssetPreviousVersion: 5 + k_AssetVersion: 9 + k_AssetPreviousVersion: 9 m_RendererType: 1 m_RendererData: {fileID: 0} m_RendererDataList: @@ -23,7 +23,7 @@ MonoBehaviour: m_RequireOpaqueTexture: 0 m_OpaqueDownsampling: 1 m_SupportsTerrainHoles: 1 - m_SupportsHDR: 0 + m_SupportsHDR: 1 m_MSAA: 1 m_RenderScale: 1 m_MainLightRenderingMode: 1 @@ -33,9 +33,13 @@ MonoBehaviour: m_AdditionalLightsPerObjectLimit: 4 m_AdditionalLightShadowsSupported: 0 m_AdditionalLightsShadowmapResolution: 512 + m_AdditionalLightsShadowResolutionTierLow: 128 + m_AdditionalLightsShadowResolutionTierMedium: 256 + m_AdditionalLightsShadowResolutionTierHigh: 512 m_ShadowDistance: 50 - m_ShadowCascades: 0 + m_ShadowCascadeCount: 1 m_Cascade2Split: 0.25 + m_Cascade3Split: {x: 0.1, y: 0.3} m_Cascade4Split: {x: 0.067, y: 0.2, z: 0.467} m_ShadowDepthBias: 1 m_ShadowNormalBias: 1 @@ -44,12 +48,14 @@ MonoBehaviour: m_SupportsDynamicBatching: 0 m_MixedLightingSupported: 1 m_DebugLevel: 0 - m_PostProcessingFeatureSet: 0 + m_UseAdaptivePerformance: 1 m_ColorGradingMode: 0 m_ColorGradingLutSize: 32 + m_UseFastSRGBLinearConversion: 0 m_ShadowType: 1 m_LocalShadowsSupported: 0 m_LocalShadowsAtlasResolution: 256 m_MaxPixelLights: 0 m_ShadowAtlasResolution: 256 m_ShaderVariantLogLevel: 0 + m_ShadowCascades: 0 diff --git a/Assets/Project/Prefabs/ShipEditor.meta b/Assets/Project/Prefabs/BlueprintEditor.meta similarity index 100% rename from Assets/Project/Prefabs/ShipEditor.meta rename to Assets/Project/Prefabs/BlueprintEditor.meta diff --git a/Assets/Project/Prefabs/BlueprintEditor/BlueprintTotals.prefab b/Assets/Project/Prefabs/BlueprintEditor/BlueprintTotals.prefab new file mode 100644 index 00000000..030b1930 --- /dev/null +++ b/Assets/Project/Prefabs/BlueprintEditor/BlueprintTotals.prefab @@ -0,0 +1,1508 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &686643047513359827 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3380397937280386038} + - component: {fileID: 4119463676166136968} + - component: {fileID: 6429509029354871943} + - component: {fileID: 5559218070099576809} + m_Layer: 5 + m_Name: Stats + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3380397937280386038 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 686643047513359827} + 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: 4922099915345720378} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 40} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &4119463676166136968 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 686643047513359827} + m_CullTransparentMesh: 0 +--- !u!114 &6429509029354871943 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 686643047513359827} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.29411766, g: 0.7254902, b: 0.7053667, 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_FontData: + m_Font: {fileID: 12800000, guid: b9f47330c8d3fd443a5e4dbae17f45a7, type: 3} + m_FontSize: 32 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 7 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Stats + +' +--- !u!114 &5559218070099576809 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 686643047513359827} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 40 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &4667766091273924356 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4922099915345720378} + - component: {fileID: 3213095790358021283} + - component: {fileID: 8174340128288577755} + - component: {fileID: 7146960723701944662} + - component: {fileID: 2274767151163960893} + m_Layer: 5 + m_Name: BlueprintTotals + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4922099915345720378 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4667766091273924356} + 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: 3380397937280386038} + - {fileID: 1479368523577793383} + - {fileID: 2108702310940873097} + - {fileID: 1850733431255038105} + - {fileID: 9175090477226035421} + - {fileID: 2650535328695271683} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 400, y: 800} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3213095790358021283 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4667766091273924356} + m_CullTransparentMesh: 0 +--- !u!114 &8174340128288577755 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4667766091273924356} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.15686275, g: 0.15686275, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &7146960723701944662 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4667766091273924356} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_ChildAlignment: 0 + m_Spacing: 10 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 1 + m_ReverseArrangement: 0 +--- !u!114 &2274767151163960893 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4667766091273924356} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e442b55f9f8690a4f84f8cca8e9f0779, type: 3} + m_Name: + m_EditorClassIdentifier: + blockCostsView: {fileID: 6355928026916758900} + massView: {fileID: 3590768861163363707} + hullView: {fileID: 3834890491517039723} + energyView: {fileID: 6035699777514013743} + torque: {fileID: 603468073177009649} +--- !u!1001 &426351121301943560 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 4922099915345720378} + m_Modifications: + - target: {fileID: 438599937416983596, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Text + value: Torque + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Type + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Sprite + value: + objectReference: {fileID: 21300000, guid: 9ed5f14807d0abb46b875225c7dcb3d2, + type: 3} + - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Color.b + value: 0.11764706 + objectReference: {fileID: 0} + - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Color.g + value: 0.078431375 + objectReference: {fileID: 0} + - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Color.r + value: 0.078431375 + objectReference: {fileID: 0} + - target: {fileID: 6372109433816541427, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Name + value: TorqueProperty + objectReference: {fileID: 0} + - target: {fileID: 6686136345054778047, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_ChildForceExpandHeight + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 7d49f4aa77aebae418b6c289028d58ec, type: 3} +--- !u!224 &2650535328695271683 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + m_PrefabInstance: {fileID: 426351121301943560} + m_PrefabAsset: {fileID: 0} +--- !u!114 &603468073177009649 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 987773853525342457, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + m_PrefabInstance: {fileID: 426351121301943560} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5027d8f2fff7b244797e9b334add1090, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &917014345611689195 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 4922099915345720378} + m_Modifications: + - target: {fileID: 1128575031055169981, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1128575031055169981, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1128575031055169981, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1128575031055169981, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1128575031055169981, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1128575031055169981, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1949468821724668601, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1949468821724668601, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1949468821724668601, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1949468821724668601, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1949468821724668601, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1949468821724668601, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2145782460056235131, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2145782460056235131, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2145782460056235131, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2145782460056235131, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2145782460056235131, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2145782460056235131, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2684111501116982609, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_Name + value: TooltipMetadata + objectReference: {fileID: 0} + - target: {fileID: 2985571104855899046, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2985571104855899046, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2985571104855899046, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2985571104855899046, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2985571104855899046, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2985571104855899046, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5177613410593669567, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5177613410593669567, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5177613410593669567, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5177613410593669567, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5177613410593669567, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5177613410593669567, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5294044645566499917, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5294044645566499917, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5294044645566499917, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5294044645566499917, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5294044645566499917, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5294044645566499917, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8373528361232519364, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8373528361232519364, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8373528361232519364, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8373528361232519364, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8373528361232519364, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8373528361232519364, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8685130992723305967, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8685130992723305967, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8685130992723305967, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8685130992723305967, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8685130992723305967, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8685130992723305967, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 4b82a56f278cc9841ae9e9178742ed32, type: 3} +--- !u!224 &1479368523577793383 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + m_PrefabInstance: {fileID: 917014345611689195} + m_PrefabAsset: {fileID: 0} +--- !u!114 &6355928026916758900 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 6092571422558624159, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + m_PrefabInstance: {fileID: 917014345611689195} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 12834725d7e6e6b409e221744e38d836, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &4074917100671372434 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 4922099915345720378} + m_Modifications: + - target: {fileID: 438599937416983596, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Text + value: 'Hull + +' + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Type + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Sprite + value: + objectReference: {fileID: 21300000, guid: 9ed5f14807d0abb46b875225c7dcb3d2, + type: 3} + - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Color.b + value: 0.11764706 + objectReference: {fileID: 0} + - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Color.g + value: 0.078431375 + objectReference: {fileID: 0} + - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Color.r + value: 0.078431375 + objectReference: {fileID: 0} + - target: {fileID: 6372109433816541427, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Name + value: HullProperty + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 7d49f4aa77aebae418b6c289028d58ec, type: 3} +--- !u!224 &1850733431255038105 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + m_PrefabInstance: {fileID: 4074917100671372434} + m_PrefabAsset: {fileID: 0} +--- !u!114 &3834890491517039723 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 987773853525342457, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + m_PrefabInstance: {fileID: 4074917100671372434} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5027d8f2fff7b244797e9b334add1090, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &4350967996725257602 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 4922099915345720378} + m_Modifications: + - target: {fileID: 438599937416983596, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Text + value: Mass + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Type + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Sprite + value: + objectReference: {fileID: 21300000, guid: 9ed5f14807d0abb46b875225c7dcb3d2, + type: 3} + - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Color.b + value: 0.11764706 + objectReference: {fileID: 0} + - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Color.g + value: 0.078431375 + objectReference: {fileID: 0} + - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Color.r + value: 0.078431375 + objectReference: {fileID: 0} + - target: {fileID: 6372109433816541427, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Name + value: MassProperty + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 7d49f4aa77aebae418b6c289028d58ec, type: 3} +--- !u!224 &2108702310940873097 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + m_PrefabInstance: {fileID: 4350967996725257602} + m_PrefabAsset: {fileID: 0} +--- !u!114 &3590768861163363707 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 987773853525342457, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + m_PrefabInstance: {fileID: 4350967996725257602} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5027d8f2fff7b244797e9b334add1090, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &6806728964584471766 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 4922099915345720378} + m_Modifications: + - target: {fileID: 438599937416983596, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Text + value: 'Energy + +' + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Type + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Sprite + value: + objectReference: {fileID: 21300000, guid: 9ed5f14807d0abb46b875225c7dcb3d2, + type: 3} + - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Color.b + value: 0.11764706 + objectReference: {fileID: 0} + - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Color.g + value: 0.078431375 + objectReference: {fileID: 0} + - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Color.r + value: 0.078431375 + objectReference: {fileID: 0} + - target: {fileID: 6372109433816541427, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Name + value: EnergyProperty + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 7d49f4aa77aebae418b6c289028d58ec, type: 3} +--- !u!224 &9175090477226035421 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + m_PrefabInstance: {fileID: 6806728964584471766} + m_PrefabAsset: {fileID: 0} +--- !u!114 &6035699777514013743 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 987773853525342457, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + m_PrefabInstance: {fileID: 6806728964584471766} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5027d8f2fff7b244797e9b334add1090, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/Project/Prefabs/ShipEditor/BlueprintTotals.prefab.meta b/Assets/Project/Prefabs/BlueprintEditor/BlueprintTotals.prefab.meta similarity index 100% rename from Assets/Project/Prefabs/ShipEditor/BlueprintTotals.prefab.meta rename to Assets/Project/Prefabs/BlueprintEditor/BlueprintTotals.prefab.meta diff --git a/Assets/Project/Prefabs/ShipEditor/EditorGrid.meta b/Assets/Project/Prefabs/BlueprintEditor/EditorGrid.meta similarity index 100% rename from Assets/Project/Prefabs/ShipEditor/EditorGrid.meta rename to Assets/Project/Prefabs/BlueprintEditor/EditorGrid.meta diff --git a/Assets/Project/Prefabs/BlueprintEditor/EditorGrid/EditorGrid.prefab b/Assets/Project/Prefabs/BlueprintEditor/EditorGrid/EditorGrid.prefab new file mode 100644 index 00000000..2243eaac --- /dev/null +++ b/Assets/Project/Prefabs/BlueprintEditor/EditorGrid/EditorGrid.prefab @@ -0,0 +1,334 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &144273548558085617 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6952083228573255865} + - component: {fileID: 4173039399431463573} + m_Layer: 0 + m_Name: GhostLayer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6952083228573255865 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 144273548558085617} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 9165474356103406435} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &4173039399431463573 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 144273548558085617} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 24355614bbf73474a84d500f181dfa6d, type: 3} + m_Name: + m_EditorClassIdentifier: + ghostPrefab: {fileID: 7311039082771557908, guid: 9525c2987aac89e4791910f19185f734, + type: 3} + backgroundLayer: {fileID: 4635185658990925759} + blueprintLayer: {fileID: 7112577619619822814} + turretLayer: {fileID: 7011621268033262747} +--- !u!1 &773986875373929855 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2882395266020634550} + m_Layer: 0 + m_Name: Instances + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2882395266020634550 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 773986875373929855} + 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: 2241177416421289781} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1192672273512161639 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9165474356103406435} + - component: {fileID: 7045163967011279385} + m_Layer: 0 + m_Name: EditorGrid + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &9165474356103406435 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1192672273512161639} + 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: 5113522367572386056} + - {fileID: 7561688704744118673} + - {fileID: 6952083228573255865} + - {fileID: 2241177416421289781} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &7045163967011279385 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1192672273512161639} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 63395ac0aec248445a7abe66f67b2f72, type: 3} + m_Name: + m_EditorClassIdentifier: + movementCfg: + speed: 35 + zoomCurve: + easeType: 1 + ease: 0 + animationCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.2004717 + inSlope: 2.0733755 + outSlope: 2.0733755 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0.048913043 + - serializedVersion: 3 + time: 1 + value: 1.503175 + inSlope: 4.4764066 + outSlope: 4.4764066 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.051147163 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + customLayers: + - {fileID: 7011621268033262747} + backgroundLayer: {fileID: 4635185658990925759} + blueprintLayer: {fileID: 7112577619619822814} + ghostLayer: {fileID: 4173039399431463573} + turretLayer: {fileID: 7011621268033262747} +--- !u!1 &3335786792172077398 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7561688704744118673} + - component: {fileID: 7112577619619822814} + m_Layer: 0 + m_Name: BlueprintLayer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7561688704744118673 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3335786792172077398} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 9165474356103406435} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &7112577619619822814 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3335786792172077398} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a78c19b37de462242a8ab4dc6743a7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + onBlueprintChanged: + m_PersistentCalls: + m_Calls: [] + stopwatch: {fileID: 0} + editorGrid: {fileID: 7045163967011279385} +--- !u!1 &4277175631151073247 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2241177416421289781} + - component: {fileID: 7011621268033262747} + m_Layer: 0 + m_Name: TurretLayer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2241177416421289781 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4277175631151073247} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4724731655166668673} + - {fileID: 2882395266020634550} + m_Father: {fileID: 9165474356103406435} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &7011621268033262747 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4277175631151073247} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8f28abf814533344a8169547f005702e, type: 3} + m_Name: + m_EditorClassIdentifier: + basePrefab: {fileID: 3072400777044392306, guid: 4e819fb3964162343af431ca048f7df5, + type: 3} + prefabContainer: {fileID: 4724731655166668673} + instanceContainer: {fileID: 2882395266020634550} +--- !u!1 &5895357026409253044 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5113522367572386056} + - component: {fileID: 4635185658990925759} + m_Layer: 0 + m_Name: BackgroundLayer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5113522367572386056 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5895357026409253044} + 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: 9165474356103406435} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &4635185658990925759 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5895357026409253044} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4ba9dda985693f24bb22a74bf63f3d9f, type: 3} + m_Name: + m_EditorClassIdentifier: + gridItemPrefab: {fileID: 5952255028486761140, guid: 6463c40691da1d84ea755dff96d9a183, + type: 3} +--- !u!1 &6416305948822044121 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4724731655166668673} + m_Layer: 0 + m_Name: Prefabs + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &4724731655166668673 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6416305948822044121} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 7.15, y: 3.42, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2241177416421289781} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/Project/Prefabs/ShipEditor/EditorGrid/EditorGrid.prefab.meta b/Assets/Project/Prefabs/BlueprintEditor/EditorGrid/EditorGrid.prefab.meta similarity index 100% rename from Assets/Project/Prefabs/ShipEditor/EditorGrid/EditorGrid.prefab.meta rename to Assets/Project/Prefabs/BlueprintEditor/EditorGrid/EditorGrid.prefab.meta diff --git a/Assets/Project/Prefabs/BlueprintEditor/EditorGrid/EditorGridBackgroundItem.prefab b/Assets/Project/Prefabs/BlueprintEditor/EditorGrid/EditorGridBackgroundItem.prefab new file mode 100644 index 00000000..500db647 --- /dev/null +++ b/Assets/Project/Prefabs/BlueprintEditor/EditorGrid/EditorGridBackgroundItem.prefab @@ -0,0 +1,158 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &5952255028486761140 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2765531761494197332} + - component: {fileID: 1081067659551580334} + - component: {fileID: 7747491281726265399} + m_Layer: 25 + m_Name: EditorGridBackgroundItem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2765531761494197332 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5952255028486761140} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 5794473422174108555} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!61 &1081067659551580334 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5952255028486761140} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + serializedVersion: 2 + m_Size: {x: 1, y: 1} + m_EdgeRadius: 0 +--- !u!114 &7747491281726265399 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5952255028486761140} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: be2011b4cb3f3dd4691c5089770e0fae, type: 3} + m_Name: + m_EditorClassIdentifier: + spriteRenderer: {fileID: 3392767795847574525} + defaultColor: {r: 0.15686275, g: 0.15686275, b: 0.19607843, a: 0.78431374} + hoverColor: {r: 0.23529412, g: 0.23529412, b: 0.27450982, a: 0.78431374} +--- !u!1 &6623553762655494790 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5794473422174108555} + - component: {fileID: 3392767795847574525} + m_Layer: 25 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5794473422174108555 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6623553762655494790} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.98, y: 0.98, z: 1} + m_Children: [] + m_Father: {fileID: 2765531761494197332} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &3392767795847574525 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6623553762655494790} + 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: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, 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: 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: 197731d5700d0eb49915322ec740e2bc, type: 3} + m_Color: {r: 0.15686275, g: 0.15686275, b: 0.19607843, a: 0.78431374} + 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 diff --git a/Assets/Project/Prefabs/ShipEditor/EditorGrid/EditorGridItem.prefab.meta b/Assets/Project/Prefabs/BlueprintEditor/EditorGrid/EditorGridBackgroundItem.prefab.meta similarity index 100% rename from Assets/Project/Prefabs/ShipEditor/EditorGrid/EditorGridItem.prefab.meta rename to Assets/Project/Prefabs/BlueprintEditor/EditorGrid/EditorGridBackgroundItem.prefab.meta diff --git a/Assets/Project/Prefabs/ShipEditor/EditorGrid/GhostBlock.prefab b/Assets/Project/Prefabs/BlueprintEditor/EditorGrid/GhostBlock.prefab similarity index 88% rename from Assets/Project/Prefabs/ShipEditor/EditorGrid/GhostBlock.prefab rename to Assets/Project/Prefabs/BlueprintEditor/EditorGrid/GhostBlock.prefab index 46798264..4f741793 100644 --- a/Assets/Project/Prefabs/ShipEditor/EditorGrid/GhostBlock.prefab +++ b/Assets/Project/Prefabs/BlueprintEditor/EditorGrid/GhostBlock.prefab @@ -46,6 +46,7 @@ SpriteRenderer: m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 0 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -78,7 +79,7 @@ SpriteRenderer: m_Size: {x: 1, y: 1} m_AdaptiveModeThreshold: 0.5 m_SpriteTileMode: 0 - m_WasSpriteAssigned: 1 + m_WasSpriteAssigned: 0 m_MaskInteraction: 0 m_SpriteSortPoint: 0 --- !u!1 &7311039082771557908 @@ -91,6 +92,7 @@ GameObject: m_Component: - component: {fileID: 2856743381429611794} - component: {fileID: 7138874039998286403} + - component: {fileID: 1592240752413919358} m_Layer: 0 m_Name: GhostBlock m_TagString: Untagged @@ -123,18 +125,27 @@ MonoBehaviour: m_GameObject: {fileID: 7311039082771557908} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5414b8559b217c14e82ba2208e89b2fb, type: 3} + m_Script: {fileID: 11500000, guid: 68eb71d6eca0ae34695d69ca111ad29c, type: 3} m_Name: m_EditorClassIdentifier: - ghostImage: {fileID: 2328400462197416724} filter: {fileID: 1656620625760434138} filterTransform: {fileID: 672676629116447004} + presenter: {fileID: 1592240752413919358} activeColor: {r: 0.29411766, g: 0.7254902, b: 0.7053667, a: 0.19607843} - inactiveColor: {r: 1, g: 0, b: 0, a: 0.19607843} - blueprintBlock: - id: - flippedX: 0 - flippedY: 0 + inactiveColor: {r: 0.7058824, g: 0.27450982, b: 0.29411766, a: 0.19607843} +--- !u!114 &1592240752413919358 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7311039082771557908} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 565cfc078da651a4ba1632dc9c61f5aa, type: 3} + m_Name: + m_EditorClassIdentifier: + spriteRenderer: {fileID: 2328400462197416724} --- !u!1 &7572590843215005451 GameObject: m_ObjectHideFlags: 0 @@ -181,6 +192,7 @@ SpriteRenderer: m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 0 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: diff --git a/Assets/Project/Prefabs/ShipEditor/EditorGrid/GhostBlock.prefab.meta b/Assets/Project/Prefabs/BlueprintEditor/EditorGrid/GhostBlock.prefab.meta similarity index 100% rename from Assets/Project/Prefabs/ShipEditor/EditorGrid/GhostBlock.prefab.meta rename to Assets/Project/Prefabs/BlueprintEditor/EditorGrid/GhostBlock.prefab.meta diff --git a/Assets/Project/Prefabs/BlueprintEditor/EditorGrid/GridEditor.prefab b/Assets/Project/Prefabs/BlueprintEditor/EditorGrid/GridEditor.prefab new file mode 100644 index 00000000..7c3c9e7c --- /dev/null +++ b/Assets/Project/Prefabs/BlueprintEditor/EditorGrid/GridEditor.prefab @@ -0,0 +1,243 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3453339401510823937 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6219951660510845226} + m_Layer: 0 + m_Name: EditorGridOwner + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6219951660510845226 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3453339401510823937} + 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: 1248576156552169326} + m_Father: {fileID: 9037354107960172111} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &3467558800746813093 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9037354107960172111} + - component: {fileID: 1617958063522696134} + - component: {fileID: 6027265397929423277} + - component: {fileID: 9133893927100921210} + - component: {fileID: 8625900837292856731} + m_Layer: 0 + m_Name: GridEditor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &9037354107960172111 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3467558800746813093} + 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: 6219951660510845226} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1617958063522696134 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3467558800746813093} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ff94cfe3f71c82b45b2c8e17cf5583b3, type: 3} + m_Name: + m_EditorClassIdentifier: + editorGrid: {fileID: 1127281402421229076} + navigateable: {fileID: 6027265397929423277} + stopwatch: {fileID: 9133893927100921210} + cameraSettings: + ZoomEase: + easeType: 0 + ease: 4 + animationCurve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + zoomMinMax: + min: 0.1 + max: 2.5 + zoomSpeed: 2 + orthoMultiplier: 30 +--- !u!114 &6027265397929423277 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3467558800746813093} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7e654be5f38614388626bb325fb1f8, type: 3} + m_Name: + m_EditorClassIdentifier: + menuTransitionOut: {fileID: 11400000, guid: 39f12b02ccd77de41825bf98b2a7159c, type: 2} + audioPlayer: {fileID: 8625900837292856731} + gridEditor: {fileID: 1617958063522696134} +--- !u!114 &9133893927100921210 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3467558800746813093} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c7435b2b1993a1947ba8e3f69357ee36, type: 3} + m_Name: + m_EditorClassIdentifier: + onTime: + m_PersistentCalls: + m_Calls: [] + invokeOnTime: 1 +--- !u!114 &8625900837292856731 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3467558800746813093} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b2e199450f3216546b29d13f8d842126, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &7953809097154782221 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 6219951660510845226} + m_Modifications: + - target: {fileID: 773986875373929855, guid: ee9987c9c591276448d04c256085f97e, + type: 3} + propertyPath: m_Layer + value: 24 + objectReference: {fileID: 0} + - target: {fileID: 1192672273512161639, guid: ee9987c9c591276448d04c256085f97e, + type: 3} + propertyPath: m_Name + value: EditorGrid + objectReference: {fileID: 0} + - target: {fileID: 7045163967011279385, guid: ee9987c9c591276448d04c256085f97e, + type: 3} + propertyPath: customLayers.Array.data[1].data + value: + objectReference: {fileID: 0} + - target: {fileID: 7112577619619822814, guid: ee9987c9c591276448d04c256085f97e, + type: 3} + propertyPath: stopwatch + value: + objectReference: {fileID: 9133893927100921210} + - target: {fileID: 9165474356103406435, guid: ee9987c9c591276448d04c256085f97e, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9165474356103406435, guid: ee9987c9c591276448d04c256085f97e, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9165474356103406435, guid: ee9987c9c591276448d04c256085f97e, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9165474356103406435, guid: ee9987c9c591276448d04c256085f97e, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9165474356103406435, guid: ee9987c9c591276448d04c256085f97e, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 9165474356103406435, guid: ee9987c9c591276448d04c256085f97e, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 9165474356103406435, guid: ee9987c9c591276448d04c256085f97e, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 9165474356103406435, guid: ee9987c9c591276448d04c256085f97e, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 9165474356103406435, guid: ee9987c9c591276448d04c256085f97e, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9165474356103406435, guid: ee9987c9c591276448d04c256085f97e, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9165474356103406435, guid: ee9987c9c591276448d04c256085f97e, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ee9987c9c591276448d04c256085f97e, type: 3} +--- !u!4 &1248576156552169326 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 9165474356103406435, guid: ee9987c9c591276448d04c256085f97e, + type: 3} + m_PrefabInstance: {fileID: 7953809097154782221} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1127281402421229076 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 7045163967011279385, guid: ee9987c9c591276448d04c256085f97e, + type: 3} + m_PrefabInstance: {fileID: 7953809097154782221} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 63395ac0aec248445a7abe66f67b2f72, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/Project/Prefabs/ShipEditor/EditorGrid/ShipEditor.prefab.meta b/Assets/Project/Prefabs/BlueprintEditor/EditorGrid/GridEditor.prefab.meta similarity index 100% rename from Assets/Project/Prefabs/ShipEditor/EditorGrid/ShipEditor.prefab.meta rename to Assets/Project/Prefabs/BlueprintEditor/EditorGrid/GridEditor.prefab.meta diff --git a/Assets/Project/Prefabs/ShipEditor/EditorGrid/InventoryBlockView.prefab b/Assets/Project/Prefabs/BlueprintEditor/EditorGrid/InventoryBlockView.prefab similarity index 97% rename from Assets/Project/Prefabs/ShipEditor/EditorGrid/InventoryBlockView.prefab rename to Assets/Project/Prefabs/BlueprintEditor/EditorGrid/InventoryBlockView.prefab index d15d33ce..f97ca7f7 100644 --- a/Assets/Project/Prefabs/ShipEditor/EditorGrid/InventoryBlockView.prefab +++ b/Assets/Project/Prefabs/BlueprintEditor/EditorGrid/InventoryBlockView.prefab @@ -164,6 +164,7 @@ MonoBehaviour: m_EditorClassIdentifier: m_Navigation: m_Mode: 3 + m_WrapAround: 0 m_SelectOnUp: {fileID: 0} m_SelectOnDown: {fileID: 0} m_SelectOnLeft: {fileID: 0} @@ -194,12 +195,13 @@ MonoBehaviour: m_PersistentCalls: m_Calls: - m_Target: {fileID: 7603576357248119542} - m_TargetAssemblyTypeName: + m_TargetAssemblyTypeName: Exa.Audio.GlobalAudioPlayerProxy, Assembly-CSharp m_MethodName: Play - m_Mode: 5 + m_Mode: 2 m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_ObjectArgument: {fileID: 11400000, guid: 911c51fedc82b49428337ae7075e4656, + type: 2} + m_ObjectArgumentAssemblyTypeName: Exa.Audio.Sound, Assembly-CSharp m_IntArgument: 0 m_FloatArgument: 0 m_StringArgument: UI_SFX_ButtonClick @@ -245,12 +247,13 @@ MonoBehaviour: m_BoolArgument: 1 m_CallState: 2 - m_Target: {fileID: 7603576357248119542} - m_TargetAssemblyTypeName: + m_TargetAssemblyTypeName: Exa.Audio.GlobalAudioPlayerProxy, Assembly-CSharp m_MethodName: Play - m_Mode: 5 + m_Mode: 2 m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_ObjectArgument: {fileID: 11400000, guid: b48159f68624a6f4785ccc1ca593a456, + type: 2} + m_ObjectArgumentAssemblyTypeName: Exa.Audio.Sound, Assembly-CSharp m_IntArgument: 0 m_FloatArgument: 0 m_StringArgument: UI_SFX_ButtonHover @@ -541,8 +544,8 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6267824856190849940, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_Color.r - value: 0.29411766 + propertyPath: m_Color.b + value: 0.7053667 objectReference: {fileID: 0} - target: {fileID: 6267824856190849940, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} @@ -551,113 +554,113 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6267824856190849940, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_Color.b - value: 0.7053667 + propertyPath: m_Color.r + value: 0.29411766 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalRotation.x - value: 0 + propertyPath: m_AnchorMax.x + value: 1 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalRotation.y - value: 0 + propertyPath: m_AnchorMax.y + value: 1 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalRotation.z + propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_RootOrder + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_AnchorMin.x + propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_AnchorMax.x - value: 1 + propertyPath: m_AnchoredPosition.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_AnchorMax.y - value: 1 + propertyPath: m_LocalEulerAnglesHint.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_Pivot.x - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_Pivot.y - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} @@ -708,108 +711,108 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalPosition.z - value: 0 + propertyPath: m_RootOrder + value: 1 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalRotation.x - value: 0 + propertyPath: m_AnchorMax.x + value: 1 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalRotation.y - value: 0 + propertyPath: m_AnchorMax.y + value: 1 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalRotation.z + propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_RootOrder - value: 1 + propertyPath: m_SizeDelta.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_AnchorMin.x + propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_AnchorMax.x - value: 1 + propertyPath: m_AnchoredPosition.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_AnchorMax.y - value: 1 + propertyPath: m_LocalEulerAnglesHint.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_Pivot.x - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_Pivot.y - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} diff --git a/Assets/Project/Prefabs/ShipEditor/EditorGrid/InventoryBlockView.prefab.meta b/Assets/Project/Prefabs/BlueprintEditor/EditorGrid/InventoryBlockView.prefab.meta similarity index 100% rename from Assets/Project/Prefabs/ShipEditor/EditorGrid/InventoryBlockView.prefab.meta rename to Assets/Project/Prefabs/BlueprintEditor/EditorGrid/InventoryBlockView.prefab.meta diff --git a/Assets/Project/Prefabs/BlueprintEditor/EditorGrid/TurretOverlay.prefab b/Assets/Project/Prefabs/BlueprintEditor/EditorGrid/TurretOverlay.prefab new file mode 100644 index 00000000..c111f447 --- /dev/null +++ b/Assets/Project/Prefabs/BlueprintEditor/EditorGrid/TurretOverlay.prefab @@ -0,0 +1,264 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1784473388988818849 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4007532862820389366} + - component: {fileID: 7378125284276818049} + - component: {fileID: 4745476693516116348} + m_Layer: 24 + m_Name: Collider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4007532862820389366 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1784473388988818849} + 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: 5364704981457727891} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!50 &7378125284276818049 +Rigidbody2D: + serializedVersion: 4 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1784473388988818849} + m_BodyType: 2 + m_Simulated: 1 + m_UseFullKinematicContacts: 0 + m_UseAutoMass: 0 + m_Mass: 1 + m_LinearDrag: 0 + m_AngularDrag: 0.05 + m_GravityScale: 1 + m_Material: {fileID: 0} + m_Interpolate: 0 + m_SleepingMode: 1 + m_CollisionDetection: 0 + m_Constraints: 0 +--- !u!60 &4745476693516116348 +PolygonCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1784473388988818849} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 1 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + m_Points: + m_Paths: + - - {x: 0, y: 1} + - {x: -0.95105654, y: 0.30901697} + - {x: -0.5877852, y: -0.80901706} + - {x: 0.58778536, y: -0.80901694} + - {x: 0.9510565, y: 0.30901712} +--- !u!1 &3072400777044392306 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5364704981457727891} + - component: {fileID: 5237793496089656769} + - component: {fileID: 2653430289304975756} + m_Layer: 24 + m_Name: TurretOverlay + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5364704981457727891 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3072400777044392306} + 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: 4007532862820389366} + - {fileID: 3241671060946924098} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &5237793496089656769 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3072400777044392306} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8a8839c6f2ce54e46aa41d0b503bfb49, type: 3} + m_Name: + m_EditorClassIdentifier: + presenter: {fileID: 2653430289304975756} + polygonCollider: {fileID: 4745476693516116348} + ease: + easeType: 1 + ease: 0 + animationCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.096710205 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 0.500143 + value: 0.1001544 + inSlope: 0 + outSlope: 0.040645543 + tangentMode: 1 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.26411736 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 11.793618 + outSlope: 11.793618 + tangentMode: 0 + weightedMode: 1 + inWeight: 0.16537488 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 +--- !u!114 &2653430289304975756 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3072400777044392306} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 565cfc078da651a4ba1632dc9c61f5aa, type: 3} + m_Name: + m_EditorClassIdentifier: + spriteRenderer: {fileID: 8819382161634151960} +--- !u!1 &3676790867556191057 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3241671060946924098} + - component: {fileID: 8819382161634151960} + m_Layer: 24 + m_Name: Presenter + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3241671060946924098 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3676790867556191057} + 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: 5364704981457727891} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &8819382161634151960 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3676790867556191057} + 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: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, 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: 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: 0} + 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: 0 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 diff --git a/Assets/Project/Prefabs/BlueprintEditor/EditorGrid/TurretOverlay.prefab.meta b/Assets/Project/Prefabs/BlueprintEditor/EditorGrid/TurretOverlay.prefab.meta new file mode 100644 index 00000000..48193ecf --- /dev/null +++ b/Assets/Project/Prefabs/BlueprintEditor/EditorGrid/TurretOverlay.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4e819fb3964162343af431ca048f7df5 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Prefabs/BlueprintEditor/GridEditorOverlay.prefab b/Assets/Project/Prefabs/BlueprintEditor/GridEditorOverlay.prefab new file mode 100644 index 00000000..35dcc8bf --- /dev/null +++ b/Assets/Project/Prefabs/BlueprintEditor/GridEditorOverlay.prefab @@ -0,0 +1,5271 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &93377104172333775 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2745197201941667664} + - component: {fileID: 2367153197632887132} + - component: {fileID: 4655941050935960939} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2745197201941667664 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 93377104172333775} + 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: 8108394480977598239} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 50, y: 0} + m_SizeDelta: {x: -100, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2367153197632887132 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 93377104172333775} + m_CullTransparentMesh: 0 +--- !u!114 &4655941050935960939 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 93377104172333775} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.8627451, g: 0.8627451, b: 0.8627451, 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_FontData: + m_Font: {fileID: 12800000, guid: 178dfd0eb691dfc48b2338eb02b30bf6, type: 3} + m_FontSize: 28 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Rotate left + +' +--- !u!1 &480698898503710017 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5799643888506327559} + - component: {fileID: 6815248997739008116} + m_Layer: 5 + m_Name: OverlayInventorySideBar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5799643888506327559 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 480698898503710017} + 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: 1020508502156783149} + - {fileID: 8427711914959311622} + m_Father: {fileID: 7577603259920304273} + 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: 0, y: 0} + m_SizeDelta: {x: -20, y: -20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6815248997739008116 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 480698898503710017} + m_CullTransparentMesh: 0 +--- !u!225 &4357921600955329012 +CanvasGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 716561402804654399} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 1 + m_IgnoreParentGroups: 0 +--- !u!1 &1473238069316117370 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1020508502156783149} + - component: {fileID: 8271394488938490086} + - component: {fileID: 5967427094529973581} + m_Layer: 5 + m_Name: Header + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1020508502156783149 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1473238069316117370} + 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: 5967115731039213723} + m_Father: {fileID: 5799643888506327559} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 60} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &8271394488938490086 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1473238069316117370} + m_CullTransparentMesh: 0 +--- !u!114 &5967427094529973581 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1473238069316117370} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.078431375, g: 0.078431375, b: 0.11764706, a: 0.78431374} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &1903753001215197965 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5967115731039213723} + - component: {fileID: 3169418982342130652} + - component: {fileID: 5145678994275934524} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5967115731039213723 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1903753001215197965} + 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: 1020508502156783149} + 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: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3169418982342130652 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1903753001215197965} + m_CullTransparentMesh: 0 +--- !u!114 &5145678994275934524 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1903753001215197965} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.29411766, g: 0.7254902, b: 0.7053667, 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_FontData: + m_Font: {fileID: 12800000, guid: b9f47330c8d3fd443a5e4dbae17f45a7, type: 3} + m_FontSize: 32 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 42 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Inventory +--- !u!1 &1955779252061041205 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7729614257948850543} + - component: {fileID: 8885517178386905607} + m_Layer: 5 + m_Name: Container + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7729614257948850543 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1955779252061041205} + 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: 8596934783316770823} + 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.5, y: 1} +--- !u!114 &8885517178386905607 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1955779252061041205} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 10 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1 &2197345603147270775 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5884525049298447935} + - component: {fileID: 2927320983377482937} + - component: {fileID: 3252290418631415401} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5884525049298447935 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2197345603147270775} + 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: 7387966786729839313} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -10, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2927320983377482937 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2197345603147270775} + m_CullTransparentMesh: 0 +--- !u!114 &3252290418631415401 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2197345603147270775} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.29411766, g: 0.7254902, b: 0.7053667, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 2 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &2514562100434539136 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3291109707445459645} + - component: {fileID: 859145422345688154} + - component: {fileID: 7081063521201858182} + - component: {fileID: 8535835416508596123} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3291109707445459645 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2514562100434539136} + 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: 4569528614565085595} + m_Father: {fileID: 4279135036924348796} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &859145422345688154 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2514562100434539136} + m_CullTransparentMesh: 1 +--- !u!114 &7081063521201858182 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2514562100434539136} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.078431375, g: 0.078431375, b: 0.11764706, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &8535835416508596123 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2514562100434539136} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_ChildAlignment: 0 + m_Spacing: 4 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 1 + m_ReverseArrangement: 0 +--- !u!1 &3208989825122196086 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4773850691167363365} + - component: {fileID: 238357010777143755} + m_Layer: 5 + m_Name: Mirror + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4773850691167363365 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3208989825122196086} + 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: 3376785686518237414} + - {fileID: 7132505632161233089} + - {fileID: 8885415343267803349} + m_Father: {fileID: 2179149627488415654} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 40} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &238357010777143755 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3208989825122196086} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 961aba4f2b025f74dacdfcbe893e3129, type: 3} + m_Name: + m_EditorClassIdentifier: + keybindingView: {fileID: 6023891345794371943} + mirrorImage: {fileID: 5013856431352351148} + activeColor: {r: 0.29411766, g: 0.7254902, b: 0.7053667, a: 1} + inactiveColor: {r: 0.39215687, g: 0.39215687, b: 0.43137255, a: 1} +--- !u!1 &3297064602315863249 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7682320369076564723} + - component: {fileID: 7554861788909324467} + - component: {fileID: 373391439726214709} + - component: {fileID: 4088978028008046102} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7682320369076564723 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3297064602315863249} + 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: 8596934783316770823} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &7554861788909324467 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3297064602315863249} + m_CullTransparentMesh: 0 +--- !u!114 &373391439726214709 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3297064602315863249} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.7058824, g: 0.27450982, b: 0.29411766, 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_FontData: + m_Font: {fileID: 12800000, guid: b9f47330c8d3fd443a5e4dbae17f45a7, type: 3} + m_FontSize: 36 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Errors +--- !u!114 &4088978028008046102 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3297064602315863249} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 48 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &3315579308070717197 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3232415723866766923} + m_Layer: 5 + m_Name: RotateRight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3232415723866766923 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3315579308070717197} + 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: 7049291656871662841} + - {fileID: 3002837646857461494} + m_Father: {fileID: 2179149627488415654} + m_RootOrder: 2 + 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: 40} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &3359980719486404662 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3660100161524233110} + - component: {fileID: 2337189572060791900} + - component: {fileID: 1992553658429231198} + - component: {fileID: 3839996062393158794} + - component: {fileID: 6235325532225704457} + - component: {fileID: 229453432178233258} + - component: {fileID: 4885712940682538963} + - component: {fileID: 7523378000283445702} + m_Layer: 5 + m_Name: EditorStateSideBarContainer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3660100161524233110 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3359980719486404662} + 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: 2179149627488415654} + m_Father: {fileID: 4182533117752597262} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 20, y: 20} + m_SizeDelta: {x: 380, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!222 &2337189572060791900 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3359980719486404662} + m_CullTransparentMesh: 0 +--- !u!114 &1992553658429231198 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3359980719486404662} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.15686275, g: 0.15686275, b: 0.19607843, a: 0.78431374} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 2 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!225 &3839996062393158794 +CanvasGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3359980719486404662} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 1 + m_IgnoreParentGroups: 0 +--- !u!114 &6235325532225704457 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3359980719486404662} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5fb55c9353d5f9f4b90f125ad87129d0, type: 3} + m_Name: + m_EditorClassIdentifier: + onPointerEnter: + m_PersistentCalls: + m_Calls: [] + onPointerExit: + m_PersistentCalls: + m_Calls: [] + invokeStateChangeOnHover: 0 + cursorOverride: + value: 0 + checkMouseInsideRectOnEnable: 1 +--- !u!114 &229453432178233258 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3359980719486404662} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e2b3d7e6954ec474a841cdbeba761bb0, type: 3} + m_Name: + m_EditorClassIdentifier: + msLocalAnimationOffset: 0 + movementDirection: 2 + movementSmoothDamp: 0.2 + movementMagnitude: 80 + animateAlpha: 1 + alphaSpeed: 4 +--- !u!114 &4885712940682538963 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3359980719486404662} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 1 + m_ReverseArrangement: 0 +--- !u!114 &7523378000283445702 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3359980719486404662} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 +--- !u!1 &3493476552421598480 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4279135036924348796} + - component: {fileID: 8673702280728830103} + - component: {fileID: 8212872495597981442} + - component: {fileID: 7659019042394641363} + - component: {fileID: 2474351390191618022} + - component: {fileID: 2221953196059097679} + m_Layer: 5 + m_Name: Budget + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4279135036924348796 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3493476552421598480} + 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: 3291109707445459645} + - {fileID: 4905551359096726179} + m_Father: {fileID: 4182533117752597262} + m_RootOrder: 3 + 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, y: -20} + m_SizeDelta: {x: 340, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &8673702280728830103 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3493476552421598480} + m_CullTransparentMesh: 1 +--- !u!114 &8212872495597981442 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3493476552421598480} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.15686275, g: 0.15686275, b: 0.19607843, a: 0.78431374} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &7659019042394641363 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3493476552421598480} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_ChildAlignment: 1 + m_Spacing: 4 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 1 + m_ChildScaleHeight: 1 + m_ReverseArrangement: 0 +--- !u!114 &2474351390191618022 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3493476552421598480} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 +--- !u!114 &2221953196059097679 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3493476552421598480} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ce148ad954754103aa0a9413c8e45f60, type: 3} + m_Name: + m_EditorClassIdentifier: + view: {fileID: 623480200571133104} +--- !u!1 &4172473744168498426 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3629780489728021464} + - component: {fileID: 3052649042020760183} + - component: {fileID: 1867595047908987590} + m_Layer: 5 + m_Name: Scrollbar Vertical + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3629780489728021464 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4172473744168498426} + 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: 7387966786729839313} + m_Father: {fileID: 8427711914959311622} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 35, y: 70} + m_SizeDelta: {x: 20, y: 70} + m_Pivot: {x: 1, y: 1} +--- !u!222 &3052649042020760183 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4172473744168498426} + m_CullTransparentMesh: 0 +--- !u!114 &1867595047908987590 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4172473744168498426} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 3252290418631415401} + m_HandleRect: {fileID: 5884525049298447935} + m_Direction: 2 + m_Value: 0 + m_Size: 1 + m_NumberOfSteps: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &4182533117752597263 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4182533117752597262} + - component: {fileID: 5930959499071045652} + - component: {fileID: 5213727104914343096} + - component: {fileID: 2563220100341616592} + m_Layer: 5 + m_Name: GridEditorOverlay + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4182533117752597262 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4182533117752597263} + 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: 3660100161524233110} + - {fileID: 4103814012636034508} + - {fileID: 7577603259920304273} + - {fileID: 4279135036924348796} + m_Father: {fileID: 0} + 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: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &5930959499071045652 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4182533117752597263} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 580006f3f0068ab45a98cb5a94e3ad63, type: 3} + m_Name: + m_EditorClassIdentifier: + blueprintInventoryHoverable: {fileID: 1806886697017712247} + blueprintInfoPanelHoverable: {fileID: 7693724912663897459} + editorStatePanelHoverable: {fileID: 6235325532225704457} + budgetView: {fileID: 2221953196059097679} + editorOverlay: {fileID: 2563220100341616592} + infoPanel: {fileID: 6879205927546333943} + inventory: {fileID: 1170116247793472876} + verticalMirrorView: {fileID: 238357010777143755} + onPointerEnter: + m_PersistentCalls: + m_Calls: [] + onPointerExit: + m_PersistentCalls: + m_Calls: [] +--- !u!225 &5213727104914343096 +CanvasGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4182533117752597263} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 1 + m_IgnoreParentGroups: 0 +--- !u!114 &2563220100341616592 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4182533117752597263} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dad7314b3f5116040a1a4129a0ecb695, type: 3} + m_Name: + m_EditorClassIdentifier: + canvasGroup: {fileID: 5213727104914343096} + setAlpha: 0 + interactable: 1 +--- !u!1 &4393935562950078562 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8885415343267803349} + - component: {fileID: 7995366448273185200} + - component: {fileID: 7465162164095258513} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8885415343267803349 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4393935562950078562} + 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: 4773850691167363365} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 50, y: 0} + m_SizeDelta: {x: -100, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7995366448273185200 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4393935562950078562} + m_CullTransparentMesh: 0 +--- !u!114 &7465162164095258513 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4393935562950078562} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.8627451, g: 0.8627451, b: 0.8627451, 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_FontData: + m_Font: {fileID: 12800000, guid: 178dfd0eb691dfc48b2338eb02b30bf6, type: 3} + m_FontSize: 28 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Mirror + +' +--- !u!1 &4415499671790398705 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8427711914959311622} + - component: {fileID: 2647123252440241747} + - component: {fileID: 2422947753528889550} + m_Layer: 5 + m_Name: SideBarInventory + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8427711914959311622 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4415499671790398705} + 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: 5998593450497219900} + - {fileID: 3629780489728021464} + m_Father: {fileID: 5799643888506327559} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -35} + m_SizeDelta: {x: 0, y: -70} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2647123252440241747 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4415499671790398705} + m_CullTransparentMesh: 0 +--- !u!114 &2422947753528889550 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4415499671790398705} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Content: {fileID: 8874164673712864895} + m_Horizontal: 0 + m_Vertical: 1 + m_MovementType: 2 + m_Elasticity: 0.1 + m_Inertia: 1 + m_DecelerationRate: 0.135 + m_ScrollSensitivity: 8 + m_Viewport: {fileID: 5998593450497219900} + m_HorizontalScrollbar: {fileID: 0} + m_VerticalScrollbar: {fileID: 1867595047908987590} + m_HorizontalScrollbarVisibility: 2 + m_VerticalScrollbarVisibility: 1 + m_HorizontalScrollbarSpacing: -3 + m_VerticalScrollbarSpacing: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &4552733745538547583 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3002837646857461494} + - component: {fileID: 5802824221943144778} + - component: {fileID: 5969259287707289968} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3002837646857461494 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4552733745538547583} + 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: 3232415723866766923} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 50, y: 0} + m_SizeDelta: {x: -100, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5802824221943144778 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4552733745538547583} + m_CullTransparentMesh: 0 +--- !u!114 &5969259287707289968 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4552733745538547583} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.8627451, g: 0.8627451, b: 0.8627451, 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_FontData: + m_Font: {fileID: 12800000, guid: 178dfd0eb691dfc48b2338eb02b30bf6, type: 3} + m_FontSize: 28 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Rotate right + +' +--- !u!114 &4022977335963470680 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4609610332970799658} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 32 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &4830137303834286320 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5998593450497219900} + - component: {fileID: 729234982040270898} + - component: {fileID: 7105678356492016603} + - component: {fileID: 7102818174696672001} + m_Layer: 5 + m_Name: InventoryViewport + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5998593450497219900 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4830137303834286320} + 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: 8874164673712864895} + m_Father: {fileID: 8427711914959311622} + 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: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!222 &729234982040270898 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4830137303834286320} + m_CullTransparentMesh: 0 +--- !u!114 &7105678356492016603 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4830137303834286320} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ShowMaskGraphic: 0 +--- !u!114 &7102818174696672001 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4830137303834286320} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3312d7739989d2b4e91e6319e9a96d76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: {x: 0, y: 0, z: 0, w: 0} + m_Softness: {x: 0, y: 0} +--- !u!1 &4927286044168391358 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8108394480977598239} + m_Layer: 5 + m_Name: RotateLeft + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8108394480977598239 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4927286044168391358} + 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: 8996835591626678520} + - {fileID: 2745197201941667664} + m_Father: {fileID: 2179149627488415654} + 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: 40} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &5354091903459015919 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1787738287343351759} + - component: {fileID: 7630153180359230226} + - component: {fileID: 148019005351308044} + - component: {fileID: 6250080024623614007} + m_Layer: 5 + m_Name: Controls + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1787738287343351759 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5354091903459015919} + 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: 2689089443476997446} + - {fileID: 3846954139654071970} + - {fileID: 5018572182474487300} + - {fileID: 5204696006304160261} + - {fileID: 2706301229408136624} + m_Father: {fileID: 4103814012636034508} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &7630153180359230226 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5354091903459015919} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_ChildAlignment: 0 + m_Spacing: 10 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!222 &148019005351308044 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5354091903459015919} + m_CullTransparentMesh: 0 +--- !u!114 &6250080024623614007 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5354091903459015919} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.078431375, g: 0.078431375, b: 0.11764706, a: 0.78431374} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &5674966324271168543 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7577603259920304273} + - component: {fileID: 676703142763329078} + - component: {fileID: 3726917457037375768} + - component: {fileID: 1357391699274850458} + - component: {fileID: 8302479038243238012} + - component: {fileID: 1170116247793472876} + - component: {fileID: 1806886697017712247} + m_Layer: 5 + m_Name: OverlayInventorySideBarContainer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7577603259920304273 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5674966324271168543} + 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: 5799643888506327559} + m_Father: {fileID: 4182533117752597262} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -30, y: 0} + m_SizeDelta: {x: 360, y: -40} + m_Pivot: {x: 1, y: 0.5} +--- !u!222 &676703142763329078 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5674966324271168543} + m_CullTransparentMesh: 0 +--- !u!114 &3726917457037375768 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5674966324271168543} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.15686275, g: 0.15686275, b: 0.19607843, a: 0.78431374} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 2 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!225 &1357391699274850458 +CanvasGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5674966324271168543} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 1 + m_IgnoreParentGroups: 0 +--- !u!114 &8302479038243238012 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5674966324271168543} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e2b3d7e6954ec474a841cdbeba761bb0, type: 3} + m_Name: + m_EditorClassIdentifier: + msLocalAnimationOffset: 0 + movementDirection: 4 + movementSmoothDamp: 0.2 + movementMagnitude: 80 + animateAlpha: 1 + alphaSpeed: 4 +--- !u!114 &1170116247793472876 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5674966324271168543} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6a0de2eb9611c1142a4e0fedc3681463, type: 3} + m_Name: + m_EditorClassIdentifier: + viewContainer: {fileID: 8874164673712864895} + viewPrefab: {fileID: 1606553523780072951, guid: daa99ef83b6e47146a53ce74a2a3b99c, + type: 3} + expandableItemPrefab: {fileID: 4281661338799075068, guid: 8c5e795998381fb43af509efb48d1b1c, + type: 3} +--- !u!114 &1806886697017712247 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5674966324271168543} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5fb55c9353d5f9f4b90f125ad87129d0, type: 3} + m_Name: + m_EditorClassIdentifier: + onPointerEnter: + m_PersistentCalls: + m_Calls: [] + onPointerExit: + m_PersistentCalls: + m_Calls: [] + invokeStateChangeOnHover: 0 + cursorOverride: + value: 0 + checkMouseInsideRectOnEnable: 1 +--- !u!1 &5754900020793024216 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8596934783316770823} + - component: {fileID: 5001761715881346257} + - component: {fileID: 5082285198244148419} + - component: {fileID: 9029961632368557112} + - component: {fileID: 2112761193569647769} + - component: {fileID: 5281237353347035187} + - component: {fileID: 5673830809506211472} + m_Layer: 5 + m_Name: Errors + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8596934783316770823 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5754900020793024216} + 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: 7682320369076564723} + - {fileID: 7729614257948850543} + m_Father: {fileID: 4103814012636034508} + m_RootOrder: 2 + 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: 1} +--- !u!114 &5001761715881346257 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5754900020793024216} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.078431375, g: 0.078431375, b: 0.11764706, a: 0.78431374} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &5082285198244148419 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5754900020793024216} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_ChildAlignment: 0 + m_Spacing: 10 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 1 + m_ReverseArrangement: 0 +--- !u!114 &9029961632368557112 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5754900020793024216} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!222 &2112761193569647769 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5754900020793024216} + m_CullTransparentMesh: 0 +--- !u!225 &5281237353347035187 +CanvasGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5754900020793024216} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 1 + m_IgnoreParentGroups: 0 +--- !u!114 &5673830809506211472 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5754900020793024216} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: feefe8f98170a664b81619bf4c326179, type: 3} + m_Name: + m_EditorClassIdentifier: + container: {fileID: 7729614257948850543} + errorPanelPrefab: {fileID: 5022688277923585052, guid: 24453bde1d1dd224f91530db053813a3, + type: 3} + layoutElement: {fileID: 9029961632368557112} + canvasGroup: {fileID: 5281237353347035187} +--- !u!1 &6649120922415635038 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5018572182474487300} + - component: {fileID: 7291974092330446212} + - component: {fileID: 2984885500626134918} + - component: {fileID: 6714407189032792032} + - component: {fileID: 7493687970332396691} + - component: {fileID: 2946177782193584775} + - component: {fileID: 1548890685023131448} + m_Layer: 5 + m_Name: SaveButtonContainer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5018572182474487300 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6649120922415635038} + 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: 3875207306295828178} + m_Father: {fileID: 1787738287343351759} + m_RootOrder: 2 + 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.5, y: 0.5} +--- !u!114 &7291974092330446212 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6649120922415635038} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 32 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!222 &2984885500626134918 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6649120922415635038} + m_CullTransparentMesh: 0 +--- !u!114 &6714407189032792032 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6649120922415635038} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!225 &7493687970332396691 +CanvasGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6649120922415635038} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 1 + m_IgnoreParentGroups: 0 +--- !u!114 &2946177782193584775 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6649120922415635038} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5fb55c9353d5f9f4b90f125ad87129d0, type: 3} + m_Name: + m_EditorClassIdentifier: + onPointerEnter: + m_PersistentCalls: + m_Calls: [] + onPointerExit: + m_PersistentCalls: + m_Calls: [] + invokeStateChangeOnHover: 0 + cursorOverride: + value: 0 + checkMouseInsideRectOnEnable: 1 +--- !u!114 &1548890685023131448 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6649120922415635038} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 87bc399e111c0c141beea2bdbbfe9ae5, type: 3} + m_Name: + m_EditorClassIdentifier: + hoverable: {fileID: 2946177782193584775} + message: +--- !u!1 &7005863946417993431 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7132505632161233089} + - component: {fileID: 2365040850361215559} + - component: {fileID: 5013856431352351148} + m_Layer: 5 + m_Name: MirrorImage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7132505632161233089 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7005863946417993431} + 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: 4773850691167363365} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 50, y: 0} + m_SizeDelta: {x: 40, y: 0} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &2365040850361215559 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7005863946417993431} + m_CullTransparentMesh: 0 +--- !u!114 &5013856431352351148 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7005863946417993431} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.39215687, g: 0.39215687, b: 0.43137255, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: b55de79f547b21342a7d52d5060ae17d, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &7053431978305007608 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2689089443476997446} + - component: {fileID: 17638883000482408} + - component: {fileID: 5910685093444210421} + - component: {fileID: 3040736624674294022} + m_Layer: 5 + m_Name: Header + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2689089443476997446 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7053431978305007608} + 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: 1787738287343351759} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &17638883000482408 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7053431978305007608} + m_CullTransparentMesh: 0 +--- !u!114 &5910685093444210421 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7053431978305007608} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.29411766, g: 0.7254902, b: 0.7053667, 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_FontData: + m_Font: {fileID: 12800000, guid: b9f47330c8d3fd443a5e4dbae17f45a7, type: 3} + m_FontSize: 36 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 48 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Blueprint +--- !u!114 &3040736624674294022 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7053431978305007608} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 48 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &7112586847229900074 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4569528614565085595} + - component: {fileID: 4842303937001424175} + - component: {fileID: 4079450918283606521} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4569528614565085595 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7112586847229900074} + 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: 3291109707445459645} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4842303937001424175 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7112586847229900074} + m_CullTransparentMesh: 1 +--- !u!114 &4079450918283606521 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7112586847229900074} + 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: Remaining budget + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 6a58f4621410a334ca09349e074863b6, type: 2} + m_sharedMaterial: {fileID: 2512141245593086724, guid: 6a58f4621410a334ca09349e074863b6, + 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: 24 + m_fontSizeBase: 24 + 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: 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!1 &7758863102447702561 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2179149627488415654} + - component: {fileID: 9076886132219016795} + - component: {fileID: 2210099289925315262} + - component: {fileID: 8881567603479619194} + m_Layer: 5 + m_Name: EditorStateSideBar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2179149627488415654 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7758863102447702561} + 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: 4773850691167363365} + - {fileID: 8108394480977598239} + - {fileID: 3232415723866766923} + m_Father: {fileID: 3660100161524233110} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &9076886132219016795 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7758863102447702561} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_ChildAlignment: 0 + m_Spacing: 10 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!222 &2210099289925315262 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7758863102447702561} + m_CullTransparentMesh: 0 +--- !u!114 &8881567603479619194 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7758863102447702561} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.078431375, g: 0.078431375, b: 0.11764706, a: 0.78431374} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &7787136909753771499 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8874164673712864895} + - component: {fileID: 7317811041870258966} + - component: {fileID: 8301761301231208108} + m_Layer: 5 + m_Name: ViewportContent + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8874164673712864895 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7787136909753771499} + 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: 5998593450497219900} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!114 &7317811041870258966 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7787136909753771499} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 1 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!114 &8301761301231208108 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7787136909753771499} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 +--- !u!1 &8144817767331901347 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7387966786729839313} + - component: {fileID: 1205706668460713591} + m_Layer: 5 + m_Name: Sliding Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7387966786729839313 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8144817767331901347} + 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: 5884525049298447935} + m_Father: {fileID: 3629780489728021464} + 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: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1205706668460713591 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8144817767331901347} + m_CullTransparentMesh: 0 +--- !u!1 &8796218559287805626 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4103814012636034508} + - component: {fileID: 7210131190310212549} + - component: {fileID: 4667013163052855826} + - component: {fileID: 7958427289901331621} + - component: {fileID: 4737992999563805898} + - component: {fileID: 6879205927546333943} + - component: {fileID: 7693724912663897459} + - component: {fileID: 1711626291552416733} + - component: {fileID: 2945648261188240539} + m_Layer: 5 + m_Name: BlueprintInfoSideBarContainer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4103814012636034508 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8796218559287805626} + 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: 1787738287343351759} + - {fileID: 4658757715829701963} + - {fileID: 8596934783316770823} + m_Father: {fileID: 4182533117752597262} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 20, y: -20} + m_SizeDelta: {x: 380, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!222 &7210131190310212549 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8796218559287805626} + m_CullTransparentMesh: 0 +--- !u!114 &4667013163052855826 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8796218559287805626} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.15686275, g: 0.15686275, b: 0.19607843, a: 0.78431374} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 2 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!225 &7958427289901331621 +CanvasGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8796218559287805626} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 1 + m_IgnoreParentGroups: 0 +--- !u!114 &4737992999563805898 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8796218559287805626} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e2b3d7e6954ec474a841cdbeba761bb0, type: 3} + m_Name: + m_EditorClassIdentifier: + msLocalAnimationOffset: 0 + movementDirection: 2 + movementSmoothDamp: 0.2 + movementMagnitude: 80 + animateAlpha: 1 + alphaSpeed: 4 +--- !u!114 &6879205927546333943 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8796218559287805626} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0e4875660b5f37640b19c1158eca873e, type: 3} + m_Name: + m_EditorClassIdentifier: + clearButton: {fileID: 1725880023680399003} + saveButtonTooltipTrigger: {fileID: 1548890685023131448} + saveButton: {fileID: 556960494971799033} + exportButton: {fileID: 8811278844542435630} + blueprintNameInput: {fileID: 1768342692160745610} + errorListController: {fileID: 5673830809506211472} + saveButtonCanvasGroup: {fileID: 4357921600955329012} + gridTotalsView: {fileID: 1979450873785362252} + controlsContainer: {fileID: 1787738287343351759} +--- !u!114 &7693724912663897459 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8796218559287805626} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5fb55c9353d5f9f4b90f125ad87129d0, type: 3} + m_Name: + m_EditorClassIdentifier: + onPointerEnter: + m_PersistentCalls: + m_Calls: [] + onPointerExit: + m_PersistentCalls: + m_Calls: [] + invokeStateChangeOnHover: 0 + cursorOverride: + value: 0 + checkMouseInsideRectOnEnable: 1 +--- !u!114 &1711626291552416733 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8796218559287805626} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 +--- !u!114 &2945648261188240539 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8796218559287805626} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_ChildAlignment: 0 + m_Spacing: 10 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1001 &354083146658662769 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 4103814012636034508} + m_Modifications: + - target: {fileID: 220784901345248598, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 220784901345248598, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 220784901345248598, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 220784901345248598, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 220784901345248598, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 220784901345248598, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 439131934290318373, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_Name + value: EnergyProperty + objectReference: {fileID: 0} + - target: {fileID: 578165970563627739, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_Color.b + value: 0.19607843 + objectReference: {fileID: 0} + - target: {fileID: 578165970563627739, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_Color.g + value: 0.15686275 + objectReference: {fileID: 0} + - target: {fileID: 578165970563627739, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_Color.r + value: 0.15686275 + objectReference: {fileID: 0} + - target: {fileID: 1193180719297255065, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1193180719297255065, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1193180719297255065, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1193180719297255065, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1193180719297255065, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1193180719297255065, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1260649966057377936, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1260649966057377936, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1260649966057377936, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1260649966057377936, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1260649966057377936, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1260649966057377936, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1479368523577793383, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1479368523577793383, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1479368523577793383, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1479368523577793383, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1479368523577793383, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1479368523577793383, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1707994697915833938, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1707994697915833938, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1707994697915833938, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1707994697915833938, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1707994697915833938, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1707994697915833938, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1850733431255038105, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1850733431255038105, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1850733431255038105, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1850733431255038105, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1850733431255038105, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1850733431255038105, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2108702310940873097, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2108702310940873097, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2108702310940873097, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2108702310940873097, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2108702310940873097, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2108702310940873097, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2650535328695271683, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2650535328695271683, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2650535328695271683, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2650535328695271683, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2650535328695271683, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2650535328695271683, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2726651029914650445, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2726651029914650445, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2726651029914650445, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2726651029914650445, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2726651029914650445, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2726651029914650445, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2792576165655912446, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2792576165655912446, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2792576165655912446, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2792576165655912446, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2792576165655912446, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2792576165655912446, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2955502408402372115, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2955502408402372115, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2955502408402372115, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2955502408402372115, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2955502408402372115, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2955502408402372115, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3308087561731895043, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3308087561731895043, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3308087561731895043, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3308087561731895043, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3308087561731895043, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3308087561731895043, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3380397937280386038, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3380397937280386038, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3380397937280386038, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3380397937280386038, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3380397937280386038, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3380397937280386038, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4628118595394695098, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4628118595394695098, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4628118595394695098, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4628118595394695098, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4628118595394695098, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4628118595394695098, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4667766091273924356, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_Name + value: Totals + objectReference: {fileID: 0} + - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4960394495526504106, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4960394495526504106, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4960394495526504106, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4960394495526504106, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4960394495526504106, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4960394495526504106, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5026538619080536230, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5026538619080536230, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5026538619080536230, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5026538619080536230, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5026538619080536230, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5026538619080536230, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5409923149971005255, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5409923149971005255, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5409923149971005255, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5409923149971005255, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5409923149971005255, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5409923149971005255, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5432309024418905428, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5432309024418905428, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5432309024418905428, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5432309024418905428, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5432309024418905428, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5432309024418905428, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5559218070099576809, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_PreferredHeight + value: 48 + objectReference: {fileID: 0} + - target: {fileID: 6024374948750439173, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_Color.b + value: 0.19607843 + objectReference: {fileID: 0} + - target: {fileID: 6024374948750439173, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_Color.g + value: 0.15686275 + objectReference: {fileID: 0} + - target: {fileID: 6024374948750439173, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_Color.r + value: 0.15686275 + objectReference: {fileID: 0} + - target: {fileID: 6429509029354871943, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_FontData.m_FontSize + value: 36 + objectReference: {fileID: 0} + - target: {fileID: 6429509029354871943, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_FontData.m_Alignment + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 7146960723701944662, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_ChildScaleHeight + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7146960723701944662, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_ChildControlHeight + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7643148814960059279, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_Color.b + value: 0.19607843 + objectReference: {fileID: 0} + - target: {fileID: 7643148814960059279, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_Color.g + value: 0.15686275 + objectReference: {fileID: 0} + - target: {fileID: 7643148814960059279, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_Color.r + value: 0.15686275 + objectReference: {fileID: 0} + - target: {fileID: 7997643683084896927, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_Color.b + value: 0.19607843 + objectReference: {fileID: 0} + - target: {fileID: 7997643683084896927, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_Color.g + value: 0.15686275 + objectReference: {fileID: 0} + - target: {fileID: 7997643683084896927, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_Color.r + value: 0.15686275 + objectReference: {fileID: 0} + - target: {fileID: 8174340128288577755, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_Color.a + value: 0.78431374 + objectReference: {fileID: 0} + - target: {fileID: 8174340128288577755, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_Color.b + value: 0.11764706 + objectReference: {fileID: 0} + - target: {fileID: 8174340128288577755, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_Color.g + value: 0.078431375 + objectReference: {fileID: 0} + - target: {fileID: 8174340128288577755, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_Color.r + value: 0.078431375 + objectReference: {fileID: 0} + - target: {fileID: 8376179838173387012, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8376179838173387012, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8376179838173387012, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8376179838173387012, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8376179838173387012, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8376179838173387012, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8686700538776218671, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8686700538776218671, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8686700538776218671, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8686700538776218671, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8686700538776218671, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8686700538776218671, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9033612555826058784, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9033612555826058784, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9033612555826058784, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9033612555826058784, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9033612555826058784, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9033612555826058784, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9175090477226035421, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9175090477226035421, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9175090477226035421, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9175090477226035421, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9175090477226035421, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9175090477226035421, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: c63a451a37c9c354cb774213e6858958, type: 3} +--- !u!114 &1979450873785362252 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 2274767151163960893, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + m_PrefabInstance: {fileID: 354083146658662769} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e442b55f9f8690a4f84f8cca8e9f0779, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!224 &4658757715829701963 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, + type: 3} + m_PrefabInstance: {fileID: 354083146658662769} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &691807619990891598 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 4773850691167363365} + m_Modifications: + - target: {fileID: 1433087424286845535, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_Name + value: KeybindingImage + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_SizeDelta.x + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4169545428920601791, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_Text + value: 'V + +' + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 46bad96ed5b13374e951dfa21274d564, type: 3} +--- !u!114 &6023891345794371943 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 6485432082526420265, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + m_PrefabInstance: {fileID: 691807619990891598} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 002a2f9cf079cf348bbdf9a57a680218, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!224 &3376785686518237414 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + m_PrefabInstance: {fileID: 691807619990891598} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &715006062476524667 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1787738287343351759} + m_Modifications: + - target: {fileID: 944948028832328603, guid: 3b615f3a5808fcd4da198ad89c20ad8f, + type: 3} + propertyPath: m_Color.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 944948028832328603, guid: 3b615f3a5808fcd4da198ad89c20ad8f, + type: 3} + propertyPath: m_Color.b + value: 0.8627451 + objectReference: {fileID: 0} + - target: {fileID: 944948028832328603, guid: 3b615f3a5808fcd4da198ad89c20ad8f, + type: 3} + propertyPath: m_Color.g + value: 0.8627451 + objectReference: {fileID: 0} + - target: {fileID: 944948028832328603, guid: 3b615f3a5808fcd4da198ad89c20ad8f, + type: 3} + propertyPath: m_Color.r + value: 0.8627451 + objectReference: {fileID: 0} + - target: {fileID: 2224872484384810980, guid: 3b615f3a5808fcd4da198ad89c20ad8f, + type: 3} + propertyPath: m_SizeDelta.x + value: 80 + objectReference: {fileID: 0} + - target: {fileID: 2859131309877133070, guid: 3b615f3a5808fcd4da198ad89c20ad8f, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3896904596393045585, guid: 3b615f3a5808fcd4da198ad89c20ad8f, + type: 3} + propertyPath: m_Name + value: BlueprintName + objectReference: {fileID: 0} + - target: {fileID: 4100128200304327979, guid: 3b615f3a5808fcd4da198ad89c20ad8f, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4160471295462912040, guid: 3b615f3a5808fcd4da198ad89c20ad8f, + type: 3} + propertyPath: m_SizeDelta.x + value: -80 + objectReference: {fileID: 0} + - target: {fileID: 4160471295462912040, guid: 3b615f3a5808fcd4da198ad89c20ad8f, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 4314459838352599801, guid: 3b615f3a5808fcd4da198ad89c20ad8f, + type: 3} + propertyPath: m_Color.b + value: 0.19607843 + objectReference: {fileID: 0} + - target: {fileID: 4314459838352599801, guid: 3b615f3a5808fcd4da198ad89c20ad8f, + type: 3} + propertyPath: m_Color.g + value: 0.15686275 + objectReference: {fileID: 0} + - target: {fileID: 4314459838352599801, guid: 3b615f3a5808fcd4da198ad89c20ad8f, + type: 3} + propertyPath: m_Color.r + value: 0.15686275 + objectReference: {fileID: 0} + - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, + type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4991562525011218996, guid: 3b615f3a5808fcd4da198ad89c20ad8f, + type: 3} + propertyPath: m_Text + value: 'Name + +' + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 3b615f3a5808fcd4da198ad89c20ad8f, type: 3} +--- !u!224 &3846954139654071970 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, + type: 3} + m_PrefabInstance: {fileID: 715006062476524667} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1768342692160745610 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 1253791210448866545, guid: 3b615f3a5808fcd4da198ad89c20ad8f, + type: 3} + m_PrefabInstance: {fileID: 715006062476524667} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4609610332970799658} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bf8fba0da7edddb4ebd669167b4814e7, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &4609610332970799658 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 3896904596393045585, guid: 3b615f3a5808fcd4da198ad89c20ad8f, + type: 3} + m_PrefabInstance: {fileID: 715006062476524667} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &4393015937855230145 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1787738287343351759} + m_Modifications: + - target: {fileID: 350557258748702759, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_Text + value: 'Export to clipboard + +' + objectReference: {fileID: 0} + - target: {fileID: 1600893048667343851, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_PreferredHeight + value: 32 + objectReference: {fileID: 0} + - target: {fileID: 5259033962641442089, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_Name + value: ExportToClipboard + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} +--- !u!224 &5204696006304160261 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + m_PrefabInstance: {fileID: 4393015937855230145} + m_PrefabAsset: {fileID: 0} +--- !u!114 &8811278844542435630 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + m_PrefabInstance: {fileID: 4393015937855230145} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &4686676328426509334 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 5018572182474487300} + m_Modifications: + - target: {fileID: 350557258748702759, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_Text + value: 'Save + +' + objectReference: {fileID: 0} + - target: {fileID: 350557258748702759, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_Color.a + value: 0.78431374 + objectReference: {fileID: 0} + - target: {fileID: 350557258748702759, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_Color.b + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 350557258748702759, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_Color.g + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 350557258748702759, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_Color.r + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1600893048667343851, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_PreferredHeight + value: 32 + objectReference: {fileID: 0} + - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_StringArgument + value: UI_SFX_ButtonSelectPositive + objectReference: {fileID: 0} + - target: {fileID: 5259033962641442089, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_Name + value: Save + objectReference: {fileID: 0} + - target: {fileID: 5259033962641442089, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} +--- !u!1 &716561402804654399 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 5259033962641442089, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + m_PrefabInstance: {fileID: 4686676328426509334} + m_PrefabAsset: {fileID: 0} +--- !u!114 &556960494971799033 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + m_PrefabInstance: {fileID: 4686676328426509334} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 716561402804654399} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!224 &3875207306295828178 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + m_PrefabInstance: {fileID: 4686676328426509334} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &5084870212214976593 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 3232415723866766923} + m_Modifications: + - target: {fileID: 1433087424286845535, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_Name + value: KeybindingView + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_SizeDelta.x + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_SizeDelta.y + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4169545428920601791, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_Text + value: 'E + +' + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 46bad96ed5b13374e951dfa21274d564, type: 3} +--- !u!224 &7049291656871662841 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + m_PrefabInstance: {fileID: 5084870212214976593} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &5855626643477489524 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1787738287343351759} + m_Modifications: + - target: {fileID: 350557258748702759, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_Text + value: Clear + objectReference: {fileID: 0} + - target: {fileID: 350557258748702759, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_Color.a + value: 0.78431374 + objectReference: {fileID: 0} + - target: {fileID: 350557258748702759, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_Color.b + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 350557258748702759, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_Color.g + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 350557258748702759, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_Color.r + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1600893048667343851, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_PreferredHeight + value: 32 + objectReference: {fileID: 0} + - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_StringArgument + value: UI_SFX_ButtonSelectNegative + objectReference: {fileID: 0} + - target: {fileID: 5259033962641442089, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_Name + value: Clear + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} +--- !u!114 &1725880023680399003 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + m_PrefabInstance: {fileID: 5855626643477489524} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!224 &2706301229408136624 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + m_PrefabInstance: {fileID: 5855626643477489524} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &6601755473039574096 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 8108394480977598239} + m_Modifications: + - target: {fileID: 1433087424286845535, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_Name + value: KeybindingView + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_SizeDelta.x + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_SizeDelta.y + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4169545428920601791, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + propertyPath: m_Text + value: 'Q + +' + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 46bad96ed5b13374e951dfa21274d564, type: 3} +--- !u!224 &8996835591626678520 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, + type: 3} + m_PrefabInstance: {fileID: 6601755473039574096} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &6641158661266048303 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 4279135036924348796} + m_Modifications: + - target: {fileID: 1128575031055169981, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1128575031055169981, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1128575031055169981, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1128575031055169981, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1128575031055169981, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1128575031055169981, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1949468821724668601, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1949468821724668601, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1949468821724668601, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1949468821724668601, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1949468821724668601, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1949468821724668601, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2145782460056235131, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2145782460056235131, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2145782460056235131, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2145782460056235131, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2145782460056235131, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2145782460056235131, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2684111501116982609, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_Name + value: TooltipMetadata + objectReference: {fileID: 0} + - target: {fileID: 2985571104855899046, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2985571104855899046, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2985571104855899046, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2985571104855899046, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2985571104855899046, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2985571104855899046, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5177613410593669567, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5177613410593669567, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5177613410593669567, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5177613410593669567, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5177613410593669567, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5177613410593669567, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5294044645566499917, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5294044645566499917, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5294044645566499917, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5294044645566499917, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5294044645566499917, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5294044645566499917, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8373528361232519364, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8373528361232519364, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8373528361232519364, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8373528361232519364, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8373528361232519364, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8373528361232519364, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8685130992723305967, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8685130992723305967, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8685130992723305967, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8685130992723305967, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8685130992723305967, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8685130992723305967, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 4b82a56f278cc9841ae9e9178742ed32, type: 3} +--- !u!224 &4905551359096726179 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 1746875924451731340, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + m_PrefabInstance: {fileID: 6641158661266048303} + m_PrefabAsset: {fileID: 0} +--- !u!114 &623480200571133104 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 6092571422558624159, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} + m_PrefabInstance: {fileID: 6641158661266048303} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 12834725d7e6e6b409e221744e38d836, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/Project/Prefabs/ShipEditor/ShipEditorOverlay.prefab.meta b/Assets/Project/Prefabs/BlueprintEditor/GridEditorOverlay.prefab.meta similarity index 100% rename from Assets/Project/Prefabs/ShipEditor/ShipEditorOverlay.prefab.meta rename to Assets/Project/Prefabs/BlueprintEditor/GridEditorOverlay.prefab.meta diff --git a/Assets/Project/Prefabs/Grids/Blocks/Autocannon/Autocannon.prefab b/Assets/Project/Prefabs/Grids/Blocks/Autocannon/Autocannon.prefab index bece8aa2..48f3b59f 100644 --- a/Assets/Project/Prefabs/Grids/Blocks/Autocannon/Autocannon.prefab +++ b/Assets/Project/Prefabs/Grids/Blocks/Autocannon/Autocannon.prefab @@ -9,7 +9,7 @@ MonoBehaviour: m_GameObject: {fileID: 5632532741842114357} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 70032b9cfafc6c24fb1a7bd4630b1441, type: 3} + m_Script: {fileID: 11500000, guid: e0137dd24c4320a4f86371eda34de905, type: 3} m_Name: m_EditorClassIdentifier: block: {fileID: 0} @@ -30,7 +30,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: block: {fileID: 0} ---- !u!114 &7208588484925278604 +--- !u!114 &5036037921837116051 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -39,17 +39,12 @@ MonoBehaviour: m_GameObject: {fileID: 5632532741842114357} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5d4fe6b84b5324d48981aae79996f322, type: 3} + m_Script: {fileID: 11500000, guid: 8b28ac2d5bd8b414e984c0d2a8d80743, type: 3} m_Name: m_EditorClassIdentifier: - anchoredBlueprintBlock: - gridAnchor: {x: 0, y: 0} - blueprintBlock: - id: - flippedX: 0 - flippedY: 0 + blockPoolMember: {fileID: 0} physicalBehaviour: {fileID: 7208588484925278603} - turretBehaviour: {fileID: 7208588484925278602} + collider: {fileID: 0} --- !u!114 &4044106038289045004 MonoBehaviour: m_ObjectHideFlags: 0 @@ -99,25 +94,62 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 073797afb82c5a1438f328866b10b3f0, type: 3} m_Name: m_EditorClassIdentifier: + m_ComponentVersion: 1 m_LightType: 3 m_BlendStyleIndex: 0 m_FalloffIntensity: 0.5 m_Color: {r: 1, g: 0.8395166, b: 0, a: 1} m_Intensity: 0 - m_LightVolumeOpacity: 0 + m_LightVolumeIntensity: 0 + m_LightVolumeIntensityEnabled: 0 m_ApplyToSortingLayers: 00000000 m_LightCookieSprite: {fileID: 0} - m_UseNormalMap: 0 + m_DeprecatedPointLightCookieSprite: {fileID: 0} m_LightOrder: 0 - m_AlphaBlendOnOverlap: 0 + m_OverlapOperation: 0 + m_NormalMapDistance: 3 + m_NormalMapQuality: 2 + m_UseNormalMap: 0 + m_ShadowIntensityEnabled: 0 m_ShadowIntensity: 0 + m_ShadowVolumeIntensityEnabled: 0 m_ShadowVolumeIntensity: 0 + m_Vertices: + - position: {x: 0.9985302, y: 0.9985302, z: 0} + color: {r: 0.70710677, g: 0.70710677, b: 0, a: 0} + uv: {x: 0, y: 0} + - position: {x: 0.9985302, y: 0.9985302, z: 0} + color: {r: 0, g: 0, b: 0, a: 1} + uv: {x: 0, y: 0} + - position: {x: -0.9985302, y: 0.9985302, z: 0} + color: {r: -0.70710677, g: 0.70710677, b: 0, a: 0} + uv: {x: 0, y: 0} + - position: {x: -0.9985302, y: 0.9985302, z: 0} + color: {r: 0, g: 0, b: 0, a: 1} + uv: {x: 0, y: 0} + - position: {x: -0.99853003, y: -0.9985304, z: 0} + color: {r: -0.70710665, g: -0.7071069, b: 0, a: 0} + uv: {x: 0, y: 0} + - position: {x: -0.99853003, y: -0.9985304, z: 0} + color: {r: 0, g: 0, b: 0, a: 1} + uv: {x: 0, y: 0} + - position: {x: 0.99853003, y: -0.9985304, z: 0} + color: {r: 0.70710665, g: -0.7071069, b: 0, a: 0} + uv: {x: 0, y: 0} + - position: {x: 0.99853003, y: -0.9985304, z: 0} + color: {r: 0, g: 0, b: 0, a: 1} + uv: {x: 0, y: 0} + - position: {x: 0, y: 0, z: 0} + color: {r: 0, g: 0, b: 0, a: 1} + uv: {x: 0, y: 0} + m_Triangles: 030001000800020000000100030002000100050003000800040002000300050004000300070005000800060004000500070006000500010007000800000006000700010000000700 + m_LocalBounds: + m_Center: {x: 0, y: -0.00000011920929, z: 0} + m_Extent: {x: 0.9985302, y: 0.99853027, z: 0} m_PointLightInnerAngle: 360 m_PointLightOuterAngle: 360 m_PointLightInnerRadius: 0 m_PointLightOuterRadius: 0.4 - m_PointLightDistance: 3 - m_PointLightQuality: 1 m_ShapeLightParametricSides: 5 m_ShapeLightParametricAngleOffset: 0 m_ShapeLightParametricRadius: 1 @@ -207,25 +239,62 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 073797afb82c5a1438f328866b10b3f0, type: 3} m_Name: m_EditorClassIdentifier: + m_ComponentVersion: 1 m_LightType: 3 m_BlendStyleIndex: 0 m_FalloffIntensity: 0.5 m_Color: {r: 1, g: 0.8395166, b: 0, a: 1} m_Intensity: 0 - m_LightVolumeOpacity: 0 + m_LightVolumeIntensity: 0 + m_LightVolumeIntensityEnabled: 0 m_ApplyToSortingLayers: 00000000 m_LightCookieSprite: {fileID: 0} - m_UseNormalMap: 0 + m_DeprecatedPointLightCookieSprite: {fileID: 0} m_LightOrder: 0 - m_AlphaBlendOnOverlap: 0 + m_OverlapOperation: 0 + m_NormalMapDistance: 3 + m_NormalMapQuality: 2 + m_UseNormalMap: 0 + m_ShadowIntensityEnabled: 0 m_ShadowIntensity: 0 + m_ShadowVolumeIntensityEnabled: 0 m_ShadowVolumeIntensity: 0 + m_Vertices: + - position: {x: 0.9985302, y: 0.9985302, z: 0} + color: {r: 0.70710677, g: 0.70710677, b: 0, a: 0} + uv: {x: 0, y: 0} + - position: {x: 0.9985302, y: 0.9985302, z: 0} + color: {r: 0, g: 0, b: 0, a: 1} + uv: {x: 0, y: 0} + - position: {x: -0.9985302, y: 0.9985302, z: 0} + color: {r: -0.70710677, g: 0.70710677, b: 0, a: 0} + uv: {x: 0, y: 0} + - position: {x: -0.9985302, y: 0.9985302, z: 0} + color: {r: 0, g: 0, b: 0, a: 1} + uv: {x: 0, y: 0} + - position: {x: -0.99853003, y: -0.9985304, z: 0} + color: {r: -0.70710665, g: -0.7071069, b: 0, a: 0} + uv: {x: 0, y: 0} + - position: {x: -0.99853003, y: -0.9985304, z: 0} + color: {r: 0, g: 0, b: 0, a: 1} + uv: {x: 0, y: 0} + - position: {x: 0.99853003, y: -0.9985304, z: 0} + color: {r: 0.70710665, g: -0.7071069, b: 0, a: 0} + uv: {x: 0, y: 0} + - position: {x: 0.99853003, y: -0.9985304, z: 0} + color: {r: 0, g: 0, b: 0, a: 1} + uv: {x: 0, y: 0} + - position: {x: 0, y: 0, z: 0} + color: {r: 0, g: 0, b: 0, a: 1} + uv: {x: 0, y: 0} + m_Triangles: 030001000800020000000100030002000100050003000800040002000300050004000300070005000800060004000500070006000500010007000800000006000700010000000700 + m_LocalBounds: + m_Center: {x: 0, y: -0.00000011920929, z: 0} + m_Extent: {x: 0.9985302, y: 0.99853027, z: 0} m_PointLightInnerAngle: 360 m_PointLightOuterAngle: 360 m_PointLightInnerRadius: 0 m_PointLightOuterRadius: 0.4 - m_PointLightDistance: 3 - m_PointLightQuality: 1 m_ShapeLightParametricSides: 5 m_ShapeLightParametricAngleOffset: 0 m_ShapeLightParametricRadius: 1 @@ -256,42 +325,42 @@ PrefabInstance: type: 3} - target: {fileID: 1128024027608330024, guid: 32232d525af1553449ae80920da2fe74, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 1128024027608330024, guid: 32232d525af1553449ae80920da2fe74, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 1128024027608330024, guid: 32232d525af1553449ae80920da2fe74, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 1128024027608330024, guid: 32232d525af1553449ae80920da2fe74, type: 3} - propertyPath: m_LocalRotation.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 1128024027608330024, guid: 32232d525af1553449ae80920da2fe74, type: 3} - propertyPath: m_LocalRotation.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 1128024027608330024, guid: 32232d525af1553449ae80920da2fe74, type: 3} - propertyPath: m_LocalRotation.z + propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - target: {fileID: 1128024027608330024, guid: 32232d525af1553449ae80920da2fe74, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_LocalRotation.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 1128024027608330024, guid: 32232d525af1553449ae80920da2fe74, type: 3} - propertyPath: m_RootOrder + propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - target: {fileID: 1128024027608330024, guid: 32232d525af1553449ae80920da2fe74, @@ -326,12 +395,12 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 7959871513899177796, guid: 32232d525af1553449ae80920da2fe74, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7959871513899177796, guid: 32232d525af1553449ae80920da2fe74, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] diff --git a/Assets/Project/Prefabs/Grids/Blocks/Block.prefab b/Assets/Project/Prefabs/Grids/Blocks/Block.prefab index 0076d6a0..ff0ddd5d 100644 --- a/Assets/Project/Prefabs/Grids/Blocks/Block.prefab +++ b/Assets/Project/Prefabs/Grids/Blocks/Block.prefab @@ -11,6 +11,7 @@ GameObject: - component: {fileID: 1903583348838361020} - component: {fileID: 4178788428458324673} - component: {fileID: 6692629685480085147} + - component: {fileID: 2687779403261250996} m_Layer: 9 m_Name: Block m_TagString: Untagged @@ -110,3 +111,16 @@ BoxCollider2D: serializedVersion: 2 m_Size: {x: 1, y: 1} m_EdgeRadius: 0 +--- !u!114 &2687779403261250996 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4260548639137017485} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 565cfc078da651a4ba1632dc9c61f5aa, type: 3} + m_Name: + m_EditorClassIdentifier: + spriteRenderer: {fileID: 4178788428458324673} diff --git a/Assets/Project/Prefabs/Grids/Blocks/DroneBay.meta b/Assets/Project/Prefabs/Grids/Blocks/DroneBay.meta new file mode 100644 index 00000000..9439bb7a --- /dev/null +++ b/Assets/Project/Prefabs/Grids/Blocks/DroneBay.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f1a52e6c46fd2954684ec0d9ab447a5e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Prefabs/Grids/Blocks/DroneBay/DroneBay.prefab b/Assets/Project/Prefabs/Grids/Blocks/DroneBay/DroneBay.prefab new file mode 100644 index 00000000..f7422c06 --- /dev/null +++ b/Assets/Project/Prefabs/Grids/Blocks/DroneBay/DroneBay.prefab @@ -0,0 +1,123 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &5983738987132935305 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5475960269345514913} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a35912b032510a540856d092ddecd7c2, type: 3} + m_Name: + m_EditorClassIdentifier: + block: {fileID: 0} + dronePrefab: {fileID: 187856156003717801, guid: ae94c7d978aa5404895abff4d826ea28, + type: 3} + spawnHeight: -4 +--- !u!114 &8332001095574612373 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5475960269345514913} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d2fb983101d6f86459a22fa5772742fd, type: 3} + m_Name: + m_EditorClassIdentifier: + block: {fileID: 0} + hull: + value: 0 +--- !u!114 &8595653763759203720 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5475960269345514913} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8b28ac2d5bd8b414e984c0d2a8d80743, type: 3} + m_Name: + m_EditorClassIdentifier: + blockPoolMember: {fileID: 0} + physicalBehaviour: {fileID: 8332001095574612373} + collider: {fileID: 0} +--- !u!1001 &1795977972898693026 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 5985878368135977475, guid: 39fdff68dd14bd84dab48dcac3dac195, + type: 3} + propertyPath: m_Name + value: DroneBay + objectReference: {fileID: 0} + - target: {fileID: 8239472102170841906, guid: 39fdff68dd14bd84dab48dcac3dac195, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8239472102170841906, guid: 39fdff68dd14bd84dab48dcac3dac195, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8239472102170841906, guid: 39fdff68dd14bd84dab48dcac3dac195, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8239472102170841906, guid: 39fdff68dd14bd84dab48dcac3dac195, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8239472102170841906, guid: 39fdff68dd14bd84dab48dcac3dac195, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8239472102170841906, guid: 39fdff68dd14bd84dab48dcac3dac195, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8239472102170841906, guid: 39fdff68dd14bd84dab48dcac3dac195, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8239472102170841906, guid: 39fdff68dd14bd84dab48dcac3dac195, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8239472102170841906, guid: 39fdff68dd14bd84dab48dcac3dac195, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8239472102170841906, guid: 39fdff68dd14bd84dab48dcac3dac195, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8239472102170841906, guid: 39fdff68dd14bd84dab48dcac3dac195, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 39fdff68dd14bd84dab48dcac3dac195, type: 3} +--- !u!1 &5475960269345514913 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 5985878368135977475, guid: 39fdff68dd14bd84dab48dcac3dac195, + type: 3} + m_PrefabInstance: {fileID: 1795977972898693026} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Project/Prefabs/Grids/Blocks/DroneBay/DroneBay.prefab.meta b/Assets/Project/Prefabs/Grids/Blocks/DroneBay/DroneBay.prefab.meta new file mode 100644 index 00000000..41a7ded6 --- /dev/null +++ b/Assets/Project/Prefabs/Grids/Blocks/DroneBay/DroneBay.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6bb15bfd671066e4984dec37bd70f834 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Prefabs/Grids/Blocks/DroneBay/InertDroneBay.prefab b/Assets/Project/Prefabs/Grids/Blocks/DroneBay/InertDroneBay.prefab new file mode 100644 index 00000000..4ff331bc --- /dev/null +++ b/Assets/Project/Prefabs/Grids/Blocks/DroneBay/InertDroneBay.prefab @@ -0,0 +1,97 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &7508238079228490894 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 1903583348838361020, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1903583348838361020, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1903583348838361020, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1903583348838361020, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1903583348838361020, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1903583348838361020, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1903583348838361020, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1903583348838361020, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1903583348838361020, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1903583348838361020, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1903583348838361020, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4178788428458324673, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_Sprite + value: + objectReference: {fileID: -5935392190051464458, guid: 9bf3524a785798c4cb19748f21802c5f, + type: 3} + - target: {fileID: 4260548639137017485, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_Name + value: InertDroneBay + objectReference: {fileID: 0} + - target: {fileID: 6692629685480085147, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_Size.x + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 6692629685480085147, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_Size.y + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 6692629685480085147, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_SpriteTilingProperty.oldSize.x + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 6692629685480085147, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_SpriteTilingProperty.oldSize.y + value: 2 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 833d8ea8eb468324d957c13dcdf89414, type: 3} diff --git a/Assets/Project/Prefabs/Grids/Blocks/DroneBay/InertDroneBay.prefab.meta b/Assets/Project/Prefabs/Grids/Blocks/DroneBay/InertDroneBay.prefab.meta new file mode 100644 index 00000000..7a9cb153 --- /dev/null +++ b/Assets/Project/Prefabs/Grids/Blocks/DroneBay/InertDroneBay.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 39fdff68dd14bd84dab48dcac3dac195 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Prefabs/Grids/Blocks/DroneBay/SupportDrone.prefab b/Assets/Project/Prefabs/Grids/Blocks/DroneBay/SupportDrone.prefab new file mode 100644 index 00000000..9c3c4797 --- /dev/null +++ b/Assets/Project/Prefabs/Grids/Blocks/DroneBay/SupportDrone.prefab @@ -0,0 +1,155 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &187856156003717801 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 187856156003717813} + - component: {fileID: 187856156003717812} + - component: {fileID: 187856156003717815} + - component: {fileID: 187856156003717814} + - component: {fileID: 668013307793114895} + m_Layer: 11 + m_Name: SupportDrone + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &187856156003717813 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 187856156003717801} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -4} + 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!212 &187856156003717812 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 187856156003717801} + 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: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, 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: 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: -1495744313708360963, guid: ce0ab10e07192e24fa260bd0f61f404c, + type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 2, y: 2} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!50 &187856156003717815 +Rigidbody2D: + serializedVersion: 4 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 187856156003717801} + m_BodyType: 0 + m_Simulated: 1 + m_UseFullKinematicContacts: 0 + m_UseAutoMass: 1 + m_Mass: 1.22 + m_LinearDrag: 0 + m_AngularDrag: 0.05 + m_GravityScale: 0 + m_Material: {fileID: 0} + m_Interpolate: 0 + m_SleepingMode: 1 + m_CollisionDetection: 0 + m_Constraints: 0 +--- !u!60 &187856156003717814 +PolygonCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 187856156003717801} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0.5, y: 0.5} + oldSize: {x: 2, y: 2} + newSize: {x: 2, y: 2} + adaptiveTilingThreshold: 0.5 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + m_Points: + m_Paths: + - - {x: 0.2, y: 0.6} + - {x: 0.55, y: 0.2} + - {x: 0.55, y: -0.2} + - {x: 0.2, y: -0.6} + - {x: -0.15, y: -0.6} + - {x: -0.8, y: -0.2} + - {x: -0.8, y: 0.2} + - {x: -0.15, y: 0.6} +--- !u!114 &668013307793114895 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 187856156003717801} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4804dcd6eabf44279b4b61dc9a7e0dfe, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/Project/Prefabs/Grids/Blocks/DroneBay/SupportDrone.prefab.meta b/Assets/Project/Prefabs/Grids/Blocks/DroneBay/SupportDrone.prefab.meta new file mode 100644 index 00000000..1e16a69f --- /dev/null +++ b/Assets/Project/Prefabs/Grids/Blocks/DroneBay/SupportDrone.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ae94c7d978aa5404895abff4d826ea28 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Prefabs/Grids/Blocks/GaussCannon.meta b/Assets/Project/Prefabs/Grids/Blocks/GaussCannon.meta new file mode 100644 index 00000000..b818decc --- /dev/null +++ b/Assets/Project/Prefabs/Grids/Blocks/GaussCannon.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ef425955da5c29a42be4e3ca9834dfb3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Prefabs/Grids/Blocks/GaussCannon/GaussCannon.prefab b/Assets/Project/Prefabs/Grids/Blocks/GaussCannon/GaussCannon.prefab new file mode 100644 index 00000000..1b952890 --- /dev/null +++ b/Assets/Project/Prefabs/Grids/Blocks/GaussCannon/GaussCannon.prefab @@ -0,0 +1,1150 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &121140803942446368 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5810594951229872469} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1efbc8914b07d1545ab528e8a2d648cb, type: 3} + m_Name: + m_EditorClassIdentifier: + blockPoolMember: {fileID: 0} + physicalBehaviour: {fileID: 3183903237534111054} + collider: {fileID: 0} +--- !u!114 &3183903237534111054 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5810594951229872469} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d2fb983101d6f86459a22fa5772742fd, type: 3} + m_Name: + m_EditorClassIdentifier: + block: {fileID: 0} + hull: + value: 0 +--- !u!114 &7596730845723094954 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5810594951229872469} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c94a1ceb55be6a843ba5db513312cdfd, type: 3} + m_Name: + m_EditorClassIdentifier: + block: {fileID: 0} +--- !u!114 &7617634622350147509 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5810594951229872469} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 152ca4b076055bb42bbfc90d24329297, type: 3} + m_Name: + m_EditorClassIdentifier: + block: {fileID: 0} + turret: {fileID: 4706351059954302035} + chargeDecaySpeed: 4 + coolingDownChargeDecaySpeed: 12 + coilAnimator: {fileID: 3807540685108769277} + gunOverlayAnimator: {fileID: 5122118237215007916} + beamOrigin: {fileID: 6574230540406159965} + arcs: {fileID: 8196826969012918710} + lineRenderer: {fileID: 7853267247228533205} + audioPlayer: {fileID: 3686884718047198672} + charge: {fileID: 11400000, guid: 687fb5b53dd0d0540b6e31e1ed526cf0, type: 2} + coilCharge1: {fileID: 11400000, guid: b2c5fea277a39af439d7225265978b77, type: 2} + coilCharge2: {fileID: 11400000, guid: 007c59ddcff68c9448a5fea18f5ae1be, type: 2} + coilCharge3: {fileID: 11400000, guid: 32a0f80093c784b45be7c63035e0d9b8, type: 2} + electricityLoop: {fileID: 11400000, guid: 1e8fa8ee2823722409fd3ff24400d43b, type: 2} + fire: {fileID: 11400000, guid: b91b8e6ae16a632459f1f81a1fbca2b4, type: 2} + windDown: {fileID: 11400000, guid: d871658efd5fd8143ac6104f254bf474, type: 2} + progressToElectricityVolume: + easeType: 1 + ease: 0 + animationCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 5.9744997 + outSlope: 5.9744997 + tangentMode: 0 + weightedMode: 2 + inWeight: 0 + outWeight: 0.06443655 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: -0 + outSlope: -0 + tangentMode: 0 + weightedMode: 1 + inWeight: 1 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + cursorFacade: + value: + fillRecoverTime: 0.5 + color: {r: 0.29411766, g: 0.7254902, b: 0.7058824, a: 1} + colorAnimTime: 0.2 + trackFiringDirection: + animTime: 0.2 + ease: + easeType: 0 + ease: 15 + animationCurve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 +--- !u!95 &5122118237215007916 +Animator: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8240152899758777089} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 9100000, guid: 07889620b35fe7e4d8e58b99879b762e, type: 2} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorControllerStateOnDisable: 0 +--- !u!1 &4624239260831333735 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3809563873407450470} + - component: {fileID: 3686884718047198672} + - component: {fileID: 1234271144477445189} + - component: {fileID: 3924308580736948661} + - component: {fileID: 5672513786620342798} + - component: {fileID: 868660976539541843} + - component: {fileID: 4673373303405883605} + - component: {fileID: 4065493416276577887} + - component: {fileID: 1860589775376111719} + m_Layer: 9 + m_Name: Audio + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3809563873407450470 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4624239260831333735} + 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: 8208093733467377764} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &3686884718047198672 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4624239260831333735} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b75b37b68fe44970bb1b6951421d88fd, type: 3} + m_Name: + m_EditorClassIdentifier: + players: + list: + - key: {fileID: 11400000, guid: 687fb5b53dd0d0540b6e31e1ed526cf0, type: 2} + value: {fileID: 1234271144477445189} + - key: {fileID: 11400000, guid: b2c5fea277a39af439d7225265978b77, type: 2} + value: {fileID: 3924308580736948661} + - key: {fileID: 11400000, guid: 007c59ddcff68c9448a5fea18f5ae1be, type: 2} + value: {fileID: 5672513786620342798} + - key: {fileID: 11400000, guid: 32a0f80093c784b45be7c63035e0d9b8, type: 2} + value: {fileID: 868660976539541843} + - key: {fileID: 11400000, guid: 1e8fa8ee2823722409fd3ff24400d43b, type: 2} + value: {fileID: 4673373303405883605} + - key: {fileID: 11400000, guid: b91b8e6ae16a632459f1f81a1fbca2b4, type: 2} + value: {fileID: 4065493416276577887} + - key: {fileID: 11400000, guid: d871658efd5fd8143ac6104f254bf474, type: 2} + value: {fileID: 1860589775376111719} +--- !u!82 &1234271144477445189 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4624239260831333735} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 8300000, guid: e599fb0154bec9c4aaaa8c85d2d457d5, type: 3} + m_PlayOnAwake: 0 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 +--- !u!82 &3924308580736948661 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4624239260831333735} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 8300000, guid: b6abfdb885e638f40a1363f75915a17f, type: 3} + m_PlayOnAwake: 0 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 +--- !u!82 &5672513786620342798 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4624239260831333735} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 8300000, guid: 2ba23a69a3189c0428134eeee8839ba9, type: 3} + m_PlayOnAwake: 0 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 +--- !u!82 &868660976539541843 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4624239260831333735} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 8300000, guid: 1f99ac6b3c1b0d44cafea6f2339eff8c, type: 3} + m_PlayOnAwake: 0 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 +--- !u!82 &4673373303405883605 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4624239260831333735} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 8300000, guid: 4cf5908572d656c44a2a8913980e85e2, type: 3} + m_PlayOnAwake: 0 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 +--- !u!82 &4065493416276577887 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4624239260831333735} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 8300000, guid: c44e32178bb5c004d973e73c4f10cd7e, type: 3} + m_PlayOnAwake: 0 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 +--- !u!82 &1860589775376111719 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4624239260831333735} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 8300000, guid: de166871044c05a4381550c7c322a3f0, type: 3} + m_PlayOnAwake: 0 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 +--- !u!1001 &3217081780728070486 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 6722852894330278194, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6722852894330278194, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6722852894330278194, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6722852894330278194, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6722852894330278194, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6722852894330278194, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6722852894330278194, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6722852894330278194, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6722852894330278194, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6722852894330278194, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6722852894330278194, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6729965979070552288, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: audioPlayer + value: + objectReference: {fileID: 3686884718047198672} + - target: {fileID: 6729965979070552288, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: progressCurve.easeType + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6729965979070552288, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: coilChargeSoundByStep.list.Array.size + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 6729965979070552288, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: coilChargeSoundByStep.list.Array.data[1].key + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6729965979070552288, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: coilChargeSoundByStep.list.Array.data[2].key + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 6729965979070552288, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: progressMap.animationCurve.m_Curve.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 6729965979070552288, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: coilChargeSoundByStep.list.Array.data[0].value + value: + objectReference: {fileID: 11400000, guid: b2c5fea277a39af439d7225265978b77, + type: 2} + - target: {fileID: 6729965979070552288, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: coilChargeSoundByStep.list.Array.data[1].value + value: + objectReference: {fileID: 11400000, guid: 007c59ddcff68c9448a5fea18f5ae1be, + type: 2} + - target: {fileID: 6729965979070552288, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: coilChargeSoundByStep.list.Array.data[2].value + value: + objectReference: {fileID: 11400000, guid: 32a0f80093c784b45be7c63035e0d9b8, + type: 2} + - target: {fileID: 6729965979070552288, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: progressCurve.animationCurve.m_Curve.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 6729965979070552288, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: progressMap.animationCurve.m_Curve.Array.data[1].time + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6729965979070552288, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: progressMap.animationCurve.m_Curve.Array.data[1].value + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6729965979070552288, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: progressMap.animationCurve.m_Curve.Array.data[3].value + value: 1.0023575 + objectReference: {fileID: 0} + - target: {fileID: 6729965979070552288, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: progressCurve.animationCurve.m_Curve.Array.data[1].time + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6729965979070552288, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: progressCurve.animationCurve.m_Curve.Array.data[1].value + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6729965979070552288, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: progressMap.animationCurve.m_Curve.Array.data[0].inSlope + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 6729965979070552288, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: progressMap.animationCurve.m_Curve.Array.data[1].inSlope + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6729965979070552288, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: progressMap.animationCurve.m_Curve.Array.data[3].inSlope + value: 1.0071439 + objectReference: {fileID: 0} + - target: {fileID: 6729965979070552288, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: progressMap.animationCurve.m_Curve.Array.data[0].outSlope + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 6729965979070552288, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: progressMap.animationCurve.m_Curve.Array.data[1].inWeight + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6729965979070552288, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: progressMap.animationCurve.m_Curve.Array.data[1].outSlope + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6729965979070552288, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: progressCurve.animationCurve.m_Curve.Array.data[0].inSlope + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 6729965979070552288, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: progressMap.animationCurve.m_Curve.Array.data[0].outWeight + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6729965979070552288, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: progressMap.animationCurve.m_Curve.Array.data[1].outWeight + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6729965979070552288, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: progressCurve.animationCurve.m_Curve.Array.data[0].outSlope + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 6729965979070552288, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: progressMap.animationCurve.m_Curve.Array.data[1].tangentMode + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6729965979070552288, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: progressMap.animationCurve.m_Curve.Array.data[0].weightedMode + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6729965979070552288, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: progressMap.animationCurve.m_Curve.Array.data[1].weightedMode + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7334607006928491402, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: m_Size.y + value: 9 + objectReference: {fileID: 0} + - target: {fileID: 7334607006928491402, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: m_WasSpriteAssigned + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8936900360422922243, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + propertyPath: m_Name + value: GaussCannon + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: bd951fd94ddb35e47a065e1ea51cd926, type: 3} +--- !u!1 &5810594951229872469 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 8936900360422922243, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + m_PrefabInstance: {fileID: 3217081780728070486} + m_PrefabAsset: {fileID: 0} +--- !u!4 &8208093733467377764 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 6722852894330278194, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + m_PrefabInstance: {fileID: 3217081780728070486} + m_PrefabAsset: {fileID: 0} +--- !u!4 &4706351059954302035 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 7923256227314171141, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + m_PrefabInstance: {fileID: 3217081780728070486} + m_PrefabAsset: {fileID: 0} +--- !u!4 &6574230540406159965 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8617924919398988555, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + m_PrefabInstance: {fileID: 3217081780728070486} + m_PrefabAsset: {fileID: 0} +--- !u!120 &7853267247228533205 stripped +LineRenderer: + m_CorrespondingSourceObject: {fileID: 4636796829347461251, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + m_PrefabInstance: {fileID: 3217081780728070486} + m_PrefabAsset: {fileID: 0} +--- !u!114 &8196826969012918710 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 6729965979070552288, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + m_PrefabInstance: {fileID: 3217081780728070486} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ff6b8f5cbe3613e4e9c1117404714da3, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &8240152899758777089 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 6845394136081326679, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + m_PrefabInstance: {fileID: 3217081780728070486} + m_PrefabAsset: {fileID: 0} +--- !u!95 &3807540685108769277 stripped +Animator: + m_CorrespondingSourceObject: {fileID: 1761546003236581547, guid: bd951fd94ddb35e47a065e1ea51cd926, + type: 3} + m_PrefabInstance: {fileID: 3217081780728070486} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Project/Prefabs/Grids/Blocks/GaussCannon/GaussCannon.prefab.meta b/Assets/Project/Prefabs/Grids/Blocks/GaussCannon/GaussCannon.prefab.meta new file mode 100644 index 00000000..b1564536 --- /dev/null +++ b/Assets/Project/Prefabs/Grids/Blocks/GaussCannon/GaussCannon.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5246ab3b0a4e35a4d876a3e32059717c +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Prefabs/Grids/Blocks/GaussCannon/InertGaussCannon.prefab b/Assets/Project/Prefabs/Grids/Blocks/GaussCannon/InertGaussCannon.prefab new file mode 100644 index 00000000..b82782b0 --- /dev/null +++ b/Assets/Project/Prefabs/Grids/Blocks/GaussCannon/InertGaussCannon.prefab @@ -0,0 +1,2874 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &138111228702649834 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7923256227314171141} + m_Layer: 9 + m_Name: Turret + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7923256227314171141 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 138111228702649834} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4167852979816284131} + - {fileID: 1121058835350863339} + - {fileID: 3681648915972778933} + - {fileID: 3345392841715669895} + - {fileID: 8984425432898736238} + m_Father: {fileID: 6722852894330278194} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &802969804007192528 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8783912672356087286} + - component: {fileID: 7141062475774596600} + m_Layer: 9 + m_Name: Arc (17) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &8783912672356087286 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 802969804007192528} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.125, y: 0, z: 0} + m_LocalScale: {x: 0.25, y: 0.25, z: 1} + m_Children: [] + m_Father: {fileID: 6445760314682769892} + m_RootOrder: 17 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &7141062475774596600 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 802969804007192528} + 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: 2100000, guid: cac5f42f5e485ec4bbc116e8894abeb9, 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: 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: 197731d5700d0eb49915322ec740e2bc, type: 3} + m_Color: {r: 0.3537736, g: 1, b: 0.97167933, 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 &1382738197388167229 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7478650128967233479} + - component: {fileID: 2336638400871785070} + m_Layer: 9 + m_Name: Arc (13) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &7478650128967233479 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1382738197388167229} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1.625, y: 0, z: 0} + m_LocalScale: {x: 0.25, y: 0.25, z: 1} + m_Children: [] + m_Father: {fileID: 6445760314682769892} + m_RootOrder: 13 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &2336638400871785070 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1382738197388167229} + 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: 2100000, guid: cac5f42f5e485ec4bbc116e8894abeb9, 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: 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: 197731d5700d0eb49915322ec740e2bc, type: 3} + m_Color: {r: 0.3537736, g: 1, b: 0.97167933, 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 &1387015009521212393 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6660580628202415888} + - component: {fileID: 3160916318281492709} + m_Layer: 9 + m_Name: Arc (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &6660580628202415888 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1387015009521212393} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.25, y: 0, z: 0} + m_LocalScale: {x: 0.25, y: 0.25, z: 1} + m_Children: [] + m_Father: {fileID: 6445760314682769892} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &3160916318281492709 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1387015009521212393} + 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: 2100000, guid: cac5f42f5e485ec4bbc116e8894abeb9, 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: 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: 197731d5700d0eb49915322ec740e2bc, type: 3} + m_Color: {r: 0.3537736, g: 1, b: 0.97167933, 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 &1858082598784914610 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7112817584618806305} + - component: {fileID: 4260473456174575771} + m_Layer: 9 + m_Name: Arc (22) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &7112817584618806305 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1858082598784914610} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.75, y: 0, z: 0} + m_LocalScale: {x: 0.25, y: 0.25, z: 1} + m_Children: [] + m_Father: {fileID: 6445760314682769892} + m_RootOrder: 22 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &4260473456174575771 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1858082598784914610} + 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: 2100000, guid: cac5f42f5e485ec4bbc116e8894abeb9, 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: 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: 197731d5700d0eb49915322ec740e2bc, type: 3} + m_Color: {r: 0.3537736, g: 1, b: 0.97167933, 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 &2011775170853436660 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7883187076198753786} + - component: {fileID: 4610170219477273268} + m_Layer: 9 + m_Name: Arc (5) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &7883187076198753786 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2011775170853436660} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.625, y: 0, z: 0} + m_LocalScale: {x: 0.25, y: 0.25, z: 1} + m_Children: [] + m_Father: {fileID: 6445760314682769892} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &4610170219477273268 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2011775170853436660} + 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: 2100000, guid: cac5f42f5e485ec4bbc116e8894abeb9, 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: 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: 197731d5700d0eb49915322ec740e2bc, type: 3} + m_Color: {r: 0.3537736, g: 1, b: 0.97167933, 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 &2070708602541221499 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3345392841715669895} + - component: {fileID: 7334607006928491402} + - component: {fileID: 1761546003236581547} + m_Layer: 9 + m_Name: TurretCoilsInternal + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3345392841715669895 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2070708602541221499} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 7923256227314171141} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &7334607006928491402 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2070708602541221499} + 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: 2100000, guid: 96d1545cc484067429bd9bd8da062edd, 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: 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: 8500343177690839154, guid: 1df684a472980ef429d70e58a59b3b78, + type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 9, y: 9.026367} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!95 &1761546003236581547 +Animator: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2070708602541221499} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 9100000, guid: 98aa9dfc44c683d43ada0ee5387461fe, type: 2} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorControllerStateOnDisable: 0 +--- !u!1 &2857808277552737027 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7677888368938859632} + - component: {fileID: 4014779725425808037} + m_Layer: 9 + m_Name: Arc (21) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &7677888368938859632 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2857808277552737027} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.625, y: 0, z: 0} + m_LocalScale: {x: 0.25, y: 0.25, z: 1} + m_Children: [] + m_Father: {fileID: 6445760314682769892} + m_RootOrder: 21 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &4014779725425808037 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2857808277552737027} + 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: 2100000, guid: cac5f42f5e485ec4bbc116e8894abeb9, 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: 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: 197731d5700d0eb49915322ec740e2bc, type: 3} + m_Color: {r: 0.3537736, g: 1, b: 0.97167933, 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 &3351404769725639999 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6445760314682769892} + - component: {fileID: 6729965979070552288} + m_Layer: 9 + m_Name: Arcs + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6445760314682769892 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3351404769725639999} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.28125, y: 0, z: -0.1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 3292439516066538693} + - {fileID: 7819674948092653061} + - {fileID: 6660580628202415888} + - {fileID: 2158056933217670723} + - {fileID: 1831708903186066510} + - {fileID: 7883187076198753786} + - {fileID: 8413919469597936043} + - {fileID: 3305857267302190852} + - {fileID: 2040592007714698061} + - {fileID: 4394271242871114970} + - {fileID: 8479227220274733703} + - {fileID: 8633207119634171442} + - {fileID: 2078300648628375332} + - {fileID: 7478650128967233479} + - {fileID: 2855272096430296279} + - {fileID: 5968379453163092290} + - {fileID: 6010955849550621222} + - {fileID: 8783912672356087286} + - {fileID: 1805466500195470779} + - {fileID: 764730984091878930} + - {fileID: 3566237711298019667} + - {fileID: 7677888368938859632} + - {fileID: 7112817584618806305} + - {fileID: 6318967668099668248} + - {fileID: 2195121689308408210} + m_Father: {fileID: 1121058835350863339} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &6729965979070552288 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3351404769725639999} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ff6b8f5cbe3613e4e9c1117404714da3, type: 3} + m_Name: + m_EditorClassIdentifier: + progressMap: + easeType: 1 + ease: 0 + animationCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 160.9192 + outSlope: 160.9192 + tangentMode: 0 + weightedMode: 2 + inWeight: 0 + outWeight: 0.0037035435 + - serializedVersion: 3 + time: 0.33 + value: 0.33 + inSlope: 1 + outSlope: 24.786648 + tangentMode: 5 + weightedMode: 2 + inWeight: 0.33333334 + outWeight: 0.02309452 + - serializedVersion: 3 + time: 0.67 + value: 0.67 + inSlope: 1 + outSlope: 126.570496 + tangentMode: 5 + weightedMode: 2 + inWeight: 0.33333334 + outWeight: 0.004853805 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 2 + tangentMode: 5 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + arcCount: 25 + arcDistance: 0.125 + arcPrefab: {fileID: 6479496829754540037, guid: 1267a043116d69b429d1487303d6bb5a, + type: 3} + arcs: + - {fileID: 7657553700344811785} + - {fileID: 3703069867851617289} + - {fileID: 1387015009521212393} + - {fileID: 5637238040273318417} + - {fileID: 8175017718045368110} + - {fileID: 2011775170853436660} + - {fileID: 6205518422952818732} + - {fileID: 6347701068977039173} + - {fileID: 9186648557437624372} + - {fileID: 6235442674761981972} + - {fileID: 4369040228320887650} + - {fileID: 7968279318055619805} + - {fileID: 3638997669360487405} + - {fileID: 1382738197388167229} + - {fileID: 8581870303103700961} + - {fileID: 4813449903713735957} + - {fileID: 9215722850092792077} + - {fileID: 802969804007192528} + - {fileID: 6273587321872164095} + - {fileID: 7994594688695529715} + - {fileID: 7541249429355943414} + - {fileID: 2857808277552737027} + - {fileID: 1858082598784914610} + - {fileID: 6796606621848686665} + - {fileID: 5092258641656368405} +--- !u!1 &3638997669360487405 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2078300648628375332} + - component: {fileID: 670413583676113149} + m_Layer: 9 + m_Name: Arc (12) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &2078300648628375332 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3638997669360487405} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1.5, y: 0, z: 0} + m_LocalScale: {x: 0.25, y: 0.25, z: 1} + m_Children: [] + m_Father: {fileID: 6445760314682769892} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &670413583676113149 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3638997669360487405} + 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: 2100000, guid: cac5f42f5e485ec4bbc116e8894abeb9, 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: 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: 197731d5700d0eb49915322ec740e2bc, type: 3} + m_Color: {r: 0.3537736, g: 1, b: 0.97167933, 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 &3703069867851617289 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7819674948092653061} + - component: {fileID: 8667466078227126949} + m_Layer: 9 + m_Name: Arc (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &7819674948092653061 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3703069867851617289} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.125, y: 0, z: 0} + m_LocalScale: {x: 0.25, y: 0.25, z: 1} + m_Children: [] + m_Father: {fileID: 6445760314682769892} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &8667466078227126949 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3703069867851617289} + 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: 2100000, guid: cac5f42f5e485ec4bbc116e8894abeb9, 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: 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: 197731d5700d0eb49915322ec740e2bc, type: 3} + m_Color: {r: 0.3537736, g: 1, b: 0.97167933, 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 &4369040228320887650 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8479227220274733703} + - component: {fileID: 5857259298308955476} + m_Layer: 9 + m_Name: Arc (10) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &8479227220274733703 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4369040228320887650} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1.25, y: 0, z: 0} + m_LocalScale: {x: 0.25, y: 0.25, z: 1} + m_Children: [] + m_Father: {fileID: 6445760314682769892} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &5857259298308955476 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4369040228320887650} + 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: 2100000, guid: cac5f42f5e485ec4bbc116e8894abeb9, 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: 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: 197731d5700d0eb49915322ec740e2bc, type: 3} + m_Color: {r: 0.3537736, g: 1, b: 0.97167933, 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 &4813449903713735957 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5968379453163092290} + - component: {fileID: 186810370037482544} + m_Layer: 9 + m_Name: Arc (15) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &5968379453163092290 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4813449903713735957} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1.875, y: 0, z: 0} + m_LocalScale: {x: 0.25, y: 0.25, z: 1} + m_Children: [] + m_Father: {fileID: 6445760314682769892} + m_RootOrder: 15 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &186810370037482544 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4813449903713735957} + 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: 2100000, guid: cac5f42f5e485ec4bbc116e8894abeb9, 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: 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: 197731d5700d0eb49915322ec740e2bc, type: 3} + m_Color: {r: 0.3537736, g: 1, b: 0.97167933, 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 &5092258641656368405 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2195121689308408210} + - component: {fileID: 5620198431542425597} + m_Layer: 9 + m_Name: Arc (24) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &2195121689308408210 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5092258641656368405} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: 0.25, y: 0.25, z: 1} + m_Children: [] + m_Father: {fileID: 6445760314682769892} + m_RootOrder: 24 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &5620198431542425597 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5092258641656368405} + 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: 2100000, guid: cac5f42f5e485ec4bbc116e8894abeb9, 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: 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: 197731d5700d0eb49915322ec740e2bc, type: 3} + m_Color: {r: 0.3537736, g: 1, b: 0.97167933, 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 &5537130260714291545 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1121058835350863339} + - component: {fileID: 5185366259757036877} + m_Layer: 9 + m_Name: TurretGun + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1121058835350863339 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5537130260714291545} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 6445760314682769892} + m_Father: {fileID: 7923256227314171141} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &5185366259757036877 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5537130260714291545} + 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: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, 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: 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: -2905475788228011879, guid: 67c8534fc3e9a6b44a90643517cba89d, + type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 9, y: 9} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!1 &5637238040273318417 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2158056933217670723} + - component: {fileID: 6403471764220878164} + m_Layer: 9 + m_Name: Arc (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &2158056933217670723 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5637238040273318417} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.375, y: 0, z: 0} + m_LocalScale: {x: 0.25, y: 0.25, z: 1} + m_Children: [] + m_Father: {fileID: 6445760314682769892} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &6403471764220878164 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5637238040273318417} + 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: 2100000, guid: cac5f42f5e485ec4bbc116e8894abeb9, 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: 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: 197731d5700d0eb49915322ec740e2bc, type: 3} + m_Color: {r: 0.3537736, g: 1, b: 0.97167933, 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 &6137439742501110284 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8617924919398988555} + - component: {fileID: 4636796829347461251} + m_Layer: 9 + m_Name: Beam + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &8617924919398988555 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6137439742501110284} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.03125, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4167852979816284131} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!120 &4636796829347461251 +LineRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6137439742501110284} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 0 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 9774dede6f7630b4d99a5dd32b95a609, 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_Positions: + - {x: 0, y: 0, z: 0} + - {x: 10, y: 0, z: 0} + m_Parameters: + serializedVersion: 3 + widthMultiplier: 1 + widthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorGradient: + serializedVersion: 2 + key0: {r: 0.3537736, g: 1, b: 0.97167933, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + numCornerVertices: 0 + numCapVertices: 0 + alignment: 0 + textureMode: 0 + shadowBias: 0.5 + generateLightingData: 0 + m_UseWorldSpace: 1 + m_Loop: 0 +--- !u!1 &6205518422952818732 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8413919469597936043} + - component: {fileID: 7488026720591674280} + m_Layer: 9 + m_Name: Arc (6) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &8413919469597936043 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6205518422952818732} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.75, y: 0, z: 0} + m_LocalScale: {x: 0.25, y: 0.25, z: 1} + m_Children: [] + m_Father: {fileID: 6445760314682769892} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &7488026720591674280 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6205518422952818732} + 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: 2100000, guid: cac5f42f5e485ec4bbc116e8894abeb9, 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: 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: 197731d5700d0eb49915322ec740e2bc, type: 3} + m_Color: {r: 0.3537736, g: 1, b: 0.97167933, 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 &6235442674761981972 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4394271242871114970} + - component: {fileID: 5577507126991482838} + m_Layer: 9 + m_Name: Arc (9) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &4394271242871114970 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6235442674761981972} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1.125, y: 0, z: 0} + m_LocalScale: {x: 0.25, y: 0.25, z: 1} + m_Children: [] + m_Father: {fileID: 6445760314682769892} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &5577507126991482838 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6235442674761981972} + 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: 2100000, guid: cac5f42f5e485ec4bbc116e8894abeb9, 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: 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: 197731d5700d0eb49915322ec740e2bc, type: 3} + m_Color: {r: 0.3537736, g: 1, b: 0.97167933, 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 &6273587321872164095 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1805466500195470779} + - component: {fileID: 239524379806275822} + m_Layer: 9 + m_Name: Arc (18) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &1805466500195470779 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6273587321872164095} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.25, y: 0, z: 0} + m_LocalScale: {x: 0.25, y: 0.25, z: 1} + m_Children: [] + m_Father: {fileID: 6445760314682769892} + m_RootOrder: 18 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &239524379806275822 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6273587321872164095} + 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: 2100000, guid: cac5f42f5e485ec4bbc116e8894abeb9, 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: 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: 197731d5700d0eb49915322ec740e2bc, type: 3} + m_Color: {r: 0.3537736, g: 1, b: 0.97167933, 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 &6347701068977039173 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3305857267302190852} + - component: {fileID: 4305486288647877765} + m_Layer: 9 + m_Name: Arc (7) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &3305857267302190852 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6347701068977039173} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.875, y: 0, z: 0} + m_LocalScale: {x: 0.25, y: 0.25, z: 1} + m_Children: [] + m_Father: {fileID: 6445760314682769892} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &4305486288647877765 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6347701068977039173} + 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: 2100000, guid: cac5f42f5e485ec4bbc116e8894abeb9, 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: 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: 197731d5700d0eb49915322ec740e2bc, type: 3} + m_Color: {r: 0.3537736, g: 1, b: 0.97167933, 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 &6796606621848686665 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6318967668099668248} + - component: {fileID: 2986167974674217740} + m_Layer: 9 + m_Name: Arc (23) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &6318967668099668248 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6796606621848686665} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.875, y: 0, z: 0} + m_LocalScale: {x: 0.25, y: 0.25, z: 1} + m_Children: [] + m_Father: {fileID: 6445760314682769892} + m_RootOrder: 23 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &2986167974674217740 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6796606621848686665} + 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: 2100000, guid: cac5f42f5e485ec4bbc116e8894abeb9, 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: 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: 197731d5700d0eb49915322ec740e2bc, type: 3} + m_Color: {r: 0.3537736, g: 1, b: 0.97167933, 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 &6845394136081326679 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3681648915972778933} + - component: {fileID: 3256406766566506115} + m_Layer: 0 + m_Name: TurretGunDetails + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3681648915972778933 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6845394136081326679} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.4} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 7923256227314171141} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &3256406766566506115 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6845394136081326679} + 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: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, 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: 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: 8109266117701699947, guid: 03dad263273a9f241b6a232b9be18ae3, + type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 2.88, y: 2.88} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!1 &7046735104028078384 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4167852979816284131} + m_Layer: 9 + m_Name: TurretCore + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4167852979816284131 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7046735104028078384} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 8617924919398988555} + m_Father: {fileID: 7923256227314171141} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &7541249429355943414 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3566237711298019667} + - component: {fileID: 7621801632817787800} + m_Layer: 9 + m_Name: Arc (20) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &3566237711298019667 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7541249429355943414} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.5, y: 0, z: 0} + m_LocalScale: {x: 0.25, y: 0.25, z: 1} + m_Children: [] + m_Father: {fileID: 6445760314682769892} + m_RootOrder: 20 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &7621801632817787800 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7541249429355943414} + 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: 2100000, guid: cac5f42f5e485ec4bbc116e8894abeb9, 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: 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: 197731d5700d0eb49915322ec740e2bc, type: 3} + m_Color: {r: 0.3537736, g: 1, b: 0.97167933, 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 &7657553700344811785 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3292439516066538693} + - component: {fileID: 8491901630981460897} + m_Layer: 9 + m_Name: Arc (0) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &3292439516066538693 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7657553700344811785} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.25, y: 0.25, z: 1} + m_Children: [] + m_Father: {fileID: 6445760314682769892} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &8491901630981460897 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7657553700344811785} + 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: 2100000, guid: cac5f42f5e485ec4bbc116e8894abeb9, 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: 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: 197731d5700d0eb49915322ec740e2bc, type: 3} + m_Color: {r: 0.3537736, g: 1, b: 0.97167933, 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 &7968279318055619805 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8633207119634171442} + - component: {fileID: 3487493338532366467} + m_Layer: 9 + m_Name: Arc (11) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &8633207119634171442 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7968279318055619805} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1.375, y: 0, z: 0} + m_LocalScale: {x: 0.25, y: 0.25, z: 1} + m_Children: [] + m_Father: {fileID: 6445760314682769892} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &3487493338532366467 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7968279318055619805} + 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: 2100000, guid: cac5f42f5e485ec4bbc116e8894abeb9, 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: 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: 197731d5700d0eb49915322ec740e2bc, type: 3} + m_Color: {r: 0.3537736, g: 1, b: 0.97167933, 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 &7994594688695529715 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 764730984091878930} + - component: {fileID: 5011493707214584531} + m_Layer: 9 + m_Name: Arc (19) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &764730984091878930 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7994594688695529715} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.375, y: 0, z: 0} + m_LocalScale: {x: 0.25, y: 0.25, z: 1} + m_Children: [] + m_Father: {fileID: 6445760314682769892} + m_RootOrder: 19 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &5011493707214584531 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7994594688695529715} + 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: 2100000, guid: cac5f42f5e485ec4bbc116e8894abeb9, 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: 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: 197731d5700d0eb49915322ec740e2bc, type: 3} + m_Color: {r: 0.3537736, g: 1, b: 0.97167933, 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 &8175017718045368110 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1831708903186066510} + - component: {fileID: 49802784484734793} + m_Layer: 9 + m_Name: Arc (4) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &1831708903186066510 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8175017718045368110} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.5, y: 0, z: 0} + m_LocalScale: {x: 0.25, y: 0.25, z: 1} + m_Children: [] + m_Father: {fileID: 6445760314682769892} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &49802784484734793 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8175017718045368110} + 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: 2100000, guid: cac5f42f5e485ec4bbc116e8894abeb9, 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: 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: 197731d5700d0eb49915322ec740e2bc, type: 3} + m_Color: {r: 0.3537736, g: 1, b: 0.97167933, 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 &8271564657431040170 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8984425432898736238} + - component: {fileID: 4649843264407259242} + m_Layer: 9 + m_Name: TurretBodyOverlay + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8984425432898736238 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8271564657431040170} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.6} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 7923256227314171141} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &4649843264407259242 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8271564657431040170} + 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: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, 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: 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: -6238854588986108936, guid: 8696fa522d1a95242bd8cb8a60c88bdd, + type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 9, y: 9} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!1 &8581870303103700961 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2855272096430296279} + - component: {fileID: 3752630583289566086} + m_Layer: 9 + m_Name: Arc (14) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &2855272096430296279 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8581870303103700961} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1.75, y: 0, z: 0} + m_LocalScale: {x: 0.25, y: 0.25, z: 1} + m_Children: [] + m_Father: {fileID: 6445760314682769892} + m_RootOrder: 14 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &3752630583289566086 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8581870303103700961} + 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: 2100000, guid: cac5f42f5e485ec4bbc116e8894abeb9, 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: 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: 197731d5700d0eb49915322ec740e2bc, type: 3} + m_Color: {r: 0.3537736, g: 1, b: 0.97167933, 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 &9186648557437624372 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2040592007714698061} + - component: {fileID: 358834002550110260} + m_Layer: 9 + m_Name: Arc (8) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &2040592007714698061 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9186648557437624372} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: 0.25, y: 0.25, z: 1} + m_Children: [] + m_Father: {fileID: 6445760314682769892} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &358834002550110260 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9186648557437624372} + 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: 2100000, guid: cac5f42f5e485ec4bbc116e8894abeb9, 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: 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: 197731d5700d0eb49915322ec740e2bc, type: 3} + m_Color: {r: 0.3537736, g: 1, b: 0.97167933, 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 &9215722850092792077 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6010955849550621222} + - component: {fileID: 3756029160437759047} + m_Layer: 9 + m_Name: Arc (16) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &6010955849550621222 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9215722850092792077} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: 0.25, y: 0.25, z: 1} + m_Children: [] + m_Father: {fileID: 6445760314682769892} + m_RootOrder: 16 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &3756029160437759047 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9215722850092792077} + 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: 2100000, guid: cac5f42f5e485ec4bbc116e8894abeb9, 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: 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: 197731d5700d0eb49915322ec740e2bc, type: 3} + m_Color: {r: 0.3537736, g: 1, b: 0.97167933, 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 &5126994059064817294 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 1903583348838361020, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1903583348838361020, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1903583348838361020, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1903583348838361020, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1903583348838361020, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1903583348838361020, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1903583348838361020, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1903583348838361020, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1903583348838361020, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1903583348838361020, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1903583348838361020, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4178788428458324673, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_Sprite + value: + objectReference: {fileID: 21300000, guid: ac70595a0ff8dde48bc5686d5106d297, + type: 3} + - target: {fileID: 4260548639137017485, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_Name + value: InertGaussCannon + objectReference: {fileID: 0} + - target: {fileID: 6692629685480085147, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_Size.x + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 6692629685480085147, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_Size.y + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 6692629685480085147, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_SpriteTilingProperty.oldSize.x + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 6692629685480085147, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_SpriteTilingProperty.oldSize.y + value: 2 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 833d8ea8eb468324d957c13dcdf89414, type: 3} +--- !u!4 &6722852894330278194 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1903583348838361020, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + m_PrefabInstance: {fileID: 5126994059064817294} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Project/Prefabs/Grids/Blocks/GaussCannon/InertGaussCannon.prefab.meta b/Assets/Project/Prefabs/Grids/Blocks/GaussCannon/InertGaussCannon.prefab.meta new file mode 100644 index 00000000..4202aa87 --- /dev/null +++ b/Assets/Project/Prefabs/Grids/Blocks/GaussCannon/InertGaussCannon.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: bd951fd94ddb35e47a065e1ea51cd926 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Prefabs/Grids/Blocks/HeavyArmor/HeavyBlock.prefab b/Assets/Project/Prefabs/Grids/Blocks/HeavyArmor/HeavyBlock.prefab index 29ef568a..b666cf23 100644 --- a/Assets/Project/Prefabs/Grids/Blocks/HeavyArmor/HeavyBlock.prefab +++ b/Assets/Project/Prefabs/Grids/Blocks/HeavyArmor/HeavyBlock.prefab @@ -1,6 +1,6 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: ---- !u!114 &331502232145643248 +--- !u!114 &925369917575240464 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -9,17 +9,11 @@ MonoBehaviour: m_GameObject: {fileID: 3638534093892745918} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4c1491fef2167eb41844618b313d1e8b, type: 3} + m_Script: {fileID: 11500000, guid: d2fb983101d6f86459a22fa5772742fd, type: 3} m_Name: m_EditorClassIdentifier: - anchoredBlueprintBlock: - gridAnchor: {x: 0, y: 0} - blueprintBlock: - id: - flippedX: 0 - flippedY: 0 - physicalBehaviour: {fileID: 925369917575240464} ---- !u!114 &925369917575240464 + block: {fileID: 0} +--- !u!114 &389192493725277278 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -28,10 +22,12 @@ MonoBehaviour: m_GameObject: {fileID: 3638534093892745918} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: d2fb983101d6f86459a22fa5772742fd, type: 3} + m_Script: {fileID: 11500000, guid: 8b28ac2d5bd8b414e984c0d2a8d80743, type: 3} m_Name: m_EditorClassIdentifier: - block: {fileID: 0} + blockPoolMember: {fileID: 0} + physicalBehaviour: {fileID: 925369917575240464} + collider: {fileID: 0} --- !u!1001 &3197344023241169018 PrefabInstance: m_ObjectHideFlags: 0 @@ -46,42 +42,42 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4570015181648636917, guid: bf7e9488ce4c6284f851f7c366bc82f0, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 4570015181648636917, guid: bf7e9488ce4c6284f851f7c366bc82f0, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4570015181648636917, guid: bf7e9488ce4c6284f851f7c366bc82f0, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4570015181648636917, guid: bf7e9488ce4c6284f851f7c366bc82f0, type: 3} - propertyPath: m_LocalRotation.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 4570015181648636917, guid: bf7e9488ce4c6284f851f7c366bc82f0, type: 3} - propertyPath: m_LocalRotation.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 4570015181648636917, guid: bf7e9488ce4c6284f851f7c366bc82f0, type: 3} - propertyPath: m_LocalRotation.z + propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4570015181648636917, guid: bf7e9488ce4c6284f851f7c366bc82f0, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_LocalRotation.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 4570015181648636917, guid: bf7e9488ce4c6284f851f7c366bc82f0, type: 3} - propertyPath: m_RootOrder + propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - target: {fileID: 4570015181648636917, guid: bf7e9488ce4c6284f851f7c366bc82f0, diff --git a/Assets/Project/Prefabs/Grids/Blocks/LargeHeavyArmor/LargeHeavyArmor.prefab b/Assets/Project/Prefabs/Grids/Blocks/LargeHeavyArmor/LargeHeavyArmor.prefab index 25d24822..a0be4cfc 100644 --- a/Assets/Project/Prefabs/Grids/Blocks/LargeHeavyArmor/LargeHeavyArmor.prefab +++ b/Assets/Project/Prefabs/Grids/Blocks/LargeHeavyArmor/LargeHeavyArmor.prefab @@ -1,6 +1,6 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: ---- !u!114 &1100636569491668901 +--- !u!114 &5674596282013065745 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -9,17 +9,11 @@ MonoBehaviour: m_GameObject: {fileID: 7854684309494694163} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4c1491fef2167eb41844618b313d1e8b, type: 3} + m_Script: {fileID: 11500000, guid: d2fb983101d6f86459a22fa5772742fd, type: 3} m_Name: m_EditorClassIdentifier: - anchoredBlueprintBlock: - gridAnchor: {x: 0, y: 0} - blueprintBlock: - id: - flippedX: 0 - flippedY: 0 - physicalBehaviour: {fileID: 5674596282013065745} ---- !u!114 &5674596282013065745 + block: {fileID: 0} +--- !u!114 &2215464679098982644 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -28,11 +22,12 @@ MonoBehaviour: m_GameObject: {fileID: 7854684309494694163} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: d2fb983101d6f86459a22fa5772742fd, type: 3} + m_Script: {fileID: 11500000, guid: 8b28ac2d5bd8b414e984c0d2a8d80743, type: 3} m_Name: m_EditorClassIdentifier: - block: {fileID: 0} - blockCollider: {fileID: 0} + blockPoolMember: {fileID: 0} + physicalBehaviour: {fileID: 5674596282013065745} + collider: {fileID: 0} --- !u!1001 &7330412899069840952 PrefabInstance: m_ObjectHideFlags: 0 @@ -47,42 +42,42 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3022419902597760538, guid: a913b7f6f31d651408e59c414dfb1391, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 3022419902597760538, guid: a913b7f6f31d651408e59c414dfb1391, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 3022419902597760538, guid: a913b7f6f31d651408e59c414dfb1391, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 3022419902597760538, guid: a913b7f6f31d651408e59c414dfb1391, type: 3} - propertyPath: m_LocalRotation.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 3022419902597760538, guid: a913b7f6f31d651408e59c414dfb1391, type: 3} - propertyPath: m_LocalRotation.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 3022419902597760538, guid: a913b7f6f31d651408e59c414dfb1391, type: 3} - propertyPath: m_LocalRotation.z + propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - target: {fileID: 3022419902597760538, guid: a913b7f6f31d651408e59c414dfb1391, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_LocalRotation.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 3022419902597760538, guid: a913b7f6f31d651408e59c414dfb1391, type: 3} - propertyPath: m_RootOrder + propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - target: {fileID: 3022419902597760538, guid: a913b7f6f31d651408e59c414dfb1391, diff --git a/Assets/Project/Prefabs/Grids/Blocks/LargeLightArmor/LargeLightArmor.prefab b/Assets/Project/Prefabs/Grids/Blocks/LargeLightArmor/LargeLightArmor.prefab index e2bb8238..1664b81d 100644 --- a/Assets/Project/Prefabs/Grids/Blocks/LargeLightArmor/LargeLightArmor.prefab +++ b/Assets/Project/Prefabs/Grids/Blocks/LargeLightArmor/LargeLightArmor.prefab @@ -13,8 +13,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: block: {fileID: 0} - blockCollider: {fileID: 0} ---- !u!114 &5130527074943234086 +--- !u!114 &3607140283046118011 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -23,16 +22,12 @@ MonoBehaviour: m_GameObject: {fileID: 7249312673340749134} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4c1491fef2167eb41844618b313d1e8b, type: 3} + m_Script: {fileID: 11500000, guid: 8b28ac2d5bd8b414e984c0d2a8d80743, type: 3} m_Name: m_EditorClassIdentifier: - anchoredBlueprintBlock: - gridAnchor: {x: 0, y: 0} - blueprintBlock: - id: - flippedX: 0 - flippedY: 0 + blockPoolMember: {fileID: 0} physicalBehaviour: {fileID: 3252037093484710369} + collider: {fileID: 0} --- !u!1001 &3289742733888613276 PrefabInstance: m_ObjectHideFlags: 0 @@ -62,42 +57,42 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 7527582541377624035, guid: ef02463284d922a46b676cdb98f75774, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 7527582541377624035, guid: ef02463284d922a46b676cdb98f75774, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7527582541377624035, guid: ef02463284d922a46b676cdb98f75774, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7527582541377624035, guid: ef02463284d922a46b676cdb98f75774, type: 3} - propertyPath: m_LocalRotation.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 7527582541377624035, guid: ef02463284d922a46b676cdb98f75774, type: 3} - propertyPath: m_LocalRotation.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 7527582541377624035, guid: ef02463284d922a46b676cdb98f75774, type: 3} - propertyPath: m_LocalRotation.z + propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7527582541377624035, guid: ef02463284d922a46b676cdb98f75774, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_LocalRotation.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 7527582541377624035, guid: ef02463284d922a46b676cdb98f75774, type: 3} - propertyPath: m_RootOrder + propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - target: {fileID: 7527582541377624035, guid: ef02463284d922a46b676cdb98f75774, diff --git a/Assets/Project/Prefabs/Grids/Blocks/LightArmor/LightArmor.prefab b/Assets/Project/Prefabs/Grids/Blocks/LightArmor/LightArmor.prefab index 1226ad44..bade1864 100644 --- a/Assets/Project/Prefabs/Grids/Blocks/LightArmor/LightArmor.prefab +++ b/Assets/Project/Prefabs/Grids/Blocks/LightArmor/LightArmor.prefab @@ -1,6 +1,6 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: ---- !u!114 &381305043018332302 +--- !u!114 &8467629623689492052 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -9,17 +9,11 @@ MonoBehaviour: m_GameObject: {fileID: 2367148154100342487} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4c1491fef2167eb41844618b313d1e8b, type: 3} + m_Script: {fileID: 11500000, guid: d2fb983101d6f86459a22fa5772742fd, type: 3} m_Name: m_EditorClassIdentifier: - anchoredBlueprintBlock: - gridAnchor: {x: 0, y: 0} - blueprintBlock: - id: - flippedX: 0 - flippedY: 0 - physicalBehaviour: {fileID: 8467629623689492052} ---- !u!114 &8467629623689492052 + block: {fileID: 0} +--- !u!114 &6479897224119676805 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -28,10 +22,12 @@ MonoBehaviour: m_GameObject: {fileID: 2367148154100342487} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: d2fb983101d6f86459a22fa5772742fd, type: 3} + m_Script: {fileID: 11500000, guid: 8b28ac2d5bd8b414e984c0d2a8d80743, type: 3} m_Name: m_EditorClassIdentifier: - block: {fileID: 0} + blockPoolMember: {fileID: 0} + physicalBehaviour: {fileID: 8467629623689492052} + collider: {fileID: 0} --- !u!1001 &2430528161506886459 PrefabInstance: m_ObjectHideFlags: 0 @@ -42,46 +38,46 @@ PrefabInstance: - target: {fileID: 99981650681454060, guid: 97bc4225b763ee14693b5f3a172d9f7e, type: 3} propertyPath: m_Name - value: LightArmorBlock + value: LightArmor objectReference: {fileID: 0} - target: {fileID: 2317476227561952477, guid: 97bc4225b763ee14693b5f3a172d9f7e, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 2317476227561952477, guid: 97bc4225b763ee14693b5f3a172d9f7e, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2317476227561952477, guid: 97bc4225b763ee14693b5f3a172d9f7e, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2317476227561952477, guid: 97bc4225b763ee14693b5f3a172d9f7e, type: 3} - propertyPath: m_LocalRotation.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 2317476227561952477, guid: 97bc4225b763ee14693b5f3a172d9f7e, type: 3} - propertyPath: m_LocalRotation.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 2317476227561952477, guid: 97bc4225b763ee14693b5f3a172d9f7e, type: 3} - propertyPath: m_LocalRotation.z + propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2317476227561952477, guid: 97bc4225b763ee14693b5f3a172d9f7e, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_LocalRotation.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 2317476227561952477, guid: 97bc4225b763ee14693b5f3a172d9f7e, type: 3} - propertyPath: m_RootOrder + propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - target: {fileID: 2317476227561952477, guid: 97bc4225b763ee14693b5f3a172d9f7e, diff --git a/Assets/Project/Prefabs/Grids/Blocks/MediumCockpit/MediumCockpit.prefab b/Assets/Project/Prefabs/Grids/Blocks/MediumCockpit/MediumCockpit.prefab index 7bcabfe7..13555a9c 100644 --- a/Assets/Project/Prefabs/Grids/Blocks/MediumCockpit/MediumCockpit.prefab +++ b/Assets/Project/Prefabs/Grids/Blocks/MediumCockpit/MediumCockpit.prefab @@ -1,6 +1,6 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: ---- !u!114 &633880491859487074 +--- !u!114 &3478639850444596420 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -9,18 +9,11 @@ MonoBehaviour: m_GameObject: {fileID: 3867314681599816325} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: e9d23d84337d29f44905507089eaa9ca, type: 3} + m_Script: {fileID: 11500000, guid: d2fb983101d6f86459a22fa5772742fd, type: 3} m_Name: m_EditorClassIdentifier: - anchoredBlueprintBlock: - gridAnchor: {x: 0, y: 0} - blueprintBlock: - id: - flippedX: 0 - flippedY: 0 - physicalBehaviour: {fileID: 3478639850444596420} - controllerBehaviour: {fileID: 4752509573575635510} ---- !u!114 &3478639850444596420 + block: {fileID: 0} +--- !u!114 &4752509573575635510 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -29,12 +22,11 @@ MonoBehaviour: m_GameObject: {fileID: 3867314681599816325} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: d2fb983101d6f86459a22fa5772742fd, type: 3} + m_Script: {fileID: 11500000, guid: e09d2b9e430459546a4832f13f7ce5f7, type: 3} m_Name: m_EditorClassIdentifier: block: {fileID: 0} - blockCollider: {fileID: 0} ---- !u!114 &4752509573575635510 +--- !u!114 &5916433866587796410 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -43,10 +35,12 @@ MonoBehaviour: m_GameObject: {fileID: 3867314681599816325} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3e83929f83919b44fb9534624d29b042, type: 3} + m_Script: {fileID: 11500000, guid: 1efbc8914b07d1545ab528e8a2d648cb, type: 3} m_Name: m_EditorClassIdentifier: - block: {fileID: 0} + blockPoolMember: {fileID: 0} + physicalBehaviour: {fileID: 3478639850444596420} + collider: {fileID: 0} --- !u!1001 &2345329414674824249 PrefabInstance: m_ObjectHideFlags: 0 @@ -61,42 +55,42 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3777779059850577805, guid: edf254f4645f96b48b0a3338d12f8f67, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 3777779059850577805, guid: edf254f4645f96b48b0a3338d12f8f67, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 3777779059850577805, guid: edf254f4645f96b48b0a3338d12f8f67, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 3777779059850577805, guid: edf254f4645f96b48b0a3338d12f8f67, type: 3} - propertyPath: m_LocalRotation.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 3777779059850577805, guid: edf254f4645f96b48b0a3338d12f8f67, type: 3} - propertyPath: m_LocalRotation.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 3777779059850577805, guid: edf254f4645f96b48b0a3338d12f8f67, type: 3} - propertyPath: m_LocalRotation.z + propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - target: {fileID: 3777779059850577805, guid: edf254f4645f96b48b0a3338d12f8f67, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_LocalRotation.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 3777779059850577805, guid: edf254f4645f96b48b0a3338d12f8f67, type: 3} - propertyPath: m_RootOrder + propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - target: {fileID: 3777779059850577805, guid: edf254f4645f96b48b0a3338d12f8f67, diff --git a/Assets/Project/Prefabs/Grids/Blocks/MediumThruster/MediumThruster.prefab b/Assets/Project/Prefabs/Grids/Blocks/MediumThruster/MediumThruster.prefab index 82ebfc05..41a04bef 100644 --- a/Assets/Project/Prefabs/Grids/Blocks/MediumThruster/MediumThruster.prefab +++ b/Assets/Project/Prefabs/Grids/Blocks/MediumThruster/MediumThruster.prefab @@ -13,6 +13,8 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: block: {fileID: 0} + hull: + value: 0 --- !u!114 &2439175266936420258 MonoBehaviour: m_ObjectHideFlags: 0 @@ -51,7 +53,7 @@ MonoBehaviour: lightIntensityScale: min: 0.1 max: 1 ---- !u!114 &8769108592552342056 +--- !u!114 &8416425206652745101 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -60,17 +62,12 @@ MonoBehaviour: m_GameObject: {fileID: 6789153558413497451} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9b8bf23e4f8c54741bedd0530d578e07, type: 3} + m_Script: {fileID: 11500000, guid: 8b28ac2d5bd8b414e984c0d2a8d80743, type: 3} m_Name: m_EditorClassIdentifier: - anchoredBlueprintBlock: - gridAnchor: {x: 0, y: 0} - blueprintBlock: - id: - flippedX: 0 - flippedY: 0 + blockPoolMember: {fileID: 0} physicalBehaviour: {fileID: 1022594578289778706} - thrusterBehaviour: {fileID: 3812031072145920918} + collider: {fileID: 0} --- !u!1001 &281837097860091350 PrefabInstance: m_ObjectHideFlags: 0 @@ -78,25 +75,370 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 9186652340608965978} m_Modifications: + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_NormalMapQuality + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.size + value: 9 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.size + value: 36 + objectReference: {fileID: 0} - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, type: 3} propertyPath: m_PointLightOuterRadius value: 1.5 objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_LocalBounds.m_Center.y + value: -0.00000011920929 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_LocalBounds.m_Extent.x + value: 0.9985302 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_LocalBounds.m_Extent.y + value: 0.99853027 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[0] + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[1] + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[2] + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[3] + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[5] + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[6] + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[7] + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[8] + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[9] + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[10] + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[11] + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[12] + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[13] + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[14] + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[15] + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[16] + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[17] + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[18] + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[19] + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[20] + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[21] + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[22] + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[23] + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[24] + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[25] + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[26] + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[27] + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[28] + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[29] + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[31] + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[32] + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[33] + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[35] + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[0].color.g + value: 0.70710677 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[0].color.r + value: 0.70710677 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[1].color.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[2].color.g + value: 0.70710677 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[2].color.r + value: -0.70710677 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[3].color.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[4].color.g + value: -0.7071069 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[4].color.r + value: -0.70710665 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[5].color.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[6].color.g + value: -0.7071069 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[6].color.r + value: 0.70710665 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[7].color.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[8].color.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[0].position.x + value: 0.9985302 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[0].position.y + value: 0.9985302 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[1].position.x + value: 0.9985302 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[1].position.y + value: 0.9985302 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[2].position.x + value: -0.9985302 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[2].position.y + value: 0.9985302 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[3].position.x + value: -0.9985302 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[3].position.y + value: 0.9985302 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[4].position.x + value: -0.99853003 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[4].position.y + value: -0.9985304 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[5].position.x + value: -0.99853003 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[5].position.y + value: -0.9985304 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[6].position.x + value: 0.99853003 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[6].position.y + value: -0.9985304 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[7].position.x + value: 0.99853003 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[7].position.y + value: -0.9985304 + objectReference: {fileID: 0} - target: {fileID: 2216445326509637822, guid: c04c0d84aa0b0a34b878448035dfa275, type: 3} propertyPath: m_Name value: ThrusterFlame objectReference: {fileID: 0} + - target: {fileID: 6364988630516286956, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_LocalScale.x + value: 9 + objectReference: {fileID: 0} - target: {fileID: 6364988630516286956, guid: c04c0d84aa0b0a34b878448035dfa275, type: 3} propertyPath: m_LocalScale.y value: 0.8 objectReference: {fileID: 0} - - target: {fileID: 6364988630516286956, guid: c04c0d84aa0b0a34b878448035dfa275, + - target: {fileID: 7494413989538873605, guid: c04c0d84aa0b0a34b878448035dfa275, type: 3} - propertyPath: m_LocalScale.x - value: 9 + propertyPath: m_RootOrder + value: 0 objectReference: {fileID: 0} - target: {fileID: 7494413989538873605, guid: c04c0d84aa0b0a34b878448035dfa275, type: 3} @@ -115,27 +457,22 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 7494413989538873605, guid: c04c0d84aa0b0a34b878448035dfa275, type: 3} - propertyPath: m_LocalRotation.x - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 7494413989538873605, guid: c04c0d84aa0b0a34b878448035dfa275, type: 3} - propertyPath: m_LocalRotation.y + propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7494413989538873605, guid: c04c0d84aa0b0a34b878448035dfa275, type: 3} - propertyPath: m_LocalRotation.z + propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7494413989538873605, guid: c04c0d84aa0b0a34b878448035dfa275, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 7494413989538873605, guid: c04c0d84aa0b0a34b878448035dfa275, - type: 3} - propertyPath: m_RootOrder + propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - target: {fileID: 7494413989538873605, guid: c04c0d84aa0b0a34b878448035dfa275, @@ -193,42 +530,42 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 7725144160741047118, guid: c93d52622cd16214ab9e1aceda9f5920, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 7725144160741047118, guid: c93d52622cd16214ab9e1aceda9f5920, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7725144160741047118, guid: c93d52622cd16214ab9e1aceda9f5920, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7725144160741047118, guid: c93d52622cd16214ab9e1aceda9f5920, type: 3} - propertyPath: m_LocalRotation.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 7725144160741047118, guid: c93d52622cd16214ab9e1aceda9f5920, type: 3} - propertyPath: m_LocalRotation.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 7725144160741047118, guid: c93d52622cd16214ab9e1aceda9f5920, type: 3} - propertyPath: m_LocalRotation.z + propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7725144160741047118, guid: c93d52622cd16214ab9e1aceda9f5920, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_LocalRotation.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 7725144160741047118, guid: c93d52622cd16214ab9e1aceda9f5920, type: 3} - propertyPath: m_RootOrder + propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - target: {fileID: 7725144160741047118, guid: c93d52622cd16214ab9e1aceda9f5920, diff --git a/Assets/Project/Prefabs/Grids/Blocks/ShieldGeneratorMK1.meta b/Assets/Project/Prefabs/Grids/Blocks/ShieldGeneratorMK1.meta new file mode 100644 index 00000000..97634821 --- /dev/null +++ b/Assets/Project/Prefabs/Grids/Blocks/ShieldGeneratorMK1.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2f4cea960efd0374eb55c474721d1ac8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Prefabs/Grids/Blocks/ShieldGeneratorMK1/InertShieldGeneratorMK1.prefab b/Assets/Project/Prefabs/Grids/Blocks/ShieldGeneratorMK1/InertShieldGeneratorMK1.prefab new file mode 100644 index 00000000..5be1f37a --- /dev/null +++ b/Assets/Project/Prefabs/Grids/Blocks/ShieldGeneratorMK1/InertShieldGeneratorMK1.prefab @@ -0,0 +1,167 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &8351323626785690985 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4178028959448707805} + - component: {fileID: 2927666477301948505} + m_Layer: 9 + m_Name: EmitterLights + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4178028959448707805 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8351323626785690985} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 6997982499025210348} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &2927666477301948505 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8351323626785690985} + 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: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, 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: 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: -2984254884198047238, guid: d8abe9105e698954e98d8c616a25f42f, + 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 &8896640035677776976 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 1903583348838361020, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1903583348838361020, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1903583348838361020, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1903583348838361020, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1903583348838361020, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1903583348838361020, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1903583348838361020, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1903583348838361020, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1903583348838361020, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1903583348838361020, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1903583348838361020, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4178788428458324673, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_Sprite + value: + objectReference: {fileID: 3846102588298344479, guid: 937e27828f2f2024ba2726a806ff5d8f, + type: 3} + - target: {fileID: 4260548639137017485, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + propertyPath: m_Name + value: InertShieldGeneratorMK1 Variant + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 833d8ea8eb468324d957c13dcdf89414, type: 3} +--- !u!4 &6997982499025210348 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1903583348838361020, guid: 833d8ea8eb468324d957c13dcdf89414, + type: 3} + m_PrefabInstance: {fileID: 8896640035677776976} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Project/Prefabs/Grids/Blocks/ShieldGeneratorMK1/InertShieldGeneratorMK1.prefab.meta b/Assets/Project/Prefabs/Grids/Blocks/ShieldGeneratorMK1/InertShieldGeneratorMK1.prefab.meta new file mode 100644 index 00000000..843db972 --- /dev/null +++ b/Assets/Project/Prefabs/Grids/Blocks/ShieldGeneratorMK1/InertShieldGeneratorMK1.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3636cc27c7137c74a956ef3098f8032f +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Prefabs/Grids/Blocks/ShieldGeneratorMK1/ShieldGeneratorMK1.prefab b/Assets/Project/Prefabs/Grids/Blocks/ShieldGeneratorMK1/ShieldGeneratorMK1.prefab new file mode 100644 index 00000000..06fb388d --- /dev/null +++ b/Assets/Project/Prefabs/Grids/Blocks/ShieldGeneratorMK1/ShieldGeneratorMK1.prefab @@ -0,0 +1,253 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &1671554728508660036 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6229444498424008411} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8b28ac2d5bd8b414e984c0d2a8d80743, type: 3} + m_Name: + m_EditorClassIdentifier: + blockPoolMember: {fileID: 0} + physicalBehaviour: {fileID: 6913128698661250283} + collider: {fileID: 0} +--- !u!114 &4891326167281673848 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6229444498424008411} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9e3fb722137d4e4eab06da7196c7659b, type: 3} + m_Name: + m_EditorClassIdentifier: + block: {fileID: 0} + lights: {fileID: 4505274674714471519} + shieldBubble: {fileID: 6891973505503208409} + lightsAnimationDuration: 0.5 + healthPool: + value: 0 + shieldIsRaised: 1 +--- !u!114 &6913128698661250283 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6229444498424008411} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d2fb983101d6f86459a22fa5772742fd, type: 3} + m_Name: + m_EditorClassIdentifier: + block: {fileID: 0} + hull: + value: 0 +--- !u!1 &6214416423983540490 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 268617713485176649} + - component: {fileID: 497438721835389966} + - component: {fileID: 6891973505503208409} + - component: {fileID: 4308676732079962121} + m_Layer: 0 + m_Name: Shield + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &268617713485176649 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6214416423983540490} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -5} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 8590913524824393706} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &497438721835389966 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6214416423983540490} + 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: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, 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: 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: 0.29411766, g: 0.7254902, b: 0.7058824, a: 0.1882353} + 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!114 &6891973505503208409 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6214416423983540490} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2008076a8f3441a580f1086dd1081bec, type: 3} + m_Name: + m_EditorClassIdentifier: + shieldGeneratorBehaviour: {fileID: 4891326167281673848} +--- !u!58 &4308676732079962121 +CircleCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6214416423983540490} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 1 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + serializedVersion: 2 + m_Radius: 0.5 +--- !u!1001 &1595640222468377606 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4636372872592261853, guid: 3636cc27c7137c74a956ef3098f8032f, + type: 3} + propertyPath: m_Name + value: ShieldGeneratorMK1 + objectReference: {fileID: 0} + - target: {fileID: 6997982499025210348, guid: 3636cc27c7137c74a956ef3098f8032f, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6997982499025210348, guid: 3636cc27c7137c74a956ef3098f8032f, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6997982499025210348, guid: 3636cc27c7137c74a956ef3098f8032f, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6997982499025210348, guid: 3636cc27c7137c74a956ef3098f8032f, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6997982499025210348, guid: 3636cc27c7137c74a956ef3098f8032f, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6997982499025210348, guid: 3636cc27c7137c74a956ef3098f8032f, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6997982499025210348, guid: 3636cc27c7137c74a956ef3098f8032f, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6997982499025210348, guid: 3636cc27c7137c74a956ef3098f8032f, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6997982499025210348, guid: 3636cc27c7137c74a956ef3098f8032f, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6997982499025210348, guid: 3636cc27c7137c74a956ef3098f8032f, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6997982499025210348, guid: 3636cc27c7137c74a956ef3098f8032f, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 3636cc27c7137c74a956ef3098f8032f, type: 3} +--- !u!1 &6229444498424008411 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 4636372872592261853, guid: 3636cc27c7137c74a956ef3098f8032f, + type: 3} + m_PrefabInstance: {fileID: 1595640222468377606} + m_PrefabAsset: {fileID: 0} +--- !u!4 &8590913524824393706 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 6997982499025210348, guid: 3636cc27c7137c74a956ef3098f8032f, + type: 3} + m_PrefabInstance: {fileID: 1595640222468377606} + m_PrefabAsset: {fileID: 0} +--- !u!212 &4505274674714471519 stripped +SpriteRenderer: + m_CorrespondingSourceObject: {fileID: 2927666477301948505, guid: 3636cc27c7137c74a956ef3098f8032f, + type: 3} + m_PrefabInstance: {fileID: 1595640222468377606} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Project/Prefabs/Grids/Blocks/ShieldGeneratorMK1/ShieldGeneratorMK1.prefab.meta b/Assets/Project/Prefabs/Grids/Blocks/ShieldGeneratorMK1/ShieldGeneratorMK1.prefab.meta new file mode 100644 index 00000000..bce42d27 --- /dev/null +++ b/Assets/Project/Prefabs/Grids/Blocks/ShieldGeneratorMK1/ShieldGeneratorMK1.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d06dc347ad0ad5e40aa7d747c62c0471 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Prefabs/Grids/Blocks/SmallGyroscope/SmallGyroscope.prefab b/Assets/Project/Prefabs/Grids/Blocks/SmallGyroscope/SmallGyroscope.prefab index abfe9406..86421a5f 100644 --- a/Assets/Project/Prefabs/Grids/Blocks/SmallGyroscope/SmallGyroscope.prefab +++ b/Assets/Project/Prefabs/Grids/Blocks/SmallGyroscope/SmallGyroscope.prefab @@ -1,6 +1,6 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: ---- !u!114 &452510070786030968 +--- !u!114 &6771484502415086781 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -9,18 +9,11 @@ MonoBehaviour: m_GameObject: {fileID: 4166625144049295618} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 2f121ac56bbdea54b8f616cacba87458, type: 3} + m_Script: {fileID: 11500000, guid: a0b5ce7763de953429d7c4ca12a806a2, type: 3} m_Name: m_EditorClassIdentifier: - anchoredBlueprintBlock: - gridAnchor: {x: 0, y: 0} - blueprintBlock: - id: - flippedX: 0 - flippedY: 0 - physicalBehaviour: {fileID: 7875990950422104508} - gyroscopeBehaviour: {fileID: 6771484502415086781} ---- !u!114 &6771484502415086781 + block: {fileID: 0} +--- !u!114 &7875990950422104508 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -29,11 +22,11 @@ MonoBehaviour: m_GameObject: {fileID: 4166625144049295618} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: a0b5ce7763de953429d7c4ca12a806a2, type: 3} + m_Script: {fileID: 11500000, guid: d2fb983101d6f86459a22fa5772742fd, type: 3} m_Name: m_EditorClassIdentifier: block: {fileID: 0} ---- !u!114 &7875990950422104508 +--- !u!114 &4438722812619329998 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -42,10 +35,12 @@ MonoBehaviour: m_GameObject: {fileID: 4166625144049295618} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: d2fb983101d6f86459a22fa5772742fd, type: 3} + m_Script: {fileID: 11500000, guid: 8b28ac2d5bd8b414e984c0d2a8d80743, type: 3} m_Name: m_EditorClassIdentifier: - block: {fileID: 0} + blockPoolMember: {fileID: 0} + physicalBehaviour: {fileID: 7875990950422104508} + collider: {fileID: 0} --- !u!1001 &5122124152102298080 PrefabInstance: m_ObjectHideFlags: 0 @@ -55,42 +50,42 @@ PrefabInstance: m_Modifications: - target: {fileID: 6885373984856574419, guid: ebfb89a637c2e8a4aa93425e10f8bb04, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 6885373984856574419, guid: ebfb89a637c2e8a4aa93425e10f8bb04, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6885373984856574419, guid: ebfb89a637c2e8a4aa93425e10f8bb04, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6885373984856574419, guid: ebfb89a637c2e8a4aa93425e10f8bb04, type: 3} - propertyPath: m_LocalRotation.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 6885373984856574419, guid: ebfb89a637c2e8a4aa93425e10f8bb04, type: 3} - propertyPath: m_LocalRotation.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 6885373984856574419, guid: ebfb89a637c2e8a4aa93425e10f8bb04, type: 3} - propertyPath: m_LocalRotation.z + propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6885373984856574419, guid: ebfb89a637c2e8a4aa93425e10f8bb04, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_LocalRotation.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 6885373984856574419, guid: ebfb89a637c2e8a4aa93425e10f8bb04, type: 3} - propertyPath: m_RootOrder + propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - target: {fileID: 6885373984856574419, guid: ebfb89a637c2e8a4aa93425e10f8bb04, diff --git a/Assets/Project/Prefabs/Grids/Blocks/SmallReactor/SmallReactor.prefab b/Assets/Project/Prefabs/Grids/Blocks/SmallReactor/SmallReactor.prefab index 8525f822..f07a4066 100644 --- a/Assets/Project/Prefabs/Grids/Blocks/SmallReactor/SmallReactor.prefab +++ b/Assets/Project/Prefabs/Grids/Blocks/SmallReactor/SmallReactor.prefab @@ -13,7 +13,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: block: {fileID: 0} ---- !u!114 &8264810487241201691 +--- !u!114 &8832671476872125683 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -22,18 +22,11 @@ MonoBehaviour: m_GameObject: {fileID: 37259711147757825} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9f4cd17d16757c04dac200d77f7a1677, type: 3} + m_Script: {fileID: 11500000, guid: d2fb983101d6f86459a22fa5772742fd, type: 3} m_Name: m_EditorClassIdentifier: - anchoredBlueprintBlock: - gridAnchor: {x: 0, y: 0} - blueprintBlock: - id: - flippedX: 0 - flippedY: 0 - physicalBehaviour: {fileID: 8832671476872125683} - powerGeneratorBehaviour: {fileID: 4823048943234473651} ---- !u!114 &8832671476872125683 + block: {fileID: 0} +--- !u!114 &6484089602579870550 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -42,10 +35,12 @@ MonoBehaviour: m_GameObject: {fileID: 37259711147757825} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: d2fb983101d6f86459a22fa5772742fd, type: 3} + m_Script: {fileID: 11500000, guid: 8b28ac2d5bd8b414e984c0d2a8d80743, type: 3} m_Name: m_EditorClassIdentifier: - block: {fileID: 0} + blockPoolMember: {fileID: 0} + physicalBehaviour: {fileID: 8832671476872125683} + collider: {fileID: 0} --- !u!1001 &4018616225807513189 PrefabInstance: m_ObjectHideFlags: 0 @@ -55,42 +50,42 @@ PrefabInstance: m_Modifications: - target: {fileID: 1588294270624149077, guid: a036b52ecda087642a569e5bb8c537ca, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 1588294270624149077, guid: a036b52ecda087642a569e5bb8c537ca, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 1588294270624149077, guid: a036b52ecda087642a569e5bb8c537ca, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 1588294270624149077, guid: a036b52ecda087642a569e5bb8c537ca, type: 3} - propertyPath: m_LocalRotation.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 1588294270624149077, guid: a036b52ecda087642a569e5bb8c537ca, type: 3} - propertyPath: m_LocalRotation.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 1588294270624149077, guid: a036b52ecda087642a569e5bb8c537ca, type: 3} - propertyPath: m_LocalRotation.z + propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - target: {fileID: 1588294270624149077, guid: a036b52ecda087642a569e5bb8c537ca, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_LocalRotation.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 1588294270624149077, guid: a036b52ecda087642a569e5bb8c537ca, type: 3} - propertyPath: m_RootOrder + propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - target: {fileID: 1588294270624149077, guid: a036b52ecda087642a569e5bb8c537ca, diff --git a/Assets/Project/Prefabs/Grids/Blocks/SmallThruster/SmallThruster.prefab b/Assets/Project/Prefabs/Grids/Blocks/SmallThruster/SmallThruster.prefab index c2dd70e2..f0962a23 100644 --- a/Assets/Project/Prefabs/Grids/Blocks/SmallThruster/SmallThruster.prefab +++ b/Assets/Project/Prefabs/Grids/Blocks/SmallThruster/SmallThruster.prefab @@ -38,7 +38,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: block: {fileID: 0} ---- !u!114 &3453209903652011101 +--- !u!114 &8256701210546057274 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -47,18 +47,11 @@ MonoBehaviour: m_GameObject: {fileID: 143959867388609834} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9b8bf23e4f8c54741bedd0530d578e07, type: 3} + m_Script: {fileID: 11500000, guid: d2fb983101d6f86459a22fa5772742fd, type: 3} m_Name: m_EditorClassIdentifier: - anchoredBlueprintBlock: - gridAnchor: {x: 0, y: 0} - blueprintBlock: - id: - flippedX: 0 - flippedY: 0 - physicalBehaviour: {fileID: 8256701210546057274} - thrusterBehaviour: {fileID: 190225848644480635} ---- !u!114 &8256701210546057274 + block: {fileID: 0} +--- !u!114 &4664770483783563799 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -67,10 +60,12 @@ MonoBehaviour: m_GameObject: {fileID: 143959867388609834} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: d2fb983101d6f86459a22fa5772742fd, type: 3} + m_Script: {fileID: 11500000, guid: 8b28ac2d5bd8b414e984c0d2a8d80743, type: 3} m_Name: m_EditorClassIdentifier: - block: {fileID: 0} + blockPoolMember: {fileID: 0} + physicalBehaviour: {fileID: 8256701210546057274} + collider: {fileID: 0} --- !u!1001 &1428606990077998268 PrefabInstance: m_ObjectHideFlags: 0 @@ -85,42 +80,42 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3703784427427707047, guid: 9b2c44f8f2a31e5498ad6b6528f08322, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 3703784427427707047, guid: 9b2c44f8f2a31e5498ad6b6528f08322, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 3703784427427707047, guid: 9b2c44f8f2a31e5498ad6b6528f08322, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 3703784427427707047, guid: 9b2c44f8f2a31e5498ad6b6528f08322, type: 3} - propertyPath: m_LocalRotation.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 3703784427427707047, guid: 9b2c44f8f2a31e5498ad6b6528f08322, type: 3} - propertyPath: m_LocalRotation.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 3703784427427707047, guid: 9b2c44f8f2a31e5498ad6b6528f08322, type: 3} - propertyPath: m_LocalRotation.z + propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - target: {fileID: 3703784427427707047, guid: 9b2c44f8f2a31e5498ad6b6528f08322, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_LocalRotation.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 3703784427427707047, guid: 9b2c44f8f2a31e5498ad6b6528f08322, type: 3} - propertyPath: m_RootOrder + propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - target: {fileID: 3703784427427707047, guid: 9b2c44f8f2a31e5498ad6b6528f08322, @@ -159,6 +154,346 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 2356809965392268315} m_Modifications: + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_NormalMapQuality + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.size + value: 9 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.size + value: 36 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_LocalBounds.m_Center.y + value: -0.00000011920929 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_LocalBounds.m_Extent.x + value: 0.9985302 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_LocalBounds.m_Extent.y + value: 0.99853027 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[0] + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[1] + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[2] + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[3] + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[5] + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[6] + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[7] + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[8] + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[9] + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[10] + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[11] + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[12] + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[13] + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[14] + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[15] + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[16] + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[17] + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[18] + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[19] + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[20] + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[21] + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[22] + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[23] + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[24] + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[25] + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[26] + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[27] + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[28] + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[29] + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[31] + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[32] + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[33] + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Triangles.Array.data[35] + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[0].color.g + value: 0.70710677 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[0].color.r + value: 0.70710677 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[1].color.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[2].color.g + value: 0.70710677 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[2].color.r + value: -0.70710677 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[3].color.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[4].color.g + value: -0.7071069 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[4].color.r + value: -0.70710665 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[5].color.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[6].color.g + value: -0.7071069 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[6].color.r + value: 0.70710665 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[7].color.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[8].color.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[0].position.x + value: 0.9985302 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[0].position.y + value: 0.9985302 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[1].position.x + value: 0.9985302 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[1].position.y + value: 0.9985302 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[2].position.x + value: -0.9985302 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[2].position.y + value: 0.9985302 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[3].position.x + value: -0.9985302 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[3].position.y + value: 0.9985302 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[4].position.x + value: -0.99853003 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[4].position.y + value: -0.9985304 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[5].position.x + value: -0.99853003 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[5].position.y + value: -0.9985304 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[6].position.x + value: 0.99853003 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[6].position.y + value: -0.9985304 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[7].position.x + value: 0.99853003 + objectReference: {fileID: 0} + - target: {fileID: 1161891997178266616, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_Vertices.Array.data[7].position.y + value: -0.9985304 + objectReference: {fileID: 0} - target: {fileID: 2216445326509637822, guid: c04c0d84aa0b0a34b878448035dfa275, type: 3} propertyPath: m_Name @@ -174,6 +509,11 @@ PrefabInstance: propertyPath: m_LocalScale.y value: 0.5 objectReference: {fileID: 0} + - target: {fileID: 7494413989538873605, guid: c04c0d84aa0b0a34b878448035dfa275, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} - target: {fileID: 7494413989538873605, guid: c04c0d84aa0b0a34b878448035dfa275, type: 3} propertyPath: m_LocalPosition.x @@ -191,27 +531,22 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 7494413989538873605, guid: c04c0d84aa0b0a34b878448035dfa275, type: 3} - propertyPath: m_LocalRotation.x - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 7494413989538873605, guid: c04c0d84aa0b0a34b878448035dfa275, type: 3} - propertyPath: m_LocalRotation.y + propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7494413989538873605, guid: c04c0d84aa0b0a34b878448035dfa275, type: 3} - propertyPath: m_LocalRotation.z + propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7494413989538873605, guid: c04c0d84aa0b0a34b878448035dfa275, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 7494413989538873605, guid: c04c0d84aa0b0a34b878448035dfa275, - type: 3} - propertyPath: m_RootOrder + propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - target: {fileID: 7494413989538873605, guid: c04c0d84aa0b0a34b878448035dfa275, diff --git a/Assets/Project/Prefabs/Grids/DebrisGrid.prefab b/Assets/Project/Prefabs/Grids/DebrisGrid.prefab index a3205e09..71f6d370 100644 --- a/Assets/Project/Prefabs/Grids/DebrisGrid.prefab +++ b/Assets/Project/Prefabs/Grids/DebrisGrid.prefab @@ -43,7 +43,7 @@ Rigidbody2D: m_BodyType: 0 m_Simulated: 1 m_UseFullKinematicContacts: 0 - m_UseAutoMass: 1 + m_UseAutoMass: 0 m_Mass: 1 m_LinearDrag: 0.1 m_AngularDrag: 0.05 diff --git a/Assets/Project/Prefabs/Grids/EnemyShip.prefab b/Assets/Project/Prefabs/Grids/EnemyShip.prefab index c0a2bc7f..948c650a 100644 --- a/Assets/Project/Prefabs/Grids/EnemyShip.prefab +++ b/Assets/Project/Prefabs/Grids/EnemyShip.prefab @@ -1,5 +1,18 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!114 &1136827025620345631 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4004696302299950471} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4fb6d5e7b3de0924296a6e549ee48670, type: 3} + m_Name: + m_EditorClassIdentifier: + navigationType: 0 --- !u!114 &5196700826758812008 MonoBehaviour: m_ObjectHideFlags: 0 @@ -12,20 +25,28 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d6ff8179fdc65574fbfb0e2b1fac9914, type: 3} m_Name: m_EditorClassIdentifier: - overlay: {fileID: 0} - pivot: {fileID: 4004696302299950466} - shipAi: {fileID: 2469817130048324869} - state: {fileID: 6132491278611923504} + gridAi: {fileID: 6443160764773126917} rb: {fileID: 8504392954730832350} mouseOverCollider: {fileID: 8066326369922599270} - navigationOptions: {fileID: 1658731707252705402} + rotationController: {fileID: 8439586553944130171} cursorOverride: - value: 0 - canvasScaleMultiplier: 1 - shipDebugFont: {fileID: 12800000, guid: e58ca1af91bfa2e44a621cdd32863aa0, type: 3} - destroyEvent: - m_PersistentCalls: - m_Calls: [] + value: 2 + debugFont: {fileID: 12800000, guid: e58ca1af91bfa2e44a621cdd32863aa0, type: 3} + navigationOptions: {fileID: 1136827025620345631} +--- !u!114 &6443160764773126917 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4004696302299950471} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d3fbde347d383324aac239bb7faf9ba4, type: 3} + m_Name: + m_EditorClassIdentifier: + gridInstance: {fileID: 5196700826758812008} + activeValueThreshold: 1 --- !u!1001 &3308525384566981925 PrefabInstance: m_ObjectHideFlags: 0 @@ -33,11 +54,6 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 0} m_Modifications: - - target: {fileID: 1129475341720404000, guid: c338b1f640f93a541a625245831a6e85, - type: 3} - propertyPath: ship - value: - objectReference: {fileID: 5196700826758812008} - target: {fileID: 1907754239003912354, guid: c338b1f640f93a541a625245831a6e85, type: 3} propertyPath: m_Name @@ -45,42 +61,42 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1907754239003912359, guid: c338b1f640f93a541a625245831a6e85, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 1907754239003912359, guid: c338b1f640f93a541a625245831a6e85, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 1907754239003912359, guid: c338b1f640f93a541a625245831a6e85, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 1907754239003912359, guid: c338b1f640f93a541a625245831a6e85, type: 3} - propertyPath: m_LocalRotation.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 1907754239003912359, guid: c338b1f640f93a541a625245831a6e85, type: 3} - propertyPath: m_LocalRotation.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 1907754239003912359, guid: c338b1f640f93a541a625245831a6e85, type: 3} - propertyPath: m_LocalRotation.z + propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - target: {fileID: 1907754239003912359, guid: c338b1f640f93a541a625245831a6e85, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_LocalRotation.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 1907754239003912359, guid: c338b1f640f93a541a625245831a6e85, type: 3} - propertyPath: m_RootOrder + propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - target: {fileID: 1907754239003912359, guid: c338b1f640f93a541a625245831a6e85, @@ -113,7 +129,9 @@ PrefabInstance: propertyPath: ship value: objectReference: {fileID: 5196700826758812008} - m_RemovedComponents: [] + m_RemovedComponents: + - {fileID: 8714678710057436949, guid: c338b1f640f93a541a625245831a6e85, type: 3} + - {fileID: 1129475341720404000, guid: c338b1f640f93a541a625245831a6e85, type: 3} m_SourcePrefab: {fileID: 100100000, guid: c338b1f640f93a541a625245831a6e85, type: 3} --- !u!1 &4004696302299950471 stripped GameObject: @@ -121,57 +139,27 @@ GameObject: type: 3} m_PrefabInstance: {fileID: 3308525384566981925} m_PrefabAsset: {fileID: 0} ---- !u!4 &4004696302299950466 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 1907754239003912359, guid: c338b1f640f93a541a625245831a6e85, - type: 3} - m_PrefabInstance: {fileID: 3308525384566981925} - m_PrefabAsset: {fileID: 0} ---- !u!114 &2469817130048324869 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 1129475341720404000, guid: c338b1f640f93a541a625245831a6e85, +--- !u!58 &8066326369922599270 stripped +CircleCollider2D: + m_CorrespondingSourceObject: {fileID: 4763514651900120131, guid: c338b1f640f93a541a625245831a6e85, type: 3} m_PrefabInstance: {fileID: 3308525384566981925} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4004696302299950471} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 424b8bc5bf4d72044a855d1a2c92a5ba, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!114 &6132491278611923504 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 8714678710057436949, guid: c338b1f640f93a541a625245831a6e85, +--- !u!50 &8504392954730832350 stripped +Rigidbody2D: + m_CorrespondingSourceObject: {fileID: 6624674223097554171, guid: c338b1f640f93a541a625245831a6e85, type: 3} m_PrefabInstance: {fileID: 3308525384566981925} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4004696302299950471} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: dbac3dbbc1c2fcc42874dd2c059632be, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!114 &1658731707252705402 stripped +--- !u!114 &8439586553944130171 stripped MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 4246544794668748127, guid: c338b1f640f93a541a625245831a6e85, + m_CorrespondingSourceObject: {fileID: 6410118770881890142, guid: c338b1f640f93a541a625245831a6e85, type: 3} m_PrefabInstance: {fileID: 3308525384566981925} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 4004696302299950471} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4fb6d5e7b3de0924296a6e549ee48670, type: 3} + m_Script: {fileID: 11500000, guid: 58ce7c403f8b2954da923fb8735e65a9, type: 3} m_Name: m_EditorClassIdentifier: ---- !u!58 &8066326369922599270 stripped -CircleCollider2D: - m_CorrespondingSourceObject: {fileID: 4763514651900120131, guid: c338b1f640f93a541a625245831a6e85, - type: 3} - m_PrefabInstance: {fileID: 3308525384566981925} - m_PrefabAsset: {fileID: 0} ---- !u!50 &8504392954730832350 stripped -Rigidbody2D: - m_CorrespondingSourceObject: {fileID: 6624674223097554171, guid: c338b1f640f93a541a625245831a6e85, - type: 3} - m_PrefabInstance: {fileID: 3308525384566981925} - m_PrefabAsset: {fileID: 0} diff --git a/Assets/Project/Prefabs/Grids/FriendlyShip.prefab b/Assets/Project/Prefabs/Grids/FriendlyShip.prefab deleted file mode 100644 index 3150bb94..00000000 --- a/Assets/Project/Prefabs/Grids/FriendlyShip.prefab +++ /dev/null @@ -1,189 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!114 &2479367940092683939 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6183172587043395867} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: bf71f9f56937da64baeef246f47c24f2, type: 3} - m_Name: - m_EditorClassIdentifier: - overlay: {fileID: 0} - pivot: {fileID: 6183172587043395870} - shipAi: {fileID: 4619018923079872921} - state: {fileID: 3983008322526082732} - rb: {fileID: 1466252569320871234} - mouseOverCollider: {fileID: 985683296314031610} - navigationOptions: {fileID: 8455648041380527334} - cursorOverride: - value: 0 - canvasScaleMultiplier: 1 - shipDebugFont: {fileID: 12800000, guid: e58ca1af91bfa2e44a621cdd32863aa0, type: 3} - destroyEvent: - m_PersistentCalls: - m_Calls: [] ---- !u!1001 &5743988287613530553 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 1129475341720404000, guid: c338b1f640f93a541a625245831a6e85, - type: 3} - propertyPath: ship - value: - objectReference: {fileID: 2479367940092683939} - - target: {fileID: 1907754239003912354, guid: c338b1f640f93a541a625245831a6e85, - type: 3} - propertyPath: m_Name - value: FriendlyShip - objectReference: {fileID: 0} - - target: {fileID: 1907754239003912359, guid: c338b1f640f93a541a625245831a6e85, - type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1907754239003912359, guid: c338b1f640f93a541a625245831a6e85, - type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1907754239003912359, guid: c338b1f640f93a541a625245831a6e85, - type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1907754239003912359, guid: c338b1f640f93a541a625245831a6e85, - type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1907754239003912359, guid: c338b1f640f93a541a625245831a6e85, - type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1907754239003912359, guid: c338b1f640f93a541a625245831a6e85, - type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1907754239003912359, guid: c338b1f640f93a541a625245831a6e85, - type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 1907754239003912359, guid: c338b1f640f93a541a625245831a6e85, - type: 3} - propertyPath: m_RootOrder - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1907754239003912359, guid: c338b1f640f93a541a625245831a6e85, - type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1907754239003912359, guid: c338b1f640f93a541a625245831a6e85, - type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1907754239003912359, guid: c338b1f640f93a541a625245831a6e85, - type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3939905641687402070, guid: c338b1f640f93a541a625245831a6e85, - type: 3} - propertyPath: m_AngularDrag - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5955771735733772327, guid: c338b1f640f93a541a625245831a6e85, - type: 3} - propertyPath: ship - value: - objectReference: {fileID: 2479367940092683939} - - target: {fileID: 7313425749043291350, guid: c338b1f640f93a541a625245831a6e85, - type: 3} - propertyPath: ship - value: - objectReference: {fileID: 2479367940092683939} - - target: {fileID: 8714678710057436949, guid: c338b1f640f93a541a625245831a6e85, - type: 3} - propertyPath: ship - value: - objectReference: {fileID: 2479367940092683939} - - target: {fileID: 9097331874555031652, guid: c338b1f640f93a541a625245831a6e85, - type: 3} - propertyPath: ship - value: - objectReference: {fileID: 2479367940092683939} - m_RemovedComponents: - - {fileID: 1907754239003912352, guid: c338b1f640f93a541a625245831a6e85, type: 3} - - {fileID: 5955771735733772327, guid: c338b1f640f93a541a625245831a6e85, type: 3} - m_SourcePrefab: {fileID: 100100000, guid: c338b1f640f93a541a625245831a6e85, type: 3} ---- !u!1 &6183172587043395867 stripped -GameObject: - m_CorrespondingSourceObject: {fileID: 1907754239003912354, guid: c338b1f640f93a541a625245831a6e85, - type: 3} - m_PrefabInstance: {fileID: 5743988287613530553} - m_PrefabAsset: {fileID: 0} ---- !u!4 &6183172587043395870 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 1907754239003912359, guid: c338b1f640f93a541a625245831a6e85, - type: 3} - m_PrefabInstance: {fileID: 5743988287613530553} - m_PrefabAsset: {fileID: 0} ---- !u!114 &4619018923079872921 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 1129475341720404000, guid: c338b1f640f93a541a625245831a6e85, - type: 3} - m_PrefabInstance: {fileID: 5743988287613530553} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6183172587043395867} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 424b8bc5bf4d72044a855d1a2c92a5ba, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!114 &3983008322526082732 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 8714678710057436949, guid: c338b1f640f93a541a625245831a6e85, - type: 3} - m_PrefabInstance: {fileID: 5743988287613530553} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6183172587043395867} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: dbac3dbbc1c2fcc42874dd2c059632be, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!114 &8455648041380527334 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 4246544794668748127, guid: c338b1f640f93a541a625245831a6e85, - type: 3} - m_PrefabInstance: {fileID: 5743988287613530553} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6183172587043395867} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4fb6d5e7b3de0924296a6e549ee48670, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!58 &985683296314031610 stripped -CircleCollider2D: - m_CorrespondingSourceObject: {fileID: 4763514651900120131, guid: c338b1f640f93a541a625245831a6e85, - type: 3} - m_PrefabInstance: {fileID: 5743988287613530553} - m_PrefabAsset: {fileID: 0} ---- !u!50 &1466252569320871234 stripped -Rigidbody2D: - m_CorrespondingSourceObject: {fileID: 6624674223097554171, guid: c338b1f640f93a541a625245831a6e85, - type: 3} - m_PrefabInstance: {fileID: 5743988287613530553} - m_PrefabAsset: {fileID: 0} diff --git a/Assets/Project/Prefabs/Grids/FriendlyStation.prefab b/Assets/Project/Prefabs/Grids/FriendlyStation.prefab new file mode 100644 index 00000000..d342acd1 --- /dev/null +++ b/Assets/Project/Prefabs/Grids/FriendlyStation.prefab @@ -0,0 +1,178 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &2479367940092683939 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6183172587043395867} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7cd5925918061a948b2fadecad172f65, type: 3} + m_Name: + m_EditorClassIdentifier: + gridAi: {fileID: 4972437827272540485} + rb: {fileID: 1466252569320871234} + mouseOverCollider: {fileID: 985683296314031610} + rotationController: {fileID: 1676447255140234983} + cursorOverride: + value: 1 + debugFont: {fileID: 12800000, guid: e58ca1af91bfa2e44a621cdd32863aa0, type: 3} +--- !u!114 &4972437827272540485 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6183172587043395867} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 424b8bc5bf4d72044a855d1a2c92a5ba, type: 3} + m_Name: + m_EditorClassIdentifier: + gridInstance: {fileID: 2479367940092683939} + activeValueThreshold: 1 +--- !u!1001 &5743988287613530553 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 1129475341720404000, guid: c338b1f640f93a541a625245831a6e85, + type: 3} + propertyPath: ship + value: + objectReference: {fileID: 2479367940092683939} + - target: {fileID: 1129475341720404000, guid: c338b1f640f93a541a625245831a6e85, + type: 3} + propertyPath: gridInstance + value: + objectReference: {fileID: 2479367940092683939} + - target: {fileID: 1907754239003912354, guid: c338b1f640f93a541a625245831a6e85, + type: 3} + propertyPath: m_Name + value: FriendlyStation + objectReference: {fileID: 0} + - target: {fileID: 1907754239003912359, guid: c338b1f640f93a541a625245831a6e85, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1907754239003912359, guid: c338b1f640f93a541a625245831a6e85, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1907754239003912359, guid: c338b1f640f93a541a625245831a6e85, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1907754239003912359, guid: c338b1f640f93a541a625245831a6e85, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1907754239003912359, guid: c338b1f640f93a541a625245831a6e85, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1907754239003912359, guid: c338b1f640f93a541a625245831a6e85, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1907754239003912359, guid: c338b1f640f93a541a625245831a6e85, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1907754239003912359, guid: c338b1f640f93a541a625245831a6e85, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1907754239003912359, guid: c338b1f640f93a541a625245831a6e85, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1907754239003912359, guid: c338b1f640f93a541a625245831a6e85, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1907754239003912359, guid: c338b1f640f93a541a625245831a6e85, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3939905641687402070, guid: c338b1f640f93a541a625245831a6e85, + type: 3} + propertyPath: m_AngularDrag + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5955771735733772327, guid: c338b1f640f93a541a625245831a6e85, + type: 3} + propertyPath: ship + value: + objectReference: {fileID: 2479367940092683939} + - target: {fileID: 6624674223097554171, guid: c338b1f640f93a541a625245831a6e85, + type: 3} + propertyPath: m_LinearDrag + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7313425749043291350, guid: c338b1f640f93a541a625245831a6e85, + type: 3} + propertyPath: ship + value: + objectReference: {fileID: 2479367940092683939} + - target: {fileID: 8714678710057436949, guid: c338b1f640f93a541a625245831a6e85, + type: 3} + propertyPath: ship + value: + objectReference: {fileID: 2479367940092683939} + - target: {fileID: 9097331874555031652, guid: c338b1f640f93a541a625245831a6e85, + type: 3} + propertyPath: ship + value: + objectReference: {fileID: 2479367940092683939} + m_RemovedComponents: + - {fileID: 1907754239003912352, guid: c338b1f640f93a541a625245831a6e85, type: 3} + - {fileID: 5955771735733772327, guid: c338b1f640f93a541a625245831a6e85, type: 3} + - {fileID: 8714678710057436949, guid: c338b1f640f93a541a625245831a6e85, type: 3} + - {fileID: 4246544794668748127, guid: c338b1f640f93a541a625245831a6e85, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: c338b1f640f93a541a625245831a6e85, type: 3} +--- !u!1 &6183172587043395867 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1907754239003912354, guid: c338b1f640f93a541a625245831a6e85, + type: 3} + m_PrefabInstance: {fileID: 5743988287613530553} + m_PrefabAsset: {fileID: 0} +--- !u!58 &985683296314031610 stripped +CircleCollider2D: + m_CorrespondingSourceObject: {fileID: 4763514651900120131, guid: c338b1f640f93a541a625245831a6e85, + type: 3} + m_PrefabInstance: {fileID: 5743988287613530553} + m_PrefabAsset: {fileID: 0} +--- !u!50 &1466252569320871234 stripped +Rigidbody2D: + m_CorrespondingSourceObject: {fileID: 6624674223097554171, guid: c338b1f640f93a541a625245831a6e85, + type: 3} + m_PrefabInstance: {fileID: 5743988287613530553} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1676447255140234983 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 6410118770881890142, guid: c338b1f640f93a541a625245831a6e85, + type: 3} + m_PrefabInstance: {fileID: 5743988287613530553} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6183172587043395867} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 58ce7c403f8b2954da923fb8735e65a9, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/Project/Prefabs/Grids/FriendlyShip.prefab.meta b/Assets/Project/Prefabs/Grids/FriendlyStation.prefab.meta similarity index 100% rename from Assets/Project/Prefabs/Grids/FriendlyShip.prefab.meta rename to Assets/Project/Prefabs/Grids/FriendlyStation.prefab.meta diff --git a/Assets/Project/Prefabs/Grids/Ship.prefab b/Assets/Project/Prefabs/Grids/Ship.prefab index bdd3ac0e..d91d0a12 100644 --- a/Assets/Project/Prefabs/Grids/Ship.prefab +++ b/Assets/Project/Prefabs/Grids/Ship.prefab @@ -9,11 +9,9 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 1907754239003912359} - - component: {fileID: 1129475341720404000} - - component: {fileID: 8714678710057436949} - - component: {fileID: 4246544794668748127} - component: {fileID: 4763514651900120131} - component: {fileID: 6624674223097554171} + - component: {fileID: 6410118770881890142} m_Layer: 8 m_Name: Ship m_TagString: Untagged @@ -35,53 +33,6 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1129475341720404000 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1907754239003912354} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 424b8bc5bf4d72044a855d1a2c92a5ba, type: 3} - m_Name: - m_EditorClassIdentifier: - ship: {fileID: 0} - activeValueThreshold: 1 ---- !u!114 &8714678710057436949 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1907754239003912354} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: dbac3dbbc1c2fcc42874dd2c059632be, type: 3} - m_Name: - m_EditorClassIdentifier: - ship: {fileID: 0} ---- !u!114 &4246544794668748127 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1907754239003912354} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4fb6d5e7b3de0924296a6e549ee48670, type: 3} - m_Name: - m_EditorClassIdentifier: - continuouslyApplySettings: 0 - navigationType: 1 - qProportionalBase: 50 - qIntegral: 2 - qDerivative: 0 - pProportional: 2 - pDerivative: 0 - maxVel: 50 --- !u!58 &4763514651900120131 CircleCollider2D: m_ObjectHideFlags: 0 @@ -109,7 +60,7 @@ Rigidbody2D: m_BodyType: 0 m_Simulated: 1 m_UseFullKinematicContacts: 0 - m_UseAutoMass: 1 + m_UseAutoMass: 0 m_Mass: 1 m_LinearDrag: 0 m_AngularDrag: 0 @@ -119,3 +70,20 @@ Rigidbody2D: m_SleepingMode: 1 m_CollisionDetection: 0 m_Constraints: 0 +--- !u!114 &6410118770881890142 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1907754239003912354} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 58ce7c403f8b2954da923fb8735e65a9, type: 3} + m_Name: + m_EditorClassIdentifier: + maxTorque: 750 + stopThresholdMultiplier: 0.001 + baseStopThreshold: 0.1 + rb: {fileID: 6624674223097554171} + proxy: {fileID: 0} diff --git a/Assets/Project/Prefabs/Grids/ShipOverlay.prefab b/Assets/Project/Prefabs/Grids/ShipOverlay.prefab index 23c160aa..5d61a996 100644 --- a/Assets/Project/Prefabs/Grids/ShipOverlay.prefab +++ b/Assets/Project/Prefabs/Grids/ShipOverlay.prefab @@ -63,6 +63,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 0.29411766, g: 0.7254902, b: 0.7053667, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -183,6 +184,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 0.29411766, g: 0.7254902, b: 0.7053667, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -257,6 +259,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 0.15686275, g: 0.15686275, b: 0.19607843, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -331,6 +334,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 0.7058824, g: 0.27450982, b: 0.29411766, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -405,6 +409,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 0.39215687, g: 0.39215687, b: 0.43137255, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -504,6 +509,7 @@ MonoBehaviour: m_FallbackScreenDPI: 96 m_DefaultSpriteDPI: 96 m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 1 --- !u!114 &7666463188601261115 MonoBehaviour: m_ObjectHideFlags: 0 @@ -533,7 +539,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 63020e69955f6834b90f743cd00e0a23, type: 3} m_Name: m_EditorClassIdentifier: - ship: {fileID: 0} rectContainer: {fileID: 380224763608921018} overlayHullBar: {fileID: 7097949687287391031} overlayEnergyBar: {fileID: 8570273695717230626} @@ -598,6 +603,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 0.15686275, g: 0.15686275, b: 0.19607843, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -734,5 +740,3 @@ MonoBehaviour: m_EditorClassIdentifier: actualFillImage: {fileID: 410623765662056447} rememberedFillImage: {fileID: 1890017420536134182} - timeToUpdateRememberedFill: 0.5 - rememberedFillSpeed: 0.4 diff --git a/Assets/Project/Prefabs/MainCamera.prefab b/Assets/Project/Prefabs/MainCamera.prefab new file mode 100644 index 00000000..224a73b7 --- /dev/null +++ b/Assets/Project/Prefabs/MainCamera.prefab @@ -0,0 +1,165 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3062168236378660378 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3062168236378660382} + - component: {fileID: 3062168236378660383} + - component: {fileID: 3062168236378660380} + - component: {fileID: 3062168236378660381} + - component: {fileID: 3062168236378660449} + - component: {fileID: 2341179434791797879} + m_Layer: 0 + m_Name: MainCamera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3062168236378660382 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3062168236378660378} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, 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!20 &3062168236378660383 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3062168236378660378} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0.078431375, g: 0.078431375, b: 0.11764706, a: 1} + 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: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!81 &3062168236378660380 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3062168236378660378} + m_Enabled: 1 +--- !u!114 &3062168236378660381 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3062168236378660378} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_RenderPostProcessing: 1 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_AllowXRRendering: 1 + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_Version: 2 +--- !u!114 &3062168236378660449 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3062168236378660378} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3} + m_Name: + m_EditorClassIdentifier: + isGlobal: 1 + priority: 0 + blendDistance: 0 + weight: 1 + sharedProfile: {fileID: 11400000, guid: 0ff924150f8861e4f94e69c9e204dfe4, type: 2} +--- !u!114 &2341179434791797879 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3062168236378660378} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1a9bd967442da4e4b89ad43d9ccf7b49, type: 3} + m_Name: + m_EditorClassIdentifier: + defaultSettings: + ZoomEase: + easeType: 0 + ease: 4 + animationCurve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + zoomMinMax: + min: 0.1 + max: 2.5 + zoomSpeed: 0.5 + orthoMultiplier: 30 + targetCamera: {fileID: 3062168236378660383} diff --git a/Assets/Project/Prefabs/MainCamera.prefab.meta b/Assets/Project/Prefabs/MainCamera.prefab.meta new file mode 100644 index 00000000..ce7c60fc --- /dev/null +++ b/Assets/Project/Prefabs/MainCamera.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 75afdb1f953b5ed4f9c18ba6b029ecae +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Prefabs/Managers/BlockFactory.prefab b/Assets/Project/Prefabs/Managers/BlockFactory.prefab index 233c390d..7b0e4d28 100644 --- a/Assets/Project/Prefabs/Managers/BlockFactory.prefab +++ b/Assets/Project/Prefabs/Managers/BlockFactory.prefab @@ -106,6 +106,7 @@ GameObject: m_Component: - component: {fileID: 5057754596078983127} - component: {fileID: 5057754596078983126} + - component: {fileID: 6836051545665117590} m_Layer: 0 m_Name: BlockFactory m_TagString: Untagged @@ -143,11 +144,24 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d2442101be11c2b488c13d2d07262d39, type: 3} m_Name: m_EditorClassIdentifier: + totalsManager: {fileID: 6836051545665117590} blockTemplateBag: {fileID: 11400000, guid: 81f5adcca85f42c42b5aea3d09f0b99c, type: 2} inertPrefabGroup: {fileID: 3938496695803358877} defaultPrefabGroup: {fileID: 1587025755745182148} userPrefabGroup: {fileID: 2465793233296236832} enemyPrefabGroup: {fileID: 304371978879303954} +--- !u!114 &6836051545665117590 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5057754596078983129} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ff703281f8ef47f7bee2b1beeac323e9, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1 &6029322592615761839 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Project/Prefabs/Managers/GameSystems.prefab b/Assets/Project/Prefabs/Managers/GameSystems.prefab index 6e794be1..d795c3f2 100644 --- a/Assets/Project/Prefabs/Managers/GameSystems.prefab +++ b/Assets/Project/Prefabs/Managers/GameSystems.prefab @@ -10,10 +10,9 @@ GameObject: m_Component: - component: {fileID: 3971752618548431354} - component: {fileID: 3971752618548431353} - - component: {fileID: 3971752618548431335} - component: {fileID: 1150010444763719143} - - component: {fileID: 8802424649209492626} - component: {fileID: 4286009776099489547} + - component: {fileID: 4769013451734808969} m_Layer: 0 m_Name: GameSystems m_TagString: Untagged @@ -48,26 +47,16 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 3a3304b620dfa6b4dabc0b9f2596f496, type: 3} m_Name: m_EditorClassIdentifier: - gameplayInputManager: {fileID: 3971752618548431335} - cameraController: {fileID: 8802424649209492626} + gameplayInputManager: {fileID: 0} raycaster: {fileID: 1556863573202206212} navigateable: {fileID: 0} shipFactory: {fileID: 0} gameplayUI: {fileID: 0} aIManager: {fileID: 0} spawnLayer: {fileID: 4286009776099489547} ---- !u!114 &3971752618548431335 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3971752618548431355} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b7f44cf94082cf041bfb5bb402f2d68c, type: 3} - m_Name: - m_EditorClassIdentifier: + blockGridManager: {fileID: 0} + popupManager: {fileID: 0} + missionManager: {fileID: 4769013451734808969} --- !u!114 &1150010444763719143 MonoBehaviour: m_ObjectHideFlags: 0 @@ -81,7 +70,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: ticksPerSecond: 10 ---- !u!114 &8802424649209492626 +--- !u!114 &4286009776099489547 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -90,21 +79,13 @@ MonoBehaviour: m_GameObject: {fileID: 3971752618548431355} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 1a9bd967442da4e4b89ad43d9ccf7b49, type: 3} + m_Script: {fileID: 11500000, guid: a3b7490757e9d9f49b6adbcdc1d796f8, type: 3} m_Name: m_EditorClassIdentifier: - defaultSettings: - bezierCurveSettings: - p0: {x: 0, y: 0} - p1: {x: 0.5, y: 0.25} - p2: {x: 0.5, y: 0.75} - p3: {x: 1, y: 1} - zoomMinMax: - min: 0.1 - max: 2.5 - zoomSpeed: 0.3 - orthoMultiplier: 30 ---- !u!114 &4286009776099489547 + overlay: {fileID: 0} + projectiles: {fileID: 0} + ships: {fileID: 0} +--- !u!114 &4769013451734808969 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -113,11 +94,9 @@ MonoBehaviour: m_GameObject: {fileID: 3971752618548431355} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: a3b7490757e9d9f49b6adbcdc1d796f8, type: 3} + m_Script: {fileID: 11500000, guid: 1af965eb9df5418c9acd8a39b28c963f, type: 3} m_Name: m_EditorClassIdentifier: - projectiles: {fileID: 0} - ships: {fileID: 0} --- !u!1 &6801628535618871680 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Project/Prefabs/Managers/Managers.prefab b/Assets/Project/Prefabs/Managers/Managers.prefab index 8503ec7b..b9421579 100644 --- a/Assets/Project/Prefabs/Managers/Managers.prefab +++ b/Assets/Project/Prefabs/Managers/Managers.prefab @@ -16,6 +16,8 @@ GameObject: - component: {fileID: 5676475580568291457} - component: {fileID: 5676475580568291456} - component: {fileID: 2896225307612050541} + - component: {fileID: 2870662635955523299} + - component: {fileID: 9162152097546090845} m_Layer: 0 m_Name: Managers m_TagString: Untagged @@ -53,12 +55,17 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: blockFactory: {fileID: 645744782612201261} + totalsManager: {fileID: 0} + cameraController: {fileID: 0} + colorManager: {fileID: 9162152097546090845} + researchStore: {fileID: 2870662635955523299} blueprintManager: {fileID: 5676475580568291461} - shipEditor: {fileID: 0} + gridEditor: {fileID: 0} audioManager: {fileID: 5676475580605553491} thumbnailGenerator: {fileID: 5676475581545504187} debugManager: {fileID: 5676475580568291460} inputManager: {fileID: 5676475580568291456} + settingsManager: {fileID: 0} sceneManager: {fileID: 5676475580568291457} logger: {fileID: 5676475580568291462} mainUI: {fileID: 0} @@ -90,8 +97,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: blueprintTypes: {fileID: 11400000, guid: ea5f593b3dc3ed142a8d8854ab70e880, type: 2} - defaultBlueprintBag: {fileID: 11400000, guid: c1c7e923b5a0cf445bb12d051651cfc8, - type: 2} + staticBlueprintBag: {fileID: 11400000, guid: c1c7e923b5a0cf445bb12d051651cfc8, type: 2} --- !u!114 &5676475580568291460 MonoBehaviour: m_ObjectHideFlags: 0 @@ -144,6 +150,37 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 3f525f0409cc4ae4ea2698e4ee04a0c5, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!114 &2870662635955523299 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5676475580568291469} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7bf4183f5b938924d8acc5e2b31c1e3c, type: 3} + m_Name: + m_EditorClassIdentifier: + researchItemBag: {fileID: 11400000, guid: 7d48555a753b13d45ada7eab83ce695e, type: 2} +--- !u!114 &9162152097546090845 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5676475580568291469} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 491b4be70626b0f4893fd3f69cf3c458, type: 3} + m_Name: + m_EditorClassIdentifier: + white: {r: 1, g: 1, b: 1, a: 1} + dimGray: {r: 0.39215687, g: 0.39215687, b: 0.43137255, a: 1} + onyx: {r: 0.23529412, g: 0.23529412, b: 0.27450982, a: 1} + raisinBlack: {r: 0.15686275, g: 0.15686275, b: 0.19607843, a: 1} + verdigris: {r: 0.29411766, g: 0.7254902, b: 0.7053667, a: 1} + roseVale: {r: 0.7058824, g: 0.27450982, b: 0.29411766, a: 1} --- !u!1 &5676475581545504186 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Project/Prefabs/ShipEditor/BlueprintTotals.prefab b/Assets/Project/Prefabs/ShipEditor/BlueprintTotals.prefab deleted file mode 100644 index 67fe46f6..00000000 --- a/Assets/Project/Prefabs/ShipEditor/BlueprintTotals.prefab +++ /dev/null @@ -1,1129 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &686643047513359827 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3380397937280386038} - - component: {fileID: 4119463676166136968} - - component: {fileID: 6429509029354871943} - - component: {fileID: 5559218070099576809} - m_Layer: 5 - m_Name: Stats - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &3380397937280386038 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 686643047513359827} - 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: 4922099915345720378} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 40} - m_Pivot: {x: 0.5, y: 1} ---- !u!222 &4119463676166136968 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 686643047513359827} - m_CullTransparentMesh: 0 ---- !u!114 &6429509029354871943 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 686643047513359827} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.29411766, g: 0.7254902, b: 0.7053667, 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_FontData: - m_Font: {fileID: 12800000, guid: b9f47330c8d3fd443a5e4dbae17f45a7, type: 3} - m_FontSize: 32 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 3 - m_MaxSize: 40 - m_Alignment: 7 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: 'Stats - -' ---- !u!114 &5559218070099576809 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 686643047513359827} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreLayout: 0 - m_MinWidth: -1 - m_MinHeight: -1 - m_PreferredWidth: -1 - m_PreferredHeight: 40 - m_FlexibleWidth: -1 - m_FlexibleHeight: -1 - m_LayoutPriority: 1 ---- !u!1 &4667766091273924356 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4922099915345720378} - - component: {fileID: 3213095790358021283} - - component: {fileID: 8174340128288577755} - - component: {fileID: 7146960723701944662} - - component: {fileID: 2274767151163960893} - m_Layer: 5 - m_Name: BlueprintTotals - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &4922099915345720378 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4667766091273924356} - 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: 3380397937280386038} - - {fileID: 2108702310940873097} - - {fileID: 1850733431255038105} - - {fileID: 9175090477226035421} - - {fileID: 2650535328695271683} - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 400, y: 800} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &3213095790358021283 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4667766091273924356} - m_CullTransparentMesh: 0 ---- !u!114 &8174340128288577755 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4667766091273924356} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.15686275, g: 0.15686275, b: 0.19607843, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!114 &7146960723701944662 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4667766091273924356} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Padding: - m_Left: 10 - m_Right: 10 - m_Top: 10 - m_Bottom: 10 - m_ChildAlignment: 0 - m_Spacing: 10 - m_ChildForceExpandWidth: 1 - m_ChildForceExpandHeight: 0 - m_ChildControlWidth: 1 - m_ChildControlHeight: 0 - m_ChildScaleWidth: 0 - m_ChildScaleHeight: 1 - m_ReverseArrangement: 0 ---- !u!114 &2274767151163960893 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4667766091273924356} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: e442b55f9f8690a4f84f8cca8e9f0779, type: 3} - m_Name: - m_EditorClassIdentifier: - massView: {fileID: 3590768861163363707} - hullView: {fileID: 3834890491517039723} - energyView: {fileID: 6035699777514013743} - turningPower: {fileID: 603468073177009649} ---- !u!1001 &426351121301943560 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 4922099915345720378} - m_Modifications: - - target: {fileID: 438599937416983596, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_Text - value: Torque - objectReference: {fileID: 0} - - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_RootOrder - value: 4 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchorMin.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchorMax.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_Pivot.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_Pivot.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_Color.r - value: 0.078431375 - objectReference: {fileID: 0} - - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_Color.g - value: 0.078431375 - objectReference: {fileID: 0} - - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_Color.b - value: 0.11764706 - objectReference: {fileID: 0} - - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_Sprite - value: - objectReference: {fileID: 21300000, guid: 9ed5f14807d0abb46b875225c7dcb3d2, - type: 3} - - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_Type - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 6372109433816541427, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_Name - value: TurningPowerProperty - objectReference: {fileID: 0} - - target: {fileID: 6686136345054778047, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_ChildForceExpandHeight - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 7d49f4aa77aebae418b6c289028d58ec, type: 3} ---- !u!224 &2650535328695271683 stripped -RectTransform: - m_CorrespondingSourceObject: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - m_PrefabInstance: {fileID: 426351121301943560} - m_PrefabAsset: {fileID: 0} ---- !u!114 &603468073177009649 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 987773853525342457, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - m_PrefabInstance: {fileID: 426351121301943560} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5027d8f2fff7b244797e9b334add1090, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1001 &4074917100671372434 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 4922099915345720378} - m_Modifications: - - target: {fileID: 438599937416983596, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_Text - value: 'Hull - -' - objectReference: {fileID: 0} - - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_RootOrder - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchorMin.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchorMax.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_Pivot.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_Pivot.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_Color.r - value: 0.078431375 - objectReference: {fileID: 0} - - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_Color.g - value: 0.078431375 - objectReference: {fileID: 0} - - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_Color.b - value: 0.11764706 - objectReference: {fileID: 0} - - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_Sprite - value: - objectReference: {fileID: 21300000, guid: 9ed5f14807d0abb46b875225c7dcb3d2, - type: 3} - - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_Type - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 6372109433816541427, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_Name - value: HullProperty - objectReference: {fileID: 0} - - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 7d49f4aa77aebae418b6c289028d58ec, type: 3} ---- !u!224 &1850733431255038105 stripped -RectTransform: - m_CorrespondingSourceObject: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - m_PrefabInstance: {fileID: 4074917100671372434} - m_PrefabAsset: {fileID: 0} ---- !u!114 &3834890491517039723 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 987773853525342457, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - m_PrefabInstance: {fileID: 4074917100671372434} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5027d8f2fff7b244797e9b334add1090, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1001 &4350967996725257602 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 4922099915345720378} - m_Modifications: - - target: {fileID: 438599937416983596, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_Text - value: Mass - objectReference: {fileID: 0} - - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_RootOrder - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchorMin.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchorMax.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_Pivot.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_Pivot.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_Color.r - value: 0.078431375 - objectReference: {fileID: 0} - - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_Color.g - value: 0.078431375 - objectReference: {fileID: 0} - - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_Color.b - value: 0.11764706 - objectReference: {fileID: 0} - - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_Sprite - value: - objectReference: {fileID: 21300000, guid: 9ed5f14807d0abb46b875225c7dcb3d2, - type: 3} - - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_Type - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 6372109433816541427, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_Name - value: MassProperty - objectReference: {fileID: 0} - - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 7d49f4aa77aebae418b6c289028d58ec, type: 3} ---- !u!224 &2108702310940873097 stripped -RectTransform: - m_CorrespondingSourceObject: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - m_PrefabInstance: {fileID: 4350967996725257602} - m_PrefabAsset: {fileID: 0} ---- !u!114 &3590768861163363707 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 987773853525342457, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - m_PrefabInstance: {fileID: 4350967996725257602} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5027d8f2fff7b244797e9b334add1090, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1001 &6806728964584471766 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 4922099915345720378} - m_Modifications: - - target: {fileID: 438599937416983596, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_Text - value: 'Energy - -' - objectReference: {fileID: 0} - - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_RootOrder - value: 3 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchorMin.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchorMax.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_Pivot.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_Pivot.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_Color.r - value: 0.078431375 - objectReference: {fileID: 0} - - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_Color.g - value: 0.078431375 - objectReference: {fileID: 0} - - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_Color.b - value: 0.11764706 - objectReference: {fileID: 0} - - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_Sprite - value: - objectReference: {fileID: 21300000, guid: 9ed5f14807d0abb46b875225c7dcb3d2, - type: 3} - - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_Type - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 6372109433816541427, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_Name - value: EnergyProperty - objectReference: {fileID: 0} - - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 7d49f4aa77aebae418b6c289028d58ec, type: 3} ---- !u!224 &9175090477226035421 stripped -RectTransform: - m_CorrespondingSourceObject: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - m_PrefabInstance: {fileID: 6806728964584471766} - m_PrefabAsset: {fileID: 0} ---- !u!114 &6035699777514013743 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 987773853525342457, guid: 7d49f4aa77aebae418b6c289028d58ec, - type: 3} - m_PrefabInstance: {fileID: 6806728964584471766} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5027d8f2fff7b244797e9b334add1090, type: 3} - m_Name: - m_EditorClassIdentifier: diff --git a/Assets/Project/Prefabs/ShipEditor/EditorGrid/EditorGrid.prefab b/Assets/Project/Prefabs/ShipEditor/EditorGrid/EditorGrid.prefab deleted file mode 100644 index 0f2d80ae..00000000 --- a/Assets/Project/Prefabs/ShipEditor/EditorGrid/EditorGrid.prefab +++ /dev/null @@ -1,190 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &144273548558085617 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6952083228573255865} - - component: {fileID: 7041857602528279267} - m_Layer: 0 - m_Name: GhostLayer - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &6952083228573255865 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 144273548558085617} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -2} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 9165474356103406435} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &7041857602528279267 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 144273548558085617} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 7a6b8723510b7c1488be61d72e8f74fb, type: 3} - m_Name: - m_EditorClassIdentifier: - ghostPrefab: {fileID: 7311039082771557908, guid: 9525c2987aac89e4791910f19185f734, - type: 3} - ghost: {fileID: 0} - mirrorGhost: {fileID: 0} ---- !u!1 &1192672273512161639 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 9165474356103406435} - - component: {fileID: 7045163967011279385} - m_Layer: 0 - m_Name: EditorGrid - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &9165474356103406435 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1192672273512161639} - 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: 5113522367572386056} - - {fileID: 7561688704744118673} - - {fileID: 6952083228573255865} - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &7045163967011279385 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1192672273512161639} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 63395ac0aec248445a7abe66f67b2f72, type: 3} - m_Name: - m_EditorClassIdentifier: - movementSpeed: 10 - backgroundLayer: {fileID: 4635185658990925759} - ghostLayer: {fileID: 7041857602528279267} - blueprintLayer: {fileID: 7112577619619822814} ---- !u!1 &3335786792172077398 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7561688704744118673} - - component: {fileID: 7112577619619822814} - m_Layer: 0 - m_Name: BlueprintLayer - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &7561688704744118673 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3335786792172077398} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 9165474356103406435} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &7112577619619822814 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3335786792172077398} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: a78c19b37de462242a8ab4dc6743a7e8, type: 3} - m_Name: - m_EditorClassIdentifier: - onBlueprintChanged: - m_PersistentCalls: - m_Calls: [] ---- !u!1 &5895357026409253044 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5113522367572386056} - - component: {fileID: 4635185658990925759} - m_Layer: 0 - m_Name: BackgroundLayer - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &5113522367572386056 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5895357026409253044} - 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: 9165474356103406435} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &4635185658990925759 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5895357026409253044} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: dc6c2862bff6d1d4f8260812fe6b2417, type: 3} - m_Name: - m_EditorClassIdentifier: - gridItemPrefab: {fileID: 5952255028486761140, guid: 6463c40691da1d84ea755dff96d9a183, - type: 3} diff --git a/Assets/Project/Prefabs/ShipEditor/EditorGrid/EditorGridItem.prefab b/Assets/Project/Prefabs/ShipEditor/EditorGrid/EditorGridItem.prefab deleted file mode 100644 index 912fdd51..00000000 --- a/Assets/Project/Prefabs/ShipEditor/EditorGrid/EditorGridItem.prefab +++ /dev/null @@ -1,157 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &5952255028486761140 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2765531761494197332} - - component: {fileID: 1688177386627731569} - - component: {fileID: 1081067659551580334} - m_Layer: 0 - m_Name: EditorGridItem - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &2765531761494197332 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5952255028486761140} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 5794473422174108555} - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1688177386627731569 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5952255028486761140} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0990e17e5150e1444935589dcf63458f, type: 3} - m_Name: - m_EditorClassIdentifier: - spriteRenderer: {fileID: 3392767795847574525} - defaultColor: {r: 0.15686275, g: 0.15686275, b: 0.19607843, a: 0.78431374} - hoverColor: {r: 0.23529412, g: 0.23529412, b: 0.27450982, a: 0.78431374} ---- !u!61 &1081067659551580334 -BoxCollider2D: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5952255028486761140} - m_Enabled: 1 - m_Density: 1 - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_UsedByEffector: 0 - m_UsedByComposite: 0 - m_Offset: {x: 0, y: 0} - m_SpriteTilingProperty: - border: {x: 0, y: 0, z: 0, w: 0} - pivot: {x: 0, y: 0} - oldSize: {x: 0, y: 0} - newSize: {x: 0, y: 0} - adaptiveTilingThreshold: 0 - drawMode: 0 - adaptiveTiling: 0 - m_AutoTiling: 0 - serializedVersion: 2 - m_Size: {x: 1, y: 1} - m_EdgeRadius: 0 ---- !u!1 &6623553762655494790 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5794473422174108555} - - component: {fileID: 3392767795847574525} - m_Layer: 0 - m_Name: GameObject - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &5794473422174108555 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6623553762655494790} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.98, y: 0.98, z: 1} - m_Children: [] - m_Father: {fileID: 2765531761494197332} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!212 &3392767795847574525 -SpriteRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6623553762655494790} - 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_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, 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: 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: 197731d5700d0eb49915322ec740e2bc, type: 3} - m_Color: {r: 0.15686275, g: 0.15686275, b: 0.19607843, a: 0.78431374} - 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 diff --git a/Assets/Project/Prefabs/ShipEditor/EditorGrid/ShipEditor.prefab b/Assets/Project/Prefabs/ShipEditor/EditorGrid/ShipEditor.prefab deleted file mode 100644 index 5953ec39..00000000 --- a/Assets/Project/Prefabs/ShipEditor/EditorGrid/ShipEditor.prefab +++ /dev/null @@ -1,250 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &3453339401510823937 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6219951660510845226} - m_Layer: 0 - m_Name: EditorGridOwner - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &6219951660510845226 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3453339401510823937} - 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: 9128669572918485100} - - {fileID: 1248576156552169326} - m_Father: {fileID: 9037354107960172111} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &3467558800746813093 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 9037354107960172111} - - component: {fileID: 1617958063522696134} - - component: {fileID: 6027265397929423277} - - component: {fileID: 9133893927100921210} - - component: {fileID: 8625900837292856731} - m_Layer: 0 - m_Name: ShipEditor - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &9037354107960172111 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3467558800746813093} - 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: 6219951660510845226} - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1617958063522696134 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3467558800746813093} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: ff94cfe3f71c82b45b2c8e17cf5583b3, type: 3} - m_Name: - m_EditorClassIdentifier: - editorGrid: {fileID: 1127281402421229076} - navigateable: {fileID: 6027265397929423277} - stopwatch: {fileID: 9133893927100921210} - editorGridBackground: {fileID: 7409053316416911932} - zoomSpeed: 0.8 ---- !u!114 &6027265397929423277 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3467558800746813093} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7e654be5f38614388626bb325fb1f8, type: 3} - m_Name: - m_EditorClassIdentifier: - audioPlayer: {fileID: 8625900837292856731} - shipEditor: {fileID: 1617958063522696134} ---- !u!114 &9133893927100921210 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3467558800746813093} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: c7435b2b1993a1947ba8e3f69357ee36, type: 3} - m_Name: - m_EditorClassIdentifier: - onTime: - m_PersistentCalls: - m_Calls: [] - invokeOnTime: 1 ---- !u!114 &8625900837292856731 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3467558800746813093} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b2e199450f3216546b29d13f8d842126, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1 &7409053316416911932 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 9128669572918485100} - m_Layer: 0 - m_Name: EditorBackground - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &9128669572918485100 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7409053316416911932} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 17.777779, y: 10, z: 0} - m_Children: [] - m_Father: {fileID: 6219951660510845226} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1001 &7953809097154782221 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 6219951660510845226} - m_Modifications: - - target: {fileID: 1192672273512161639, guid: ee9987c9c591276448d04c256085f97e, - type: 3} - propertyPath: m_Name - value: EditorGrid - objectReference: {fileID: 0} - - target: {fileID: 7112577619619822814, guid: ee9987c9c591276448d04c256085f97e, - type: 3} - propertyPath: stopwatch - value: - objectReference: {fileID: 9133893927100921210} - - target: {fileID: 9165474356103406435, guid: ee9987c9c591276448d04c256085f97e, - type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 9165474356103406435, guid: ee9987c9c591276448d04c256085f97e, - type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 9165474356103406435, guid: ee9987c9c591276448d04c256085f97e, - type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 9165474356103406435, guid: ee9987c9c591276448d04c256085f97e, - type: 3} - propertyPath: m_LocalRotation.x - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 9165474356103406435, guid: ee9987c9c591276448d04c256085f97e, - type: 3} - propertyPath: m_LocalRotation.y - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 9165474356103406435, guid: ee9987c9c591276448d04c256085f97e, - type: 3} - propertyPath: m_LocalRotation.z - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 9165474356103406435, guid: ee9987c9c591276448d04c256085f97e, - type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 9165474356103406435, guid: ee9987c9c591276448d04c256085f97e, - type: 3} - propertyPath: m_RootOrder - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 9165474356103406435, guid: ee9987c9c591276448d04c256085f97e, - type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 9165474356103406435, guid: ee9987c9c591276448d04c256085f97e, - type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 9165474356103406435, guid: ee9987c9c591276448d04c256085f97e, - type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: ee9987c9c591276448d04c256085f97e, type: 3} ---- !u!4 &1248576156552169326 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 9165474356103406435, guid: ee9987c9c591276448d04c256085f97e, - type: 3} - m_PrefabInstance: {fileID: 7953809097154782221} - m_PrefabAsset: {fileID: 0} ---- !u!114 &1127281402421229076 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 7045163967011279385, guid: ee9987c9c591276448d04c256085f97e, - type: 3} - m_PrefabInstance: {fileID: 7953809097154782221} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 63395ac0aec248445a7abe66f67b2f72, type: 3} - m_Name: - m_EditorClassIdentifier: diff --git a/Assets/Project/Prefabs/ShipEditor/ShipEditorOverlay.prefab b/Assets/Project/Prefabs/ShipEditor/ShipEditorOverlay.prefab deleted file mode 100644 index 9ff46f8b..00000000 --- a/Assets/Project/Prefabs/ShipEditor/ShipEditorOverlay.prefab +++ /dev/null @@ -1,4249 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &93377104172333775 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2745197201941667664} - - component: {fileID: 2367153197632887132} - - component: {fileID: 4655941050935960939} - m_Layer: 5 - m_Name: Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2745197201941667664 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 93377104172333775} - 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: 8108394480977598239} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 50, y: 0} - m_SizeDelta: {x: -100, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &2367153197632887132 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 93377104172333775} - m_CullTransparentMesh: 0 ---- !u!114 &4655941050935960939 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 93377104172333775} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.8627451, g: 0.8627451, b: 0.8627451, 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_FontData: - m_Font: {fileID: 12800000, guid: 178dfd0eb691dfc48b2338eb02b30bf6, type: 3} - m_FontSize: 28 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 2 - m_MaxSize: 40 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: 'Rotate left - -' ---- !u!1 &480698898503710017 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5799643888506327559} - - component: {fileID: 6815248997739008116} - m_Layer: 5 - m_Name: OverlayInventorySideBar - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &5799643888506327559 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 480698898503710017} - 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: 1020508502156783149} - - {fileID: 8427711914959311622} - m_Father: {fileID: 7577603259920304273} - 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: 0, y: 0} - m_SizeDelta: {x: -20, y: -20} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &6815248997739008116 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 480698898503710017} - m_CullTransparentMesh: 0 ---- !u!225 &4357921600955329012 -CanvasGroup: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 716561402804654399} - m_Enabled: 1 - m_Alpha: 1 - m_Interactable: 1 - m_BlocksRaycasts: 1 - m_IgnoreParentGroups: 0 ---- !u!1 &1473238069316117370 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1020508502156783149} - - component: {fileID: 8271394488938490086} - - component: {fileID: 5967427094529973581} - m_Layer: 5 - m_Name: Header - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1020508502156783149 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1473238069316117370} - 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: 5967115731039213723} - m_Father: {fileID: 5799643888506327559} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 60} - m_Pivot: {x: 0.5, y: 1} ---- !u!222 &8271394488938490086 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1473238069316117370} - m_CullTransparentMesh: 0 ---- !u!114 &5967427094529973581 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1473238069316117370} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.078431375, g: 0.078431375, b: 0.11764706, a: 0.78431374} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &1903753001215197965 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5967115731039213723} - - component: {fileID: 3169418982342130652} - - component: {fileID: 5145678994275934524} - m_Layer: 5 - m_Name: Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &5967115731039213723 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1903753001215197965} - 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: 1020508502156783149} - 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: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &3169418982342130652 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1903753001215197965} - m_CullTransparentMesh: 0 ---- !u!114 &5145678994275934524 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1903753001215197965} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.29411766, g: 0.7254902, b: 0.7053667, 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_FontData: - m_Font: {fileID: 12800000, guid: b9f47330c8d3fd443a5e4dbae17f45a7, type: 3} - m_FontSize: 32 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 2 - m_MaxSize: 42 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: Inventory ---- !u!1 &1955779252061041205 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7729614257948850543} - - component: {fileID: 8885517178386905607} - m_Layer: 5 - m_Name: Container - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &7729614257948850543 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1955779252061041205} - 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: 8596934783316770823} - 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.5, y: 1} ---- !u!114 &8885517178386905607 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1955779252061041205} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Padding: - m_Left: 0 - m_Right: 0 - m_Top: 0 - m_Bottom: 0 - m_ChildAlignment: 0 - m_Spacing: 10 - m_ChildForceExpandWidth: 1 - m_ChildForceExpandHeight: 0 - m_ChildControlWidth: 1 - m_ChildControlHeight: 1 - m_ChildScaleWidth: 0 - m_ChildScaleHeight: 0 - m_ReverseArrangement: 0 ---- !u!1 &2197345603147270775 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5884525049298447935} - - component: {fileID: 2927320983377482937} - - component: {fileID: 3252290418631415401} - m_Layer: 5 - m_Name: Handle - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &5884525049298447935 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2197345603147270775} - 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: 7387966786729839313} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: -10, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &2927320983377482937 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2197345603147270775} - m_CullTransparentMesh: 0 ---- !u!114 &3252290418631415401 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2197345603147270775} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.29411766, g: 0.7254902, b: 0.7053667, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 2 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &3208989825122196086 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4773850691167363365} - - component: {fileID: 238357010777143755} - m_Layer: 5 - m_Name: Mirror - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &4773850691167363365 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3208989825122196086} - 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: 3376785686518237414} - - {fileID: 7132505632161233089} - - {fileID: 8885415343267803349} - m_Father: {fileID: 2179149627488415654} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 40} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &238357010777143755 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3208989825122196086} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 961aba4f2b025f74dacdfcbe893e3129, type: 3} - m_Name: - m_EditorClassIdentifier: - keybindingView: {fileID: 6023891345794371943} - mirrorImage: {fileID: 5013856431352351148} - activeColor: {r: 0.29411766, g: 0.7254902, b: 0.7053667, a: 1} - inactiveColor: {r: 0.39215687, g: 0.39215687, b: 0.43137255, a: 1} ---- !u!1 &3297064602315863249 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7682320369076564723} - - component: {fileID: 7554861788909324467} - - component: {fileID: 373391439726214709} - - component: {fileID: 4088978028008046102} - m_Layer: 5 - m_Name: Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &7682320369076564723 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3297064602315863249} - 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: 8596934783316770823} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 1} ---- !u!222 &7554861788909324467 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3297064602315863249} - m_CullTransparentMesh: 0 ---- !u!114 &373391439726214709 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3297064602315863249} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.7058824, g: 0.27450982, b: 0.29411766, 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_FontData: - m_Font: {fileID: 12800000, guid: b9f47330c8d3fd443a5e4dbae17f45a7, type: 3} - m_FontSize: 36 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 40 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: Errors ---- !u!114 &4088978028008046102 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3297064602315863249} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreLayout: 0 - m_MinWidth: -1 - m_MinHeight: -1 - m_PreferredWidth: -1 - m_PreferredHeight: 48 - m_FlexibleWidth: -1 - m_FlexibleHeight: -1 - m_LayoutPriority: 1 ---- !u!1 &3315579308070717197 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3232415723866766923} - m_Layer: 5 - m_Name: RotateRight - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &3232415723866766923 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3315579308070717197} - 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: 7049291656871662841} - - {fileID: 3002837646857461494} - m_Father: {fileID: 2179149627488415654} - m_RootOrder: 2 - 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: 40} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!1 &3359980719486404662 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3660100161524233110} - - component: {fileID: 2337189572060791900} - - component: {fileID: 1992553658429231198} - - component: {fileID: 3839996062393158794} - - component: {fileID: 6235325532225704457} - - component: {fileID: 229453432178233258} - - component: {fileID: 4885712940682538963} - - component: {fileID: 7523378000283445702} - m_Layer: 5 - m_Name: EditorStateSideBarContainer - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &3660100161524233110 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3359980719486404662} - 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: 2179149627488415654} - m_Father: {fileID: 4182533117752597262} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 20, y: 20} - m_SizeDelta: {x: 380, y: 0} - m_Pivot: {x: 0, y: 0} ---- !u!222 &2337189572060791900 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3359980719486404662} - m_CullTransparentMesh: 0 ---- !u!114 &1992553658429231198 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3359980719486404662} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.15686275, g: 0.15686275, b: 0.19607843, a: 0.78431374} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 2 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!225 &3839996062393158794 -CanvasGroup: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3359980719486404662} - m_Enabled: 1 - m_Alpha: 1 - m_Interactable: 1 - m_BlocksRaycasts: 1 - m_IgnoreParentGroups: 0 ---- !u!114 &6235325532225704457 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3359980719486404662} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5fb55c9353d5f9f4b90f125ad87129d0, type: 3} - m_Name: - m_EditorClassIdentifier: - onPointerEnter: - m_PersistentCalls: - m_Calls: [] - onPointerExit: - m_PersistentCalls: - m_Calls: [] - invokeStateChangeOnHover: 0 - cursorOverride: - value: 0 - checkMouseInsideRectOnEnable: 1 ---- !u!114 &229453432178233258 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3359980719486404662} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: e2b3d7e6954ec474a841cdbeba761bb0, type: 3} - m_Name: - m_EditorClassIdentifier: - msLocalAnimationOffset: 0 - movementDirection: 2 - movementSmoothDamp: 0.2 - movementMagnitude: 80 - animateAlpha: 1 - alphaSpeed: 4 ---- !u!114 &4885712940682538963 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3359980719486404662} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Padding: - m_Left: 10 - m_Right: 10 - m_Top: 10 - m_Bottom: 10 - m_ChildAlignment: 0 - m_Spacing: 0 - m_ChildForceExpandWidth: 1 - m_ChildForceExpandHeight: 0 - m_ChildControlWidth: 1 - m_ChildControlHeight: 1 - m_ChildScaleWidth: 0 - m_ChildScaleHeight: 1 - m_ReverseArrangement: 0 ---- !u!114 &7523378000283445702 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3359980719486404662} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HorizontalFit: 0 - m_VerticalFit: 2 ---- !u!1 &4172473744168498426 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3629780489728021464} - - component: {fileID: 3052649042020760183} - - component: {fileID: 1867595047908987590} - m_Layer: 5 - m_Name: Scrollbar Vertical - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &3629780489728021464 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4172473744168498426} - 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: 7387966786729839313} - m_Father: {fileID: 8427711914959311622} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 1, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 35, y: 70} - m_SizeDelta: {x: 20, y: 70} - m_Pivot: {x: 1, y: 1} ---- !u!222 &3052649042020760183 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4172473744168498426} - m_CullTransparentMesh: 0 ---- !u!114 &1867595047908987590 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4172473744168498426} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 0 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Selected - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 3252290418631415401} - m_HandleRect: {fileID: 5884525049298447935} - m_Direction: 2 - m_Value: 0 - m_Size: 1 - m_NumberOfSteps: 0 - m_OnValueChanged: - m_PersistentCalls: - m_Calls: [] ---- !u!1 &4182533117752597263 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4182533117752597262} - - component: {fileID: 5930959499071045652} - - component: {fileID: 5213727104914343096} - - component: {fileID: 2563220100341616592} - m_Layer: 5 - m_Name: ShipEditorOverlay - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &4182533117752597262 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4182533117752597263} - 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: 3660100161524233110} - - {fileID: 4103814012636034508} - - {fileID: 7577603259920304273} - m_Father: {fileID: 0} - 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: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &5930959499071045652 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4182533117752597263} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 580006f3f0068ab45a98cb5a94e3ad63, type: 3} - m_Name: - m_EditorClassIdentifier: - blueprintInventoryHoverable: {fileID: 1806886697017712247} - blueprintInfoPanelHoverable: {fileID: 7693724912663897459} - editorStatePanelHoverable: {fileID: 6235325532225704457} - editorOverlayCanvasGroup: {fileID: 2563220100341616592} - infoPanel: {fileID: 6879205927546333943} - inventory: {fileID: 1170116247793472876} - mirrorView: {fileID: 238357010777143755} - onPointerEnter: - m_PersistentCalls: - m_Calls: [] - onPointerExit: - m_PersistentCalls: - m_Calls: [] ---- !u!225 &5213727104914343096 -CanvasGroup: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4182533117752597263} - m_Enabled: 1 - m_Alpha: 1 - m_Interactable: 1 - m_BlocksRaycasts: 1 - m_IgnoreParentGroups: 0 ---- !u!114 &2563220100341616592 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4182533117752597263} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: dad7314b3f5116040a1a4129a0ecb695, type: 3} - m_Name: - m_EditorClassIdentifier: - canvasGroup: {fileID: 5213727104914343096} - setAlpha: 0 - interactable: 1 ---- !u!1 &4393935562950078562 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8885415343267803349} - - component: {fileID: 7995366448273185200} - - component: {fileID: 7465162164095258513} - m_Layer: 5 - m_Name: Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &8885415343267803349 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4393935562950078562} - 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: 4773850691167363365} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 50, y: 0} - m_SizeDelta: {x: -100, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &7995366448273185200 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4393935562950078562} - m_CullTransparentMesh: 0 ---- !u!114 &7465162164095258513 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4393935562950078562} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.8627451, g: 0.8627451, b: 0.8627451, 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_FontData: - m_Font: {fileID: 12800000, guid: 178dfd0eb691dfc48b2338eb02b30bf6, type: 3} - m_FontSize: 28 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 2 - m_MaxSize: 40 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: 'Mirror - -' ---- !u!1 &4415499671790398705 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8427711914959311622} - - component: {fileID: 2647123252440241747} - - component: {fileID: 2422947753528889550} - m_Layer: 5 - m_Name: SideBarInventory - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &8427711914959311622 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4415499671790398705} - 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: 5998593450497219900} - - {fileID: 3629780489728021464} - m_Father: {fileID: 5799643888506327559} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: -35} - m_SizeDelta: {x: 0, y: -70} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &2647123252440241747 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4415499671790398705} - m_CullTransparentMesh: 0 ---- !u!114 &2422947753528889550 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4415499671790398705} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Content: {fileID: 8874164673712864895} - m_Horizontal: 0 - m_Vertical: 1 - m_MovementType: 2 - m_Elasticity: 0.1 - m_Inertia: 1 - m_DecelerationRate: 0.135 - m_ScrollSensitivity: 8 - m_Viewport: {fileID: 5998593450497219900} - m_HorizontalScrollbar: {fileID: 0} - m_VerticalScrollbar: {fileID: 1867595047908987590} - m_HorizontalScrollbarVisibility: 2 - m_VerticalScrollbarVisibility: 1 - m_HorizontalScrollbarSpacing: -3 - m_VerticalScrollbarSpacing: 0 - m_OnValueChanged: - m_PersistentCalls: - m_Calls: [] ---- !u!1 &4552733745538547583 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3002837646857461494} - - component: {fileID: 5802824221943144778} - - component: {fileID: 5969259287707289968} - m_Layer: 5 - m_Name: Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &3002837646857461494 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4552733745538547583} - 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: 3232415723866766923} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 50, y: 0} - m_SizeDelta: {x: -100, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &5802824221943144778 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4552733745538547583} - m_CullTransparentMesh: 0 ---- !u!114 &5969259287707289968 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4552733745538547583} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.8627451, g: 0.8627451, b: 0.8627451, 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_FontData: - m_Font: {fileID: 12800000, guid: 178dfd0eb691dfc48b2338eb02b30bf6, type: 3} - m_FontSize: 28 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 2 - m_MaxSize: 40 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: 'Rotate right - -' ---- !u!114 &4022977335963470680 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4609610332970799658} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreLayout: 0 - m_MinWidth: -1 - m_MinHeight: -1 - m_PreferredWidth: -1 - m_PreferredHeight: 32 - m_FlexibleWidth: -1 - m_FlexibleHeight: -1 - m_LayoutPriority: 1 ---- !u!1 &4830137303834286320 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5998593450497219900} - - component: {fileID: 729234982040270898} - - component: {fileID: 7105678356492016603} - - component: {fileID: 7102818174696672001} - m_Layer: 5 - m_Name: InventoryViewport - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &5998593450497219900 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4830137303834286320} - 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: 8874164673712864895} - m_Father: {fileID: 8427711914959311622} - 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: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0, y: 1} ---- !u!222 &729234982040270898 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4830137303834286320} - m_CullTransparentMesh: 0 ---- !u!114 &7105678356492016603 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4830137303834286320} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3} - m_Name: - m_EditorClassIdentifier: - m_ShowMaskGraphic: 0 ---- !u!114 &7102818174696672001 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4830137303834286320} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3312d7739989d2b4e91e6319e9a96d76, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Padding: {x: 0, y: 0, z: 0, w: 0} - m_Softness: {x: 0, y: 0} ---- !u!1 &4927286044168391358 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8108394480977598239} - m_Layer: 5 - m_Name: RotateLeft - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &8108394480977598239 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4927286044168391358} - 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: 8996835591626678520} - - {fileID: 2745197201941667664} - m_Father: {fileID: 2179149627488415654} - 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: 40} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!1 &5354091903459015919 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1787738287343351759} - - component: {fileID: 7630153180359230226} - - component: {fileID: 148019005351308044} - - component: {fileID: 6250080024623614007} - m_Layer: 5 - m_Name: Controls - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1787738287343351759 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5354091903459015919} - 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: 2689089443476997446} - - {fileID: 3846954139654071970} - - {fileID: 5018572182474487300} - - {fileID: 5204696006304160261} - - {fileID: 2706301229408136624} - m_Father: {fileID: 4103814012636034508} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &7630153180359230226 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5354091903459015919} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Padding: - m_Left: 10 - m_Right: 10 - m_Top: 10 - m_Bottom: 10 - m_ChildAlignment: 0 - m_Spacing: 10 - m_ChildForceExpandWidth: 1 - m_ChildForceExpandHeight: 0 - m_ChildControlWidth: 1 - m_ChildControlHeight: 1 - m_ChildScaleWidth: 0 - m_ChildScaleHeight: 0 - m_ReverseArrangement: 0 ---- !u!222 &148019005351308044 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5354091903459015919} - m_CullTransparentMesh: 0 ---- !u!114 &6250080024623614007 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5354091903459015919} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.078431375, g: 0.078431375, b: 0.11764706, a: 0.78431374} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 0 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &5674966324271168543 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7577603259920304273} - - component: {fileID: 676703142763329078} - - component: {fileID: 3726917457037375768} - - component: {fileID: 1357391699274850458} - - component: {fileID: 8302479038243238012} - - component: {fileID: 1170116247793472876} - - component: {fileID: 1806886697017712247} - m_Layer: 5 - m_Name: OverlayInventorySideBarContainer - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &7577603259920304273 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5674966324271168543} - 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: 5799643888506327559} - m_Father: {fileID: 4182533117752597262} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 1, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: -30, y: 0} - m_SizeDelta: {x: 360, y: -40} - m_Pivot: {x: 1, y: 0.5} ---- !u!222 &676703142763329078 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5674966324271168543} - m_CullTransparentMesh: 0 ---- !u!114 &3726917457037375768 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5674966324271168543} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.15686275, g: 0.15686275, b: 0.19607843, a: 0.78431374} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 2 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!225 &1357391699274850458 -CanvasGroup: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5674966324271168543} - m_Enabled: 1 - m_Alpha: 1 - m_Interactable: 1 - m_BlocksRaycasts: 1 - m_IgnoreParentGroups: 0 ---- !u!114 &8302479038243238012 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5674966324271168543} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: e2b3d7e6954ec474a841cdbeba761bb0, type: 3} - m_Name: - m_EditorClassIdentifier: - msLocalAnimationOffset: 0 - movementDirection: 4 - movementSmoothDamp: 0.2 - movementMagnitude: 80 - animateAlpha: 1 - alphaSpeed: 4 ---- !u!114 &1170116247793472876 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5674966324271168543} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 6a0de2eb9611c1142a4e0fedc3681463, type: 3} - m_Name: - m_EditorClassIdentifier: - viewContainer: {fileID: 8874164673712864895} - viewPrefab: {fileID: 1606553523780072951, guid: daa99ef83b6e47146a53ce74a2a3b99c, - type: 3} - expandableItemPrefab: {fileID: 4281661338799075068, guid: 8c5e795998381fb43af509efb48d1b1c, - type: 3} ---- !u!114 &1806886697017712247 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5674966324271168543} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5fb55c9353d5f9f4b90f125ad87129d0, type: 3} - m_Name: - m_EditorClassIdentifier: - onPointerEnter: - m_PersistentCalls: - m_Calls: [] - onPointerExit: - m_PersistentCalls: - m_Calls: [] - invokeStateChangeOnHover: 0 - cursorOverride: - value: 0 - checkMouseInsideRectOnEnable: 1 ---- !u!1 &5754900020793024216 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8596934783316770823} - - component: {fileID: 5001761715881346257} - - component: {fileID: 5082285198244148419} - - component: {fileID: 9029961632368557112} - - component: {fileID: 2112761193569647769} - - component: {fileID: 5281237353347035187} - - component: {fileID: 5673830809506211472} - m_Layer: 5 - m_Name: Errors - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &8596934783316770823 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5754900020793024216} - 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: 7682320369076564723} - - {fileID: 7729614257948850543} - m_Father: {fileID: 4103814012636034508} - m_RootOrder: 2 - 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: 1} ---- !u!114 &5001761715881346257 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5754900020793024216} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.078431375, g: 0.078431375, b: 0.11764706, a: 0.78431374} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!114 &5082285198244148419 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5754900020793024216} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Padding: - m_Left: 10 - m_Right: 10 - m_Top: 10 - m_Bottom: 10 - m_ChildAlignment: 0 - m_Spacing: 10 - m_ChildForceExpandWidth: 1 - m_ChildForceExpandHeight: 0 - m_ChildControlWidth: 1 - m_ChildControlHeight: 1 - m_ChildScaleWidth: 0 - m_ChildScaleHeight: 1 - m_ReverseArrangement: 0 ---- !u!114 &9029961632368557112 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5754900020793024216} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreLayout: 0 - m_MinWidth: -1 - m_MinHeight: -1 - m_PreferredWidth: -1 - m_PreferredHeight: -1 - m_FlexibleWidth: -1 - m_FlexibleHeight: -1 - m_LayoutPriority: 1 ---- !u!222 &2112761193569647769 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5754900020793024216} - m_CullTransparentMesh: 0 ---- !u!225 &5281237353347035187 -CanvasGroup: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5754900020793024216} - m_Enabled: 1 - m_Alpha: 1 - m_Interactable: 1 - m_BlocksRaycasts: 1 - m_IgnoreParentGroups: 0 ---- !u!114 &5673830809506211472 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5754900020793024216} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: feefe8f98170a664b81619bf4c326179, type: 3} - m_Name: - m_EditorClassIdentifier: - container: {fileID: 7729614257948850543} - errorPanelPrefab: {fileID: 5022688277923585052, guid: 24453bde1d1dd224f91530db053813a3, - type: 3} - layoutElement: {fileID: 9029961632368557112} - canvasGroup: {fileID: 5281237353347035187} ---- !u!1 &6649120922415635038 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5018572182474487300} - - component: {fileID: 7291974092330446212} - - component: {fileID: 2984885500626134918} - - component: {fileID: 6714407189032792032} - - component: {fileID: 7493687970332396691} - - component: {fileID: 2946177782193584775} - - component: {fileID: 1548890685023131448} - m_Layer: 5 - m_Name: SaveButtonContainer - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &5018572182474487300 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6649120922415635038} - 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: 3875207306295828178} - m_Father: {fileID: 1787738287343351759} - m_RootOrder: 2 - 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.5, y: 0.5} ---- !u!114 &7291974092330446212 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6649120922415635038} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreLayout: 0 - m_MinWidth: -1 - m_MinHeight: -1 - m_PreferredWidth: -1 - m_PreferredHeight: 32 - m_FlexibleWidth: -1 - m_FlexibleHeight: -1 - m_LayoutPriority: 1 ---- !u!222 &2984885500626134918 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6649120922415635038} - m_CullTransparentMesh: 0 ---- !u!114 &6714407189032792032 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6649120922415635038} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 0} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 0 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!225 &7493687970332396691 -CanvasGroup: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6649120922415635038} - m_Enabled: 1 - m_Alpha: 1 - m_Interactable: 1 - m_BlocksRaycasts: 1 - m_IgnoreParentGroups: 0 ---- !u!114 &2946177782193584775 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6649120922415635038} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5fb55c9353d5f9f4b90f125ad87129d0, type: 3} - m_Name: - m_EditorClassIdentifier: - onPointerEnter: - m_PersistentCalls: - m_Calls: [] - onPointerExit: - m_PersistentCalls: - m_Calls: [] - invokeStateChangeOnHover: 0 - cursorOverride: - value: 0 - checkMouseInsideRectOnEnable: 1 ---- !u!114 &1548890685023131448 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6649120922415635038} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 87bc399e111c0c141beea2bdbbfe9ae5, type: 3} - m_Name: - m_EditorClassIdentifier: - hoverable: {fileID: 2946177782193584775} - message: ---- !u!1 &7005863946417993431 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7132505632161233089} - - component: {fileID: 2365040850361215559} - - component: {fileID: 5013856431352351148} - m_Layer: 5 - m_Name: MirrorImage - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &7132505632161233089 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7005863946417993431} - 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: 4773850691167363365} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 50, y: 0} - m_SizeDelta: {x: 40, y: 0} - m_Pivot: {x: 0, y: 0.5} ---- !u!222 &2365040850361215559 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7005863946417993431} - m_CullTransparentMesh: 0 ---- !u!114 &5013856431352351148 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7005863946417993431} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.39215687, g: 0.39215687, b: 0.43137255, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: b55de79f547b21342a7d52d5060ae17d, type: 3} - m_Type: 0 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &7053431978305007608 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2689089443476997446} - - component: {fileID: 17638883000482408} - - component: {fileID: 5910685093444210421} - - component: {fileID: 3040736624674294022} - m_Layer: 5 - m_Name: Header - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2689089443476997446 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7053431978305007608} - 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: 1787738287343351759} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 1} ---- !u!222 &17638883000482408 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7053431978305007608} - m_CullTransparentMesh: 0 ---- !u!114 &5910685093444210421 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7053431978305007608} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.29411766, g: 0.7254902, b: 0.7053667, 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_FontData: - m_Font: {fileID: 12800000, guid: b9f47330c8d3fd443a5e4dbae17f45a7, type: 3} - m_FontSize: 36 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 3 - m_MaxSize: 48 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: Blueprint ---- !u!114 &3040736624674294022 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7053431978305007608} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreLayout: 0 - m_MinWidth: -1 - m_MinHeight: -1 - m_PreferredWidth: -1 - m_PreferredHeight: 48 - m_FlexibleWidth: -1 - m_FlexibleHeight: -1 - m_LayoutPriority: 1 ---- !u!1 &7758863102447702561 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2179149627488415654} - - component: {fileID: 9076886132219016795} - - component: {fileID: 2210099289925315262} - - component: {fileID: 8881567603479619194} - m_Layer: 5 - m_Name: EditorStateSideBar - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2179149627488415654 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7758863102447702561} - 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: 4773850691167363365} - - {fileID: 8108394480977598239} - - {fileID: 3232415723866766923} - m_Father: {fileID: 3660100161524233110} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &9076886132219016795 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7758863102447702561} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Padding: - m_Left: 10 - m_Right: 10 - m_Top: 10 - m_Bottom: 10 - m_ChildAlignment: 0 - m_Spacing: 10 - m_ChildForceExpandWidth: 1 - m_ChildForceExpandHeight: 0 - m_ChildControlWidth: 1 - m_ChildControlHeight: 0 - m_ChildScaleWidth: 0 - m_ChildScaleHeight: 0 - m_ReverseArrangement: 0 ---- !u!222 &2210099289925315262 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7758863102447702561} - m_CullTransparentMesh: 0 ---- !u!114 &8881567603479619194 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7758863102447702561} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.078431375, g: 0.078431375, b: 0.11764706, a: 0.78431374} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 0 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &7787136909753771499 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8874164673712864895} - - component: {fileID: 7317811041870258966} - - component: {fileID: 8301761301231208108} - m_Layer: 5 - m_Name: ViewportContent - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &8874164673712864895 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7787136909753771499} - 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: 5998593450497219900} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0, y: 1} ---- !u!114 &7317811041870258966 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7787136909753771499} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Padding: - m_Left: 0 - m_Right: 0 - m_Top: 0 - m_Bottom: 0 - m_ChildAlignment: 1 - m_Spacing: 0 - m_ChildForceExpandWidth: 0 - m_ChildForceExpandHeight: 0 - m_ChildControlWidth: 1 - m_ChildControlHeight: 1 - m_ChildScaleWidth: 0 - m_ChildScaleHeight: 0 - m_ReverseArrangement: 0 ---- !u!114 &8301761301231208108 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7787136909753771499} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HorizontalFit: 0 - m_VerticalFit: 2 ---- !u!1 &8144817767331901347 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7387966786729839313} - - component: {fileID: 1205706668460713591} - m_Layer: 5 - m_Name: Sliding Area - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &7387966786729839313 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8144817767331901347} - 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: 5884525049298447935} - m_Father: {fileID: 3629780489728021464} - 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: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &1205706668460713591 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8144817767331901347} - m_CullTransparentMesh: 0 ---- !u!1 &8796218559287805626 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4103814012636034508} - - component: {fileID: 7210131190310212549} - - component: {fileID: 4667013163052855826} - - component: {fileID: 7958427289901331621} - - component: {fileID: 4737992999563805898} - - component: {fileID: 6879205927546333943} - - component: {fileID: 7693724912663897459} - - component: {fileID: 1711626291552416733} - - component: {fileID: 2945648261188240539} - m_Layer: 5 - m_Name: BlueprintInfoSideBarContainer - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &4103814012636034508 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8796218559287805626} - 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: 1787738287343351759} - - {fileID: 4658757715829701963} - - {fileID: 8596934783316770823} - m_Father: {fileID: 4182533117752597262} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 20, y: -20} - m_SizeDelta: {x: 380, y: 0} - m_Pivot: {x: 0, y: 1} ---- !u!222 &7210131190310212549 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8796218559287805626} - m_CullTransparentMesh: 0 ---- !u!114 &4667013163052855826 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8796218559287805626} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.15686275, g: 0.15686275, b: 0.19607843, a: 0.78431374} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 2 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!225 &7958427289901331621 -CanvasGroup: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8796218559287805626} - m_Enabled: 1 - m_Alpha: 1 - m_Interactable: 1 - m_BlocksRaycasts: 1 - m_IgnoreParentGroups: 0 ---- !u!114 &4737992999563805898 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8796218559287805626} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: e2b3d7e6954ec474a841cdbeba761bb0, type: 3} - m_Name: - m_EditorClassIdentifier: - msLocalAnimationOffset: 0 - movementDirection: 2 - movementSmoothDamp: 0.2 - movementMagnitude: 80 - animateAlpha: 1 - alphaSpeed: 4 ---- !u!114 &6879205927546333943 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8796218559287805626} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0e4875660b5f37640b19c1158eca873e, type: 3} - m_Name: - m_EditorClassIdentifier: - clearButton: {fileID: 1725880023680399003} - saveButtonTooltipTrigger: {fileID: 1548890685023131448} - saveButton: {fileID: 556960494971799033} - exportButton: {fileID: 8811278844542435630} - blueprintNameInput: {fileID: 1768342692160745610} - errorListController: {fileID: 5673830809506211472} - saveButtonCanvasGroup: {fileID: 4357921600955329012} - gridTotalsView: {fileID: 1979450873785362252} ---- !u!114 &7693724912663897459 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8796218559287805626} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5fb55c9353d5f9f4b90f125ad87129d0, type: 3} - m_Name: - m_EditorClassIdentifier: - onPointerEnter: - m_PersistentCalls: - m_Calls: [] - onPointerExit: - m_PersistentCalls: - m_Calls: [] - invokeStateChangeOnHover: 0 - cursorOverride: - value: 0 - checkMouseInsideRectOnEnable: 1 ---- !u!114 &1711626291552416733 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8796218559287805626} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HorizontalFit: 0 - m_VerticalFit: 2 ---- !u!114 &2945648261188240539 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8796218559287805626} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Padding: - m_Left: 10 - m_Right: 10 - m_Top: 10 - m_Bottom: 10 - m_ChildAlignment: 0 - m_Spacing: 10 - m_ChildForceExpandWidth: 1 - m_ChildForceExpandHeight: 0 - m_ChildControlWidth: 1 - m_ChildControlHeight: 1 - m_ChildScaleWidth: 0 - m_ChildScaleHeight: 0 - m_ReverseArrangement: 0 ---- !u!1001 &354083146658662769 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 4103814012636034508} - m_Modifications: - - target: {fileID: 439131934290318373, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_Name - value: EnergyProperty - objectReference: {fileID: 0} - - target: {fileID: 578165970563627739, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_Color.r - value: 0.15686275 - objectReference: {fileID: 0} - - target: {fileID: 578165970563627739, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_Color.g - value: 0.15686275 - objectReference: {fileID: 0} - - target: {fileID: 578165970563627739, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_Color.b - value: 0.19607843 - objectReference: {fileID: 0} - - target: {fileID: 1193180719297255065, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1193180719297255065, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1193180719297255065, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1193180719297255065, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1193180719297255065, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1193180719297255065, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1850733431255038105, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1850733431255038105, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1850733431255038105, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1850733431255038105, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1850733431255038105, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1850733431255038105, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2108702310940873097, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2108702310940873097, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2108702310940873097, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2108702310940873097, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2108702310940873097, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2108702310940873097, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2650535328695271683, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2650535328695271683, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2650535328695271683, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2650535328695271683, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2650535328695271683, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2650535328695271683, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2792576165655912446, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2792576165655912446, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2792576165655912446, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2792576165655912446, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2792576165655912446, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2792576165655912446, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2955502408402372115, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2955502408402372115, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2955502408402372115, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2955502408402372115, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2955502408402372115, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2955502408402372115, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3308087561731895043, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3308087561731895043, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3308087561731895043, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3308087561731895043, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3308087561731895043, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3308087561731895043, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3380397937280386038, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3380397937280386038, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3380397937280386038, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3380397937280386038, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3380397937280386038, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3380397937280386038, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4628118595394695098, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4628118595394695098, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4628118595394695098, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4628118595394695098, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4628118595394695098, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4628118595394695098, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4667766091273924356, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_Name - value: Totals - objectReference: {fileID: 0} - - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_LocalRotation.x - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_LocalRotation.y - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_LocalRotation.z - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_RootOrder - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchorMin.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchorMax.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_Pivot.x - value: 0.5 - objectReference: {fileID: 0} - - target: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_Pivot.y - value: 0.5 - objectReference: {fileID: 0} - - target: {fileID: 4960394495526504106, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4960394495526504106, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4960394495526504106, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4960394495526504106, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4960394495526504106, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4960394495526504106, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5409923149971005255, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5409923149971005255, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5409923149971005255, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5409923149971005255, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5409923149971005255, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5409923149971005255, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5559218070099576809, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_PreferredHeight - value: 48 - objectReference: {fileID: 0} - - target: {fileID: 6024374948750439173, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_Color.r - value: 0.15686275 - objectReference: {fileID: 0} - - target: {fileID: 6024374948750439173, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_Color.g - value: 0.15686275 - objectReference: {fileID: 0} - - target: {fileID: 6024374948750439173, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_Color.b - value: 0.19607843 - objectReference: {fileID: 0} - - target: {fileID: 6429509029354871943, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_FontData.m_FontSize - value: 36 - objectReference: {fileID: 0} - - target: {fileID: 6429509029354871943, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_FontData.m_Alignment - value: 4 - objectReference: {fileID: 0} - - target: {fileID: 7146960723701944662, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_ChildControlHeight - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 7146960723701944662, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_ChildScaleHeight - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7643148814960059279, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_Color.r - value: 0.15686275 - objectReference: {fileID: 0} - - target: {fileID: 7643148814960059279, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_Color.g - value: 0.15686275 - objectReference: {fileID: 0} - - target: {fileID: 7643148814960059279, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_Color.b - value: 0.19607843 - objectReference: {fileID: 0} - - target: {fileID: 7997643683084896927, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_Color.r - value: 0.15686275 - objectReference: {fileID: 0} - - target: {fileID: 7997643683084896927, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_Color.g - value: 0.15686275 - objectReference: {fileID: 0} - - target: {fileID: 7997643683084896927, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_Color.b - value: 0.19607843 - objectReference: {fileID: 0} - - target: {fileID: 8174340128288577755, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_Color.r - value: 0.078431375 - objectReference: {fileID: 0} - - target: {fileID: 8174340128288577755, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_Color.g - value: 0.078431375 - objectReference: {fileID: 0} - - target: {fileID: 8174340128288577755, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_Color.b - value: 0.11764706 - objectReference: {fileID: 0} - - target: {fileID: 8174340128288577755, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_Color.a - value: 0.78431374 - objectReference: {fileID: 0} - - target: {fileID: 9033612555826058784, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 9033612555826058784, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 9033612555826058784, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 9033612555826058784, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 9033612555826058784, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 9033612555826058784, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 9175090477226035421, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 9175090477226035421, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 9175090477226035421, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 9175090477226035421, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 9175090477226035421, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 9175090477226035421, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: c63a451a37c9c354cb774213e6858958, type: 3} ---- !u!224 &4658757715829701963 stripped -RectTransform: - m_CorrespondingSourceObject: {fileID: 4922099915345720378, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - m_PrefabInstance: {fileID: 354083146658662769} - m_PrefabAsset: {fileID: 0} ---- !u!114 &1979450873785362252 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 2274767151163960893, guid: c63a451a37c9c354cb774213e6858958, - type: 3} - m_PrefabInstance: {fileID: 354083146658662769} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: e442b55f9f8690a4f84f8cca8e9f0779, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1001 &691807619990891598 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 4773850691167363365} - m_Modifications: - - target: {fileID: 1433087424286845535, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_Name - value: KeybindingImage - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_RootOrder - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_SizeDelta.x - value: 40 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_AnchorMin.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_AnchorMax.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_AnchorMax.y - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_Pivot.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_Pivot.y - value: 0.5 - objectReference: {fileID: 0} - - target: {fileID: 4169545428920601791, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_Text - value: 'V - -' - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 46bad96ed5b13374e951dfa21274d564, type: 3} ---- !u!224 &3376785686518237414 stripped -RectTransform: - m_CorrespondingSourceObject: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - m_PrefabInstance: {fileID: 691807619990891598} - m_PrefabAsset: {fileID: 0} ---- !u!114 &6023891345794371943 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 6485432082526420265, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - m_PrefabInstance: {fileID: 691807619990891598} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 002a2f9cf079cf348bbdf9a57a680218, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1001 &715006062476524667 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 1787738287343351759} - m_Modifications: - - target: {fileID: 944948028832328603, guid: 3b615f3a5808fcd4da198ad89c20ad8f, - type: 3} - propertyPath: m_Color.r - value: 0.8627451 - objectReference: {fileID: 0} - - target: {fileID: 944948028832328603, guid: 3b615f3a5808fcd4da198ad89c20ad8f, - type: 3} - propertyPath: m_Color.g - value: 0.8627451 - objectReference: {fileID: 0} - - target: {fileID: 944948028832328603, guid: 3b615f3a5808fcd4da198ad89c20ad8f, - type: 3} - propertyPath: m_Color.b - value: 0.8627451 - objectReference: {fileID: 0} - - target: {fileID: 944948028832328603, guid: 3b615f3a5808fcd4da198ad89c20ad8f, - type: 3} - propertyPath: m_Color.a - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 2224872484384810980, guid: 3b615f3a5808fcd4da198ad89c20ad8f, - type: 3} - propertyPath: m_SizeDelta.x - value: 80 - objectReference: {fileID: 0} - - target: {fileID: 2859131309877133070, guid: 3b615f3a5808fcd4da198ad89c20ad8f, - type: 3} - propertyPath: m_RootOrder - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3896904596393045585, guid: 3b615f3a5808fcd4da198ad89c20ad8f, - type: 3} - propertyPath: m_Name - value: BlueprintName - objectReference: {fileID: 0} - - target: {fileID: 4100128200304327979, guid: 3b615f3a5808fcd4da198ad89c20ad8f, - type: 3} - propertyPath: m_RootOrder - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4160471295462912040, guid: 3b615f3a5808fcd4da198ad89c20ad8f, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 40 - objectReference: {fileID: 0} - - target: {fileID: 4160471295462912040, guid: 3b615f3a5808fcd4da198ad89c20ad8f, - type: 3} - propertyPath: m_SizeDelta.x - value: -80 - objectReference: {fileID: 0} - - target: {fileID: 4314459838352599801, guid: 3b615f3a5808fcd4da198ad89c20ad8f, - type: 3} - propertyPath: m_Color.r - value: 0.15686275 - objectReference: {fileID: 0} - - target: {fileID: 4314459838352599801, guid: 3b615f3a5808fcd4da198ad89c20ad8f, - type: 3} - propertyPath: m_Color.g - value: 0.15686275 - objectReference: {fileID: 0} - - target: {fileID: 4314459838352599801, guid: 3b615f3a5808fcd4da198ad89c20ad8f, - type: 3} - propertyPath: m_Color.b - value: 0.19607843 - objectReference: {fileID: 0} - - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, - type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, - type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, - type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, - type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, - type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, - type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, - type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, - type: 3} - propertyPath: m_RootOrder - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, - type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, - type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, - type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, - type: 3} - propertyPath: m_AnchorMin.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, - type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, - type: 3} - propertyPath: m_AnchorMax.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, - type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, - type: 3} - propertyPath: m_Pivot.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, - type: 3} - propertyPath: m_Pivot.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, - type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4991562525011218996, guid: 3b615f3a5808fcd4da198ad89c20ad8f, - type: 3} - propertyPath: m_Text - value: 'Name - -' - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 3b615f3a5808fcd4da198ad89c20ad8f, type: 3} ---- !u!1 &4609610332970799658 stripped -GameObject: - m_CorrespondingSourceObject: {fileID: 3896904596393045585, guid: 3b615f3a5808fcd4da198ad89c20ad8f, - type: 3} - m_PrefabInstance: {fileID: 715006062476524667} - m_PrefabAsset: {fileID: 0} ---- !u!114 &1768342692160745610 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 1253791210448866545, guid: 3b615f3a5808fcd4da198ad89c20ad8f, - type: 3} - m_PrefabInstance: {fileID: 715006062476524667} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4609610332970799658} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: bf8fba0da7edddb4ebd669167b4814e7, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!224 &3846954139654071970 stripped -RectTransform: - m_CorrespondingSourceObject: {fileID: 4363731104572988121, guid: 3b615f3a5808fcd4da198ad89c20ad8f, - type: 3} - m_PrefabInstance: {fileID: 715006062476524667} - m_PrefabAsset: {fileID: 0} ---- !u!1001 &4393015937855230145 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 1787738287343351759} - m_Modifications: - - target: {fileID: 350557258748702759, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_Text - value: 'Export to clipboard - -' - objectReference: {fileID: 0} - - target: {fileID: 1600893048667343851, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_PreferredHeight - value: 32 - objectReference: {fileID: 0} - - target: {fileID: 5259033962641442089, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_Name - value: ExportToClipboard - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_LocalRotation.x - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_LocalRotation.y - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_LocalRotation.z - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_RootOrder - value: 3 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_AnchorMin.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_AnchorMax.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_Pivot.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_Pivot.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} ---- !u!114 &8811278844542435630 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - m_PrefabInstance: {fileID: 4393015937855230145} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!224 &5204696006304160261 stripped -RectTransform: - m_CorrespondingSourceObject: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - m_PrefabInstance: {fileID: 4393015937855230145} - m_PrefabAsset: {fileID: 0} ---- !u!1001 &4686676328426509334 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 5018572182474487300} - m_Modifications: - - target: {fileID: 350557258748702759, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_Text - value: 'Save - -' - objectReference: {fileID: 0} - - target: {fileID: 350557258748702759, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_Color.r - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 350557258748702759, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_Color.g - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 350557258748702759, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_Color.b - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 350557258748702759, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_Color.a - value: 0.78431374 - objectReference: {fileID: 0} - - target: {fileID: 1600893048667343851, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_PreferredHeight - value: 32 - objectReference: {fileID: 0} - - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_StringArgument - value: UI_SFX_ButtonSelectPositive - objectReference: {fileID: 0} - - target: {fileID: 5259033962641442089, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_Name - value: Save - objectReference: {fileID: 0} - - target: {fileID: 5259033962641442089, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_IsActive - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_RootOrder - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_AnchorMax.y - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_Pivot.y - value: 0.5 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_AnchorMin.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_AnchorMax.x - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_Pivot.x - value: 0.5 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} ---- !u!224 &3875207306295828178 stripped -RectTransform: - m_CorrespondingSourceObject: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - m_PrefabInstance: {fileID: 4686676328426509334} - m_PrefabAsset: {fileID: 0} ---- !u!114 &556960494971799033 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - m_PrefabInstance: {fileID: 4686676328426509334} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 716561402804654399} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1 &716561402804654399 stripped -GameObject: - m_CorrespondingSourceObject: {fileID: 5259033962641442089, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - m_PrefabInstance: {fileID: 4686676328426509334} - m_PrefabAsset: {fileID: 0} ---- !u!1001 &5084870212214976593 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 3232415723866766923} - m_Modifications: - - target: {fileID: 1433087424286845535, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_Name - value: KeybindingView - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_RootOrder - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_SizeDelta.x - value: 40 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_SizeDelta.y - value: 40 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_AnchorMin.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_AnchorMax.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_Pivot.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_Pivot.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4169545428920601791, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_Text - value: 'E - -' - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 46bad96ed5b13374e951dfa21274d564, type: 3} ---- !u!224 &7049291656871662841 stripped -RectTransform: - m_CorrespondingSourceObject: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - m_PrefabInstance: {fileID: 5084870212214976593} - m_PrefabAsset: {fileID: 0} ---- !u!1001 &5855626643477489524 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 1787738287343351759} - m_Modifications: - - target: {fileID: 350557258748702759, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_Text - value: Clear - objectReference: {fileID: 0} - - target: {fileID: 350557258748702759, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_Color.r - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 350557258748702759, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_Color.g - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 350557258748702759, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_Color.b - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 350557258748702759, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_Color.a - value: 0.78431374 - objectReference: {fileID: 0} - - target: {fileID: 1600893048667343851, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_PreferredHeight - value: 32 - objectReference: {fileID: 0} - - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_StringArgument - value: UI_SFX_ButtonSelectNegative - objectReference: {fileID: 0} - - target: {fileID: 5259033962641442089, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_Name - value: Clear - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_LocalRotation.x - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_LocalRotation.y - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_LocalRotation.z - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_RootOrder - value: 4 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_AnchorMin.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_AnchorMax.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_Pivot.x - value: 0.5 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_Pivot.y - value: 0.5 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} ---- !u!224 &2706301229408136624 stripped -RectTransform: - m_CorrespondingSourceObject: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - m_PrefabInstance: {fileID: 5855626643477489524} - m_PrefabAsset: {fileID: 0} ---- !u!114 &1725880023680399003 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - m_PrefabInstance: {fileID: 5855626643477489524} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1001 &6601755473039574096 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 8108394480977598239} - m_Modifications: - - target: {fileID: 1433087424286845535, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_Name - value: KeybindingView - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_RootOrder - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_SizeDelta.x - value: 40 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_SizeDelta.y - value: 40 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_AnchorMin.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_AnchorMax.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_Pivot.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_Pivot.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4169545428920601791, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - propertyPath: m_Text - value: 'Q - -' - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 46bad96ed5b13374e951dfa21274d564, type: 3} ---- !u!224 &8996835591626678520 stripped -RectTransform: - m_CorrespondingSourceObject: {fileID: 2829681056326362280, guid: 46bad96ed5b13374e951dfa21274d564, - type: 3} - m_PrefabInstance: {fileID: 6601755473039574096} - m_PrefabAsset: {fileID: 0} diff --git a/Assets/Project/Prefabs/UI/Components/ButtonAbout.prefab b/Assets/Project/Prefabs/UI/Components/ButtonAbout.prefab index b746fb8d..fdba770d 100644 --- a/Assets/Project/Prefabs/UI/Components/ButtonAbout.prefab +++ b/Assets/Project/Prefabs/UI/Components/ButtonAbout.prefab @@ -60,6 +60,7 @@ MonoBehaviour: 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: @@ -91,7 +92,6 @@ GameObject: - component: {fileID: 3545356684473220871} - component: {fileID: 2655481112808866155} - component: {fileID: 6912885604421186688} - - component: {fileID: 3697875147597703220} m_Layer: 5 m_Name: ButtonAbout m_TagString: Untagged @@ -142,6 +142,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 0.078431375, g: 0.078431375, b: 0.11764706, a: 0.78431374} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -156,16 +157,3 @@ MonoBehaviour: m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 ---- !u!114 &3697875147597703220 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 9221449550448223102} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 8374529e4f25f944bb879ce1a80ca26c, type: 3} - m_Name: - m_EditorClassIdentifier: - text: {fileID: 5523952797688724795} diff --git a/Assets/Project/Prefabs/UI/Components/ElementTracker.prefab b/Assets/Project/Prefabs/UI/Components/ElementTracker.prefab new file mode 100644 index 00000000..ee0abca0 --- /dev/null +++ b/Assets/Project/Prefabs/UI/Components/ElementTracker.prefab @@ -0,0 +1,88 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &8671147613918288741 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3749315229192436923} + - component: {fileID: 4198621460348428949} + - component: {fileID: 7776026714260187171} + - component: {fileID: 1405560484629786998} + m_Layer: 5 + m_Name: ElementTracker + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3749315229192436923 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8671147613918288741} + 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} + 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.5, y: 0.5} +--- !u!114 &4198621460348428949 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8671147613918288741} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3601d10cf046df54c84cfa2c41681337, type: 3} + m_Name: + m_EditorClassIdentifier: + layoutElement: {fileID: 1405560484629786998} + targetRect: {fileID: 0} + duration: 0.5 +--- !u!114 &7776026714260187171 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8671147613918288741} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ShowMaskGraphic: 1 +--- !u!114 &1405560484629786998 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8671147613918288741} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 diff --git a/Assets/Project/Prefabs/UI/Components/ElementTracker.prefab.meta b/Assets/Project/Prefabs/UI/Components/ElementTracker.prefab.meta new file mode 100644 index 00000000..e4d567e9 --- /dev/null +++ b/Assets/Project/Prefabs/UI/Components/ElementTracker.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: db3e07b36506fa74d886389fbe8cb4f2 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Prefabs/UI/Controls/Button/BorderedButton.prefab b/Assets/Project/Prefabs/UI/Controls/Button/BorderedButton.prefab new file mode 100644 index 00000000..ecfe35b9 --- /dev/null +++ b/Assets/Project/Prefabs/UI/Controls/Button/BorderedButton.prefab @@ -0,0 +1,338 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &6989450881975796316 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 168031645687899048} + m_Modifications: + - target: {fileID: 2434009762545187930, guid: a2eca6e6eaf2e724381d5f3c377a9b85, + type: 3} + propertyPath: m_Name + value: Border + objectReference: {fileID: 0} + - target: {fileID: 2434009762545187930, guid: a2eca6e6eaf2e724381d5f3c377a9b85, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, + type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} +--- !u!1 &4699737589897494022 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 2434009762545187930, guid: a2eca6e6eaf2e724381d5f3c377a9b85, + type: 3} + m_PrefabInstance: {fileID: 6989450881975796316} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &8545892749517957484 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: onPointerExit.m_PersistentCalls.m_Calls.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: onPointerEnter.m_PersistentCalls.m_Calls.Array.size + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: onPointerExit.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: onPointerEnter.m_PersistentCalls.m_Calls.Array.data[2].m_Mode + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: onPointerExit.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 4699737589897494022} + - target: {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: onPointerEnter.m_PersistentCalls.m_Calls.Array.data[2].m_Target + value: + objectReference: {fileID: 4495379317453220933} + - target: {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: onPointerExit.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: onPointerEnter.m_PersistentCalls.m_Calls.Array.data[2].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: onPointerExit.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName + value: SetActive + objectReference: {fileID: 0} + - target: {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: onPointerEnter.m_PersistentCalls.m_Calls.Array.data[2].m_MethodName + value: SetActive + objectReference: {fileID: 0} + - target: {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: onPointerExit.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName + value: UnityEngine.GameObject, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: onPointerEnter.m_PersistentCalls.m_Calls.Array.data[2].m_TargetAssemblyTypeName + value: UnityEngine.GameObject, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: onPointerEnter.m_PersistentCalls.m_Calls.Array.data[2].m_Arguments.m_BoolArgument + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: onPointerExit.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: onPointerEnter.m_PersistentCalls.m_Calls.Array.data[2].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 5259033962641442089, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_Name + value: Button + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_SizeDelta.y + value: 48 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} +--- !u!1 &4495379317453220933 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 5259033962641442089, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + m_PrefabInstance: {fileID: 8545892749517957484} + m_PrefabAsset: {fileID: 0} +--- !u!224 &168031645687899048 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + m_PrefabInstance: {fileID: 8545892749517957484} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Project/Prefabs/UI/Controls/Button/BorderedButton.prefab.meta b/Assets/Project/Prefabs/UI/Controls/Button/BorderedButton.prefab.meta new file mode 100644 index 00000000..71cee7dd --- /dev/null +++ b/Assets/Project/Prefabs/UI/Controls/Button/BorderedButton.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 388b131c3400671468966329b1306ca2 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Prefabs/UI/Controls/Button/Button.prefab b/Assets/Project/Prefabs/UI/Controls/Button/Button.prefab index 44d9473a..a4afdfa3 100644 --- a/Assets/Project/Prefabs/UI/Controls/Button/Button.prefab +++ b/Assets/Project/Prefabs/UI/Controls/Button/Button.prefab @@ -93,8 +93,6 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: text: {fileID: 350557258748702759} - activeColor: {r: 0.29411766, g: 0.7254902, b: 0.7053667, a: 1} - inactiveColor: {r: 0.74509805, g: 0.74509805, b: 0.7647059, a: 1} color: active: {r: 0.29411766, g: 0.7254902, b: 0.7053667, a: 1} inactive: {r: 0.74509805, g: 0.74509805, b: 0.7647059, a: 1} @@ -114,6 +112,7 @@ GameObject: - component: {fileID: 7532406449157013280} - component: {fileID: 3272920608243847292} - component: {fileID: 1600893048667343851} + - component: {fileID: 79002215557044758} m_Layer: 5 m_Name: Button m_TagString: Untagged @@ -193,6 +192,7 @@ MonoBehaviour: m_EditorClassIdentifier: m_Navigation: m_Mode: 3 + m_WrapAround: 0 m_SelectOnUp: {fileID: 0} m_SelectOnDown: {fileID: 0} m_SelectOnLeft: {fileID: 0} @@ -223,12 +223,13 @@ MonoBehaviour: m_PersistentCalls: m_Calls: - m_Target: {fileID: 3272920608243847292} - m_TargetAssemblyTypeName: + m_TargetAssemblyTypeName: Exa.Audio.GlobalAudioPlayerProxy, Assembly-CSharp m_MethodName: Play - m_Mode: 5 + m_Mode: 2 m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_ObjectArgument: {fileID: 11400000, guid: 911c51fedc82b49428337ae7075e4656, + type: 2} + m_ObjectArgumentAssemblyTypeName: Exa.Audio.Sound, Assembly-CSharp m_IntArgument: 0 m_FloatArgument: 0 m_StringArgument: UI_SFX_ButtonClick @@ -250,12 +251,13 @@ MonoBehaviour: m_PersistentCalls: m_Calls: - m_Target: {fileID: 3272920608243847292} - m_TargetAssemblyTypeName: + m_TargetAssemblyTypeName: Exa.Audio.GlobalAudioPlayerProxy, Assembly-CSharp m_MethodName: Play - m_Mode: 5 + m_Mode: 2 m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_ObjectArgument: {fileID: 11400000, guid: b48159f68624a6f4785ccc1ca593a456, + type: 2} + m_ObjectArgumentAssemblyTypeName: Exa.Audio.Sound, Assembly-CSharp m_IntArgument: 0 m_FloatArgument: 0 m_StringArgument: UI_SFX_ButtonHover @@ -336,3 +338,18 @@ MonoBehaviour: m_FlexibleWidth: -1 m_FlexibleHeight: -1 m_LayoutPriority: 1 +--- !u!114 &79002215557044758 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5259033962641442089} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e54039b4af8949c2b115f76c693da40a, type: 3} + m_Name: + m_EditorClassIdentifier: + button: {fileID: 5093804088955523567} + text: {fileID: 350557258748702759} + layoutElement: {fileID: 1600893048667343851} diff --git a/Assets/Project/Prefabs/UI/Controls/Button/HighlightedButton.prefab b/Assets/Project/Prefabs/UI/Controls/Button/HighlightedButton.prefab index 13d446d5..7562111a 100644 --- a/Assets/Project/Prefabs/UI/Controls/Button/HighlightedButton.prefab +++ b/Assets/Project/Prefabs/UI/Controls/Button/HighlightedButton.prefab @@ -12,114 +12,135 @@ PrefabInstance: propertyPath: onPointerExit.m_PersistentCalls.m_Calls.Array.size value: 0 objectReference: {fileID: 0} + - target: {fileID: 359874674127863162, guid: 4436753b620da8f4aa44ab701036f540, + type: 3} + propertyPath: onPointerEnter.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 359874674127863162, guid: 4436753b620da8f4aa44ab701036f540, + type: 3} + propertyPath: onPointerEnter.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName + value: Exa.Audio.GlobalAudioPlayerProxy, Assembly-CSharp + objectReference: {fileID: 0} + - target: {fileID: 359874674127863162, guid: 4436753b620da8f4aa44ab701036f540, + type: 3} + propertyPath: onPointerEnter.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 11400000, guid: b48159f68624a6f4785ccc1ca593a456, + type: 2} - target: {fileID: 359874674127863162, guid: 4436753b620da8f4aa44ab701036f540, type: 3} propertyPath: onPointerEnter.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_StringArgument value: UI_SFX_ButtonHover objectReference: {fileID: 0} + - target: {fileID: 359874674127863162, guid: 4436753b620da8f4aa44ab701036f540, + type: 3} + propertyPath: onPointerEnter.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: Exa.Audio.Sound, Assembly-CSharp + objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_Pivot.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_RootOrder - value: 0 + propertyPath: m_SizeDelta.x + value: 300 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 + propertyPath: m_SizeDelta.y + value: 80 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_SizeDelta.x - value: 300 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_SizeDelta.y - value: 80 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchorMax.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_Pivot.x + propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_Pivot.y + propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - target: {fileID: 7994069015727270563, guid: 4436753b620da8f4aa44ab701036f540, @@ -127,6 +148,31 @@ PrefabInstance: propertyPath: m_Name value: HighlightedButton objectReference: {fileID: 0} + - target: {fileID: 8233641580150254754, guid: 4436753b620da8f4aa44ab701036f540, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8233641580150254754, guid: 4436753b620da8f4aa44ab701036f540, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8233641580150254754, guid: 4436753b620da8f4aa44ab701036f540, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8233641580150254754, guid: 4436753b620da8f4aa44ab701036f540, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8233641580150254754, guid: 4436753b620da8f4aa44ab701036f540, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: - {fileID: 8901350474062417319, guid: 4436753b620da8f4aa44ab701036f540, type: 3} m_SourcePrefab: {fileID: 100100000, guid: 4436753b620da8f4aa44ab701036f540, type: 3} diff --git a/Assets/Project/Prefabs/UI/Controls/Dropdown/Dropdown.prefab b/Assets/Project/Prefabs/UI/Controls/Dropdown/Dropdown.prefab index d51631e3..61bd6061 100644 --- a/Assets/Project/Prefabs/UI/Controls/Dropdown/Dropdown.prefab +++ b/Assets/Project/Prefabs/UI/Controls/Dropdown/Dropdown.prefab @@ -61,8 +61,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: labelText: {fileID: 6665540959298001051} - selectedText: {fileID: 7791772207032264622} + buttonSelectPositive: {fileID: 11400000, guid: 9aae5c7b23a755e4d93b870b00a802ed, + type: 2} + buttonSelectNegative: {fileID: 11400000, guid: bdaa7c8727d197444a1b1e9662639ac3, + type: 2} playerProxy: {fileID: 8619676640294347819} + selectedText: {fileID: 7791772207032264622} tabArrow: {fileID: 7658791969648165921} button: {fileID: 3225811572161413474} selectedTab: {fileID: 2604008715579885882} @@ -510,6 +514,7 @@ MonoBehaviour: m_EditorClassIdentifier: m_Navigation: m_Mode: 3 + m_WrapAround: 0 m_SelectOnUp: {fileID: 0} m_SelectOnDown: {fileID: 0} m_SelectOnLeft: {fileID: 0} @@ -605,12 +610,13 @@ MonoBehaviour: m_PersistentCalls: m_Calls: - m_Target: {fileID: 8619676640294347819} - m_TargetAssemblyTypeName: + m_TargetAssemblyTypeName: Exa.Audio.GlobalAudioPlayerProxy, Assembly-CSharp m_MethodName: Play - m_Mode: 5 + m_Mode: 2 m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_ObjectArgument: {fileID: 11400000, guid: b48159f68624a6f4785ccc1ca593a456, + type: 2} + m_ObjectArgumentAssemblyTypeName: Exa.Audio.Sound, Assembly-CSharp m_IntArgument: 0 m_FloatArgument: 0 m_StringArgument: UI_SFX_ButtonHover diff --git a/Assets/Project/Prefabs/UI/Controls/Dropdown/DropdownTab.prefab b/Assets/Project/Prefabs/UI/Controls/Dropdown/DropdownTab.prefab index abecf0b5..cf94ccf2 100644 --- a/Assets/Project/Prefabs/UI/Controls/Dropdown/DropdownTab.prefab +++ b/Assets/Project/Prefabs/UI/Controls/Dropdown/DropdownTab.prefab @@ -57,6 +57,7 @@ MonoBehaviour: m_EditorClassIdentifier: m_Navigation: m_Mode: 3 + m_WrapAround: 0 m_SelectOnUp: {fileID: 0} m_SelectOnDown: {fileID: 0} m_SelectOnLeft: {fileID: 0} @@ -141,8 +142,6 @@ MonoBehaviour: color: active: {r: 0.29411766, g: 0.7254902, b: 0.7053667, a: 1} inactive: {r: 0.74509805, g: 0.74509805, b: 0.7647059, a: 1} - activeColor: {r: 0.29411766, g: 0.7254902, b: 0.7053667, a: 1} - inactiveColor: {r: 1, g: 1, b: 1, a: 0.78431374} --- !u!225 &4731027747724969547 CanvasGroup: m_ObjectHideFlags: 0 @@ -171,12 +170,13 @@ MonoBehaviour: m_PersistentCalls: m_Calls: - m_Target: {fileID: 3414326900211250384} - m_TargetAssemblyTypeName: + m_TargetAssemblyTypeName: Exa.Audio.GlobalAudioPlayerProxy, Assembly-CSharp m_MethodName: Play - m_Mode: 5 + m_Mode: 2 m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_ObjectArgument: {fileID: 11400000, guid: b48159f68624a6f4785ccc1ca593a456, + type: 2} + m_ObjectArgumentAssemblyTypeName: Exa.Audio.Sound, Assembly-CSharp m_IntArgument: 0 m_FloatArgument: 0 m_StringArgument: UI_SFX_ButtonHover diff --git a/Assets/Project/Prefabs/UI/Controls/Radio/Radio.prefab b/Assets/Project/Prefabs/UI/Controls/Radio/Radio.prefab index 201eb9bf..4ea4777e 100644 --- a/Assets/Project/Prefabs/UI/Controls/Radio/Radio.prefab +++ b/Assets/Project/Prefabs/UI/Controls/Radio/Radio.prefab @@ -374,6 +374,7 @@ MonoBehaviour: m_EditorClassIdentifier: m_Navigation: m_Mode: 3 + m_WrapAround: 0 m_SelectOnUp: {fileID: 0} m_SelectOnDown: {fileID: 0} m_SelectOnLeft: {fileID: 0} @@ -404,12 +405,13 @@ MonoBehaviour: m_PersistentCalls: m_Calls: - m_Target: {fileID: 6457592378605841459} - m_TargetAssemblyTypeName: + m_TargetAssemblyTypeName: Exa.Audio.GlobalAudioPlayerProxy, Assembly-CSharp m_MethodName: Play - m_Mode: 5 + m_Mode: 2 m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_ObjectArgument: {fileID: 11400000, guid: 911c51fedc82b49428337ae7075e4656, + type: 2} + m_ObjectArgumentAssemblyTypeName: Exa.Audio.Sound, Assembly-CSharp m_IntArgument: 0 m_FloatArgument: 0 m_StringArgument: UI_SFX_ButtonClick @@ -455,12 +457,13 @@ MonoBehaviour: m_PersistentCalls: m_Calls: - m_Target: {fileID: 6457592378605841459} - m_TargetAssemblyTypeName: + m_TargetAssemblyTypeName: Exa.Audio.GlobalAudioPlayerProxy, Assembly-CSharp m_MethodName: Play - m_Mode: 5 + m_Mode: 2 m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_ObjectArgument: {fileID: 11400000, guid: b48159f68624a6f4785ccc1ca593a456, + type: 2} + m_ObjectArgumentAssemblyTypeName: Exa.Audio.Sound, Assembly-CSharp m_IntArgument: 0 m_FloatArgument: 0 m_StringArgument: UI_SFX_ButtonHover diff --git a/Assets/Project/Prefabs/UI/Controls/Text/Text.preset b/Assets/Project/Prefabs/UI/Controls/Text/Text.preset index e181310c..2922fa88 100644 --- a/Assets/Project/Prefabs/UI/Controls/Text/Text.preset +++ b/Assets/Project/Prefabs/UI/Controls/Text/Text.preset @@ -123,6 +123,6 @@ Preset: objectReference: {fileID: 0} - target: {fileID: 0} propertyPath: m_Text - value: Blueprint name + value: Placeholder objectReference: {fileID: 0} m_ExcludedProperties: [] diff --git a/Assets/Project/Prefabs/UI/Cursor/Coil.prefab b/Assets/Project/Prefabs/UI/Cursor/Coil.prefab new file mode 100644 index 00000000..19dc5e38 --- /dev/null +++ b/Assets/Project/Prefabs/UI/Cursor/Coil.prefab @@ -0,0 +1,270 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1001307041961291196 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6998155700381744159} + - component: {fileID: 5338450567206359693} + - component: {fileID: 5691734317805794255} + m_Layer: 5 + m_Name: Right + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6998155700381744159 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1001307041961291196} + m_LocalRotation: {x: 0, y: 0, z: -0.38268343, w: 0.92387956} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 8447145912979866346} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -45} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 8, y: 8} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5338450567206359693 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1001307041961291196} + m_CullTransparentMesh: 1 +--- !u!114 &5691734317805794255 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1001307041961291196} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 872738fcf1774144aa58494a1cb6912b, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &3033048932222764626 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1076807892453434654} + - component: {fileID: 6399122225305705686} + - component: {fileID: 8433333085159742016} + m_Layer: 5 + m_Name: Left + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1076807892453434654 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3033048932222764626} + m_LocalRotation: {x: 0, y: 0, z: 0.38268343, w: 0.92387956} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 8447145912979866346} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 45} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 8, y: 8} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6399122225305705686 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3033048932222764626} + m_CullTransparentMesh: 1 +--- !u!114 &8433333085159742016 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3033048932222764626} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 872738fcf1774144aa58494a1cb6912b, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &8600220206882141339 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8447145912979866346} + - component: {fileID: 8803573707547047616} + m_Layer: 5 + m_Name: Coil + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8447145912979866346 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8600220206882141339} + 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: 1076807892453434654} + - {fileID: 6998155700381744159} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 8} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &8803573707547047616 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8600220206882141339} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: eff35b8e819445368d9889186289b0a7, type: 3} + m_Name: + m_EditorClassIdentifier: + magnitude: 2 + left: {fileID: 8433333085159742016} + right: {fileID: 5691734317805794255} + progressToMagnitude: + easeType: 1 + ease: 1 + animationCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0.19054991 + outSlope: 0.19054991 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0.44649628 + - serializedVersion: 3 + time: 0.6 + value: 1 + inSlope: 0.5099926 + outSlope: 0 + tangentMode: 65 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + gradientMap: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 0.39215687} + key1: {r: 0.29411766, g: 0.7254902, b: 0.7058824, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 diff --git a/Assets/Project/Prefabs/UI/Cursor/Coil.prefab.meta b/Assets/Project/Prefabs/UI/Cursor/Coil.prefab.meta new file mode 100644 index 00000000..70c1daca --- /dev/null +++ b/Assets/Project/Prefabs/UI/Cursor/Coil.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 02c87529ed6511a41b6097be0e8ca89e +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Prefabs/UI/Cursor/CursorController.prefab b/Assets/Project/Prefabs/UI/Cursor/CursorController.prefab index 3ec38640..9909cb94 100644 --- a/Assets/Project/Prefabs/UI/Cursor/CursorController.prefab +++ b/Assets/Project/Prefabs/UI/Cursor/CursorController.prefab @@ -167,111 +167,121 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 595289767640309667} m_Modifications: - - target: {fileID: 2526545834633644923, guid: 8a0e78ee9f9284645af4c262c49ce6e7, + - target: {fileID: 520880201992057056, guid: 8a0e78ee9f9284645af4c262c49ce6e7, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_Alpha value: 0 objectReference: {fileID: 0} - target: {fileID: 2526545834633644923, guid: 8a0e78ee9f9284645af4c262c49ce6e7, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_Pivot.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2526545834633644923, guid: 8a0e78ee9f9284645af4c262c49ce6e7, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2526545834633644923, guid: 8a0e78ee9f9284645af4c262c49ce6e7, type: 3} - propertyPath: m_LocalRotation.x + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 2526545834633644923, guid: 8a0e78ee9f9284645af4c262c49ce6e7, type: 3} - propertyPath: m_LocalRotation.y + propertyPath: m_AnchorMax.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2526545834633644923, guid: 8a0e78ee9f9284645af4c262c49ce6e7, type: 3} - propertyPath: m_LocalRotation.z + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2526545834633644923, guid: 8a0e78ee9f9284645af4c262c49ce6e7, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 2526545834633644923, guid: 8a0e78ee9f9284645af4c262c49ce6e7, type: 3} - propertyPath: m_RootOrder + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2526545834633644923, guid: 8a0e78ee9f9284645af4c262c49ce6e7, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2526545834633644923, guid: 8a0e78ee9f9284645af4c262c49ce6e7, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2526545834633644923, guid: 8a0e78ee9f9284645af4c262c49ce6e7, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2526545834633644923, guid: 8a0e78ee9f9284645af4c262c49ce6e7, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2526545834633644923, guid: 8a0e78ee9f9284645af4c262c49ce6e7, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 2526545834633644923, guid: 8a0e78ee9f9284645af4c262c49ce6e7, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2526545834633644923, guid: 8a0e78ee9f9284645af4c262c49ce6e7, + type: 3} + propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2526545834633644923, guid: 8a0e78ee9f9284645af4c262c49ce6e7, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2526545834633644923, guid: 8a0e78ee9f9284645af4c262c49ce6e7, type: 3} - propertyPath: m_AnchorMin.x + propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - target: {fileID: 2526545834633644923, guid: 8a0e78ee9f9284645af4c262c49ce6e7, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2526545834633644923, guid: 8a0e78ee9f9284645af4c262c49ce6e7, type: 3} - propertyPath: m_AnchorMax.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2526545834633644923, guid: 8a0e78ee9f9284645af4c262c49ce6e7, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2526545834633644923, guid: 8a0e78ee9f9284645af4c262c49ce6e7, type: 3} - propertyPath: m_Pivot.x + propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2526545834633644923, guid: 8a0e78ee9f9284645af4c262c49ce6e7, type: 3} - propertyPath: m_Pivot.y + propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 2831231619508610093, guid: 8a0e78ee9f9284645af4c262c49ce6e7, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} - target: {fileID: 8473491723648799222, guid: 8a0e78ee9f9284645af4c262c49ce6e7, type: 3} propertyPath: m_Name diff --git a/Assets/Project/Prefabs/UI/Cursor/VirtualCursor.prefab b/Assets/Project/Prefabs/UI/Cursor/VirtualCursor.prefab index 9ac9360b..f473dee6 100644 --- a/Assets/Project/Prefabs/UI/Cursor/VirtualCursor.prefab +++ b/Assets/Project/Prefabs/UI/Cursor/VirtualCursor.prefab @@ -1,5 +1,79 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!1 &2831231619508610093 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3322757223834771365} + - component: {fileID: 61407982668310946} + - component: {fileID: 520880201992057056} + m_Layer: 5 + m_Name: GaussCannonDecals + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3322757223834771365 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2831231619508610093} + 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: 8803470722545653290} + - {fileID: 3409882435424531314} + - {fileID: 4218495456960071502} + m_Father: {fileID: 7295792280581306516} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 22.5} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 24, y: -54} + m_SizeDelta: {x: 12, y: 38} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &61407982668310946 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2831231619508610093} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 273042c29e8847aaa23857ed200dff27, type: 3} + m_Name: + m_EditorClassIdentifier: + coil1: {fileID: 8447323731430416896} + coil2: {fileID: 2325141452689180504} + coil3: {fileID: 3863457993109926756} + canvasGroup: {fileID: 520880201992057056} + targetAlpha: + active: 1 + inactive: 0 + alphaAnimTime: + active: 0.2 + inactive: 0.5 +--- !u!225 &520880201992057056 +CanvasGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2831231619508610093} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 1 + m_IgnoreParentGroups: 0 --- !u!1 &2843668655339530086 GameObject: m_ObjectHideFlags: 0 @@ -138,18 +212,19 @@ RectTransform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 7295792280581306517} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalRotation: {x: 0, y: 0, z: 0.19509031, w: 0.98078537} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] + m_Children: + - {fileID: 3322757223834771365} m_Father: {fileID: 2709550758379117890} m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 22.5} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} + m_SizeDelta: {x: 48, y: 48} + m_Pivot: {x: 0.5, y: 1} --- !u!222 &7295792280581306518 CanvasRenderer: m_ObjectHideFlags: 0 @@ -178,11 +253,11 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 81d1a13f322568b41b26e9cf1318817a, type: 3} - m_Type: 0 + m_Sprite: {fileID: 21300000, guid: 9096fb611017e694e8ef82e47b1789a5, type: 3} + m_Type: 3 m_PreserveAspect: 0 m_FillCenter: 1 - m_FillMethod: 4 + m_FillMethod: 1 m_FillAmount: 1 m_FillClockwise: 1 m_FillOrigin: 0 @@ -330,97 +405,519 @@ MonoBehaviour: rectTransform: {fileID: 2526545834633644923} normalCursor: {fileID: 2709550758379117890} inputCursor: {fileID: 4104469353826917045} - idleColor: {r: 0.39215687, g: 0.39215687, b: 0.43137255, a: 0.78431374} - activeColor: {r: 0.29411766, g: 0.7254902, b: 0.7053667, a: 1} - removeColor: {r: 0.7058824, g: 0.27450982, b: 0.29411766, a: 1} - infoColor: {r: 1, g: 1, b: 1, a: 1} - cursorColorAnimTime: 0.25 - cursorScaleAnimTime: 0.25 - hoverableCursorSize: - active: 1.25 - inactive: 1 - sizeAnimSettings: - active: - sizeTarget: 0.75 - alphaTarget: 1 - animTime: 0.3 - ease: - easeType: 0 - ease: 15 - animationCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - inactive: - sizeTarget: 1 - alphaTarget: 0.6 - animTime: 0.1 - ease: - easeType: 0 - ease: 15 - animationCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - cursorDragDistanceTolerance: 30 - dragAnimSettings: - active: - animTime: 0.3 - ease: - easeType: 0 - ease: 6 - animationCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - inactive: - animTime: 0.15 - ease: - easeType: 1 - ease: 0 - animationCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 1.3359752 - outSlope: 1.3359752 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0.17083333 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: -1.5903534 - outSlope: -1.5903534 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.06666666 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - inputAction: - m_Name: Input - m_Type: 0 - m_ExpectedControlType: - m_Id: 03a09dbd-1995-4b2f-8920-8c1ce8859c3e - m_Processors: - m_Interactions: - m_SingletonActionBindings: - - m_Name: - m_Id: 1760a10f-1a25-4aaa-8efd-1d594e1b24a0 - m_Path: /leftButton - m_Interactions: + gaussCannonCursorDecal: {fileID: 61407982668310946} + standardCursorFacade: + mouse: {fileID: 3964688019708486267} + idleColor: {r: 0.39215687, g: 0.39215687, b: 0.43137255, a: 0.78431374} + activeColor: {r: 0.29411766, g: 0.7254902, b: 0.7053667, a: 1} + removeColor: {r: 0.7058824, g: 0.27450982, b: 0.29411766, a: 1} + infoColor: {r: 1, g: 1, b: 1, a: 1} + cursorColorAnimTime: 0.25 + cursorScaleAnimTime: 0.25 + hoverableCursorSize: + active: 1.25 + inactive: 1 + sizeAnimSettings: + active: + sizeTarget: 0.75 + alphaTarget: 1 + animTime: 0.3 + ease: + easeType: 0 + ease: 15 + animationCurve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + inactive: + sizeTarget: 1 + alphaTarget: 0.6 + animTime: 0.1 + ease: + easeType: 0 + ease: 15 + animationCurve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + cursorDragDistanceTolerance: 30 + dragAnimSettings: + active: + animTime: 0.3 + ease: + easeType: 0 + ease: 6 + animationCurve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + inactive: + animTime: 0.15 + ease: + easeType: 1 + ease: 0 + animationCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 1.3359752 + outSlope: 1.3359752 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0.17083333 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: -1.5903534 + outSlope: -1.5903534 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.06666666 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + inputAction: + m_Name: Input + m_Type: 0 + m_ExpectedControlType: + m_Id: 03a09dbd-1995-4b2f-8920-8c1ce8859c3e m_Processors: - m_Groups: - m_Action: Input - m_Flags: 0 + m_Interactions: + m_SingletonActionBindings: + - m_Name: + m_Id: 1760a10f-1a25-4aaa-8efd-1d594e1b24a0 + m_Path: /leftButton + m_Interactions: + m_Processors: + m_Groups: + m_Action: + m_Flags: 0 + - m_Name: + m_Id: ed48b5c3-df92-4fa3-8db8-d8be381c12da + m_Path: /leftButton + m_Interactions: + m_Processors: + m_Groups: + m_Action: Input + m_Flags: 0 +--- !u!1001 &1087196587566585024 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 3322757223834771365} + m_Modifications: + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_SizeDelta.y + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8600220206882141339, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_Name + value: Coil1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 02c87529ed6511a41b6097be0e8ca89e, type: 3} +--- !u!224 &8803470722545653290 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + m_PrefabInstance: {fileID: 1087196587566585024} + m_PrefabAsset: {fileID: 0} +--- !u!114 &8447323731430416896 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 8803573707547047616, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + m_PrefabInstance: {fileID: 1087196587566585024} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: eff35b8e819445368d9889186289b0a7, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &5742460298883401124 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 3322757223834771365} + m_Modifications: + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_Pivot.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_SizeDelta.y + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8600220206882141339, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_Name + value: Coil3 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 02c87529ed6511a41b6097be0e8ca89e, type: 3} +--- !u!224 &4218495456960071502 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + m_PrefabInstance: {fileID: 5742460298883401124} + m_PrefabAsset: {fileID: 0} +--- !u!114 &3863457993109926756 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 8803573707547047616, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + m_PrefabInstance: {fileID: 5742460298883401124} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: eff35b8e819445368d9889186289b0a7, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &6514488136076915096 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 3322757223834771365} + m_Modifications: + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_AnchorMax.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_AnchorMin.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_SizeDelta.y + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8600220206882141339, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + propertyPath: m_Name + value: Coil2 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 02c87529ed6511a41b6097be0e8ca89e, type: 3} +--- !u!224 &3409882435424531314 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 8447145912979866346, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + m_PrefabInstance: {fileID: 6514488136076915096} + m_PrefabAsset: {fileID: 0} +--- !u!114 &2325141452689180504 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 8803573707547047616, guid: 02c87529ed6511a41b6097be0e8ca89e, + type: 3} + m_PrefabInstance: {fileID: 6514488136076915096} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: eff35b8e819445368d9889186289b0a7, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/Project/Prefabs/UI/Gameplay/BlockCosts.prefab b/Assets/Project/Prefabs/UI/Gameplay/BlockCosts.prefab new file mode 100644 index 00000000..c7ca3457 --- /dev/null +++ b/Assets/Project/Prefabs/UI/Gameplay/BlockCosts.prefab @@ -0,0 +1,1289 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &26504439308587567 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8892944085168885652} + - component: {fileID: 2487419985046314457} + - component: {fileID: 867350363495810869} + m_Layer: 5 + m_Name: Metals + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8892944085168885652 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 26504439308587567} + 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: 2963310940045631840} + - {fileID: 8056503318451917968} + m_Father: {fileID: 8672196143701985953} + 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.5, y: 0.5} +--- !u!222 &2487419985046314457 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 26504439308587567} + m_CullTransparentMesh: 1 +--- !u!114 &867350363495810869 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 26504439308587567} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 4 + m_Bottom: 4 + m_ChildAlignment: 3 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1 &819854040440497804 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1792497010058463426} + - component: {fileID: 3123830650505063154} + - component: {fileID: 7231465176129703473} + - component: {fileID: 8839323852490801902} + m_Layer: 5 + m_Name: TextContainer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1792497010058463426 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 819854040440497804} + 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: 2895843166032426089} + - {fileID: 9052424163147661654} + m_Father: {fileID: 5262758589820638859} + 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.5, y: 0.5} +--- !u!222 &3123830650505063154 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 819854040440497804} + m_CullTransparentMesh: 1 +--- !u!114 &7231465176129703473 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 819854040440497804} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: 1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &8839323852490801902 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 819854040440497804} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 4 + m_Right: 4 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1 &1187198094349968954 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1998415133030435012} + - component: {fileID: 7502947104338004076} + - component: {fileID: 6898737024012653214} + m_Layer: 5 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1998415133030435012 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1187198094349968954} + 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: 2963310940045631840} + 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, y: 0} + m_SizeDelta: {x: 32, y: 32} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7502947104338004076 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1187198094349968954} + m_CullTransparentMesh: 1 +--- !u!114 &6898737024012653214 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1187198094349968954} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.74509805, g: 0.74509805, b: 0.7647059, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 1419c333373186d4e8271eb44c3532fa, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &1836093309960208352 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2496663008977767101} + - component: {fileID: 1739639398810799773} + - component: {fileID: 6908039854565105163} + m_Layer: 5 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2496663008977767101 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1836093309960208352} + 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: 2863552557656190098} + 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, y: 0} + m_SizeDelta: {x: 24, y: 24} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1739639398810799773 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1836093309960208352} + m_CullTransparentMesh: 1 +--- !u!114 &6908039854565105163 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1836093309960208352} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.754717, g: 0.682377, b: 0.21003917, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: ef04e1d837a51844e8808413c5bc1c41, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &2702235182511106016 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8056503318451917968} + - component: {fileID: 1951839170423585735} + - component: {fileID: 8791313247360601109} + - component: {fileID: 3618154509612254057} + m_Layer: 5 + m_Name: TextContainer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8056503318451917968 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2702235182511106016} + 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: 2688143149555260920} + - {fileID: 1464599765748710889} + m_Father: {fileID: 8892944085168885652} + 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.5, y: 0.5} +--- !u!222 &1951839170423585735 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2702235182511106016} + m_CullTransparentMesh: 1 +--- !u!114 &8791313247360601109 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2702235182511106016} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: 1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &3618154509612254057 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2702235182511106016} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 4 + m_Right: 4 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1 &2945740076287907216 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9052424163147661654} + - component: {fileID: 8170282124317408092} + - component: {fileID: 7161395114026740188} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &9052424163147661654 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2945740076287907216} + 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: 1792497010058463426} + 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.5, y: 0.5} +--- !u!222 &8170282124317408092 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2945740076287907216} + m_CullTransparentMesh: 1 +--- !u!114 &7161395114026740188 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2945740076287907216} + 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: 123 + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 6a58f4621410a334ca09349e074863b6, type: 2} + m_sharedMaterial: {fileID: 2512141245593086724, guid: 6a58f4621410a334ca09349e074863b6, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4278247167 + m_fontColor: {r: 1, g: 0.8695652, 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: 32 + m_fontSizeBase: 32 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 2 + m_HorizontalAlignment: 4 + 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!1 &4413283309792702367 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2688143149555260920} + - component: {fileID: 8849945506332752926} + - component: {fileID: 6810101341765487331} + - component: {fileID: 3486530854681188489} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2688143149555260920 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4413283309792702367} + 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: 8056503318451917968} + 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: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &8849945506332752926 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4413283309792702367} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!222 &6810101341765487331 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4413283309792702367} + m_CullTransparentMesh: 1 +--- !u!114 &3486530854681188489 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4413283309792702367} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5d06e1cd33074c5daca1981ae29d4034, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.74509805, g: 0.74509805, b: 0.7647059, a: 0.39215687} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 08fcb01393113a14bad0223dd5df3fa8, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 + skew: {x: 20, y: 0} +--- !u!1 &4996764847642273916 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8672196143701985953} + - component: {fileID: 5641053587351184426} + - component: {fileID: 408304241213135743} + - component: {fileID: 2920393808637952148} + - component: {fileID: 3813101351726199986} + - component: {fileID: 134261575387057635} + m_Layer: 5 + m_Name: BlockCosts + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8672196143701985953 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4996764847642273916} + 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: 5262758589820638859} + - {fileID: 8892944085168885652} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 260, y: 80} + m_SizeDelta: {x: 200, y: 40} + m_Pivot: {x: 0, y: 0} +--- !u!114 &5641053587351184426 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4996764847642273916} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 4 + m_Right: 4 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 4 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!222 &408304241213135743 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4996764847642273916} + m_CullTransparentMesh: 1 +--- !u!114 &2920393808637952148 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4996764847642273916} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5d06e1cd33074c5daca1981ae29d4034, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.078431375, g: 0.078431375, b: 0.11764706, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 + skew: {x: 20, y: 0} +--- !u!114 &3813101351726199986 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4996764847642273916} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 12834725d7e6e6b409e221744e38d836, type: 3} + m_Name: + m_EditorClassIdentifier: + credits: {fileID: 7161395114026740188} + metals: {fileID: 2417009506358898106} + creditsBackground: {fileID: 6528648522550106359} + metalsBackground: {fileID: 3486530854681188489} +--- !u!114 &134261575387057635 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4996764847642273916} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 40 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &5057000674285114002 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5262758589820638859} + - component: {fileID: 7905434636604601274} + - component: {fileID: 7037053634737753507} + m_Layer: 5 + m_Name: Credits + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5262758589820638859 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5057000674285114002} + 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: 2863552557656190098} + - {fileID: 1792497010058463426} + m_Father: {fileID: 8672196143701985953} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7905434636604601274 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5057000674285114002} + m_CullTransparentMesh: 1 +--- !u!114 &7037053634737753507 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5057000674285114002} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 4 + m_Bottom: 4 + m_ChildAlignment: 3 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1 &5513236646169834883 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2863552557656190098} + - component: {fileID: 2646930203905557555} + - component: {fileID: 3824964318530710271} + - component: {fileID: 6180771340351840106} + m_Layer: 5 + m_Name: IconContainer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2863552557656190098 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5513236646169834883} + 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: 2496663008977767101} + m_Father: {fileID: 5262758589820638859} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2646930203905557555 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5513236646169834883} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 32 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!222 &3824964318530710271 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5513236646169834883} + m_CullTransparentMesh: 1 +--- !u!114 &6180771340351840106 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5513236646169834883} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5d06e1cd33074c5daca1981ae29d4034, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.23529412, g: 0.23529412, b: 0.27450982, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 9ed5f14807d0abb46b875225c7dcb3d2, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 + skew: {x: 20, y: 0} +--- !u!1 &5746809789279510215 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1464599765748710889} + - component: {fileID: 7940730840545904519} + - component: {fileID: 2417009506358898106} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1464599765748710889 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5746809789279510215} + 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: 8056503318451917968} + 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.5, y: 0.5} +--- !u!222 &7940730840545904519 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5746809789279510215} + m_CullTransparentMesh: 1 +--- !u!114 &2417009506358898106 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5746809789279510215} + 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: 123 + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 6a58f4621410a334ca09349e074863b6, type: 2} + m_sharedMaterial: {fileID: 2512141245593086724, guid: 6a58f4621410a334ca09349e074863b6, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4291018430 + m_fontColor: {r: 0.74509805, g: 0.74509805, b: 0.7647059, 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: 32 + m_fontSizeBase: 32 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 2 + m_HorizontalAlignment: 4 + 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!1 &7911702980863545796 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2963310940045631840} + - component: {fileID: 697118498905883156} + - component: {fileID: 1889219611016904957} + - component: {fileID: 7300801511896065495} + m_Layer: 5 + m_Name: IconContainer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2963310940045631840 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7911702980863545796} + 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: 1998415133030435012} + m_Father: {fileID: 8892944085168885652} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &697118498905883156 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7911702980863545796} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 32 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!222 &1889219611016904957 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7911702980863545796} + m_CullTransparentMesh: 1 +--- !u!114 &7300801511896065495 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7911702980863545796} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5d06e1cd33074c5daca1981ae29d4034, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.23529412, g: 0.23529412, b: 0.27450982, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 9ed5f14807d0abb46b875225c7dcb3d2, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 + skew: {x: 20, y: 0} +--- !u!1 &8484164365188496444 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2895843166032426089} + - component: {fileID: 1639252830886071200} + - component: {fileID: 8274352983989334025} + - component: {fileID: 6528648522550106359} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2895843166032426089 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8484164365188496444} + 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: 1792497010058463426} + 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: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1639252830886071200 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8484164365188496444} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!222 &8274352983989334025 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8484164365188496444} + m_CullTransparentMesh: 1 +--- !u!114 &6528648522550106359 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8484164365188496444} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5d06e1cd33074c5daca1981ae29d4034, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0.8695652, b: 0, a: 0.39215687} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 08fcb01393113a14bad0223dd5df3fa8, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 + skew: {x: 20, y: 0} diff --git a/Assets/Project/Prefabs/UI/Gameplay/BlockCosts.prefab.meta b/Assets/Project/Prefabs/UI/Gameplay/BlockCosts.prefab.meta new file mode 100644 index 00000000..690fb02d --- /dev/null +++ b/Assets/Project/Prefabs/UI/Gameplay/BlockCosts.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: dcba3e548bdbdf94ea2f76065d70e756 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Prefabs/UI/Gameplay/CoreHealth.prefab b/Assets/Project/Prefabs/UI/Gameplay/CoreHealth.prefab new file mode 100644 index 00000000..ec169c7b --- /dev/null +++ b/Assets/Project/Prefabs/UI/Gameplay/CoreHealth.prefab @@ -0,0 +1,475 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &413241078768615981 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2993763082132994110} + - component: {fileID: 5458992247829385737} + - component: {fileID: 5112333660029933752} + m_Layer: 5 + m_Name: CurrentHull + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2993763082132994110 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 413241078768615981} + 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: 3817187465026455832} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5458992247829385737 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 413241078768615981} + m_CullTransparentMesh: 1 +--- !u!114 &5112333660029933752 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 413241078768615981} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, 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_FontData: + m_Font: {fileID: 12800000, guid: b9f47330c8d3fd443a5e4dbae17f45a7, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 100 +--- !u!1 &614349636242844694 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3817187465026455832} + - component: {fileID: 7584070125710106247} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3817187465026455832 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 614349636242844694} + 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: 2993763082132994110} + - {fileID: 5098462953740418485} + - {fileID: 5612806687786084553} + m_Father: {fileID: 1526087497975332933} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &7584070125710106247 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 614349636242844694} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 8 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 4 + m_Spacing: 8 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 1 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1 &1827462502581569829 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1526087497975332933} + - component: {fileID: 8120764032404641018} + - component: {fileID: 6977918320640085071} + - component: {fileID: 6562390225192943293} + m_Layer: 5 + m_Name: CoreHealth + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1526087497975332933 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1827462502581569829} + 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: 5562928648129701113} + - {fileID: 3817187465026455832} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 0, y: 80} + m_SizeDelta: {x: 512, y: 40} + m_Pivot: {x: 0.5, y: 0} +--- !u!222 &8120764032404641018 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1827462502581569829} + m_CullTransparentMesh: 1 +--- !u!114 &6977918320640085071 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1827462502581569829} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73da3c9fbe373574b98b04ff34b9302b, type: 3} + m_Name: + m_EditorClassIdentifier: + bar: {fileID: 5562928648129701113} + maxHullSize: 504 + maxHullText: {fileID: 6178723746821815148} + currentHullText: {fileID: 5112333660029933752} +--- !u!114 &6562390225192943293 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1827462502581569829} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5d06e1cd33074c5daca1981ae29d4034, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.15686275, g: 0.15686275, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 + skew: {x: 20, y: 0} +--- !u!1 &5011819760468251005 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5612806687786084553} + - component: {fileID: 620489268671115412} + - component: {fileID: 6178723746821815148} + m_Layer: 5 + m_Name: MaxHull + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5612806687786084553 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5011819760468251005} + 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: 3817187465026455832} + m_RootOrder: 2 + 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: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &620489268671115412 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5011819760468251005} + m_CullTransparentMesh: 1 +--- !u!114 &6178723746821815148 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5011819760468251005} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, 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_FontData: + m_Font: {fileID: 12800000, guid: b9f47330c8d3fd443a5e4dbae17f45a7, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 150 +--- !u!1 &6408351089620041238 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5098462953740418485} + - component: {fileID: 8756109667817917953} + - component: {fileID: 7064848998798225322} + m_Layer: 5 + m_Name: / + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5098462953740418485 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6408351089620041238} + 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: 3817187465026455832} + 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: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8756109667817917953 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6408351089620041238} + m_CullTransparentMesh: 1 +--- !u!114 &7064848998798225322 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6408351089620041238} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.74509805, g: 0.74509805, b: 0.7647059, 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_FontData: + m_Font: {fileID: 12800000, guid: b9f47330c8d3fd443a5e4dbae17f45a7, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: / +--- !u!1 &8302702603772540559 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5562928648129701113} + - component: {fileID: 8934380865893220469} + - component: {fileID: 7971174058042702107} + m_Layer: 5 + m_Name: Bar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5562928648129701113 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8302702603772540559} + 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: 1526087497975332933} + 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: 4, y: 0} + m_SizeDelta: {x: -8, y: -8} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &8934380865893220469 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8302702603772540559} + m_CullTransparentMesh: 1 +--- !u!114 &7971174058042702107 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8302702603772540559} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5d06e1cd33074c5daca1981ae29d4034, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.7058824, g: 0.27450982, b: 0.29411766, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 + skew: {x: 20, y: 0} diff --git a/Assets/Project/Prefabs/UI/Gameplay/CoreHealth.prefab.meta b/Assets/Project/Prefabs/UI/Gameplay/CoreHealth.prefab.meta new file mode 100644 index 00000000..dd283ad4 --- /dev/null +++ b/Assets/Project/Prefabs/UI/Gameplay/CoreHealth.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a995afd29842e6d4c83cd658228cd352 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Prefabs/UI/Gameplay/EnemyWarningCircle.prefab b/Assets/Project/Prefabs/UI/Gameplay/EnemyWarningCircle.prefab new file mode 100644 index 00000000..8a2cc0a1 --- /dev/null +++ b/Assets/Project/Prefabs/UI/Gameplay/EnemyWarningCircle.prefab @@ -0,0 +1,93 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &9002855057185162379 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 399342052437582309} + - component: {fileID: 6001263146409334551} + - component: {fileID: 3766393049097053517} + - component: {fileID: 1587402406021967307} + m_Layer: 5 + m_Name: EnemyWarningCircle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &399342052437582309 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9002855057185162379} + m_LocalRotation: {x: 0, y: 0, z: -0.1564345, w: 0.98768836} + 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: -18} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6001263146409334551 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9002855057185162379} + m_CullTransparentMesh: 1 +--- !u!114 &3766393049097053517 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9002855057185162379} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.7058824, g: 0.27450982, b: 0.29411766, a: 0.78431374} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: afafed8bb4efcac4c9e2fb80d3260d6b, type: 3} + m_Type: 3 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 0.1 + m_FillClockwise: 0 + m_FillOrigin: 1 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &1587402406021967307 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9002855057185162379} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3bfe744d54474a44a3e300faf6415237, type: 3} + m_Name: + m_EditorClassIdentifier: + circleImage: {fileID: 3766393049097053517} + arcLengthMultiplier: 2 + arcLengthBase: 0.5 diff --git a/Assets/Project/Prefabs/UI/Gameplay/EnemyWarningCircle.prefab.meta b/Assets/Project/Prefabs/UI/Gameplay/EnemyWarningCircle.prefab.meta new file mode 100644 index 00000000..ab8e8aa9 --- /dev/null +++ b/Assets/Project/Prefabs/UI/Gameplay/EnemyWarningCircle.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2d2539dd157c890498f1fa06bae88a13 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Prefabs/UI/Gameplay/GameOver.prefab b/Assets/Project/Prefabs/UI/Gameplay/GameOver.prefab new file mode 100644 index 00000000..4edeb079 --- /dev/null +++ b/Assets/Project/Prefabs/UI/Gameplay/GameOver.prefab @@ -0,0 +1,1601 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1553156080834414355 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 842671437225592825} + - component: {fileID: 9044974453510355284} + - component: {fileID: 6313070066114644862} + - component: {fileID: 7227117736450278750} + - component: {fileID: 848666356975233813} + m_Layer: 5 + m_Name: GameOver + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &842671437225592825 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1553156080834414355} + 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: 6774394298853605770} + - {fileID: 184432336820397912} + m_Father: {fileID: 0} + 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: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &9044974453510355284 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1553156080834414355} + m_CullTransparentMesh: 1 +--- !u!114 &6313070066114644862 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1553156080834414355} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.078431375, g: 0.078431375, b: 0.11764706, a: 0.78431374} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 9ed5f14807d0abb46b875225c7dcb3d2, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &7227117736450278750 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1553156080834414355} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ShowMaskGraphic: 1 +--- !u!114 &848666356975233813 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1553156080834414355} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: af977a08f2e3406c8c79827952742e67, type: 3} + m_Name: + m_EditorClassIdentifier: + scoreView: {fileID: 2157793407823459513} +--- !u!114 &7427009113860656287 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1661209933472877706} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e2b3d7e6954ec474a841cdbeba761bb0, type: 3} + m_Name: + m_EditorClassIdentifier: + msLocalAnimationOffset: 500 + movementDirection: 3 + movementSmoothDamp: 0.1 + movementMagnitude: 10 + animateAlpha: 1 + alphaSpeed: 8 +--- !u!1 &3509463451437257035 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3037428840095210107} + m_Layer: 5 + m_Name: ReturnToDesktopContainer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3037428840095210107 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3509463451437257035} + 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: 6340316974863262517} + m_Father: {fileID: 4423829541364460357} + m_RootOrder: 2 + 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: 48} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &3524626689757796226 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 509364140768505334} + m_Layer: 5 + m_Name: ReturnToMenuContainer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &509364140768505334 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3524626689757796226} + 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: 7235912540909405095} + m_Father: {fileID: 4423829541364460357} + 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: 48} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &3783018876543148037 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6774394298853605770} + m_Layer: 5 + m_Name: Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6774394298853605770 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3783018876543148037} + 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: 4050083001631260719} + m_Father: {fileID: 842671437225592825} + m_RootOrder: 0 + 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, y: -250} + m_SizeDelta: {x: 480, y: 100} + m_Pivot: {x: 0.5, y: 1} +--- !u!1 &4522206277088418251 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4050083001631260719} + - component: {fileID: 3543627300103819886} + - component: {fileID: 8732682358011351313} + - component: {fileID: 1760045665781557018} + - component: {fileID: 5051748574015909317} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4050083001631260719 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4522206277088418251} + 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: 6774394298853605770} + 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: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3543627300103819886 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4522206277088418251} + m_CullTransparentMesh: 1 +--- !u!114 &8732682358011351313 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4522206277088418251} + 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: MISSION FAILED + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 13419b375ce4d9843b7954d5636347b0, type: 2} + m_sharedMaterial: {fileID: 3768467697892776997, guid: 13419b375ce4d9843b7954d5636347b0, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4283123380 + m_fontColor: {r: 0.7058824, g: 0.27450982, b: 0.29411766, 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: 72 + 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: 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!225 &1760045665781557018 +CanvasGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4522206277088418251} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 1 + m_IgnoreParentGroups: 0 +--- !u!114 &5051748574015909317 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4522206277088418251} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e2b3d7e6954ec474a841cdbeba761bb0, type: 3} + m_Name: + m_EditorClassIdentifier: + msLocalAnimationOffset: 0 + movementDirection: 3 + movementSmoothDamp: 0.5 + movementMagnitude: 20 + animateAlpha: 1 + alphaSpeed: 0.3 +--- !u!1 &5811317318719065335 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 184432336820397912} + - component: {fileID: 842185971624815152} + - component: {fileID: 2507011902749068511} + m_Layer: 5 + m_Name: Menu + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &184432336820397912 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5811317318719065335} + 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: 4423829541364460357} + - {fileID: 4883855641309010604} + m_Father: {fileID: 842671437225592825} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 400, y: 1080} + m_Pivot: {x: 0.5, y: 0} +--- !u!222 &842185971624815152 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5811317318719065335} + m_CullTransparentMesh: 1 +--- !u!114 &2507011902749068511 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5811317318719065335} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.23529412, g: 0.23529412, b: 0.27450982, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 08fcb01393113a14bad0223dd5df3fa8, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &5876240565641374071 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6640608749891651186} + m_Layer: 5 + m_Name: RetryContainer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6640608749891651186 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5876240565641374071} + 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: 3115349570774614887} + m_Father: {fileID: 4423829541364460357} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 48} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &6990256069426909798 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6367276584966851658} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e2b3d7e6954ec474a841cdbeba761bb0, type: 3} + m_Name: + m_EditorClassIdentifier: + msLocalAnimationOffset: 750 + movementDirection: 3 + movementSmoothDamp: 0.1 + movementMagnitude: 10 + animateAlpha: 1 + alphaSpeed: 8 +--- !u!1 &7456863395328815462 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4423829541364460357} + - component: {fileID: 3282984496470369599} + - component: {fileID: 1361898089729075055} + - component: {fileID: 5316291903759496928} + m_Layer: 5 + m_Name: Buttons + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4423829541364460357 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7456863395328815462} + 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: 6640608749891651186} + - {fileID: 509364140768505334} + - {fileID: 3037428840095210107} + m_Father: {fileID: 184432336820397912} + 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: 0, y: -115} + m_SizeDelta: {x: 0, y: -230} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &3282984496470369599 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7456863395328815462} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 12 + m_Right: 12 + m_Top: 12 + m_Bottom: 12 + m_ChildAlignment: 4 + m_Spacing: 12 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!225 &1361898089729075055 +CanvasGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7456863395328815462} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 1 + m_IgnoreParentGroups: 0 +--- !u!114 &5316291903759496928 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7456863395328815462} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e2b3d7e6954ec474a841cdbeba761bb0, type: 3} + m_Name: + m_EditorClassIdentifier: + msLocalAnimationOffset: 250 + movementDirection: 0 + movementSmoothDamp: 0.1 + movementMagnitude: 20 + animateAlpha: 1 + alphaSpeed: 1 +--- !u!114 &5913341117279264304 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7767417422213360856} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e2b3d7e6954ec474a841cdbeba761bb0, type: 3} + m_Name: + m_EditorClassIdentifier: + msLocalAnimationOffset: 1000 + movementDirection: 3 + movementSmoothDamp: 0.1 + movementMagnitude: 10 + animateAlpha: 1 + alphaSpeed: 8 +--- !u!1001 &2985611717946351823 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 6640608749891651186} + m_Modifications: + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_SizeDelta.x + value: 376 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_SizeDelta.y + value: 48 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 188 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -24 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2166627161841587788, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_Interactable + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3470533659880781955, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 3470533659880781955, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3470533659880781955, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 848666356975233813} + - target: {fileID: 3470533659880781955, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 3470533659880781955, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName + value: Retry + objectReference: {fileID: 0} + - target: {fileID: 3470533659880781955, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName + value: Exa.UI.Gameplay.GameOverMenu, Assembly-CSharp + objectReference: {fileID: 0} + - target: {fileID: 3470533659880781955, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_StringArgument + value: + objectReference: {fileID: 0} + - target: {fileID: 3470533659880781955, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 4495379317453220933, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_Name + value: Retry + objectReference: {fileID: 0} + - target: {fileID: 8233831179568814411, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_Text + value: Retry + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 388b131c3400671468966329b1306ca2, type: 3} +--- !u!1 &1661209933472877706 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 4495379317453220933, guid: 388b131c3400671468966329b1306ca2, + type: 3} + m_PrefabInstance: {fileID: 2985611717946351823} + m_PrefabAsset: {fileID: 0} +--- !u!224 &3115349570774614887 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + m_PrefabInstance: {fileID: 2985611717946351823} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &5591992260989653290 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 184432336820397912} + m_Modifications: + - target: {fileID: 626614655102588690, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 626614655102588690, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 626614655102588690, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 626614655102588690, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 626614655102588690, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 626614655102588690, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1034789430218935174, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1034789430218935174, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1034789430218935174, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1034789430218935174, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchorMax.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1034789430218935174, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1034789430218935174, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchorMin.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1034789430218935174, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1034789430218935174, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_SizeDelta.x + value: 376 + objectReference: {fileID: 0} + - target: {fileID: 1034789430218935174, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1034789430218935174, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1034789430218935174, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1034789430218935174, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1034789430218935174, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1034789430218935174, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1034789430218935174, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1034789430218935174, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1034789430218935174, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1034789430218935174, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 12 + objectReference: {fileID: 0} + - target: {fileID: 1034789430218935174, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1034789430218935174, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1034789430218935174, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1291174601272790491, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1291174601272790491, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1291174601272790491, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1291174601272790491, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1291174601272790491, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1291174601272790491, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568949567209854129, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568949567209854129, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568949567209854129, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568949567209854129, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568949567209854129, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1568949567209854129, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2324669581496891402, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2324669581496891402, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2324669581496891402, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2324669581496891402, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2324669581496891402, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2324669581496891402, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2714751560731105857, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2714751560731105857, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2714751560731105857, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2714751560731105857, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2714751560731105857, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5589024182438246579, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5589024182438246579, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5589024182438246579, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5589024182438246579, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5589024182438246579, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5589024182438246579, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5847765382864404529, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5847765382864404529, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5847765382864404529, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5847765382864404529, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5847765382864404529, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6520166351880243299, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_Name + value: Score + objectReference: {fileID: 0} + - target: {fileID: 7305120063097018283, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7305120063097018283, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7305120063097018283, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7305120063097018283, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7305120063097018283, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7305120063097018283, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8779666033112985385, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8779666033112985385, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8779666033112985385, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8779666033112985385, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8779666033112985385, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8951464178209820002, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8951464178209820002, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8951464178209820002, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8951464178209820002, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8951464178209820002, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8951464178209820002, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 5eb4eddb045c9c2418d614ee5edcfdca, type: 3} +--- !u!114 &2157793407823459513 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 5794086501050131859, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + m_PrefabInstance: {fileID: 5591992260989653290} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2a45dfe7e64e4e6e8986139a55e601f0, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!224 &4883855641309010604 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 1034789430218935174, guid: 5eb4eddb045c9c2418d614ee5edcfdca, + type: 3} + m_PrefabInstance: {fileID: 5591992260989653290} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &6172644354089992349 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 3037428840095210107} + m_Modifications: + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_SizeDelta.x + value: 376 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_SizeDelta.y + value: 48 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 188 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -24 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3470533659880781955, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 3470533659880781955, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3470533659880781955, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 848666356975233813} + - target: {fileID: 3470533659880781955, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 3470533659880781955, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName + value: QuitToDesktop + objectReference: {fileID: 0} + - target: {fileID: 3470533659880781955, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName + value: Exa.UI.Gameplay.GameOverMenu, Assembly-CSharp + objectReference: {fileID: 0} + - target: {fileID: 3470533659880781955, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_StringArgument + value: + objectReference: {fileID: 0} + - target: {fileID: 3470533659880781955, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 4495379317453220933, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_Name + value: Return to desktop + objectReference: {fileID: 0} + - target: {fileID: 8233831179568814411, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_Text + value: Return to desktop + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 388b131c3400671468966329b1306ca2, type: 3} +--- !u!1 &7767417422213360856 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 4495379317453220933, guid: 388b131c3400671468966329b1306ca2, + type: 3} + m_PrefabInstance: {fileID: 6172644354089992349} + m_PrefabAsset: {fileID: 0} +--- !u!224 &6340316974863262517 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + m_PrefabInstance: {fileID: 6172644354089992349} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &7367844985937551375 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 509364140768505334} + m_Modifications: + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_SizeDelta.x + value: 376 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_SizeDelta.y + value: 48 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 188 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -24 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3470533659880781955, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 3470533659880781955, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3470533659880781955, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 848666356975233813} + - target: {fileID: 3470533659880781955, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 3470533659880781955, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName + value: QuitToMenu + objectReference: {fileID: 0} + - target: {fileID: 3470533659880781955, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName + value: Exa.UI.Gameplay.GameOverMenu, Assembly-CSharp + objectReference: {fileID: 0} + - target: {fileID: 3470533659880781955, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_StringArgument + value: + objectReference: {fileID: 0} + - target: {fileID: 3470533659880781955, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 4495379317453220933, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_Name + value: Return to menu + objectReference: {fileID: 0} + - target: {fileID: 8233831179568814411, guid: 388b131c3400671468966329b1306ca2, + type: 3} + propertyPath: m_Text + value: Return to menu + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 388b131c3400671468966329b1306ca2, type: 3} +--- !u!1 &6367276584966851658 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 4495379317453220933, guid: 388b131c3400671468966329b1306ca2, + type: 3} + m_PrefabInstance: {fileID: 7367844985937551375} + m_PrefabAsset: {fileID: 0} +--- !u!224 &7235912540909405095 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 168031645687899048, guid: 388b131c3400671468966329b1306ca2, + type: 3} + m_PrefabInstance: {fileID: 7367844985937551375} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Project/Prefabs/UI/Gameplay/GameOver.prefab.meta b/Assets/Project/Prefabs/UI/Gameplay/GameOver.prefab.meta new file mode 100644 index 00000000..8266529e --- /dev/null +++ b/Assets/Project/Prefabs/UI/Gameplay/GameOver.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0eb58ff378bbf8f428554ce9cf1e4a2c +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Prefabs/UI/Gameplay/GameplayUI.prefab b/Assets/Project/Prefabs/UI/Gameplay/GameplayUI.prefab index 055ae30e..b026646e 100644 --- a/Assets/Project/Prefabs/UI/Gameplay/GameplayUI.prefab +++ b/Assets/Project/Prefabs/UI/Gameplay/GameplayUI.prefab @@ -1,5 +1,146 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!1 &2915236374764318834 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3462545934770768348} + - component: {fileID: 8924628330355177032} + - component: {fileID: 4754379080569781970} + - component: {fileID: 559429615381263240} + m_Layer: 5 + m_Name: DamageOverlay + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3462545934770768348 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2915236374764318834} + 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: 1274092249232203610} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8924628330355177032 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2915236374764318834} + m_CullTransparentMesh: 1 +--- !u!114 &4754379080569781970 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2915236374764318834} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.7058824, g: 0.27450982, b: 0.29411766, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &559429615381263240 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2915236374764318834} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1624a5113f8e854bb35700791f1adcf, type: 3} + m_Name: + m_EditorClassIdentifier: + image: {fileID: 4754379080569781970} + alpha: 0.1960784 + duration: 0.5 +--- !u!1 &3342813861231019769 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7729753405799203232} + - component: {fileID: 8586425375832752391} + m_Layer: 5 + m_Name: EnemyWarningCircleManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7729753405799203232 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3342813861231019769} + 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: 1274092249232203610} + m_RootOrder: 6 + 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: 800, y: 800} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &8586425375832752391 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3342813861231019769} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1ec8872db54d4f00958b8a34e085c8bb, type: 3} + m_Name: + m_EditorClassIdentifier: + enemyWarningCirclePrefab: {fileID: 9002855057185162379, guid: 2d2539dd157c890498f1fa06bae88a13, + type: 3} --- !u!1 &4757615415602663733 GameObject: m_ObjectHideFlags: 0 @@ -35,6 +176,7 @@ RectTransform: m_Children: - {fileID: 1274092249232203610} - {fileID: 8961717799280304913} + - {fileID: 4142826567589128063} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -60,7 +202,7 @@ Canvas: m_OverrideSorting: 0 m_OverridePixelPerfect: 0 m_SortingBucketNormalizedSize: 0 - m_AdditionalShaderChannelsFlag: 0 + m_AdditionalShaderChannelsFlag: 25 m_SortingLayerID: 0 m_SortingOrder: 0 m_TargetDisplay: 0 @@ -86,6 +228,7 @@ MonoBehaviour: m_FallbackScreenDPI: 96 m_DefaultSpriteDPI: 96 m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 --- !u!114 &4757615415602663755 MonoBehaviour: m_ObjectHideFlags: 0 @@ -143,18 +286,7 @@ MonoBehaviour: m_EditorClassIdentifier: gameplayLayer: {fileID: 484474844237718585} pauseMenu: {fileID: 7043282987134106570} ---- !u!114 &4005385555140568790 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6037343895412055509} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 83c5382a2a987e246b59a59e5e0fa77b, type: 3} - m_Name: - m_EditorClassIdentifier: + gameOverMenu: {fileID: 4109695650337459091} --- !u!1 &7512772898299007436 GameObject: m_ObjectHideFlags: 0 @@ -256,6 +388,7 @@ GameObject: - component: {fileID: 2829843977348392769} - component: {fileID: 484474844237718585} - component: {fileID: 8762426778282129568} + - component: {fileID: 8696711327004652491} m_Layer: 5 m_Name: GameplayLayer m_TagString: Untagged @@ -276,6 +409,11 @@ RectTransform: m_Children: - {fileID: 4757615414669227977} - {fileID: 7001167692844603813} + - {fileID: 2216909867263556844} + - {fileID: 7230235046903937755} + - {fileID: 3057779607087530539} + - {fileID: 3462545934770768348} + - {fileID: 7729753405799203232} m_Father: {fileID: 4757615415602663758} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -311,7 +449,11 @@ MonoBehaviour: selectionOverlay: {fileID: 5293419433807462326} selectionHotbar: {fileID: 8807952372002799401} selectionArea: {fileID: 8976082742789501762} - navigateable: {fileID: 8762426778282129568} + coreHealthBar: {fileID: 7727965874883145958} + currentResources: {fileID: 7411910490077527096} + missionState: {fileID: 3401688925830194578} + damageOverlay: {fileID: 559429615381263240} + warningCircleOverlay: {fileID: 8586425375832752391} --- !u!114 &8762426778282129568 MonoBehaviour: m_ObjectHideFlags: 0 @@ -324,6 +466,18 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 83c5382a2a987e246b59a59e5e0fa77b, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!114 &8696711327004652491 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8712388039465811221} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5b0122423b776e94dae13c2a9b3b4da3, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1001 &455422302889427126 PrefabInstance: m_ObjectHideFlags: 0 @@ -336,104 +490,109 @@ PrefabInstance: propertyPath: m_Name value: SelectionOverlay objectReference: {fileID: 0} - - target: {fileID: 4924561022885033855, guid: 384299567496b2d4d8fa47638ba976a5, + - target: {fileID: 4924561022885033854, guid: 384299567496b2d4d8fa47638ba976a5, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_IsActive value: 0 objectReference: {fileID: 0} - target: {fileID: 4924561022885033855, guid: 384299567496b2d4d8fa47638ba976a5, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_Pivot.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4924561022885033855, guid: 384299567496b2d4d8fa47638ba976a5, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4924561022885033855, guid: 384299567496b2d4d8fa47638ba976a5, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_RootOrder + value: 0 objectReference: {fileID: 0} - target: {fileID: 4924561022885033855, guid: 384299567496b2d4d8fa47638ba976a5, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 4924561022885033855, guid: 384299567496b2d4d8fa47638ba976a5, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMax.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 4924561022885033855, guid: 384299567496b2d4d8fa47638ba976a5, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 4924561022885033855, guid: 384299567496b2d4d8fa47638ba976a5, type: 3} - propertyPath: m_RootOrder + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4924561022885033855, guid: 384299567496b2d4d8fa47638ba976a5, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_SizeDelta.x + value: 600 + objectReference: {fileID: 0} + - target: {fileID: 4924561022885033855, guid: 384299567496b2d4d8fa47638ba976a5, + type: 3} + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4924561022885033855, guid: 384299567496b2d4d8fa47638ba976a5, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4924561022885033855, guid: 384299567496b2d4d8fa47638ba976a5, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 4924561022885033855, guid: 384299567496b2d4d8fa47638ba976a5, type: 3} - propertyPath: m_AnchoredPosition.x - value: 80 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 4924561022885033855, guid: 384299567496b2d4d8fa47638ba976a5, type: 3} - propertyPath: m_AnchoredPosition.y - value: 80 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 4924561022885033855, guid: 384299567496b2d4d8fa47638ba976a5, type: 3} - propertyPath: m_SizeDelta.x - value: 600 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 4924561022885033855, guid: 384299567496b2d4d8fa47638ba976a5, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 4924561022885033855, guid: 384299567496b2d4d8fa47638ba976a5, type: 3} - propertyPath: m_AnchorMin.y - value: 0 + propertyPath: m_AnchoredPosition.x + value: 80 objectReference: {fileID: 0} - target: {fileID: 4924561022885033855, guid: 384299567496b2d4d8fa47638ba976a5, type: 3} - propertyPath: m_AnchorMax.x - value: 0 + propertyPath: m_AnchoredPosition.y + value: 80 objectReference: {fileID: 0} - target: {fileID: 4924561022885033855, guid: 384299567496b2d4d8fa47638ba976a5, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4924561022885033855, guid: 384299567496b2d4d8fa47638ba976a5, type: 3} - propertyPath: m_Pivot.x + propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4924561022885033855, guid: 384299567496b2d4d8fa47638ba976a5, type: 3} - propertyPath: m_Pivot.y + propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - target: {fileID: 4924561024025163781, guid: 384299567496b2d4d8fa47638ba976a5, @@ -448,461 +607,1917 @@ PrefabInstance: objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 384299567496b2d4d8fa47638ba976a5, type: 3} ---- !u!224 &4757615414669227977 stripped -RectTransform: - m_CorrespondingSourceObject: {fileID: 4924561022885033855, guid: 384299567496b2d4d8fa47638ba976a5, - type: 3} - m_PrefabInstance: {fileID: 455422302889427126} - m_PrefabAsset: {fileID: 0} ---- !u!114 &5293419433807462326 stripped +--- !u!114 &8807952372002799401 stripped MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 5703805380652302080, guid: 384299567496b2d4d8fa47638ba976a5, + m_CorrespondingSourceObject: {fileID: 8966066730389143455, guid: 384299567496b2d4d8fa47638ba976a5, type: 3} m_PrefabInstance: {fileID: 455422302889427126} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: ae052b8b1f7b08e478b64bb8968ef17d, type: 3} + m_Script: {fileID: 11500000, guid: 0b11323e86cccb5438306d63b061c8e2, type: 3} m_Name: m_EditorClassIdentifier: ---- !u!114 &8807952372002799401 stripped +--- !u!114 &5293419433807462326 stripped MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 8966066730389143455, guid: 384299567496b2d4d8fa47638ba976a5, + m_CorrespondingSourceObject: {fileID: 5703805380652302080, guid: 384299567496b2d4d8fa47638ba976a5, type: 3} m_PrefabInstance: {fileID: 455422302889427126} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0b11323e86cccb5438306d63b061c8e2, type: 3} + m_Script: {fileID: 11500000, guid: ae052b8b1f7b08e478b64bb8968ef17d, type: 3} m_Name: m_EditorClassIdentifier: ---- !u!1001 &4367143092805424637 +--- !u!224 &4757615414669227977 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 4924561022885033855, guid: 384299567496b2d4d8fa47638ba976a5, + type: 3} + m_PrefabInstance: {fileID: 455422302889427126} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &858441200455220393 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - m_TransformParent: {fileID: 4757615415602663758} + m_TransformParent: {fileID: 1274092249232203610} m_Modifications: - - target: {fileID: 270955769135012729, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 1526087497975332933, guid: a995afd29842e6d4c83cd658228cd352, type: 3} - propertyPath: m_AnchorMin.y - value: 1 + propertyPath: m_Pivot.x + value: 0.5 objectReference: {fileID: 0} - - target: {fileID: 270955769135012729, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 1526087497975332933, guid: a995afd29842e6d4c83cd658228cd352, type: 3} - propertyPath: m_AnchorMax.y - value: 1 + propertyPath: m_Pivot.y + value: 0 objectReference: {fileID: 0} - - target: {fileID: 270955769135012729, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 1526087497975332933, guid: a995afd29842e6d4c83cd658228cd352, type: 3} - propertyPath: m_AnchoredPosition.x - value: 200 + propertyPath: m_RootOrder + value: 2 objectReference: {fileID: 0} - - target: {fileID: 270955769135012729, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 1526087497975332933, guid: a995afd29842e6d4c83cd658228cd352, type: 3} - propertyPath: m_AnchoredPosition.y - value: -41 + propertyPath: m_AnchorMax.x + value: 0.5 objectReference: {fileID: 0} - - target: {fileID: 270955769135012729, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 1526087497975332933, guid: a995afd29842e6d4c83cd658228cd352, type: 3} - propertyPath: m_SizeDelta.x - value: 380 + propertyPath: m_AnchorMax.y + value: 0 objectReference: {fileID: 0} - - target: {fileID: 270955769135012729, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 1526087497975332933, guid: a995afd29842e6d4c83cd658228cd352, type: 3} - propertyPath: m_SizeDelta.y - value: 62 + propertyPath: m_AnchorMin.x + value: 0.5 objectReference: {fileID: 0} - - target: {fileID: 1471926077100635935, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 1526087497975332933, guid: a995afd29842e6d4c83cd658228cd352, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 1471926077100635935, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 1526087497975332933, guid: a995afd29842e6d4c83cd658228cd352, type: 3} - propertyPath: m_AnchorMax.y - value: 1 + propertyPath: m_SizeDelta.x + value: 512 objectReference: {fileID: 0} - - target: {fileID: 1471926077100635935, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 1526087497975332933, guid: a995afd29842e6d4c83cd658228cd352, + type: 3} + propertyPath: m_SizeDelta.y + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 1526087497975332933, guid: a995afd29842e6d4c83cd658228cd352, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1526087497975332933, guid: a995afd29842e6d4c83cd658228cd352, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1526087497975332933, guid: a995afd29842e6d4c83cd658228cd352, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1526087497975332933, guid: a995afd29842e6d4c83cd658228cd352, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1526087497975332933, guid: a995afd29842e6d4c83cd658228cd352, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1526087497975332933, guid: a995afd29842e6d4c83cd658228cd352, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1526087497975332933, guid: a995afd29842e6d4c83cd658228cd352, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1526087497975332933, guid: a995afd29842e6d4c83cd658228cd352, type: 3} propertyPath: m_AnchoredPosition.x - value: 10 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 1471926077100635935, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 1526087497975332933, guid: a995afd29842e6d4c83cd658228cd352, type: 3} propertyPath: m_AnchoredPosition.y - value: -246 + value: 80 objectReference: {fileID: 0} - - target: {fileID: 1471926077100635935, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 1526087497975332933, guid: a995afd29842e6d4c83cd658228cd352, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1526087497975332933, guid: a995afd29842e6d4c83cd658228cd352, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1526087497975332933, guid: a995afd29842e6d4c83cd658228cd352, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1827462502581569829, guid: a995afd29842e6d4c83cd658228cd352, + type: 3} + propertyPath: m_Name + value: CoreHealth + objectReference: {fileID: 0} + - target: {fileID: 2993763082132994110, guid: a995afd29842e6d4c83cd658228cd352, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2993763082132994110, guid: a995afd29842e6d4c83cd658228cd352, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2993763082132994110, guid: a995afd29842e6d4c83cd658228cd352, type: 3} propertyPath: m_SizeDelta.x - value: 380 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 1471926077100635935, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 2993763082132994110, guid: a995afd29842e6d4c83cd658228cd352, type: 3} - propertyPath: m_SizeDelta.y - value: 48 + propertyPath: m_AnchoredPosition.x + value: 0 objectReference: {fileID: 0} - - target: {fileID: 3917452430849993525, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 2993763082132994110, guid: a995afd29842e6d4c83cd658228cd352, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5098462953740418485, guid: a995afd29842e6d4c83cd658228cd352, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5098462953740418485, guid: a995afd29842e6d4c83cd658228cd352, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5098462953740418485, guid: a995afd29842e6d4c83cd658228cd352, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5098462953740418485, guid: a995afd29842e6d4c83cd658228cd352, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5098462953740418485, guid: a995afd29842e6d4c83cd658228cd352, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5612806687786084553, guid: a995afd29842e6d4c83cd658228cd352, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5612806687786084553, guid: a995afd29842e6d4c83cd658228cd352, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5612806687786084553, guid: a995afd29842e6d4c83cd658228cd352, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5612806687786084553, guid: a995afd29842e6d4c83cd658228cd352, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5612806687786084553, guid: a995afd29842e6d4c83cd658228cd352, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: a995afd29842e6d4c83cd658228cd352, type: 3} +--- !u!114 &7727965874883145958 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 6977918320640085071, guid: a995afd29842e6d4c83cd658228cd352, + type: 3} + m_PrefabInstance: {fileID: 858441200455220393} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73da3c9fbe373574b98b04ff34b9302b, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!224 &2216909867263556844 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 1526087497975332933, guid: a995afd29842e6d4c83cd658228cd352, + type: 3} + m_PrefabInstance: {fileID: 858441200455220393} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &3661290043139448966 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 4757615415602663758} + m_Modifications: + - target: {fileID: 2969457245366681, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2969457245366681, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2969457245366681, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, type: 3} + propertyPath: m_SizeDelta.x + value: 108 + objectReference: {fileID: 0} + - target: {fileID: 2969457245366681, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, type: 3} propertyPath: m_SizeDelta.y - value: 314 + value: 32 objectReference: {fileID: 0} - - target: {fileID: 4550373107438831981, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 2969457245366681, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, type: 3} + propertyPath: m_AnchoredPosition.x + value: 322 + objectReference: {fileID: 0} + - target: {fileID: 2969457245366681, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, type: 3} + propertyPath: m_AnchoredPosition.y + value: -16 + objectReference: {fileID: 0} + - target: {fileID: 509364140768505334, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 509364140768505334, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, type: 3} propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - - target: {fileID: 4550373107438831981, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 509364140768505334, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_SizeDelta.x + value: 376 + objectReference: {fileID: 0} + - target: {fileID: 509364140768505334, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 200 + objectReference: {fileID: 0} + - target: {fileID: 509364140768505334, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -425 + objectReference: {fileID: 0} + - target: {fileID: 842671437225592825, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 842671437225592825, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 842671437225592825, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 842671437225592825, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 842671437225592825, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, type: 3} propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - - target: {fileID: 4550373107438831981, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 842671437225592825, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 842671437225592825, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 842671437225592825, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 842671437225592825, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 842671437225592825, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 842671437225592825, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 842671437225592825, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 842671437225592825, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 842671437225592825, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 842671437225592825, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 842671437225592825, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 842671437225592825, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, type: 3} propertyPath: m_AnchoredPosition.x - value: 190 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 4550373107438831981, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 842671437225592825, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, type: 3} propertyPath: m_AnchoredPosition.y - value: -31 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 4550373107438831981, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 842671437225592825, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 842671437225592825, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 842671437225592825, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1553156080834414355, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_Name + value: GameOver + objectReference: {fileID: 0} + - target: {fileID: 1553156080834414355, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2071041164687970587, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2071041164687970587, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2071041164687970587, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, type: 3} propertyPath: m_SizeDelta.x - value: 380 + value: 376 objectReference: {fileID: 0} - - target: {fileID: 4550373107438831981, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 2071041164687970587, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, type: 3} propertyPath: m_SizeDelta.y - value: 38 + value: 32 + objectReference: {fileID: 0} + - target: {fileID: 2071041164687970587, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -32 + objectReference: {fileID: 0} + - target: {fileID: 2952743609641698945, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2952743609641698945, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2952743609641698945, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_SizeDelta.x + value: 108 + objectReference: {fileID: 0} + - target: {fileID: 2952743609641698945, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_SizeDelta.y + value: 32 + objectReference: {fileID: 0} + - target: {fileID: 2952743609641698945, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 322 + objectReference: {fileID: 0} + - target: {fileID: 2952743609641698945, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -16 + objectReference: {fileID: 0} + - target: {fileID: 3037428840095210107, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3037428840095210107, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3037428840095210107, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_SizeDelta.x + value: 376 + objectReference: {fileID: 0} + - target: {fileID: 3037428840095210107, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 200 + objectReference: {fileID: 0} + - target: {fileID: 3037428840095210107, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -485 + objectReference: {fileID: 0} + - target: {fileID: 3115349570774614887, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3115349570774614887, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3115349570774614887, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_SizeDelta.x + value: 376 + objectReference: {fileID: 0} + - target: {fileID: 3115349570774614887, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_SizeDelta.y + value: 48 + objectReference: {fileID: 0} + - target: {fileID: 3115349570774614887, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 188 + objectReference: {fileID: 0} + - target: {fileID: 3115349570774614887, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -24 + objectReference: {fileID: 0} + - target: {fileID: 3576775557176695880, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3576775557176695880, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3576775557176695880, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_SizeDelta.x + value: 268 + objectReference: {fileID: 0} + - target: {fileID: 3576775557176695880, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_SizeDelta.y + value: 32 + objectReference: {fileID: 0} + - target: {fileID: 3576775557176695880, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 134 + objectReference: {fileID: 0} + - target: {fileID: 3576775557176695880, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -16 + objectReference: {fileID: 0} + - target: {fileID: 3768700249716473347, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3768700249716473347, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3768700249716473347, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_SizeDelta.x + value: 376 + objectReference: {fileID: 0} + - target: {fileID: 3768700249716473347, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_SizeDelta.y + value: 32 + objectReference: {fileID: 0} + - target: {fileID: 3768700249716473347, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -124 + objectReference: {fileID: 0} + - target: {fileID: 4883855641309010604, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_SizeDelta.y + value: 124 + objectReference: {fileID: 0} + - target: {fileID: 4983393379337635384, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4983393379337635384, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4983393379337635384, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_SizeDelta.x + value: 268 + objectReference: {fileID: 0} + - target: {fileID: 4983393379337635384, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_SizeDelta.y + value: 32 + objectReference: {fileID: 0} + - target: {fileID: 4983393379337635384, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 134 + objectReference: {fileID: 0} + - target: {fileID: 4983393379337635384, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -16 + objectReference: {fileID: 0} + - target: {fileID: 6340316974863262517, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6340316974863262517, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6340316974863262517, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_SizeDelta.x + value: 376 + objectReference: {fileID: 0} + - target: {fileID: 6340316974863262517, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_SizeDelta.y + value: 48 + objectReference: {fileID: 0} + - target: {fileID: 6340316974863262517, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 188 + objectReference: {fileID: 0} + - target: {fileID: 6340316974863262517, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -24 + objectReference: {fileID: 0} + - target: {fileID: 6367166304659326363, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6367166304659326363, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6367166304659326363, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_SizeDelta.x + value: 376 + objectReference: {fileID: 0} + - target: {fileID: 6367166304659326363, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_SizeDelta.y + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 6367166304659326363, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 188 + objectReference: {fileID: 0} + - target: {fileID: 6367166304659326363, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -84 + objectReference: {fileID: 0} + - target: {fileID: 6640608749891651186, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6640608749891651186, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6640608749891651186, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_SizeDelta.x + value: 376 + objectReference: {fileID: 0} + - target: {fileID: 6640608749891651186, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 200 + objectReference: {fileID: 0} + - target: {fileID: 6640608749891651186, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -365 + objectReference: {fileID: 0} + - target: {fileID: 6661267089855782129, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6661267089855782129, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6661267089855782129, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_SizeDelta.x + value: 108 + objectReference: {fileID: 0} + - target: {fileID: 6661267089855782129, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_SizeDelta.y + value: 32 + objectReference: {fileID: 0} + - target: {fileID: 6661267089855782129, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 322 + objectReference: {fileID: 0} + - target: {fileID: 6661267089855782129, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -16 + objectReference: {fileID: 0} + - target: {fileID: 7235912540909405095, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7235912540909405095, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7235912540909405095, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_SizeDelta.x + value: 376 + objectReference: {fileID: 0} + - target: {fileID: 7235912540909405095, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_SizeDelta.y + value: 48 + objectReference: {fileID: 0} + - target: {fileID: 7235912540909405095, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 188 + objectReference: {fileID: 0} + - target: {fileID: 7235912540909405095, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -24 + objectReference: {fileID: 0} + - target: {fileID: 7509193261170625387, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7509193261170625387, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7509193261170625387, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_SizeDelta.x + value: 376 + objectReference: {fileID: 0} + - target: {fileID: 7509193261170625387, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_SizeDelta.y + value: 32 + objectReference: {fileID: 0} + - target: {fileID: 7509193261170625387, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -72 + objectReference: {fileID: 0} + - target: {fileID: 7915179697556859168, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7915179697556859168, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7915179697556859168, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_SizeDelta.x + value: 268 + objectReference: {fileID: 0} + - target: {fileID: 7915179697556859168, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_SizeDelta.y + value: 32 + objectReference: {fileID: 0} + - target: {fileID: 7915179697556859168, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 134 + objectReference: {fileID: 0} + - target: {fileID: 7915179697556859168, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -16 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, type: 3} +--- !u!224 &4142826567589128063 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 842671437225592825, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + m_PrefabInstance: {fileID: 3661290043139448966} + m_PrefabAsset: {fileID: 0} +--- !u!114 &4109695650337459091 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 848666356975233813, guid: 0eb58ff378bbf8f428554ce9cf1e4a2c, + type: 3} + m_PrefabInstance: {fileID: 3661290043139448966} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: af977a08f2e3406c8c79827952742e67, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &4367143092805424637 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 4757615415602663758} + m_Modifications: + - target: {fileID: 270955769135012729, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 270955769135012729, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 270955769135012729, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_SizeDelta.x + value: 380 + objectReference: {fileID: 0} + - target: {fileID: 270955769135012729, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_SizeDelta.y + value: 62 + objectReference: {fileID: 0} + - target: {fileID: 270955769135012729, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 200 + objectReference: {fileID: 0} + - target: {fileID: 270955769135012729, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -41 + objectReference: {fileID: 0} + - target: {fileID: 1471926077100635935, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1471926077100635935, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1471926077100635935, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_SizeDelta.x + value: 380 + objectReference: {fileID: 0} + - target: {fileID: 1471926077100635935, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_SizeDelta.y + value: 48 + objectReference: {fileID: 0} + - target: {fileID: 1471926077100635935, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 1471926077100635935, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -246 + objectReference: {fileID: 0} + - target: {fileID: 3917452430849993525, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_SizeDelta.y + value: 314 + objectReference: {fileID: 0} + - target: {fileID: 4550373107438831981, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4550373107438831981, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4550373107438831981, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_SizeDelta.x + value: 380 + objectReference: {fileID: 0} + - target: {fileID: 4550373107438831981, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_SizeDelta.y + value: 38 + objectReference: {fileID: 0} + - target: {fileID: 4550373107438831981, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 190 + objectReference: {fileID: 0} + - target: {fileID: 4550373107438831981, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -31 + objectReference: {fileID: 0} + - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6712035863932038711, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: navigateable + value: + objectReference: {fileID: 0} + - target: {fileID: 6712035863932038711, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: gameplayLayer + value: + objectReference: {fileID: 2829843977348392769} + - target: {fileID: 6712035863932038711, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: escapeAction.m_Id + value: 10759f1e-d10d-41f5-af6d-6c85c3f170ee + objectReference: {fileID: 0} + - target: {fileID: 6712035863932038711, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: escapeAction.m_Name + value: Escape + objectReference: {fileID: 0} + - target: {fileID: 6712035863932038711, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: escapeAction.m_SingletonActionBindings.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6712035863932038711, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: escapeAction.m_SingletonActionBindings.Array.data[0].m_Id + value: beb5e92e-b4ee-464d-8c6c-07d0fecd0113 + objectReference: {fileID: 0} + - target: {fileID: 6712035863932038711, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: escapeAction.m_SingletonActionBindings.Array.data[0].m_Path + value: /escape + objectReference: {fileID: 0} + - target: {fileID: 6712035863932038711, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: escapeAction.m_SingletonActionBindings.Array.data[0].m_Action + value: Escape + objectReference: {fileID: 0} + - target: {fileID: 6892699106765667711, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6892699106765667711, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6892699106765667711, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_SizeDelta.x + value: 380 + objectReference: {fileID: 0} + - target: {fileID: 6892699106765667711, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_SizeDelta.y + value: 48 + objectReference: {fileID: 0} + - target: {fileID: 6892699106765667711, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 6892699106765667711, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -188 + objectReference: {fileID: 0} + - target: {fileID: 7154012504198316729, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7154012504198316729, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7154012504198316729, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_SizeDelta.x + value: 380 + objectReference: {fileID: 0} + - target: {fileID: 7154012504198316729, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_SizeDelta.y + value: 48 + objectReference: {fileID: 0} + - target: {fileID: 7154012504198316729, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 200 + objectReference: {fileID: 0} + - target: {fileID: 7154012504198316729, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -280 + objectReference: {fileID: 0} + - target: {fileID: 7518273642175118530, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7518273642175118530, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7518273642175118530, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_SizeDelta.x + value: 185 + objectReference: {fileID: 0} + - target: {fileID: 7518273642175118530, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_SizeDelta.y + value: 48 + objectReference: {fileID: 0} + - target: {fileID: 7518273642175118530, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -48 + objectReference: {fileID: 0} + - target: {fileID: 8021968426436085800, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_Name + value: PauseMenu + objectReference: {fileID: 0} + - target: {fileID: 8021968426436085800, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8182543152022113517, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8182543152022113517, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8182543152022113517, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_SizeDelta.x + value: 185 + objectReference: {fileID: 0} + - target: {fileID: 8182543152022113517, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_SizeDelta.y + value: 48 + objectReference: {fileID: 0} + - target: {fileID: 8182543152022113517, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 195 + objectReference: {fileID: 0} + - target: {fileID: 8182543152022113517, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -48 + objectReference: {fileID: 0} + - target: {fileID: 9085651528773163965, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 9085651528773163965, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 9085651528773163965, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_SizeDelta.x + value: 380 + objectReference: {fileID: 0} + - target: {fileID: 9085651528773163965, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_SizeDelta.y + value: 48 + objectReference: {fileID: 0} + - target: {fileID: 9085651528773163965, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 9085651528773163965, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -130 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 74cec897d8650db44b82119f24f6dfe8, type: 3} +--- !u!224 &8961717799280304913 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + m_PrefabInstance: {fileID: 4367143092805424637} + m_PrefabAsset: {fileID: 0} +--- !u!114 &7043282987134106570 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 6712035863932038711, guid: 74cec897d8650db44b82119f24f6dfe8, + type: 3} + m_PrefabInstance: {fileID: 4367143092805424637} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 68404f14c39a98c4f8b2d50b3871819e, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &5494623514962590983 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1274092249232203610} + m_Modifications: + - target: {fileID: 123396276273836919, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 123396276273836919, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 123396276273836919, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 123396276273836919, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 123396276273836919, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 123396276273836919, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 562786658608689152, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 562786658608689152, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 562786658608689152, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 562786658608689152, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 562786658608689152, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 562786658608689152, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 921615311917047323, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1775460480622891141, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_Name + value: MissionState + objectReference: {fileID: 0} + - target: {fileID: 1897757235243557295, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1897757235243557295, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1897757235243557295, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1897757235243557295, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1897757235243557295, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2888538602912057308, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 2888538602912057308, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2888538602912057308, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2888538602912057308, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2888538602912057308, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2888538602912057308, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2888538602912057308, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2888538602912057308, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2888538602912057308, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2888538602912057308, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2888538602912057308, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3192883358314223607, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3192883358314223607, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3192883358314223607, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3192883358314223607, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3192883358314223607, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3192883358314223607, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3209835010273148832, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3209835010273148832, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3209835010273148832, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3209835010273148832, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3209835010273148832, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3209835010273148832, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3554779773834474434, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6268478744373704163, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6268478744373704163, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6268478744373704163, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6268478744373704163, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6268478744373704163, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6268478744373704163, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8126253122769588405, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, type: 3} +--- !u!224 &7230235046903937755 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 2888538602912057308, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + m_PrefabInstance: {fileID: 5494623514962590983} + m_PrefabAsset: {fileID: 0} +--- !u!114 &3401688925830194578 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 7166890531793361045, guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b, + type: 3} + m_PrefabInstance: {fileID: 5494623514962590983} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82bace075c35b1d48a96ee0cf1230e03, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &5924131439233484938 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1274092249232203610} + m_Modifications: + - target: {fileID: 1464599765748710889, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1464599765748710889, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1464599765748710889, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1464599765748710889, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1464599765748710889, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1464599765748710889, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1792497010058463426, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1792497010058463426, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1792497010058463426, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1792497010058463426, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1792497010058463426, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1792497010058463426, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2863552557656190098, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2863552557656190098, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 2863552557656190098, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 2863552557656190098, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 2863552557656190098, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 2863552557656190098, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: m_LocalRotation.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 2963310940045631840, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: m_LocalRotation.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 2963310940045631840, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: m_LocalRotation.z + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 2963310940045631840, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_SizeDelta.x + value: 0 objectReference: {fileID: 0} - - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 2963310940045631840, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: m_RootOrder - value: 1 + propertyPath: m_SizeDelta.y + value: 0 objectReference: {fileID: 0} - - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 2963310940045631840, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 2963310940045631840, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 4996764847642273916, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 + propertyPath: m_Name + value: BlockCosts objectReference: {fileID: 0} - - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 5262758589820638859, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 5262758589820638859, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 5262758589820638859, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 5262758589820638859, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 5262758589820638859, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: m_AnchorMin.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 5262758589820638859, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 7161395114026740188, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: m_AnchorMax.x - value: 1 + propertyPath: m_fontColor32.rgba + value: 4278247167 objectReference: {fileID: 0} - - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 8056503318451917968, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 8056503318451917968, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: m_Pivot.x - value: 0.5 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - - target: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 8056503318451917968, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: m_Pivot.y - value: 0.5 + propertyPath: m_SizeDelta.x + value: 0 objectReference: {fileID: 0} - - target: {fileID: 6712035863932038711, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 8056503318451917968, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: escapeAction.m_SingletonActionBindings.Array.size - value: 1 + propertyPath: m_SizeDelta.y + value: 0 objectReference: {fileID: 0} - - target: {fileID: 6712035863932038711, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 8056503318451917968, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: escapeAction.m_Id - value: 10759f1e-d10d-41f5-af6d-6c85c3f170ee + propertyPath: m_AnchoredPosition.x + value: 0 objectReference: {fileID: 0} - - target: {fileID: 6712035863932038711, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 8056503318451917968, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: escapeAction.m_Name - value: Escape + propertyPath: m_AnchoredPosition.y + value: 0 objectReference: {fileID: 0} - - target: {fileID: 6712035863932038711, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: escapeAction.m_SingletonActionBindings.Array.data[0].m_Id - value: beb5e92e-b4ee-464d-8c6c-07d0fecd0113 + propertyPath: m_Pivot.x + value: 0 objectReference: {fileID: 0} - - target: {fileID: 6712035863932038711, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: escapeAction.m_SingletonActionBindings.Array.data[0].m_Action - value: Escape + propertyPath: m_Pivot.y + value: 0 objectReference: {fileID: 0} - - target: {fileID: 6712035863932038711, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: escapeAction.m_SingletonActionBindings.Array.data[0].m_Path - value: /escape + propertyPath: m_RootOrder + value: 4 objectReference: {fileID: 0} - - target: {fileID: 6712035863932038711, guid: 74cec897d8650db44b82119f24f6dfe8, - type: 3} - propertyPath: gameplayLayer - value: - objectReference: {fileID: 2829843977348392769} - - target: {fileID: 6712035863932038711, guid: 74cec897d8650db44b82119f24f6dfe8, - type: 3} - propertyPath: navigateable - value: - objectReference: {fileID: 4005385555140568790} - - target: {fileID: 6892699106765667711, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: m_AnchorMin.y - value: 1 + propertyPath: m_AnchorMax.x + value: 0.5 objectReference: {fileID: 0} - - target: {fileID: 6892699106765667711, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 6892699106765667711, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: m_AnchoredPosition.x - value: 10 + propertyPath: m_AnchorMin.x + value: 0.5 objectReference: {fileID: 0} - - target: {fileID: 6892699106765667711, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: m_AnchoredPosition.y - value: -188 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - - target: {fileID: 6892699106765667711, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} propertyPath: m_SizeDelta.x - value: 380 + value: 200 objectReference: {fileID: 0} - - target: {fileID: 6892699106765667711, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} propertyPath: m_SizeDelta.y - value: 48 + value: 40 objectReference: {fileID: 0} - - target: {fileID: 7154012504198316729, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: m_AnchorMin.y - value: 1 + propertyPath: m_LocalPosition.x + value: 0 objectReference: {fileID: 0} - - target: {fileID: 7154012504198316729, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: m_AnchorMax.y - value: 1 + propertyPath: m_LocalPosition.y + value: 0 objectReference: {fileID: 0} - - target: {fileID: 7154012504198316729, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: m_AnchoredPosition.x - value: 200 + propertyPath: m_LocalPosition.z + value: 0 objectReference: {fileID: 0} - - target: {fileID: 7154012504198316729, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: m_AnchoredPosition.y - value: -280 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - - target: {fileID: 7154012504198316729, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: m_SizeDelta.x - value: 380 + propertyPath: m_LocalRotation.x + value: 0 objectReference: {fileID: 0} - - target: {fileID: 7154012504198316729, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: m_SizeDelta.y - value: 48 + propertyPath: m_LocalRotation.y + value: 0 objectReference: {fileID: 0} - - target: {fileID: 7518273642175118530, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: m_AnchorMin.y - value: 1 + propertyPath: m_LocalRotation.z + value: 0 objectReference: {fileID: 0} - - target: {fileID: 7518273642175118530, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: m_AnchorMax.y - value: 1 + propertyPath: m_AnchoredPosition.x + value: 260 objectReference: {fileID: 0} - - target: {fileID: 7518273642175118530, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} propertyPath: m_AnchoredPosition.y - value: -48 + value: 80 objectReference: {fileID: 0} - - target: {fileID: 7518273642175118530, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: m_SizeDelta.x - value: 185 + propertyPath: m_LocalEulerAnglesHint.x + value: 0 objectReference: {fileID: 0} - - target: {fileID: 7518273642175118530, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: m_SizeDelta.y - value: 48 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - - target: {fileID: 8021968426436085800, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: m_Name - value: PauseMenu + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} - - target: {fileID: 8021968426436085800, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 8892944085168885652, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: m_IsActive + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 8182543152022113517, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 8892944085168885652, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 8182543152022113517, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 8892944085168885652, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: m_AnchorMax.y - value: 1 + propertyPath: m_SizeDelta.x + value: 0 objectReference: {fileID: 0} - - target: {fileID: 8182543152022113517, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 8892944085168885652, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8892944085168885652, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} propertyPath: m_AnchoredPosition.x - value: 195 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 8182543152022113517, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 8892944085168885652, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} propertyPath: m_AnchoredPosition.y - value: -48 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 8182543152022113517, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 9052424163147661654, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: m_SizeDelta.x - value: 185 + propertyPath: m_AnchorMax.y + value: 0 objectReference: {fileID: 0} - - target: {fileID: 8182543152022113517, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 9052424163147661654, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: m_SizeDelta.y - value: 48 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - - target: {fileID: 9085651528773163965, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 9052424163147661654, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: m_AnchorMin.y - value: 1 + propertyPath: m_SizeDelta.x + value: 0 objectReference: {fileID: 0} - - target: {fileID: 9085651528773163965, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 9052424163147661654, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - propertyPath: m_AnchorMax.y - value: 1 + propertyPath: m_SizeDelta.y + value: 0 objectReference: {fileID: 0} - - target: {fileID: 9085651528773163965, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 9052424163147661654, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} propertyPath: m_AnchoredPosition.x - value: 10 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 9085651528773163965, guid: 74cec897d8650db44b82119f24f6dfe8, + - target: {fileID: 9052424163147661654, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} propertyPath: m_AnchoredPosition.y - value: -130 - objectReference: {fileID: 0} - - target: {fileID: 9085651528773163965, guid: 74cec897d8650db44b82119f24f6dfe8, - type: 3} - propertyPath: m_SizeDelta.x - value: 380 - objectReference: {fileID: 0} - - target: {fileID: 9085651528773163965, guid: 74cec897d8650db44b82119f24f6dfe8, - type: 3} - propertyPath: m_SizeDelta.y - value: 48 + value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 74cec897d8650db44b82119f24f6dfe8, type: 3} ---- !u!1 &6037343895412055509 stripped -GameObject: - m_CorrespondingSourceObject: {fileID: 8021968426436085800, guid: 74cec897d8650db44b82119f24f6dfe8, - type: 3} - m_PrefabInstance: {fileID: 4367143092805424637} - m_PrefabAsset: {fileID: 0} ---- !u!224 &8961717799280304913 stripped + m_SourcePrefab: {fileID: 100100000, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} +--- !u!224 &3057779607087530539 stripped RectTransform: - m_CorrespondingSourceObject: {fileID: 4667241430242178796, guid: 74cec897d8650db44b82119f24f6dfe8, + m_CorrespondingSourceObject: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - m_PrefabInstance: {fileID: 4367143092805424637} + m_PrefabInstance: {fileID: 5924131439233484938} m_PrefabAsset: {fileID: 0} ---- !u!114 &7043282987134106570 stripped +--- !u!114 &7411910490077527096 stripped MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 6712035863932038711, guid: 74cec897d8650db44b82119f24f6dfe8, + m_CorrespondingSourceObject: {fileID: 3813101351726199986, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} - m_PrefabInstance: {fileID: 4367143092805424637} + m_PrefabInstance: {fileID: 5924131439233484938} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6037343895412055509} + m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 68404f14c39a98c4f8b2d50b3871819e, type: 3} + m_Script: {fileID: 11500000, guid: 12834725d7e6e6b409e221744e38d836, type: 3} m_Name: m_EditorClassIdentifier: diff --git a/Assets/Project/Prefabs/UI/Gameplay/MissionState.prefab b/Assets/Project/Prefabs/UI/Gameplay/MissionState.prefab new file mode 100644 index 00000000..d9cff657 --- /dev/null +++ b/Assets/Project/Prefabs/UI/Gameplay/MissionState.prefab @@ -0,0 +1,1421 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &649545367882848264 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5317363217435765523} + - component: {fileID: 6979348691834854563} + - component: {fileID: 2715791462335114852} + m_Layer: 5 + m_Name: Spacer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5317363217435765523 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 649545367882848264} + 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: 123396276273836919} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 2, y: 48} + m_Pivot: {x: 1, y: 0.5} +--- !u!222 &6979348691834854563 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 649545367882848264} + m_CullTransparentMesh: 1 +--- !u!114 &2715791462335114852 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 649545367882848264} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5d06e1cd33074c5daca1981ae29d4034, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.29411766, g: 0.7254902, b: 0.7053667, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 + skew: {x: 20, y: 0} +--- !u!1 &1775460480622891141 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2888538602912057308} + - component: {fileID: 8459823676841866320} + - component: {fileID: 482936606518537442} + - component: {fileID: 7166890531793361045} + - component: {fileID: 8442867699096588136} + m_Layer: 5 + m_Name: MissionState + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2888538602912057308 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1775460480622891141} + 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: 123396276273836919} + - {fileID: 1897757235243557295} + - {fileID: 562786658608689152} + m_Father: {fileID: 0} + m_RootOrder: 0 + 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, y: -60} + m_SizeDelta: {x: 0, y: 48} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &8459823676841866320 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1775460480622891141} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 1 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!114 &482936606518537442 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1775460480622891141} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 2 + m_VerticalFit: 0 +--- !u!114 &7166890531793361045 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1775460480622891141} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82bace075c35b1d48a96ee0cf1230e03, type: 3} + m_Name: + m_EditorClassIdentifier: + headerText: {fileID: 9183415446484764420} + infoText: {fileID: 5434029110167632908} + headerTracker: {fileID: 1151274356420390233} + buttonTracker: {fileID: 1448595065860718465} + infoTracker: {fileID: 685438662442184238} + editorAction: + m_Name: Editor + m_Type: 0 + m_ExpectedControlType: + m_Id: bd861ac5-ce2e-47c8-850b-32b79a8b9533 + m_Processors: + m_Interactions: + m_SingletonActionBindings: + - m_Name: + m_Id: 7066a958-5029-4c42-992b-988f4ffcbcfd + m_Path: /#(E) + m_Interactions: + m_Processors: + m_Groups: + m_Action: Editor + m_Flags: 0 +--- !u!223 &8442867699096588136 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1775460480622891141} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 1 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 842884435 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!1 &2995408543100543448 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8126253122769588405} + - component: {fileID: 3927260887627770513} + - component: {fileID: 2101645793879304352} + - component: {fileID: 366267859336087133} + m_Layer: 5 + m_Name: Info + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8126253122769588405 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2995408543100543448} + 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: 6268478744373704163} + m_Father: {fileID: 562786658608689152} + m_RootOrder: 1 + 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: 0, y: 48} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3927260887627770513 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2995408543100543448} + m_CullTransparentMesh: 1 +--- !u!114 &2101645793879304352 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2995408543100543448} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 20 + m_Right: 20 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 1 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!114 &366267859336087133 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2995408543100543448} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 2 + m_VerticalFit: 0 +--- !u!1 &3523536714533099213 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3554779773834474434} + - component: {fileID: 5405865069508921097} + - component: {fileID: 6730415958608354361} + - component: {fileID: 969355016467300739} + m_Layer: 5 + m_Name: Header + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3554779773834474434 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3523536714533099213} + 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: 3209835010273148832} + m_Father: {fileID: 123396276273836919} + m_RootOrder: 1 + 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: 0, y: 48} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5405865069508921097 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3523536714533099213} + m_CullTransparentMesh: 1 +--- !u!114 &6730415958608354361 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3523536714533099213} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 20 + m_Right: 20 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 1 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!114 &969355016467300739 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3523536714533099213} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 2 + m_VerticalFit: 0 +--- !u!114 &2784658555922025642 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3529696695653749238} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 1 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!114 &3791234381591872322 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3529696695653749238} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 2 + m_VerticalFit: 0 +--- !u!1 &4021655820539169386 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 945236415309893085} + - component: {fileID: 7822761480941311392} + - component: {fileID: 1631971383643745216} + m_Layer: 5 + m_Name: Spacer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &945236415309893085 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4021655820539169386} + 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: 562786658608689152} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: -1.0000305, y: -24} + m_SizeDelta: {x: 2, y: 48} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7822761480941311392 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4021655820539169386} + m_CullTransparentMesh: 1 +--- !u!114 &1631971383643745216 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4021655820539169386} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5d06e1cd33074c5daca1981ae29d4034, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.29411766, g: 0.7254902, b: 0.7053667, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 + skew: {x: 20, y: 0} +--- !u!222 &7747741906138817370 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5445221375983376350} + m_CullTransparentMesh: 1 +--- !u!114 &3254970006645801645 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5445221375983376350} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5d06e1cd33074c5daca1981ae29d4034, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.15686275, g: 0.15686275, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 + skew: {x: 20, y: 0} +--- !u!222 &2472378901364008346 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5613808147509613737} + m_CullTransparentMesh: 1 +--- !u!114 &5625201828297935358 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5613808147509613737} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5d06e1cd33074c5daca1981ae29d4034, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.23529412, g: 0.23529412, b: 0.27450982, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 + skew: {x: 20, y: 0} +--- !u!222 &8870494962120199355 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6199227567404729969} + m_CullTransparentMesh: 1 +--- !u!114 &6044244081572604843 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6199227567404729969} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5d06e1cd33074c5daca1981ae29d4034, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.078431375, g: 0.078431375, b: 0.11764706, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 + skew: {x: 20, y: 0} +--- !u!1 &8212654479737111361 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6268478744373704163} + - component: {fileID: 8077115245288497805} + - component: {fileID: 5434029110167632908} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6268478744373704163 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8212654479737111361} + 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: 8126253122769588405} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8077115245288497805 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8212654479737111361} + m_CullTransparentMesh: 1 +--- !u!114 &5434029110167632908 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8212654479737111361} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.74509805, g: 0.74509805, b: 0.7647059, 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_FontData: + m_Font: {fileID: 12800000, guid: 178dfd0eb691dfc48b2338eb02b30bf6, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Info +--- !u!1 &8633421611143147266 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3209835010273148832} + - component: {fileID: 1247023960049459831} + - component: {fileID: 9183415446484764420} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3209835010273148832 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8633421611143147266} + 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: 3554779773834474434} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1247023960049459831 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8633421611143147266} + m_CullTransparentMesh: 1 +--- !u!114 &9183415446484764420 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8633421611143147266} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, 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_FontData: + m_Font: {fileID: 12800000, guid: 178dfd0eb691dfc48b2338eb02b30bf6, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Header +--- !u!1001 &3341123850009353492 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2888538602912057308} + m_Modifications: + - target: {fileID: 1405560484629786998, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_PreferredWidth + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4198621460348428949, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: targetRect + value: + objectReference: {fileID: 921615311917047323} + - target: {fileID: 4198621460348428949, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: animationMode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 8671147613918288741, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_Name + value: ButtonTracker + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: db3e07b36506fa74d886389fbe8cb4f2, type: 3} +--- !u!114 &1448595065860718465 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 4198621460348428949, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + m_PrefabInstance: {fileID: 3341123850009353492} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6199227567404729969} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3601d10cf046df54c84cfa2c41681337, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!224 &1897757235243557295 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + m_PrefabInstance: {fileID: 3341123850009353492} + m_PrefabAsset: {fileID: 0} +--- !u!1 &6199227567404729969 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 8671147613918288741, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + m_PrefabInstance: {fileID: 3341123850009353492} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &3731044471891627195 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2888538602912057308} + m_Modifications: + - target: {fileID: 1405560484629786998, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_PreferredWidth + value: 77 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4198621460348428949, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: targetRect + value: + objectReference: {fileID: 8126253122769588405} + - target: {fileID: 4198621460348428949, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: animationMode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 8671147613918288741, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_Name + value: InfoTracker + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: db3e07b36506fa74d886389fbe8cb4f2, type: 3} +--- !u!224 &562786658608689152 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + m_PrefabInstance: {fileID: 3731044471891627195} + m_PrefabAsset: {fileID: 0} +--- !u!114 &685438662442184238 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 4198621460348428949, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + m_PrefabInstance: {fileID: 3731044471891627195} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5445221375983376350} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3601d10cf046df54c84cfa2c41681337, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &5445221375983376350 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 8671147613918288741, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + m_PrefabInstance: {fileID: 3731044471891627195} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &3872631773662957516 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2888538602912057308} + m_Modifications: + - target: {fileID: 1405560484629786998, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_PreferredWidth + value: 102.17 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4198621460348428949, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: targetRect + value: + objectReference: {fileID: 3554779773834474434} + - target: {fileID: 4198621460348428949, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: animationMode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 8671147613918288741, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + propertyPath: m_Name + value: HeaderTracker + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: db3e07b36506fa74d886389fbe8cb4f2, type: 3} +--- !u!1 &5613808147509613737 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 8671147613918288741, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + m_PrefabInstance: {fileID: 3872631773662957516} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1151274356420390233 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 4198621460348428949, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + m_PrefabInstance: {fileID: 3872631773662957516} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5613808147509613737} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3601d10cf046df54c84cfa2c41681337, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!224 &123396276273836919 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 3749315229192436923, guid: db3e07b36506fa74d886389fbe8cb4f2, + type: 3} + m_PrefabInstance: {fileID: 3872631773662957516} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &8649119065408443615 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1897757235243557295} + m_Modifications: + - target: {fileID: 350557258748702759, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_Text + value: '[E] Rebuild + +' + objectReference: {fileID: 0} + - target: {fileID: 1600893048667343851, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_PreferredHeight + value: 125.9 + objectReference: {fileID: 0} + - target: {fileID: 1744399743185745127, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_CullTransparentMesh + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3665174607701141875, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_CullTransparentMesh + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_TargetGraphic + value: + objectReference: {fileID: 0} + - target: {fileID: 5259033962641442089, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_Name + value: Button + objectReference: {fileID: 0} + - target: {fileID: 6073299296863241000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6073299296863241000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6073299296863241000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6073299296863241000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6073299296863241000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6073299296863241000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6073299296863241000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6073299296863241000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchorMax.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchorMax.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchorMin.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchorMin.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 8327413947886271598, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} + - {fileID: 3272920608243847292, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} + - {fileID: 7532406449157013280, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} + - {fileID: 1600893048667343851, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} + - {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} +--- !u!1 &3529696695653749238 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 5259033962641442089, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + m_PrefabInstance: {fileID: 8649119065408443615} + m_PrefabAsset: {fileID: 0} +--- !u!224 &921615311917047323 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + m_PrefabInstance: {fileID: 8649119065408443615} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Project/Prefabs/UI/Gameplay/MissionState.prefab.meta b/Assets/Project/Prefabs/UI/Gameplay/MissionState.prefab.meta new file mode 100644 index 00000000..50e2b5a2 --- /dev/null +++ b/Assets/Project/Prefabs/UI/Gameplay/MissionState.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ee2ad7701cdf3b1459bf2dfbe7c31f4b +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Prefabs/UI/Gameplay/PauseMenu.prefab b/Assets/Project/Prefabs/UI/Gameplay/PauseMenu.prefab index 58a8d307..90df042a 100644 --- a/Assets/Project/Prefabs/UI/Gameplay/PauseMenu.prefab +++ b/Assets/Project/Prefabs/UI/Gameplay/PauseMenu.prefab @@ -193,6 +193,7 @@ GameObject: - component: {fileID: 5081103747970171935} - component: {fileID: 5940500070712664114} - component: {fileID: 6712035863932038711} + - component: {fileID: 2081732228155939241} m_Layer: 5 m_Name: PauseMenu m_TagString: Untagged @@ -270,6 +271,20 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 68404f14c39a98c4f8b2d50b3871819e, type: 3} m_Name: m_EditorClassIdentifier: + menuTransitionOut: {fileID: 11400000, guid: 39f12b02ccd77de41825bf98b2a7159c, type: 2} + audioPlayer: {fileID: 2081732228155939241} +--- !u!114 &2081732228155939241 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8021968426436085800} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b2e199450f3216546b29d13f8d842126, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1 &8938467470472838246 GameObject: m_ObjectHideFlags: 0 @@ -493,11 +508,6 @@ PrefabInstance: propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode value: 1 objectReference: {fileID: 0} - - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState - value: 2 - objectReference: {fileID: 0} - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target @@ -505,14 +515,19 @@ PrefabInstance: objectReference: {fileID: 6712035863932038711} - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName - value: Exa.UI.Gameplay.PauseMenu, Assembly-CSharp + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 objectReference: {fileID: 0} - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName value: QuitToDesktop objectReference: {fileID: 0} + - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName + value: Exa.UI.Gameplay.PauseMenu, Assembly-CSharp + objectReference: {fileID: 0} - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName @@ -525,107 +540,107 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_Pivot.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalPosition.z - value: 0 + propertyPath: m_RootOrder + value: 1 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_RootOrder - value: 1 + propertyPath: m_SizeDelta.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_SizeDelta.x - value: 0 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_SizeDelta.y - value: 0 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMax.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_Pivot.x + propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_Pivot.y + propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] @@ -656,8 +671,13 @@ PrefabInstance: - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode - value: 1 + value: 6 objectReference: {fileID: 0} + - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 6712035863932038711} - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState @@ -665,18 +685,18 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target - value: - objectReference: {fileID: 6712035863932038711} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName + value: Return + objectReference: {fileID: 0} - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName - value: Exa.UI.Gameplay.PauseMenu, Assembly-CSharp + value: Exa.UI.Components.ReturnNavigateable, Assembly-CSharp objectReference: {fileID: 0} - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName - value: Continue + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_BoolArgument + value: 1 objectReference: {fileID: 0} - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} @@ -690,107 +710,107 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_Pivot.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalPosition.z - value: 0 + propertyPath: m_RootOrder + value: 1 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_RootOrder - value: 1 + propertyPath: m_SizeDelta.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_SizeDelta.x - value: 0 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_SizeDelta.y - value: 0 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMax.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_Pivot.x + propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_Pivot.y + propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] @@ -835,11 +855,6 @@ PrefabInstance: propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode value: 1 objectReference: {fileID: 0} - - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState - value: 2 - objectReference: {fileID: 0} - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target @@ -847,14 +862,19 @@ PrefabInstance: objectReference: {fileID: 6712035863932038711} - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName - value: Exa.UI.Gameplay.PauseMenu, Assembly-CSharp + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 objectReference: {fileID: 0} - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName value: QuitToMenu objectReference: {fileID: 0} + - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName + value: Exa.UI.Gameplay.PauseMenu, Assembly-CSharp + objectReference: {fileID: 0} - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName @@ -867,107 +887,107 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_Pivot.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_RootOrder + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_SizeDelta.x - value: 0 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_SizeDelta.y - value: 0 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMax.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_Pivot.x + propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_Pivot.y + propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] @@ -1000,11 +1020,6 @@ PrefabInstance: propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode value: 1 objectReference: {fileID: 0} - - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState - value: 2 - objectReference: {fileID: 0} - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target @@ -1012,14 +1027,19 @@ PrefabInstance: objectReference: {fileID: 6712035863932038711} - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName - value: Exa.UI.Gameplay.PauseMenu, Assembly-CSharp + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 objectReference: {fileID: 0} - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName value: Save objectReference: {fileID: 0} + - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName + value: Exa.UI.Gameplay.PauseMenu, Assembly-CSharp + objectReference: {fileID: 0} - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName @@ -1037,107 +1057,107 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_Pivot.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalPosition.z - value: 0 + propertyPath: m_RootOrder + value: 2 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_RootOrder - value: 2 + propertyPath: m_SizeDelta.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_SizeDelta.x - value: 0 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_SizeDelta.y - value: 0 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMax.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_Pivot.x + propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_Pivot.y + propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] @@ -1182,11 +1202,6 @@ PrefabInstance: propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode value: 1 objectReference: {fileID: 0} - - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState - value: 2 - objectReference: {fileID: 0} - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target @@ -1194,14 +1209,19 @@ PrefabInstance: objectReference: {fileID: 6712035863932038711} - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName - value: Exa.UI.Gameplay.PauseMenu, Assembly-CSharp + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 objectReference: {fileID: 0} - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName value: Load objectReference: {fileID: 0} + - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName + value: Exa.UI.Gameplay.PauseMenu, Assembly-CSharp + objectReference: {fileID: 0} - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName @@ -1219,107 +1239,107 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_Pivot.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalPosition.z - value: 0 + propertyPath: m_RootOrder + value: 3 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_RootOrder - value: 3 + propertyPath: m_SizeDelta.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_SizeDelta.x - value: 0 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_SizeDelta.y - value: 0 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMax.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_Pivot.x + propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_Pivot.y + propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] diff --git a/Assets/Project/Prefabs/UI/Gameplay/RotationOverlay.prefab b/Assets/Project/Prefabs/UI/Gameplay/RotationOverlay.prefab new file mode 100644 index 00000000..4bcc2777 --- /dev/null +++ b/Assets/Project/Prefabs/UI/Gameplay/RotationOverlay.prefab @@ -0,0 +1,578 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1581856390994117240 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1581856390994117241} + - component: {fileID: 1581856390994117243} + - component: {fileID: 1581856390994117242} + - component: {fileID: 1581856390994117220} + m_Layer: 5 + m_Name: RotationOverlay + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1581856390994117241 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1581856390994117240} + 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: 1581856392005213170} + - {fileID: 1581856392221196335} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!223 &1581856390994117243 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1581856390994117240} + 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: 0 + m_SortingLayerID: 0 + m_SortingOrder: 1 + m_TargetDisplay: 0 +--- !u!114 &1581856390994117242 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1581856390994117240} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!114 &1581856390994117220 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1581856390994117240} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 44cdea69361b4574b6d1ac285d277d45, type: 3} + m_Name: + m_EditorClassIdentifier: + targetRotation: {fileID: 1581856392221196328} + currRotation: {fileID: 1581856392005213171} + worldUnit: + min: 15 + max: 16 + sizeMultiplier: 100 +--- !u!1 &1581856392005213169 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1581856392005213170} + - component: {fileID: 1581856392005213180} + - component: {fileID: 1581856392005213171} + m_Layer: 5 + m_Name: Curr + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1581856392005213170 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1581856392005213169} + 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: 1581856390994117241} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!222 &1581856392005213180 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1581856392005213169} + m_CullTransparentMesh: 1 +--- !u!114 &1581856392005213171 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1581856392005213169} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 37b55da771b3147d18272e5649a90f03, 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_Texture: {fileID: 0} + m_UVRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + vectorLine: + m_lineVertices: + - {x: 0, y: 240.5, z: 0} + - {x: 199, y: 240.5, z: 0} + - {x: 199, y: 239.5, z: 0} + - {x: 0, y: 239.5, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + m_lineUVs: + - {x: 0, y: 1} + - {x: 1, y: 1} + - {x: 1, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 1} + - {x: 1, y: 1} + - {x: 1, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_lineColors: + - serializedVersion: 2 + rgba: 4294967295 + - serializedVersion: 2 + rgba: 4294967295 + - serializedVersion: 2 + rgba: 4294967295 + - serializedVersion: 2 + rgba: 4294967295 + - serializedVersion: 2 + rgba: 4294967295 + - serializedVersion: 2 + rgba: 4294967295 + - serializedVersion: 2 + rgba: 4294967295 + - serializedVersion: 2 + rgba: 4294967295 + - serializedVersion: 2 + rgba: 0 + - serializedVersion: 2 + rgba: 0 + - serializedVersion: 2 + rgba: 0 + - serializedVersion: 2 + rgba: 0 + - serializedVersion: 2 + rgba: 0 + - serializedVersion: 2 + rgba: 0 + - serializedVersion: 2 + rgba: 0 + - serializedVersion: 2 + rgba: 0 + m_lineTriangles: 000000000100000003000000010000000200000003000000 + m_vertexCount: 4 + m_go: {fileID: 1581856392005213169} + m_rectTransform: {fileID: 1581856392005213170} + m_color: + serializedVersion: 2 + rgba: 4294967295 + m_canvasState: 1 + m_is2D: 1 + m_points2: + - {x: 0, y: 240} + - {x: 199, y: 240} + m_points3: [] + m_pointsCount: 2 + m_screenPoints: [] + m_lineWidths: + - 0.5 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + m_lineWidth: 2 + m_maxWeldDistance: 16 + m_distances: [] + m_name: Curr + m_material: {fileID: 0} + m_originalTexture: {fileID: 0} + m_texture: {fileID: 0} + m_active: 1 + m_lineType: 0 + m_capLength: 0 + m_smoothWidth: 0 + m_smoothColor: 0 + m_joins: 2 + m_isAutoDrawing: 0 + m_drawStart: 0 + m_drawEnd: 1 + m_endPointsUpdate: 0 + m_useNormals: 0 + m_useTangents: 0 + m_normalsCalculated: 0 + m_tangentsCalculated: 0 + m_capType: 4 + m_endCap: + m_useCapColors: 0 + m_frontColor: + serializedVersion: 2 + rgba: 0 + m_backColor: + serializedVersion: 2 + rgba: 0 + m_frontEndCapIndex: -1 + m_backEndCapIndex: -1 + m_lineUVBottom: 0 + m_lineUVTop: 1 + m_frontCapUVBottom: 0 + m_frontCapUVTop: 0 + m_backCapUVBottom: 0 + m_backCapUVTop: 0 + m_continuousTexture: 0 + m_drawTransform: {fileID: 0} + m_viewportDraw: 0 + m_textureScale: 0 + m_useTextureScale: 0 + m_textureOffset: 0 + m_useMatrix: 0 + m_matrix: + e00: 0 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 0 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 0 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 0 + m_collider: 0 + m_trigger: 0 + m_physicsMaterial: {fileID: 0} + m_alignOddWidthToPixels: 0 +--- !u!1 &1581856392221196334 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1581856392221196335} + - component: {fileID: 1581856392221196329} + - component: {fileID: 1581856392221196328} + m_Layer: 5 + m_Name: Target + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1581856392221196335 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1581856392221196334} + 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: 1581856390994117241} + 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!222 &1581856392221196329 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1581856392221196334} + m_CullTransparentMesh: 1 +--- !u!114 &1581856392221196328 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1581856392221196334} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 37b55da771b3147d18272e5649a90f03, 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_Texture: {fileID: 0} + m_UVRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + vectorLine: + m_lineVertices: + - {x: 0.72557074, y: 240.50002, z: 0} + - {x: 199, y: 240.5, z: 0} + - {x: 199, y: 239.5, z: 0} + - {x: 0.7255706, y: 239.50002, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + m_lineUVs: + - {x: 0, y: 1} + - {x: 1, y: 1} + - {x: 1, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 1} + - {x: 1, y: 1} + - {x: 1, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + - {x: 0, y: 0} + m_lineColors: + - serializedVersion: 2 + rgba: 4294967295 + - serializedVersion: 2 + rgba: 4294967295 + - serializedVersion: 2 + rgba: 4294967295 + - serializedVersion: 2 + rgba: 4294967295 + - serializedVersion: 2 + rgba: 4294967295 + - serializedVersion: 2 + rgba: 4294967295 + - serializedVersion: 2 + rgba: 4294967295 + - serializedVersion: 2 + rgba: 4294967295 + - serializedVersion: 2 + rgba: 0 + - serializedVersion: 2 + rgba: 0 + - serializedVersion: 2 + rgba: 0 + - serializedVersion: 2 + rgba: 0 + - serializedVersion: 2 + rgba: 0 + - serializedVersion: 2 + rgba: 0 + - serializedVersion: 2 + rgba: 0 + - serializedVersion: 2 + rgba: 0 + m_lineTriangles: 000000000100000003000000010000000200000003000000 + m_vertexCount: 4 + m_go: {fileID: 1581856392221196334} + m_rectTransform: {fileID: 1581856392221196335} + m_color: + serializedVersion: 2 + rgba: 4294967295 + m_canvasState: 1 + m_is2D: 1 + m_points2: + - {x: 0.7255707, y: 240.00002} + - {x: 199, y: 240} + m_points3: [] + m_pointsCount: 2 + m_screenPoints: [] + m_lineWidths: + - 0.5 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + m_lineWidth: 2 + m_maxWeldDistance: 16 + m_distances: [] + m_name: Target + m_material: {fileID: 0} + m_originalTexture: {fileID: 0} + m_texture: {fileID: 0} + m_active: 1 + m_lineType: 0 + m_capLength: 0 + m_smoothWidth: 0 + m_smoothColor: 0 + m_joins: 2 + m_isAutoDrawing: 0 + m_drawStart: 0 + m_drawEnd: 1 + m_endPointsUpdate: 0 + m_useNormals: 0 + m_useTangents: 0 + m_normalsCalculated: 0 + m_tangentsCalculated: 0 + m_capType: 4 + m_endCap: + m_useCapColors: 0 + m_frontColor: + serializedVersion: 2 + rgba: 0 + m_backColor: + serializedVersion: 2 + rgba: 0 + m_frontEndCapIndex: -1 + m_backEndCapIndex: -1 + m_lineUVBottom: 0 + m_lineUVTop: 1 + m_frontCapUVBottom: 0 + m_frontCapUVTop: 0 + m_backCapUVBottom: 0 + m_backCapUVTop: 0 + m_continuousTexture: 0 + m_drawTransform: {fileID: 0} + m_viewportDraw: 0 + m_textureScale: 0 + m_useTextureScale: 0 + m_textureOffset: 0 + m_useMatrix: 0 + m_matrix: + e00: 0 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 0 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 0 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 0 + m_collider: 0 + m_trigger: 0 + m_physicsMaterial: {fileID: 0} + m_alignOddWidthToPixels: 0 diff --git a/Assets/Project/Prefabs/UI/Gameplay/RotationOverlay.prefab.meta b/Assets/Project/Prefabs/UI/Gameplay/RotationOverlay.prefab.meta new file mode 100644 index 00000000..7384b485 --- /dev/null +++ b/Assets/Project/Prefabs/UI/Gameplay/RotationOverlay.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d689761b2ed64274ebe775612b5822a4 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Prefabs/UI/Gameplay/Score.prefab b/Assets/Project/Prefabs/UI/Gameplay/Score.prefab new file mode 100644 index 00000000..dfb6338b --- /dev/null +++ b/Assets/Project/Prefabs/UI/Gameplay/Score.prefab @@ -0,0 +1,1060 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &3567517817492148493 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 437499566300935978} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 160 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &3834429938533509875 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6514826422229566018} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 160 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &6520166351880243299 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1034789430218935174} + - component: {fileID: 8499848617660217267} + - component: {fileID: 5548543708770469033} + - component: {fileID: 5794086501050131859} + m_Layer: 5 + m_Name: Score + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1034789430218935174 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6520166351880243299} + 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: 5847765382864404529} + - {fileID: 2714751560731105857} + - {fileID: 1568949567209854129} + - {fileID: 8779666033112985385} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 0, y: 12} + m_SizeDelta: {x: 376, y: 0} + m_Pivot: {x: 0.5, y: 0} +--- !u!114 &8499848617660217267 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6520166351880243299} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 8 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 1 + m_ReverseArrangement: 0 +--- !u!114 &5548543708770469033 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6520166351880243299} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 +--- !u!114 &5794086501050131859 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6520166351880243299} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2a45dfe7e64e4e6e8986139a55e601f0, type: 3} + m_Name: + m_EditorClassIdentifier: + collectedResourcesView: {fileID: 9056751458450771139} + enemiesDestroyedView: {fileID: 665363947923216051} + totalScoreView: {fileID: 6143129145296757723} +--- !u!114 &7891778095053549634 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8257802926972743002} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 160 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1001 &328375651752701514 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1034789430218935174} + m_Modifications: + - target: {fileID: 438599937416983596, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Text + value: Enemies destroyed + objectReference: {fileID: 0} + - target: {fileID: 438599937416983596, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_FontData.m_MinSize + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 438599937416983596, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_FontData.m_FontSize + value: 24 + objectReference: {fileID: 0} + - target: {fileID: 438599937416983596, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_FontData.m_Alignment + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3942644137778613017, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Text + value: Value + objectReference: {fileID: 0} + - target: {fileID: 3942644137778613017, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_FontData.m_MinSize + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3942644137778613017, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_FontData.m_FontSize + value: 24 + objectReference: {fileID: 0} + - target: {fileID: 3942644137778613017, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_FontData.m_Alignment + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Color.b + value: 0.11764706 + objectReference: {fileID: 0} + - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Color.g + value: 0.078431375 + objectReference: {fileID: 0} + - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Color.r + value: 0.078431375 + objectReference: {fileID: 0} + - target: {fileID: 6372109433816541427, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Name + value: EnemiesDestroyed + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 7d49f4aa77aebae418b6c289028d58ec, type: 3} +--- !u!224 &2714751560731105857 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + m_PrefabInstance: {fileID: 328375651752701514} + m_PrefabAsset: {fileID: 0} +--- !u!114 &665363947923216051 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 987773853525342457, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + m_PrefabInstance: {fileID: 328375651752701514} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5027d8f2fff7b244797e9b334add1090, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &437499566300935978 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 188254411374090592, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + m_PrefabInstance: {fileID: 328375651752701514} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &6410170927229229858 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1034789430218935174} + m_Modifications: + - target: {fileID: 438599937416983596, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Text + value: 'Total score + +' + objectReference: {fileID: 0} + - target: {fileID: 438599937416983596, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_FontData.m_MinSize + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 438599937416983596, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_FontData.m_FontSize + value: 24 + objectReference: {fileID: 0} + - target: {fileID: 438599937416983596, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_FontData.m_Alignment + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3942644137778613017, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Text + value: Value + objectReference: {fileID: 0} + - target: {fileID: 3942644137778613017, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_FontData.m_MinSize + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3942644137778613017, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_FontData.m_FontSize + value: 24 + objectReference: {fileID: 0} + - target: {fileID: 3942644137778613017, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_FontData.m_Alignment + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Color.b + value: 0.11764706 + objectReference: {fileID: 0} + - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Color.g + value: 0.078431375 + objectReference: {fileID: 0} + - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Color.r + value: 0.078431375 + objectReference: {fileID: 0} + - target: {fileID: 6372109433816541427, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Name + value: TotalScore + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 7d49f4aa77aebae418b6c289028d58ec, type: 3} +--- !u!224 &8779666033112985385 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + m_PrefabInstance: {fileID: 6410170927229229858} + m_PrefabAsset: {fileID: 0} +--- !u!114 &6143129145296757723 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 987773853525342457, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + m_PrefabInstance: {fileID: 6410170927229229858} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5027d8f2fff7b244797e9b334add1090, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &6514826422229566018 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 188254411374090592, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + m_PrefabInstance: {fileID: 6410170927229229858} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &6542279985691987975 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1034789430218935174} + m_Modifications: + - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7272114362287537980, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, + type: 3} + propertyPath: m_Name + value: Spacer + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} +--- !u!224 &1568949567209854129 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, + type: 3} + m_PrefabInstance: {fileID: 6542279985691987975} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &8071941888275280954 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1034789430218935174} + m_Modifications: + - target: {fileID: 438599937416983596, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Text + value: Collected resources + objectReference: {fileID: 0} + - target: {fileID: 438599937416983596, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_FontData.m_MinSize + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 438599937416983596, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_FontData.m_FontSize + value: 24 + objectReference: {fileID: 0} + - target: {fileID: 438599937416983596, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_FontData.m_Alignment + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1541835943466787729, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3942644137778613017, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Text + value: Value + objectReference: {fileID: 0} + - target: {fileID: 3942644137778613017, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_FontData.m_MinSize + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3942644137778613017, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_FontData.m_FontSize + value: 24 + objectReference: {fileID: 0} + - target: {fileID: 3942644137778613017, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_FontData.m_Alignment + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Color.b + value: 0.11764706 + objectReference: {fileID: 0} + - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Color.g + value: 0.078431375 + objectReference: {fileID: 0} + - target: {fileID: 6228571799257515533, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Color.r + value: 0.078431375 + objectReference: {fileID: 0} + - target: {fileID: 6372109433816541427, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_Name + value: CollectedResources + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8698529868403434280, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 7d49f4aa77aebae418b6c289028d58ec, type: 3} +--- !u!224 &5847765382864404529 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 2387510074584855563, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + m_PrefabInstance: {fileID: 8071941888275280954} + m_PrefabAsset: {fileID: 0} +--- !u!114 &9056751458450771139 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 987773853525342457, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + m_PrefabInstance: {fileID: 8071941888275280954} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5027d8f2fff7b244797e9b334add1090, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &8257802926972743002 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 188254411374090592, guid: 7d49f4aa77aebae418b6c289028d58ec, + type: 3} + m_PrefabInstance: {fileID: 8071941888275280954} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Project/Prefabs/UI/Gameplay/Score.prefab.meta b/Assets/Project/Prefabs/UI/Gameplay/Score.prefab.meta new file mode 100644 index 00000000..54e6b9f6 --- /dev/null +++ b/Assets/Project/Prefabs/UI/Gameplay/Score.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5eb4eddb045c9c2418d614ee5edcfdca +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Prefabs/UI/LoadingScreen.prefab b/Assets/Project/Prefabs/UI/LoadingScreen.prefab index 97b10d8e..6955e926 100644 --- a/Assets/Project/Prefabs/UI/LoadingScreen.prefab +++ b/Assets/Project/Prefabs/UI/LoadingScreen.prefab @@ -359,7 +359,7 @@ GameObject: m_Component: - component: {fileID: 4416355202769872475} - component: {fileID: 2237738271368203093} - - component: {fileID: 8359107862499590759} + - component: {fileID: 8244485298323072445} m_Layer: 5 m_Name: Foreground m_TagString: Untagged @@ -395,7 +395,7 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2660425959224300933} m_CullTransparentMesh: 0 ---- !u!114 &8359107862499590759 +--- !u!114 &8244485298323072445 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -404,7 +404,7 @@ MonoBehaviour: m_GameObject: {fileID: 2660425959224300933} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 39a376d3e897ed845a3a7c208560675b, type: 3} + m_Script: {fileID: 11500000, guid: 5d06e1cd33074c5daca1981ae29d4034, type: 3} m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} @@ -425,8 +425,7 @@ MonoBehaviour: m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 - skewX: -80 - skewY: 0 + skew: {x: -20, y: 0} --- !u!1 &4046629517471457367 GameObject: m_ObjectHideFlags: 0 @@ -862,107 +861,107 @@ PrefabInstance: m_Modifications: - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_LocalRotation.x - value: 0 + propertyPath: m_AnchorMax.x + value: 1 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_LocalRotation.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_LocalRotation.z + propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_RootOrder + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 + propertyPath: m_SizeDelta.y + value: 4 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_SizeDelta.y - value: 4 + propertyPath: m_LocalRotation.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_AnchorMin.x + propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_AnchorMax.x - value: 1 + propertyPath: m_AnchoredPosition.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_Pivot.x - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_Pivot.y + propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - target: {fileID: 7272114362287537980, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, diff --git a/Assets/Project/Prefabs/UI/MainUI.prefab b/Assets/Project/Prefabs/UI/MainUI.prefab index 94a92f9b..1cff52c9 100644 --- a/Assets/Project/Prefabs/UI/MainUI.prefab +++ b/Assets/Project/Prefabs/UI/MainUI.prefab @@ -93,6 +93,7 @@ MonoBehaviour: m_FallbackScreenDPI: 96 m_DefaultSpriteDPI: 96 m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 --- !u!114 &5526384382514086164 MonoBehaviour: m_ObjectHideFlags: 0 @@ -161,6 +162,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b1f2c303d0114294aa9ccdd0decda861, type: 3} m_Name: m_EditorClassIdentifier: + buttonPrefab: {fileID: 5259033962641442089, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} dropdownPrefab: {fileID: 214129591251731524, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} inputFieldPrefab: {fileID: 3896904596393045585, guid: 3b615f3a5808fcd4da198ad89c20ad8f, @@ -220,57 +223,72 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4621365056658803773, guid: 83f7edfa6a10a654ca9f66d1529c0505, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 1 objectReference: {fileID: 0} - target: {fileID: 4621365056658803773, guid: 83f7edfa6a10a654ca9f66d1529c0505, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 4621365056658803773, guid: 83f7edfa6a10a654ca9f66d1529c0505, type: 3} - propertyPath: m_LocalPosition.z - value: 0 + propertyPath: m_RootOrder + value: 5 objectReference: {fileID: 0} - target: {fileID: 4621365056658803773, guid: 83f7edfa6a10a654ca9f66d1529c0505, type: 3} - propertyPath: m_LocalRotation.x + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4621365056658803773, guid: 83f7edfa6a10a654ca9f66d1529c0505, + type: 3} + propertyPath: m_AnchorMin.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4621365056658803773, guid: 83f7edfa6a10a654ca9f66d1529c0505, + type: 3} + propertyPath: m_SizeDelta.x + value: 400 + objectReference: {fileID: 0} + - target: {fileID: 4621365056658803773, guid: 83f7edfa6a10a654ca9f66d1529c0505, + type: 3} + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4621365056658803773, guid: 83f7edfa6a10a654ca9f66d1529c0505, type: 3} - propertyPath: m_LocalRotation.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4621365056658803773, guid: 83f7edfa6a10a654ca9f66d1529c0505, type: 3} - propertyPath: m_LocalRotation.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4621365056658803773, guid: 83f7edfa6a10a654ca9f66d1529c0505, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_LocalPosition.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 4621365056658803773, guid: 83f7edfa6a10a654ca9f66d1529c0505, type: 3} - propertyPath: m_RootOrder - value: 5 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 4621365056658803773, guid: 83f7edfa6a10a654ca9f66d1529c0505, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4621365056658803773, guid: 83f7edfa6a10a654ca9f66d1529c0505, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4621365056658803773, guid: 83f7edfa6a10a654ca9f66d1529c0505, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - target: {fileID: 4621365056658803773, guid: 83f7edfa6a10a654ca9f66d1529c0505, @@ -285,29 +303,44 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4621365056658803773, guid: 83f7edfa6a10a654ca9f66d1529c0505, type: 3} - propertyPath: m_SizeDelta.x - value: 400 + propertyPath: m_LocalEulerAnglesHint.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 4621365056658803773, guid: 83f7edfa6a10a654ca9f66d1529c0505, type: 3} - propertyPath: m_SizeDelta.y - value: 540 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 4621365056658803773, guid: 83f7edfa6a10a654ca9f66d1529c0505, type: 3} - propertyPath: m_Pivot.x - value: 1 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} - - target: {fileID: 4621365056658803773, guid: 83f7edfa6a10a654ca9f66d1529c0505, + - target: {fileID: 4621365057763628049, guid: 83f7edfa6a10a654ca9f66d1529c0505, type: 3} propertyPath: m_Pivot.y - value: 0 + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4621365057763628049, guid: 83f7edfa6a10a654ca9f66d1529c0505, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4621365057763628049, guid: 83f7edfa6a10a654ca9f66d1529c0505, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 objectReference: {fileID: 0} - target: {fileID: 4621365057763628049, guid: 83f7edfa6a10a654ca9f66d1529c0505, type: 3} propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} + - target: {fileID: 4621365057763628049, guid: 83f7edfa6a10a654ca9f66d1529c0505, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 83f7edfa6a10a654ca9f66d1529c0505, type: 3} --- !u!114 &1164198441621280979 stripped @@ -337,62 +370,62 @@ PrefabInstance: m_Modifications: - target: {fileID: 6470278685150113959, guid: 6d62c65db4598c448a9f7ded22748117, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_Pivot.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6470278685150113959, guid: 6d62c65db4598c448a9f7ded22748117, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 1 objectReference: {fileID: 0} - target: {fileID: 6470278685150113959, guid: 6d62c65db4598c448a9f7ded22748117, type: 3} - propertyPath: m_LocalPosition.z - value: 90 + propertyPath: m_RootOrder + value: 8 objectReference: {fileID: 0} - target: {fileID: 6470278685150113959, guid: 6d62c65db4598c448a9f7ded22748117, type: 3} - propertyPath: m_AnchorMin.x + propertyPath: m_AnchorMax.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6470278685150113959, guid: 6d62c65db4598c448a9f7ded22748117, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - target: {fileID: 6470278685150113959, guid: 6d62c65db4598c448a9f7ded22748117, type: 3} - propertyPath: m_AnchorMax.x + propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6470278685150113959, guid: 6d62c65db4598c448a9f7ded22748117, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - target: {fileID: 6470278685150113959, guid: 6d62c65db4598c448a9f7ded22748117, type: 3} - propertyPath: m_Pivot.x + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6470278685150113959, guid: 6d62c65db4598c448a9f7ded22748117, type: 3} - propertyPath: m_Pivot.y - value: 1 + propertyPath: m_LocalPosition.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 6470278685150113959, guid: 6d62c65db4598c448a9f7ded22748117, type: 3} - propertyPath: m_RootOrder - value: 8 + propertyPath: m_LocalPosition.z + value: 90 objectReference: {fileID: 0} - target: {fileID: 8278939967062922969, guid: 6d62c65db4598c448a9f7ded22748117, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - target: {fileID: 8278939967062922969, guid: 6d62c65db4598c448a9f7ded22748117, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - target: {fileID: 8278939967062922969, guid: 6d62c65db4598c448a9f7ded22748117, @@ -472,6 +505,11 @@ PrefabInstance: propertyPath: m_IsActive value: 0 objectReference: {fileID: 0} + - target: {fileID: 2290949587082371329, guid: 486d67981a0c68944bab9eab62dc4861, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} - target: {fileID: 2290949587082371329, guid: 486d67981a0c68944bab9eab62dc4861, type: 3} propertyPath: m_LocalPosition.x @@ -487,11 +525,6 @@ PrefabInstance: propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 2290949587082371329, guid: 486d67981a0c68944bab9eab62dc4861, - type: 3} - propertyPath: m_RootOrder - value: 3 - objectReference: {fileID: 0} - target: {fileID: 2290949587082371329, guid: 486d67981a0c68944bab9eab62dc4861, type: 3} propertyPath: m_LocalEulerAnglesHint.x @@ -557,122 +590,127 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 595289767640309667, guid: 2ad423a5fb9787f44988bd055461ea3c, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_Pivot.x value: 0 objectReference: {fileID: 0} - target: {fileID: 595289767640309667, guid: 2ad423a5fb9787f44988bd055461ea3c, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - target: {fileID: 595289767640309667, guid: 2ad423a5fb9787f44988bd055461ea3c, type: 3} - propertyPath: m_LocalPosition.z - value: 0 + propertyPath: m_RootOrder + value: 6 objectReference: {fileID: 0} - target: {fileID: 595289767640309667, guid: 2ad423a5fb9787f44988bd055461ea3c, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 595289767640309667, guid: 2ad423a5fb9787f44988bd055461ea3c, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 595289767640309667, guid: 2ad423a5fb9787f44988bd055461ea3c, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 595289767640309667, guid: 2ad423a5fb9787f44988bd055461ea3c, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 595289767640309667, guid: 2ad423a5fb9787f44988bd055461ea3c, type: 3} - propertyPath: m_RootOrder - value: 6 + propertyPath: m_SizeDelta.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 595289767640309667, guid: 2ad423a5fb9787f44988bd055461ea3c, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 595289767640309667, guid: 2ad423a5fb9787f44988bd055461ea3c, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 + propertyPath: m_LocalScale.x + value: 1 objectReference: {fileID: 0} - target: {fileID: 595289767640309667, guid: 2ad423a5fb9787f44988bd055461ea3c, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 + propertyPath: m_LocalScale.y + value: 1 objectReference: {fileID: 0} - target: {fileID: 595289767640309667, guid: 2ad423a5fb9787f44988bd055461ea3c, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 + propertyPath: m_LocalScale.z + value: 1 objectReference: {fileID: 0} - target: {fileID: 595289767640309667, guid: 2ad423a5fb9787f44988bd055461ea3c, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 595289767640309667, guid: 2ad423a5fb9787f44988bd055461ea3c, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 595289767640309667, guid: 2ad423a5fb9787f44988bd055461ea3c, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 595289767640309667, guid: 2ad423a5fb9787f44988bd055461ea3c, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 595289767640309667, guid: 2ad423a5fb9787f44988bd055461ea3c, type: 3} - propertyPath: m_AnchorMin.y - value: 0 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 595289767640309667, guid: 2ad423a5fb9787f44988bd055461ea3c, type: 3} - propertyPath: m_AnchorMax.x - value: 0 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 595289767640309667, guid: 2ad423a5fb9787f44988bd055461ea3c, type: 3} - propertyPath: m_AnchorMax.y - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 595289767640309667, guid: 2ad423a5fb9787f44988bd055461ea3c, type: 3} - propertyPath: m_Pivot.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 595289767640309667, guid: 2ad423a5fb9787f44988bd055461ea3c, type: 3} - propertyPath: m_Pivot.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 595289767640309667, guid: 2ad423a5fb9787f44988bd055461ea3c, type: 3} - propertyPath: m_LocalScale.x - value: 1 + propertyPath: m_LocalEulerAnglesHint.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 595289767640309667, guid: 2ad423a5fb9787f44988bd055461ea3c, type: 3} - propertyPath: m_LocalScale.y - value: 1 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 595289767640309667, guid: 2ad423a5fb9787f44988bd055461ea3c, type: 3} - propertyPath: m_LocalScale.z + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1795488586251609281, guid: 2ad423a5fb9787f44988bd055461ea3c, + type: 3} + propertyPath: m_IsActive value: 1 objectReference: {fileID: 0} m_RemovedComponents: [] @@ -709,44 +747,39 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 653194193798472147, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - target: {fileID: 653194193798472147, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - target: {fileID: 653194193798472147, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} - propertyPath: m_AnchoredPosition.x - value: 56.5 + propertyPath: m_SizeDelta.x + value: 105 objectReference: {fileID: 0} - target: {fileID: 653194193798472147, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} - propertyPath: m_AnchoredPosition.y - value: -14.5 + propertyPath: m_SizeDelta.y + value: 21 objectReference: {fileID: 0} - target: {fileID: 653194193798472147, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} - propertyPath: m_SizeDelta.x - value: 105 + propertyPath: m_AnchoredPosition.x + value: 56.5 objectReference: {fileID: 0} - target: {fileID: 653194193798472147, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} - propertyPath: m_SizeDelta.y - value: 21 + propertyPath: m_AnchoredPosition.y + value: -14.5 objectReference: {fileID: 0} - target: {fileID: 1222774026534399905, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} propertyPath: m_IsActive value: 0 objectReference: {fileID: 0} - - target: {fileID: 1475715656066310832, guid: 985e40eeba53d5842bc0249218172fd1, - type: 3} - propertyPath: m_AnchorMin.y - value: 1 - objectReference: {fileID: 0} - target: {fileID: 1475715656066310832, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} propertyPath: m_AnchorMax.y @@ -754,8 +787,8 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1475715656066310832, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} - propertyPath: m_AnchoredPosition.y - value: -37 + propertyPath: m_AnchorMin.y + value: 1 objectReference: {fileID: 0} - target: {fileID: 1475715656066310832, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} @@ -767,14 +800,19 @@ PrefabInstance: propertyPath: m_SizeDelta.y value: 37 objectReference: {fileID: 0} + - target: {fileID: 1475715656066310832, guid: 985e40eeba53d5842bc0249218172fd1, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -37 + objectReference: {fileID: 0} - target: {fileID: 2181985016460418152, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} - propertyPath: m_AnchorMin.x + propertyPath: m_Pivot.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2181985016460418152, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2181985016460418152, guid: 985e40eeba53d5842bc0249218172fd1, @@ -789,22 +827,22 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2181985016460418152, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2181985016460418152, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2181985016460418152, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} - propertyPath: m_Pivot.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2181985016460418152, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} - propertyPath: m_Pivot.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2562619218728672600, guid: 985e40eeba53d5842bc0249218172fd1, @@ -834,47 +872,47 @@ PrefabInstance: objectReference: {fileID: 5978069592435737656} - target: {fileID: 3033717110735535963, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} - propertyPath: m_SizeDelta.y - value: 20 + propertyPath: m_Pivot.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 3033717110735535963, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} - propertyPath: m_AnchorMin.x + propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - target: {fileID: 3033717110735535963, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.x value: 0 objectReference: {fileID: 0} - target: {fileID: 3033717110735535963, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} - propertyPath: m_AnchorMax.x + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 3033717110735535963, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - target: {fileID: 3033717110735535963, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 3033717110735535963, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_SizeDelta.y + value: 20 objectReference: {fileID: 0} - target: {fileID: 3033717110735535963, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} - propertyPath: m_Pivot.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 3033717110735535963, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} - propertyPath: m_Pivot.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 3762784373761104552, guid: 985e40eeba53d5842bc0249218172fd1, @@ -894,13 +932,13 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4274678718935326036, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} - propertyPath: m_ChildForceExpandWidth - value: 1 + propertyPath: m_ChildControlHeight + value: 0 objectReference: {fileID: 0} - target: {fileID: 4274678718935326036, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} - propertyPath: m_ChildControlHeight - value: 0 + propertyPath: m_ChildForceExpandWidth + value: 1 objectReference: {fileID: 0} - target: {fileID: 5206354304166408139, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} @@ -914,32 +952,27 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 5487336474674689311, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_RootOrder + value: 2 objectReference: {fileID: 0} - target: {fileID: 5487336474674689311, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5487336474674689311, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} - propertyPath: m_RootOrder - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 5487336474674689311, guid: 985e40eeba53d5842bc0249218172fd1, - type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5487336474674689311, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5487336474674689311, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5487336474674689311, guid: 985e40eeba53d5842bc0249218172fd1, @@ -969,18 +1002,18 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 5487336474674689311, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5487336474674689311, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 6894071106296623386, guid: 985e40eeba53d5842bc0249218172fd1, + - target: {fileID: 5487336474674689311, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} - propertyPath: m_AnchorMin.y - value: 1 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 6894071106296623386, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} @@ -989,13 +1022,8 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6894071106296623386, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} - propertyPath: m_AnchoredPosition.x - value: 60.5 - objectReference: {fileID: 0} - - target: {fileID: 6894071106296623386, guid: 985e40eeba53d5842bc0249218172fd1, - type: 3} - propertyPath: m_AnchoredPosition.y - value: -18.5 + propertyPath: m_AnchorMin.y + value: 1 objectReference: {fileID: 0} - target: {fileID: 6894071106296623386, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} @@ -1007,6 +1035,16 @@ PrefabInstance: propertyPath: m_SizeDelta.y value: 29 objectReference: {fileID: 0} + - target: {fileID: 6894071106296623386, guid: 985e40eeba53d5842bc0249218172fd1, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 60.5 + objectReference: {fileID: 0} + - target: {fileID: 6894071106296623386, guid: 985e40eeba53d5842bc0249218172fd1, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -18.5 + objectReference: {fileID: 0} - target: {fileID: 7190878557263111896, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} propertyPath: m_Name @@ -1019,27 +1057,27 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 7612113336470348178, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} - propertyPath: m_SizeDelta.y - value: 20 + propertyPath: m_Pivot.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 7612113336470348178, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7612113336470348178, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7612113336470348178, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_SizeDelta.y + value: 20 objectReference: {fileID: 0} - target: {fileID: 7612113336470348178, guid: 985e40eeba53d5842bc0249218172fd1, type: 3} - propertyPath: m_Pivot.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8482427466150500794, guid: 985e40eeba53d5842bc0249218172fd1, @@ -1097,28 +1135,28 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2527967290887384826, guid: b8b2f503827870f4a9a51cd4bb666fbf, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_RootOrder + value: 4 objectReference: {fileID: 0} - target: {fileID: 2527967290887384826, guid: b8b2f503827870f4a9a51cd4bb666fbf, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2527967290887384826, guid: b8b2f503827870f4a9a51cd4bb666fbf, type: 3} - propertyPath: m_AnchorMin.x + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2527967290887384826, guid: b8b2f503827870f4a9a51cd4bb666fbf, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2527967290887384826, guid: b8b2f503827870f4a9a51cd4bb666fbf, type: 3} - propertyPath: m_RootOrder - value: 4 + propertyPath: m_LocalPosition.y + value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: b8b2f503827870f4a9a51cd4bb666fbf, type: 3} @@ -1149,12 +1187,12 @@ PrefabInstance: m_Modifications: - target: {fileID: 1307579129696629122, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_textInfo.characterCount + propertyPath: m_textInfo.lineCount value: 0 objectReference: {fileID: 0} - target: {fileID: 1307579129696629122, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_textInfo.spaceCount + propertyPath: m_textInfo.pageCount value: 0 objectReference: {fileID: 0} - target: {fileID: 1307579129696629122, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, @@ -1164,42 +1202,42 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1307579129696629122, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_textInfo.lineCount + propertyPath: m_textInfo.spaceCount value: 0 objectReference: {fileID: 0} - target: {fileID: 1307579129696629122, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_textInfo.pageCount + propertyPath: m_textInfo.characterCount value: 0 objectReference: {fileID: 0} - target: {fileID: 1489194807144509359, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_SelectionColor.r - value: 0 + propertyPath: m_SelectionColor.a + value: 0.5882353 objectReference: {fileID: 0} - target: {fileID: 1489194807144509359, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_SelectionColor.g + propertyPath: m_SelectionColor.b value: 0 objectReference: {fileID: 0} - target: {fileID: 1489194807144509359, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_SelectionColor.b + propertyPath: m_SelectionColor.g value: 0 objectReference: {fileID: 0} - target: {fileID: 1489194807144509359, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_SelectionColor.a - value: 0.5882353 + propertyPath: m_SelectionColor.r + value: 0 objectReference: {fileID: 0} - target: {fileID: 1944118156079501776, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_textInfo.characterCount + propertyPath: m_textInfo.lineCount value: 0 objectReference: {fileID: 0} - target: {fileID: 1944118156079501776, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_textInfo.spaceCount + propertyPath: m_textInfo.pageCount value: 0 objectReference: {fileID: 0} - target: {fileID: 1944118156079501776, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, @@ -1209,12 +1247,12 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1944118156079501776, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_textInfo.lineCount + propertyPath: m_textInfo.spaceCount value: 0 objectReference: {fileID: 0} - target: {fileID: 1944118156079501776, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_textInfo.pageCount + propertyPath: m_textInfo.characterCount value: 0 objectReference: {fileID: 0} - target: {fileID: 1955779252061041205, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, @@ -1229,8 +1267,13 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2766220962098376748, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_AnchoredPosition.x - value: 230 + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2766220962098376748, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 2766220962098376748, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} @@ -1239,22 +1282,22 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2766220962098376748, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2766220962098376748, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_AnchorMax.y - value: 0 + propertyPath: m_AnchoredPosition.x + value: 230 objectReference: {fileID: 0} - target: {fileID: 2766220962098376748, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 2766220962098376748, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, + - target: {fileID: 3376785686518237414, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - target: {fileID: 3376785686518237414, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, @@ -1267,79 +1310,74 @@ PrefabInstance: propertyPath: m_SizeDelta.y value: 40 objectReference: {fileID: 0} - - target: {fileID: 3376785686518237414, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, - type: 3} - propertyPath: m_Pivot.y - value: 0 - objectReference: {fileID: 0} - target: {fileID: 3513190676658038914, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 3513190676658038914, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 3513190676658038914, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 3513190676658038914, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 3513190676658038914, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 3513190676658038914, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 3777442553460462980, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 3777442553460462980, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 3777442553460462980, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 3777442553460462980, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 3777442553460462980, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 3777442553460462980, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4078510852687935177, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_textInfo.characterCount + propertyPath: m_textInfo.lineCount value: 0 objectReference: {fileID: 0} - target: {fileID: 4078510852687935177, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_textInfo.spaceCount + propertyPath: m_textInfo.pageCount value: 0 objectReference: {fileID: 0} - target: {fileID: 4078510852687935177, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, @@ -1349,12 +1387,12 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4078510852687935177, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_textInfo.lineCount + propertyPath: m_textInfo.spaceCount value: 0 objectReference: {fileID: 0} - target: {fileID: 4078510852687935177, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_textInfo.pageCount + propertyPath: m_textInfo.characterCount value: 0 objectReference: {fileID: 0} - target: {fileID: 4103814012636034508, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, @@ -1374,22 +1412,22 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4182533117752597262, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 4182533117752597262, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4182533117752597262, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4182533117752597262, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_RootOrder + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 4182533117752597262, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, @@ -1410,7 +1448,7 @@ PrefabInstance: - target: {fileID: 4182533117752597263, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} propertyPath: m_Name - value: ShipEditorOverlay + value: GridEditorOverlay objectReference: {fileID: 0} - target: {fileID: 4182533117752597263, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} @@ -1419,92 +1457,92 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4891848245078477409, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4891848245078477409, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4891848245078477409, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4891848245078477409, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4891848245078477409, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4891848245078477409, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5138081316735776615, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5138081316735776615, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5138081316735776615, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5138081316735776615, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5138081316735776615, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5138081316735776615, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5421427320077216307, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5421427320077216307, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5421427320077216307, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5421427320077216307, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5421427320077216307, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5421427320077216307, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5674966324271168543, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, @@ -1514,32 +1552,32 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 5733558276282570549, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5733558276282570549, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5733558276282570549, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5733558276282570549, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5733558276282570549, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5733558276282570549, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5884525049298447935, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, @@ -1554,8 +1592,13 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6143364050457924303, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_AnchoredPosition.x - value: 230 + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6143364050457924303, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 6143364050457924303, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} @@ -1564,28 +1607,28 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6143364050457924303, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6143364050457924303, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_AnchorMax.y - value: 0 + propertyPath: m_AnchoredPosition.x + value: 230 objectReference: {fileID: 0} - target: {fileID: 6143364050457924303, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 6143364050457924303, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, + - target: {fileID: 6745842958076654237, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6745842958076654237, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_AnchoredPosition.x - value: 230 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 6745842958076654237, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} @@ -1594,22 +1637,22 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6745842958076654237, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6745842958076654237, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_AnchorMax.y - value: 0 + propertyPath: m_AnchoredPosition.x + value: 230 objectReference: {fileID: 0} - target: {fileID: 6745842958076654237, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 6745842958076654237, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, + - target: {fileID: 7132505632161233089, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7132505632161233089, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, @@ -1622,19 +1665,14 @@ PrefabInstance: propertyPath: m_SizeDelta.y value: 40 objectReference: {fileID: 0} - - target: {fileID: 7132505632161233089, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, - type: 3} - propertyPath: m_Pivot.y - value: 0 - objectReference: {fileID: 0} - target: {fileID: 7627109201456558899, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_textInfo.characterCount + propertyPath: m_textInfo.lineCount value: 0 objectReference: {fileID: 0} - target: {fileID: 7627109201456558899, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_textInfo.spaceCount + propertyPath: m_textInfo.pageCount value: 0 objectReference: {fileID: 0} - target: {fileID: 7627109201456558899, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, @@ -1644,32 +1682,32 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 7627109201456558899, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_textInfo.lineCount + propertyPath: m_textInfo.spaceCount value: 0 objectReference: {fileID: 0} - target: {fileID: 7627109201456558899, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_textInfo.pageCount + propertyPath: m_textInfo.characterCount value: 0 objectReference: {fileID: 0} - target: {fileID: 8100378607428448926, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_textInfo.characterCount + propertyPath: m_textInfo.lineCount value: 0 objectReference: {fileID: 0} - target: {fileID: 8100378607428448926, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_textInfo.wordCount + propertyPath: m_textInfo.pageCount value: 0 objectReference: {fileID: 0} - target: {fileID: 8100378607428448926, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_textInfo.lineCount + propertyPath: m_textInfo.wordCount value: 0 objectReference: {fileID: 0} - target: {fileID: 8100378607428448926, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_textInfo.pageCount + propertyPath: m_textInfo.characterCount value: 0 objectReference: {fileID: 0} - target: {fileID: 8796218559287805626, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, @@ -1689,13 +1727,13 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8811278844542435630, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState - value: 2 + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: objectReference: {fileID: 0} - target: {fileID: 8811278844542435630, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target - value: + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 objectReference: {fileID: 0} - target: {fileID: 8811278844542435630, guid: 6dcacaa133fbe944c8903baf6dd2a0ee, type: 3} @@ -1737,138 +1775,138 @@ PrefabInstance: m_Modifications: - target: {fileID: 2737412818345090277, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_RootOrder + value: 7 objectReference: {fileID: 0} - target: {fileID: 2737412818345090277, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_AnchorMax.x + value: 1 objectReference: {fileID: 0} - target: {fileID: 2737412818345090277, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} - propertyPath: m_RootOrder - value: 7 + propertyPath: m_AnchorMax.y + value: 1 objectReference: {fileID: 0} - target: {fileID: 2737412818345090277, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2737412818345090277, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2737412818345090277, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2737412818345090277, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} - propertyPath: m_AnchorMin.x + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2737412818345090277, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} - propertyPath: m_AnchorMin.y - value: 0 + propertyPath: m_LocalScale.x + value: 1 objectReference: {fileID: 0} - target: {fileID: 2737412818345090277, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} - propertyPath: m_AnchorMax.x + propertyPath: m_LocalScale.y value: 1 objectReference: {fileID: 0} - target: {fileID: 2737412818345090277, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_LocalScale.z value: 1 objectReference: {fileID: 0} - target: {fileID: 2737412818345090277, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} - propertyPath: m_LocalRotation.x + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2737412818345090277, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} - propertyPath: m_LocalRotation.y + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2737412818345090277, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} - propertyPath: m_LocalRotation.z + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 2737412818345090277, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2737412818345090277, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2737412818345090277, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - target: {fileID: 2737412818345090277, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2737412818345090277, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2737412818345090277, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} - propertyPath: m_LocalScale.x - value: 1 + propertyPath: m_LocalEulerAnglesHint.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 2737412818345090277, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} - propertyPath: m_LocalScale.y - value: 1 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 2737412818345090277, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} - propertyPath: m_LocalScale.z - value: 1 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 4647394953582627278, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - target: {fileID: 4647394953582627278, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - target: {fileID: 4647394953582627278, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} - propertyPath: m_AnchoredPosition.x - value: 240 + propertyPath: m_SizeDelta.x + value: 480 objectReference: {fileID: 0} - target: {fileID: 4647394953582627278, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} - propertyPath: m_AnchoredPosition.y - value: -250 + propertyPath: m_SizeDelta.y + value: 100 objectReference: {fileID: 0} - target: {fileID: 4647394953582627278, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} - propertyPath: m_SizeDelta.x - value: 480 + propertyPath: m_AnchoredPosition.x + value: 240 objectReference: {fileID: 0} - target: {fileID: 4647394953582627278, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} - propertyPath: m_SizeDelta.y - value: 100 + propertyPath: m_AnchoredPosition.y + value: -250 objectReference: {fileID: 0} - target: {fileID: 5681743549657260140, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} @@ -1877,14 +1915,19 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6066547331933443595, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - target: {fileID: 6066547331933443595, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} + - target: {fileID: 6066547331933443595, guid: c5b2e7577ff60084794ae05029cf2a33, + type: 3} + propertyPath: m_SizeDelta.x + value: 480 + objectReference: {fileID: 0} - target: {fileID: 6066547331933443595, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} propertyPath: m_AnchoredPosition.x @@ -1895,40 +1938,35 @@ PrefabInstance: propertyPath: m_AnchoredPosition.y value: -200 objectReference: {fileID: 0} - - target: {fileID: 6066547331933443595, guid: c5b2e7577ff60084794ae05029cf2a33, - type: 3} - propertyPath: m_SizeDelta.x - value: 480 - objectReference: {fileID: 0} - target: {fileID: 7098578338029381873, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - target: {fileID: 7098578338029381873, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - target: {fileID: 7098578338029381873, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} - propertyPath: m_AnchoredPosition.x - value: 240 + propertyPath: m_SizeDelta.x + value: 480 objectReference: {fileID: 0} - target: {fileID: 7098578338029381873, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} - propertyPath: m_AnchoredPosition.y - value: -100 + propertyPath: m_SizeDelta.y + value: 200 objectReference: {fileID: 0} - target: {fileID: 7098578338029381873, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} - propertyPath: m_SizeDelta.x - value: 480 + propertyPath: m_AnchoredPosition.x + value: 240 objectReference: {fileID: 0} - target: {fileID: 7098578338029381873, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} - propertyPath: m_SizeDelta.y - value: 200 + propertyPath: m_AnchoredPosition.y + value: -100 objectReference: {fileID: 0} - target: {fileID: 7400903112515889875, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} @@ -1947,7 +1985,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8899716135532437245, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_Pivot.y value: 0.5 objectReference: {fileID: 0} - target: {fileID: 8899716135532437245, guid: c5b2e7577ff60084794ae05029cf2a33, @@ -1957,7 +1995,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8899716135532437245, guid: c5b2e7577ff60084794ae05029cf2a33, type: 3} - propertyPath: m_Pivot.y + propertyPath: m_AnchorMin.y value: 0.5 objectReference: {fileID: 0} m_RemovedComponents: [] @@ -1987,11 +2025,6 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 5526384382514086167} m_Modifications: - - target: {fileID: 59973021187852563, guid: 2661b46a09dd09949b76373e7086f5b1, - type: 3} - propertyPath: m_IgnoreParentGroups - value: 0 - objectReference: {fileID: 0} - target: {fileID: 59973021187852563, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} propertyPath: m_Alpha @@ -2002,6 +2035,11 @@ PrefabInstance: propertyPath: m_Interactable value: 1 objectReference: {fileID: 0} + - target: {fileID: 59973021187852563, guid: 2661b46a09dd09949b76373e7086f5b1, + type: 3} + propertyPath: m_IgnoreParentGroups + value: 0 + objectReference: {fileID: 0} - target: {fileID: 70962895980411302, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size @@ -2009,23 +2047,23 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 70962895980411302, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target - value: + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 5 objectReference: {fileID: 0} - target: {fileID: 70962895980411302, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName - value: Play + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: objectReference: {fileID: 0} - target: {fileID: 70962895980411302, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode - value: 5 + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 objectReference: {fileID: 0} - target: {fileID: 70962895980411302, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName + value: Play objectReference: {fileID: 0} - target: {fileID: 70962895980411302, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} @@ -2034,8 +2072,8 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 70962895980411302, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState - value: 2 + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine objectReference: {fileID: 0} - target: {fileID: 116121647316522219, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} @@ -2045,7 +2083,7 @@ PrefabInstance: type: 3} - target: {fileID: 145857570025974517, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_Color.r + propertyPath: m_Color.b value: 1 objectReference: {fileID: 0} - target: {fileID: 145857570025974517, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -2055,7 +2093,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 145857570025974517, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_Color.b + propertyPath: m_Color.r value: 1 objectReference: {fileID: 0} - target: {fileID: 231760476688621166, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -2065,12 +2103,12 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 238394091036146159, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 238394091036146159, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 238394091036146159, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -2080,42 +2118,42 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 274336542553900258, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 274336542553900258, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 274336542553900258, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 274336542553900258, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 274336542553900258, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 274336542553900258, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 385956875848195167, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - target: {fileID: 385956875848195167, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - target: {fileID: 385956875848195167, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -2130,12 +2168,12 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 557950329508112944, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - target: {fileID: 557950329508112944, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - target: {fileID: 557950329508112944, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -2150,12 +2188,12 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 706021908867082839, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 706021908867082839, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 706021908867082839, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -2168,6 +2206,11 @@ PrefabInstance: propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} + - target: {fileID: 1166816231945803667, guid: 2661b46a09dd09949b76373e7086f5b1, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} - target: {fileID: 1166816231945803667, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} propertyPath: m_AnchorMin.y @@ -2175,7 +2218,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1166816231945803667, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 1166816231945803667, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -2188,9 +2231,9 @@ PrefabInstance: propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 1166816231945803667, guid: 2661b46a09dd09949b76373e7086f5b1, + - target: {fileID: 1294070485203947246, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 1294070485203947246, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -2200,7 +2243,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1294070485203947246, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 1294070485203947246, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -2213,14 +2256,9 @@ PrefabInstance: propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 1294070485203947246, guid: 2661b46a09dd09949b76373e7086f5b1, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - target: {fileID: 1324207502398539699, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_Color.r + propertyPath: m_Color.b value: 1 objectReference: {fileID: 0} - target: {fileID: 1324207502398539699, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -2230,42 +2268,42 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1324207502398539699, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_Color.b + propertyPath: m_Color.r value: 1 objectReference: {fileID: 0} - target: {fileID: 1434927683145187757, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 1434927683145187757, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 1434927683145187757, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 1434927683145187757, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 1434927683145187757, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 1440197813122058944, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 1440197813122058944, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 1440197813122058944, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -2280,22 +2318,22 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1449914856838286023, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: invokeStateChangeOnHover + propertyPath: cursorState value: 1 objectReference: {fileID: 0} - target: {fileID: 1449914856838286023, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: cursorState + propertyPath: invokeStateChangeOnHover value: 1 objectReference: {fileID: 0} - target: {fileID: 1530527475092779289, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 1530527475092779289, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 1530527475092779289, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -2310,37 +2348,37 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1561527531417427534, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 1561527531417427534, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 1561527531417427534, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 1561527531417427534, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 1561527531417427534, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 1601438713842422469, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 1601438713842422469, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 1601438713842422469, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -2350,32 +2388,32 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1799129439788020072, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 1799129439788020072, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 1799129439788020072, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 1799129439788020072, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 1799129439788020072, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 1799129439788020072, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 1870025677135654198, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -2391,42 +2429,42 @@ PrefabInstance: type: 3} - target: {fileID: 2206087512751921535, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: invokeStateChangeOnHover + propertyPath: cursorState value: 1 objectReference: {fileID: 0} - target: {fileID: 2206087512751921535, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: cursorState + propertyPath: invokeStateChangeOnHover value: 1 objectReference: {fileID: 0} - target: {fileID: 2220685577622775233, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2220685577622775233, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2220685577622775233, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2220685577622775233, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2220685577622775233, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2220685577622775233, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2320527761771707942, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -2436,32 +2474,32 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2386799268012323816, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2386799268012323816, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2386799268012323816, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2386799268012323816, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2386799268012323816, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2386799268012323816, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2410608744944355544, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -2476,32 +2514,32 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2564839165357107500, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2564839165357107500, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2564839165357107500, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2564839165357107500, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2564839165357107500, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2564839165357107500, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2613297364346620398, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -2511,23 +2549,23 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2613297364346620398, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target - value: + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 5 objectReference: {fileID: 0} - target: {fileID: 2613297364346620398, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName - value: Play + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: objectReference: {fileID: 0} - target: {fileID: 2613297364346620398, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode - value: 5 + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 objectReference: {fileID: 0} - target: {fileID: 2613297364346620398, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName + value: Play objectReference: {fileID: 0} - target: {fileID: 2613297364346620398, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} @@ -2536,8 +2574,8 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2613297364346620398, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState - value: 2 + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine objectReference: {fileID: 0} - target: {fileID: 2690157844507101227, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} @@ -2556,117 +2594,117 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2724950134171701669, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: invokeStateChangeOnHover + propertyPath: cursorState value: 1 objectReference: {fileID: 0} - target: {fileID: 2724950134171701669, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: cursorState + propertyPath: invokeStateChangeOnHover value: 1 objectReference: {fileID: 0} - target: {fileID: 2728737149888107955, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.x - value: 10 + propertyPath: m_SizeDelta.x + value: -20 objectReference: {fileID: 0} - target: {fileID: 2728737149888107955, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.x - value: -20 + propertyPath: m_AnchoredPosition.x + value: 10 objectReference: {fileID: 0} - target: {fileID: 2741080862934235839, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: shipEditorNavigateable + propertyPath: shipEditor value: objectReference: {fileID: 0} - target: {fileID: 2741080862934235839, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: shipEditor + propertyPath: shipEditorNavigateable value: objectReference: {fileID: 0} - target: {fileID: 2744298722878150801, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2744298722878150801, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2744298722878150801, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2744298722878150801, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2744298722878150801, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2744298722878150801, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2779930696219685164, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2779930696219685164, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2779930696219685164, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2779930696219685164, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2779930696219685164, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2779930696219685164, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2891779599893599710, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2891779599893599710, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2891779599893599710, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2891779599893599710, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2891779599893599710, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2991834559288494390, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -2691,22 +2729,22 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3220173708573058802, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 3220173708573058802, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 3220173708573058802, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 3220173708573058802, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 3310789223282785387, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -2724,11 +2762,21 @@ PrefabInstance: propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} + - target: {fileID: 3518663557865401163, guid: 2661b46a09dd09949b76373e7086f5b1, + type: 3} + propertyPath: m_Spacing + value: 0 + objectReference: {fileID: 0} - target: {fileID: 3518663557865401163, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} propertyPath: m_Padding.m_Left value: 20 objectReference: {fileID: 0} + - target: {fileID: 3518663557865401163, guid: 2661b46a09dd09949b76373e7086f5b1, + type: 3} + propertyPath: m_ChildScaleWidth + value: 1 + objectReference: {fileID: 0} - target: {fileID: 3518663557865401163, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} propertyPath: m_Padding.m_Right @@ -2736,8 +2784,8 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3518663557865401163, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_Spacing - value: 0 + propertyPath: m_ChildControlWidth + value: 1 objectReference: {fileID: 0} - target: {fileID: 3518663557865401163, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} @@ -2749,16 +2797,6 @@ PrefabInstance: propertyPath: m_ChildForceExpandHeight value: 0 objectReference: {fileID: 0} - - target: {fileID: 3518663557865401163, guid: 2661b46a09dd09949b76373e7086f5b1, - type: 3} - propertyPath: m_ChildControlWidth - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 3518663557865401163, guid: 2661b46a09dd09949b76373e7086f5b1, - type: 3} - propertyPath: m_ChildScaleWidth - value: 1 - objectReference: {fileID: 0} - target: {fileID: 3545399657611420356, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size @@ -2771,13 +2809,13 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3545399657611420356, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState - value: 2 + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: objectReference: {fileID: 0} - target: {fileID: 3545399657611420356, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target - value: + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 objectReference: {fileID: 0} - target: {fileID: 3545399657611420356, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} @@ -2796,12 +2834,12 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3639230094748131981, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 3639230094748131981, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 3639230094748131981, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -2809,6 +2847,11 @@ PrefabInstance: propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} + - target: {fileID: 3705540420685350977, guid: 2661b46a09dd09949b76373e7086f5b1, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} - target: {fileID: 3705540420685350977, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} propertyPath: m_AnchorMin.y @@ -2816,7 +2859,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3705540420685350977, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 3705540420685350977, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -2829,9 +2872,9 @@ PrefabInstance: propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 3705540420685350977, guid: 2661b46a09dd09949b76373e7086f5b1, + - target: {fileID: 3832267810933036962, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 3832267810933036962, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -2841,7 +2884,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3832267810933036962, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 3832267810933036962, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -2854,11 +2897,6 @@ PrefabInstance: propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 3832267810933036962, guid: 2661b46a09dd09949b76373e7086f5b1, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - target: {fileID: 3854097696872633249, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} propertyPath: m_AnchorMax.y @@ -2871,72 +2909,72 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3871086734558263541, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.x - value: 10 + propertyPath: m_SizeDelta.x + value: -20 objectReference: {fileID: 0} - target: {fileID: 3871086734558263541, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.x - value: -20 + propertyPath: m_AnchoredPosition.x + value: 10 objectReference: {fileID: 0} - target: {fileID: 4020246845723398795, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4020246845723398795, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4020246845723398795, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4020246845723398795, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4020246845723398795, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4020246845723398795, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4053243933371334961, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4053243933371334961, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4053243933371334961, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4053243933371334961, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4053243933371334961, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4053243933371334961, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4122139190126203673, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -2951,7 +2989,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4180333612154043283, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_Color.r + propertyPath: m_Color.b value: 1 objectReference: {fileID: 0} - target: {fileID: 4180333612154043283, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -2961,7 +2999,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4180333612154043283, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_Color.b + propertyPath: m_Color.r value: 1 objectReference: {fileID: 0} - target: {fileID: 4183112743778354791, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -2976,27 +3014,27 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4237475074474632669, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4237475074474632669, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4237475074474632669, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4237475074474632669, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4237475074474632669, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4301345780315255164, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -3011,13 +3049,13 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4301345780315255164, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState - value: 2 + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: objectReference: {fileID: 0} - target: {fileID: 4301345780315255164, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target - value: + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 objectReference: {fileID: 0} - target: {fileID: 4301345780315255164, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} @@ -3036,12 +3074,12 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4422119569287482681, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4422119569287482681, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4422119569287482681, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -3083,12 +3121,12 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4989497146397696925, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4989497146397696925, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5028175358376604503, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -3096,6 +3134,11 @@ PrefabInstance: propertyPath: m_Layer value: 0 objectReference: {fileID: 0} + - target: {fileID: 5109911409208375332, guid: 2661b46a09dd09949b76373e7086f5b1, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} - target: {fileID: 5109911409208375332, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} propertyPath: m_AnchorMin.y @@ -3103,7 +3146,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 5109911409208375332, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5109911409208375332, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -3116,9 +3159,9 @@ PrefabInstance: propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 5109911409208375332, guid: 2661b46a09dd09949b76373e7086f5b1, + - target: {fileID: 5135287556405850850, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5135287556405850850, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -3128,7 +3171,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 5135287556405850850, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5135287556405850850, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -3136,9 +3179,9 @@ PrefabInstance: propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 5135287556405850850, guid: 2661b46a09dd09949b76373e7086f5b1, + - target: {fileID: 5201105590147218418, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5201105590147218418, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -3148,7 +3191,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 5201105590147218418, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5201105590147218418, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -3161,9 +3204,9 @@ PrefabInstance: propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 5201105590147218418, guid: 2661b46a09dd09949b76373e7086f5b1, + - target: {fileID: 5242237445337516772, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5242237445337516772, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -3173,7 +3216,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 5242237445337516772, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5242237445337516772, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -3186,29 +3229,24 @@ PrefabInstance: propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 5242237445337516772, guid: 2661b46a09dd09949b76373e7086f5b1, + - target: {fileID: 5367371599174022517, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} propertyPath: m_SizeDelta.x - value: 0 + value: -20 objectReference: {fileID: 0} - target: {fileID: 5367371599174022517, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} propertyPath: m_AnchoredPosition.x value: 10 objectReference: {fileID: 0} - - target: {fileID: 5367371599174022517, guid: 2661b46a09dd09949b76373e7086f5b1, - type: 3} - propertyPath: m_SizeDelta.x - value: -20 - objectReference: {fileID: 0} - target: {fileID: 5426509107227594642, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5426509107227594642, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5426509107227594642, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -3229,12 +3267,12 @@ PrefabInstance: type: 3} - target: {fileID: 5736206104283930120, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5736206104283930120, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5736206104283930120, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -3249,13 +3287,13 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 5839286858357909476, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.x - value: 10 + propertyPath: m_SizeDelta.x + value: -20 objectReference: {fileID: 0} - target: {fileID: 5839286858357909476, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.x - value: -20 + propertyPath: m_AnchoredPosition.x + value: 10 objectReference: {fileID: 0} - target: {fileID: 5955005882042656655, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} @@ -3264,72 +3302,72 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 5968201621659972486, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5968201621659972486, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5968201621659972486, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5968201621659972486, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5968201621659972486, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6013977213314918360, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: shipEditorNavigateable + propertyPath: shipEditor value: objectReference: {fileID: 0} - target: {fileID: 6013977213314918360, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: shipEditor + propertyPath: shipEditorNavigateable value: objectReference: {fileID: 0} - target: {fileID: 6054197818794929944, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6054197818794929944, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6054197818794929944, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6054197818794929944, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6054197818794929944, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6089046568795604696, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - target: {fileID: 6089046568795604696, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - target: {fileID: 6089046568795604696, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -3344,32 +3382,32 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6166222471143915912, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6166222471143915912, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6166222471143915912, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6166222471143915912, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6166222471143915912, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6166222471143915912, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6221151500950674685, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -3379,42 +3417,42 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6232281692087118932, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6232281692087118932, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6232281692087118932, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6232281692087118932, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6232281692087118932, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6232281692087118932, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6265395740653596490, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6265395740653596490, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6265395740653596490, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -3449,32 +3487,37 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6406891363723937340, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6406891363723937340, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6406891363723937340, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6406891363723937340, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6406891363723937340, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6406891363723937340, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6459441792283092060, guid: 2661b46a09dd09949b76373e7086f5b1, + type: 3} + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6459441792283092060, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -3484,7 +3527,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6459441792283092060, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6459441792283092060, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -3497,9 +3540,9 @@ PrefabInstance: propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 6459441792283092060, guid: 2661b46a09dd09949b76373e7086f5b1, + - target: {fileID: 6463448618473160132, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6463448618473160132, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -3509,7 +3552,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6463448618473160132, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6463448618473160132, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -3522,39 +3565,34 @@ PrefabInstance: propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 6463448618473160132, guid: 2661b46a09dd09949b76373e7086f5b1, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - target: {fileID: 6491965798854283826, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6491965798854283826, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6491965798854283826, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6491965798854283826, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6491965798854283826, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6491965798854283826, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6506956532319160145, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -3584,22 +3622,22 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6691230673665723616, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6691230673665723616, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6691230673665723616, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6691230673665723616, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6802399261286650541, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -3619,27 +3657,27 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 7049614418658661906, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7049614418658661906, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7049614418658661906, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7049614418658661906, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7049614418658661906, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7099427146539977635, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -3649,12 +3687,12 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 7138815491532659564, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - target: {fileID: 7138815491532659564, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - target: {fileID: 7138815491532659564, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -3679,13 +3717,13 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 7164022047882804461, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[1].m_CallState - value: 2 + propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: objectReference: {fileID: 0} - target: {fileID: 7164022047882804461, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[1].m_Target - value: + propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 objectReference: {fileID: 0} - target: {fileID: 7290483991753067514, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} @@ -3695,19 +3733,24 @@ PrefabInstance: type: 3} - target: {fileID: 7332490315186985253, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_IgnoreParentGroups - value: 0 + propertyPath: m_Interactable + value: 1 objectReference: {fileID: 0} - target: {fileID: 7332490315186985253, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_Interactable - value: 1 + propertyPath: m_IgnoreParentGroups + value: 0 objectReference: {fileID: 0} - target: {fileID: 7361268787667576758, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} + - target: {fileID: 7513536278087533320, guid: 2661b46a09dd09949b76373e7086f5b1, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} - target: {fileID: 7513536278087533320, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} propertyPath: m_AnchorMin.y @@ -3715,7 +3758,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 7513536278087533320, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7513536278087533320, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -3728,9 +3771,9 @@ PrefabInstance: propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 7513536278087533320, guid: 2661b46a09dd09949b76373e7086f5b1, + - target: {fileID: 7542214065464472094, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7542214065464472094, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -3740,7 +3783,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 7542214065464472094, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7542214065464472094, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -3753,11 +3796,6 @@ PrefabInstance: propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 7542214065464472094, guid: 2661b46a09dd09949b76373e7086f5b1, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - target: {fileID: 7631632273501482837, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_Mode @@ -3770,12 +3808,12 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 7708445438457330841, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7708445438457330841, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7708445438457330841, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -3795,7 +3833,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 7900694033922820659, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_Color.r + propertyPath: m_Color.b value: 1 objectReference: {fileID: 0} - target: {fileID: 7900694033922820659, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -3805,62 +3843,62 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 7900694033922820659, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_Color.b + propertyPath: m_Color.r value: 1 objectReference: {fileID: 0} - target: {fileID: 7953225154148844968, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7953225154148844968, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7953225154148844968, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7953225154148844968, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8017326500084679521, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8017326500084679521, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8017326500084679521, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8017326500084679521, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8017326500084679521, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8181925844129984008, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8181925844129984008, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8181925844129984008, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -3885,97 +3923,97 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8287648674956338552, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8287648674956338552, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8287648674956338552, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8287648674956338552, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8287648674956338552, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8287648674956338552, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8377813601057417284, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: invokeStateChangeOnHover + propertyPath: cursorState value: 1 objectReference: {fileID: 0} - target: {fileID: 8377813601057417284, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: cursorState + propertyPath: invokeStateChangeOnHover value: 1 objectReference: {fileID: 0} - target: {fileID: 8395147963323934452, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8395147963323934452, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8395147963323934452, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8395147963323934452, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8395147963323934452, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8441183838231114193, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8441183838231114193, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8441183838231114193, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8441183838231114193, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8441183838231114193, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8441183838231114193, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8510745804518905799, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -4010,7 +4048,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8561636601481566370, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_Color.r + propertyPath: m_Color.b value: 1 objectReference: {fileID: 0} - target: {fileID: 8561636601481566370, guid: 2661b46a09dd09949b76373e7086f5b1, @@ -4020,18 +4058,18 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8561636601481566370, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_Color.b + propertyPath: m_Color.r value: 1 objectReference: {fileID: 0} - target: {fileID: 8652813708422652127, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_IgnoreParentGroups - value: 0 + propertyPath: m_Interactable + value: 1 objectReference: {fileID: 0} - target: {fileID: 8652813708422652127, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_Interactable - value: 1 + propertyPath: m_IgnoreParentGroups + value: 0 objectReference: {fileID: 0} - target: {fileID: 8852620329197281898, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} @@ -4045,118 +4083,118 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 9156163229112700912, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - target: {fileID: 9156163229112700912, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - target: {fileID: 9156163229112700912, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.x - value: 10 + propertyPath: m_LocalPosition.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 9156163229112700912, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchoredPosition.y - value: -50 + propertyPath: m_LocalPosition.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 9156163229112700912, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_AnchoredPosition.x + value: 10 objectReference: {fileID: 0} - target: {fileID: 9156163229112700912, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_AnchoredPosition.y + value: -50 objectReference: {fileID: 0} - target: {fileID: 9197261209486406505, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 9197261209486406505, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 9197261209486406505, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_LocalPosition.z - value: 0 + propertyPath: m_RootOrder + value: 1 objectReference: {fileID: 0} - target: {fileID: 9197261209486406505, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_LocalRotation.x - value: 0 + propertyPath: m_AnchorMax.x + value: 1 objectReference: {fileID: 0} - target: {fileID: 9197261209486406505, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_LocalRotation.y - value: 0 + propertyPath: m_AnchorMax.y + value: 1 objectReference: {fileID: 0} - target: {fileID: 9197261209486406505, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_LocalRotation.z + propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - target: {fileID: 9197261209486406505, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 9197261209486406505, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_RootOrder - value: 1 + propertyPath: m_LocalPosition.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 9197261209486406505, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 9197261209486406505, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 9197261209486406505, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 9197261209486406505, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.x + propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - target: {fileID: 9197261209486406505, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - target: {fileID: 9197261209486406505, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.x - value: 1 + propertyPath: m_LocalRotation.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 9197261209486406505, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_AnchorMax.y - value: 1 + propertyPath: m_LocalEulerAnglesHint.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 9197261209486406505, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_Pivot.x - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 9197261209486406505, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} - propertyPath: m_Pivot.y - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 2661b46a09dd09949b76373e7086f5b1, type: 3} diff --git a/Assets/Project/Prefabs/UI/PromptController.prefab b/Assets/Project/Prefabs/UI/PromptController.prefab index ccaf8aff..5e05f7f4 100644 --- a/Assets/Project/Prefabs/UI/PromptController.prefab +++ b/Assets/Project/Prefabs/UI/PromptController.prefab @@ -177,7 +177,7 @@ GameObject: - component: {fileID: 4647394953582627278} - component: {fileID: 6694792319274536413} m_Layer: 5 - m_Name: Buttons + m_Name: Controls m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -196,6 +196,7 @@ RectTransform: m_Children: - {fileID: 4686184407498535678} - {fileID: 8899716135532437245} + - {fileID: 247667234235854948} m_Father: {fileID: 5681743549657260140} m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -441,6 +442,81 @@ MonoBehaviour: m_VerticalOverflow: 0 m_LineSpacing: 1 m_Text: New Text +--- !u!1 &3739735874899508374 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8191896520072988402} + - component: {fileID: 1588670140828047878} + - component: {fileID: 2120427730185935092} + m_Layer: 5 + m_Name: Bar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8191896520072988402 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3739735874899508374} + 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: 247667234235854948} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 4, y: 0} + m_SizeDelta: {x: 392, y: -8} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &1588670140828047878 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3739735874899508374} + m_CullTransparentMesh: 1 +--- !u!114 &2120427730185935092 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3739735874899508374} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.29411766, g: 0.7254902, b: 0.7053667, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 --- !u!1 &5159278231688627505 GameObject: m_ObjectHideFlags: 0 @@ -547,6 +623,57 @@ MonoBehaviour: movementMagnitude: 20 animateAlpha: 1 alphaSpeed: 8 +--- !u!1 &6558859947756707346 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 247667234235854948} + - component: {fileID: 9010457467537791553} + m_Layer: 5 + m_Name: ProgressBar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &247667234235854948 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6558859947756707346} + 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: 4000561225857257985} + - {fileID: 8191896520072988402} + m_Father: {fileID: 4647394953582627278} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -80, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &9010457467537791553 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6558859947756707346} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8737b87fbfe189e47b37336b45dbdc1b, type: 3} + m_Name: + m_EditorClassIdentifier: + barTransform: {fileID: 8191896520072988402} --- !u!1 &6722406649026196044 GameObject: m_ObjectHideFlags: 0 @@ -671,6 +798,7 @@ MonoBehaviour: yesNoContainer: {fileID: 4686184407498535678} okButton: {fileID: 5332012033825277398} promptText: {fileID: 6101928821073048433} + progressBar: {fileID: 9010457467537791553} --- !u!223 &8478288215165110693 Canvas: m_ObjectHideFlags: 0 @@ -854,6 +982,81 @@ MonoBehaviour: movementMagnitude: 20 animateAlpha: 1 alphaSpeed: 8 +--- !u!1 &9223307962610344975 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4000561225857257985} + - component: {fileID: 6314470474550181683} + - component: {fileID: 1715717143309166045} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4000561225857257985 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9223307962610344975} + 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: 247667234235854948} + 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: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6314470474550181683 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9223307962610344975} + m_CullTransparentMesh: 1 +--- !u!114 &1715717143309166045 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9223307962610344975} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.078431375, g: 0.078431375, b: 0.11764706, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 --- !u!1001 &1103328468103582777 PrefabInstance: m_ObjectHideFlags: 0 @@ -885,111 +1088,117 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalPosition.z - value: 0 + propertyPath: m_RootOrder + value: 1 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 1 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_RootOrder - value: 1 + propertyPath: m_SizeDelta.x + value: -200 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 + propertyPath: m_SizeDelta.y + value: 40 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_SizeDelta.x - value: -200 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_SizeDelta.y - value: 40 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMin.y - value: 0.5 + propertyPath: m_AnchoredPosition.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMax.x - value: 1 + propertyPath: m_AnchoredPosition.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMax.y - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_Pivot.x - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_Pivot.y - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} +--- !u!1 &5166782039614460176 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 5259033962641442089, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + m_PrefabInstance: {fileID: 1103328468103582777} + m_PrefabAsset: {fileID: 0} --- !u!224 &8899716135532437245 stripped RectTransform: m_CorrespondingSourceObject: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, @@ -1008,12 +1217,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} m_Name: m_EditorClassIdentifier: ---- !u!1 &5166782039614460176 stripped -GameObject: - m_CorrespondingSourceObject: {fileID: 5259033962641442089, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - m_PrefabInstance: {fileID: 1103328468103582777} - m_PrefabAsset: {fileID: 0} --- !u!1001 &5635165897083648059 PrefabInstance: m_ObjectHideFlags: 0 @@ -1040,108 +1243,108 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_Pivot.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 1 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_RootOrder - value: 0 + propertyPath: m_SizeDelta.x + value: 100 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_SizeDelta.x - value: 100 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_SizeDelta.y - value: 0 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMax.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMax.y - value: 1 + propertyPath: m_LocalEulerAnglesHint.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_Pivot.x + propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_Pivot.y - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} @@ -1195,108 +1398,108 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 1 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalPosition.z - value: 0 + propertyPath: m_RootOrder + value: 1 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 1 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 1 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 1 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_RootOrder - value: 1 + propertyPath: m_SizeDelta.x + value: 100 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_SizeDelta.x - value: 100 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_SizeDelta.y - value: 0 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMin.x - value: 1 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMax.x - value: 1 + propertyPath: m_AnchoredPosition.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMax.y - value: 1 + propertyPath: m_LocalEulerAnglesHint.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_Pivot.x - value: 1 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_Pivot.y - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} diff --git a/Assets/Project/Prefabs/UI/RootNavigation/BlueprintSelector/BlueprintView.prefab b/Assets/Project/Prefabs/UI/RootNavigation/BlueprintSelector/BlueprintView.prefab index cf12b81d..6238d849 100644 --- a/Assets/Project/Prefabs/UI/RootNavigation/BlueprintSelector/BlueprintView.prefab +++ b/Assets/Project/Prefabs/UI/RootNavigation/BlueprintSelector/BlueprintView.prefab @@ -735,6 +735,7 @@ MonoBehaviour: m_EditorClassIdentifier: m_Navigation: m_Mode: 3 + m_WrapAround: 0 m_SelectOnUp: {fileID: 0} m_SelectOnDown: {fileID: 0} m_SelectOnLeft: {fileID: 0} @@ -765,12 +766,13 @@ MonoBehaviour: m_PersistentCalls: m_Calls: - m_Target: {fileID: 7225781546019620102} - m_TargetAssemblyTypeName: + m_TargetAssemblyTypeName: Exa.Audio.GlobalAudioPlayerProxy, Assembly-CSharp m_MethodName: Play - m_Mode: 5 + m_Mode: 2 m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_ObjectArgument: {fileID: 11400000, guid: bdaa7c8727d197444a1b1e9662639ac3, + type: 2} + m_ObjectArgumentAssemblyTypeName: Exa.Audio.Sound, Assembly-CSharp m_IntArgument: 0 m_FloatArgument: 0 m_StringArgument: UI_SFX_ButtonSelectNegative @@ -816,12 +818,13 @@ MonoBehaviour: m_BoolArgument: 1 m_CallState: 2 - m_Target: {fileID: 7225781546019620102} - m_TargetAssemblyTypeName: + m_TargetAssemblyTypeName: Exa.Audio.GlobalAudioPlayerProxy, Assembly-CSharp m_MethodName: Play - m_Mode: 5 + m_Mode: 2 m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_ObjectArgument: {fileID: 11400000, guid: b48159f68624a6f4785ccc1ca593a456, + type: 2} + m_ObjectArgumentAssemblyTypeName: Exa.Audio.Sound, Assembly-CSharp m_IntArgument: 0 m_FloatArgument: 0 m_StringArgument: UI_SFX_ButtonHover @@ -1153,6 +1156,7 @@ MonoBehaviour: m_EditorClassIdentifier: m_Navigation: m_Mode: 3 + m_WrapAround: 0 m_SelectOnUp: {fileID: 0} m_SelectOnDown: {fileID: 0} m_SelectOnLeft: {fileID: 0} @@ -1183,12 +1187,13 @@ MonoBehaviour: m_PersistentCalls: m_Calls: - m_Target: {fileID: 6023223994625859141} - m_TargetAssemblyTypeName: + m_TargetAssemblyTypeName: Exa.Audio.GlobalAudioPlayerProxy, Assembly-CSharp m_MethodName: Play - m_Mode: 5 + m_Mode: 2 m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_ObjectArgument: {fileID: 11400000, guid: 911c51fedc82b49428337ae7075e4656, + type: 2} + m_ObjectArgumentAssemblyTypeName: Exa.Audio.Sound, Assembly-CSharp m_IntArgument: 0 m_FloatArgument: 0 m_StringArgument: UI_SFX_ButtonClick @@ -1246,12 +1251,13 @@ MonoBehaviour: m_BoolArgument: 1 m_CallState: 2 - m_Target: {fileID: 6023223994625859141} - m_TargetAssemblyTypeName: + m_TargetAssemblyTypeName: Exa.Audio.GlobalAudioPlayerProxy, Assembly-CSharp m_MethodName: Play - m_Mode: 5 + m_Mode: 2 m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_ObjectArgument: {fileID: 11400000, guid: b48159f68624a6f4785ccc1ca593a456, + type: 2} + m_ObjectArgumentAssemblyTypeName: Exa.Audio.Sound, Assembly-CSharp m_IntArgument: 0 m_FloatArgument: 0 m_StringArgument: UI_SFX_ButtonHover @@ -1319,8 +1325,8 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4248011012652510525, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_EffectColor.r - value: 0.7058824 + propertyPath: m_EffectColor.b + value: 0.29411766 objectReference: {fileID: 0} - target: {fileID: 4248011012652510525, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} @@ -1329,113 +1335,113 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4248011012652510525, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_EffectColor.b - value: 0.29411766 + propertyPath: m_EffectColor.r + value: 0.7058824 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalRotation.x - value: 0 + propertyPath: m_AnchorMax.x + value: 1 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalRotation.y - value: 0 + propertyPath: m_AnchorMax.y + value: 1 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalRotation.z + propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_RootOrder + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_AnchorMin.x + propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_AnchorMax.x - value: 1 + propertyPath: m_AnchoredPosition.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_AnchorMax.y - value: 1 + propertyPath: m_LocalEulerAnglesHint.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_Pivot.x - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_Pivot.y - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} @@ -1476,127 +1482,127 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalRotation.x - value: 0 + propertyPath: m_AnchorMax.x + value: 1 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalRotation.y - value: 0 + propertyPath: m_AnchorMax.y + value: 1 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalRotation.z + propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_RootOrder + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_AnchorMin.x + propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_AnchorMax.x - value: 1 + propertyPath: m_AnchoredPosition.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_AnchorMax.y - value: 1 + propertyPath: m_LocalEulerAnglesHint.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_Pivot.x - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_Pivot.y - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 9103225472738873222, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_Color.r + propertyPath: m_Color.a value: 1 objectReference: {fileID: 0} - target: {fileID: 9103225472738873222, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_Color.g + propertyPath: m_Color.b value: 1 objectReference: {fileID: 0} - target: {fileID: 9103225472738873222, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_Color.b + propertyPath: m_Color.g value: 1 objectReference: {fileID: 0} - target: {fileID: 9103225472738873222, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_Color.a + propertyPath: m_Color.r value: 1 objectReference: {fileID: 0} m_RemovedComponents: [] diff --git a/Assets/Project/Prefabs/UI/RootNavigation/Menu/MainMenuButton.prefab b/Assets/Project/Prefabs/UI/RootNavigation/Menu/MainMenuButton.prefab index 112f74a7..d4ee1787 100644 --- a/Assets/Project/Prefabs/UI/RootNavigation/Menu/MainMenuButton.prefab +++ b/Assets/Project/Prefabs/UI/RootNavigation/Menu/MainMenuButton.prefab @@ -78,13 +78,8 @@ PrefabInstance: m_Modifications: - target: {fileID: 350557258748702759, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_Color.r - value: 0.39215687 - objectReference: {fileID: 0} - - target: {fileID: 350557258748702759, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_Color.g - value: 0.39215687 + propertyPath: m_Color.a + value: 1 objectReference: {fileID: 0} - target: {fileID: 350557258748702759, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} @@ -93,18 +88,13 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 350557258748702759, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_Color.a - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 350557258748702759, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_FontData.m_Alignment - value: 3 + propertyPath: m_Color.g + value: 0.39215687 objectReference: {fileID: 0} - target: {fileID: 350557258748702759, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_FontData.m_MaxSize - value: 52 + propertyPath: m_Color.r + value: 0.39215687 objectReference: {fileID: 0} - target: {fileID: 350557258748702759, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} @@ -112,11 +102,26 @@ PrefabInstance: value: objectReference: {fileID: 12800000, guid: b9f47330c8d3fd443a5e4dbae17f45a7, type: 3} + - target: {fileID: 350557258748702759, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_FontData.m_MaxSize + value: 52 + objectReference: {fileID: 0} - target: {fileID: 350557258748702759, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} propertyPath: m_FontData.m_FontSize value: 32 objectReference: {fileID: 0} + - target: {fileID: 350557258748702759, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_FontData.m_Alignment + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: onPointerExit.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} - target: {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} propertyPath: onPointerEnter.m_PersistentCalls.m_Calls.Array.size @@ -124,19 +129,24 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: onPointerExit.m_PersistentCalls.m_Calls.Array.size - value: 1 + propertyPath: onPointerExit.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 6 objectReference: {fileID: 0} - target: {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} propertyPath: onPointerEnter.m_PersistentCalls.m_Calls.Array.data[0].m_Mode - value: 5 + value: 2 objectReference: {fileID: 0} - target: {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: onPointerEnter.m_PersistentCalls.m_Calls.Array.data[0].m_CallState - value: 2 + propertyPath: onPointerEnter.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 6 objectReference: {fileID: 0} + - target: {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: onPointerExit.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 8901350474062417319} - target: {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} propertyPath: onPointerEnter.m_PersistentCalls.m_Calls.Array.data[0].m_Target @@ -144,43 +154,48 @@ PrefabInstance: objectReference: {fileID: 819878466269364214} - target: {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: onPointerEnter.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: Play + propertyPath: onPointerEnter.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 8901350474062417319} + - target: {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: onPointerEnter.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 objectReference: {fileID: 0} - target: {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: onPointerEnter.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine + propertyPath: onPointerExit.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: SetColor objectReference: {fileID: 0} - target: {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: onPointerEnter.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_StringArgument - value: UI_SFX_ButtonHover + propertyPath: onPointerEnter.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: Play objectReference: {fileID: 0} - target: {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: onPointerExit.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_BoolArgument - value: 0 + propertyPath: onPointerEnter.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName + value: SetColor objectReference: {fileID: 0} - target: {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: onPointerEnter.m_PersistentCalls.m_Calls.Array.data[1].m_Target - value: - objectReference: {fileID: 8901350474062417319} + propertyPath: onPointerExit.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName + value: Exa.UI.Components.TextColorLerper, Assembly-CSharp + objectReference: {fileID: 0} - target: {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: onPointerEnter.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName - value: SetColor + propertyPath: onPointerEnter.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName + value: Exa.Audio.GlobalAudioPlayerProxy, Assembly-CSharp objectReference: {fileID: 0} - target: {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: onPointerEnter.m_PersistentCalls.m_Calls.Array.data[1].m_Mode - value: 6 + propertyPath: onPointerEnter.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName + value: Exa.UI.Components.TextColorLerper, Assembly-CSharp objectReference: {fileID: 0} - target: {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: onPointerEnter.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine + propertyPath: onPointerExit.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_BoolArgument + value: 0 objectReference: {fileID: 0} - target: {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} @@ -189,18 +204,14 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: onPointerExit.m_PersistentCalls.m_Calls.Array.data[0].m_Target + propertyPath: onPointerEnter.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument value: - objectReference: {fileID: 8901350474062417319} - - target: {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: onPointerExit.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: SetColor - objectReference: {fileID: 0} + objectReference: {fileID: 11400000, guid: b48159f68624a6f4785ccc1ca593a456, + type: 2} - target: {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: onPointerExit.m_PersistentCalls.m_Calls.Array.data[0].m_Mode - value: 6 + propertyPath: onPointerEnter.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_StringArgument + value: UI_SFX_ButtonHover objectReference: {fileID: 0} - target: {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} @@ -209,43 +220,43 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: onPointerEnter.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName - value: Exa.UI.Components.TextColorLerper, Assembly-CSharp + propertyPath: onPointerEnter.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: Exa.Audio.Sound, Assembly-CSharp objectReference: {fileID: 0} - target: {fileID: 2519197678057345776, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: onPointerExit.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName - value: Exa.UI.Components.TextColorLerper, Assembly-CSharp + propertyPath: onPointerEnter.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine objectReference: {fileID: 0} - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 819878466269364214} + propertyPath: m_Transition + value: 0 + objectReference: {fileID: 0} - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: Play + propertyPath: m_Colors.m_NormalColor.b + value: 0.19607843 objectReference: {fileID: 0} - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_Colors.m_NormalColor.r + propertyPath: m_Colors.m_NormalColor.g value: 0.15686275 objectReference: {fileID: 0} - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_Colors.m_NormalColor.g + propertyPath: m_Colors.m_NormalColor.r value: 0.15686275 objectReference: {fileID: 0} - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_Colors.m_NormalColor.b - value: 0.19607843 - objectReference: {fileID: 0} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 819878466269364214} - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_Transition - value: 0 + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: Play objectReference: {fileID: 0} - target: {fileID: 5259033962641442089, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} @@ -254,47 +265,47 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6073299296863241000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 + propertyPath: m_Pivot.y + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 6073299296863241000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchorMax.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6073299296863241000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6073299296863241000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_SizeDelta.y - value: 80 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 6073299296863241000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_Pivot.y - value: 0.5 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 6073299296863241000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMax.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6073299296863241000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMax.y - value: 0 + propertyPath: m_SizeDelta.y + value: 80 objectReference: {fileID: 0} - target: {fileID: 6073299296863241000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalScale.y + propertyPath: m_LocalScale.x value: 1 objectReference: {fileID: 0} - target: {fileID: 6073299296863241000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalScale.x + propertyPath: m_LocalScale.y value: 1 objectReference: {fileID: 0} - target: {fileID: 6073299296863241000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, @@ -304,7 +315,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6073299296863241000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMin.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6073299296863241000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, @@ -314,8 +325,8 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6740912226978947629, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: color.inactive.r - value: 0.39215687 + propertyPath: color.inactive.b + value: 0.43137255 objectReference: {fileID: 0} - target: {fileID: 6740912226978947629, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} @@ -324,8 +335,8 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6740912226978947629, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: color.inactive.b - value: 0.43137255 + propertyPath: color.inactive.r + value: 0.39215687 objectReference: {fileID: 0} - target: {fileID: 8327413947886271598, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} @@ -334,8 +345,8 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8327413947886271598, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_Color.r - value: 0.15686275 + propertyPath: m_Color.b + value: 0.19607843 objectReference: {fileID: 0} - target: {fileID: 8327413947886271598, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} @@ -344,98 +355,98 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8327413947886271598, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_Color.b - value: 0.19607843 + propertyPath: m_Color.r + value: 0.15686275 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_Pivot.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_RootOrder - value: 0 + propertyPath: m_SizeDelta.y + value: 80 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMin.y - value: 0 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMax.x - value: 0 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMax.y - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_Pivot.x + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_Pivot.y + propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_SizeDelta.y - value: 80 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} diff --git a/Assets/Project/Prefabs/UI/RootNavigation/Menu/Menu.prefab b/Assets/Project/Prefabs/UI/RootNavigation/Menu/Menu.prefab index 5b99cad1..6f291f74 100644 --- a/Assets/Project/Prefabs/UI/RootNavigation/Menu/Menu.prefab +++ b/Assets/Project/Prefabs/UI/RootNavigation/Menu/Menu.prefab @@ -382,7 +382,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: buildMessageText: {fileID: 7055817685026536776} - buildMessage: {fileID: 11400000, guid: f6485442c6fc73b45a24319c826b76f9, type: 2} + buildMessage: {fileID: 11400000, guid: 74820e15d951b2941aa32bc37a851c90, type: 2} --- !u!1 &3008538960454719081 GameObject: m_ObjectHideFlags: 0 @@ -625,127 +625,127 @@ PrefabInstance: m_Modifications: - target: {fileID: 3005262395364608542, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_Color.r - value: 0.39215687 + propertyPath: m_Color.a + value: 1 objectReference: {fileID: 0} - target: {fileID: 3005262395364608542, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_Color.g - value: 0.39215687 + propertyPath: m_Color.b + value: 0.43137255 objectReference: {fileID: 0} - target: {fileID: 3005262395364608542, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_Color.b - value: 0.43137255 + propertyPath: m_Color.g + value: 0.39215687 objectReference: {fileID: 0} - target: {fileID: 3005262395364608542, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_Color.a - value: 1 + propertyPath: m_Color.r + value: 0.39215687 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_LocalPosition.z - value: 0 + propertyPath: m_RootOrder + value: 1 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_RootOrder - value: 1 + propertyPath: m_SizeDelta.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_SizeDelta.x - value: 0 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_SizeDelta.y - value: 0 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_AnchorMax.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_Pivot.x - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_Pivot.y + propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - target: {fileID: 7272114362287537980, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, @@ -770,102 +770,102 @@ PrefabInstance: m_Modifications: - target: {fileID: 3545356684473220871, guid: 40f436190bc872646b866262197de890, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 3545356684473220871, guid: 40f436190bc872646b866262197de890, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - target: {fileID: 3545356684473220871, guid: 40f436190bc872646b866262197de890, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 3545356684473220871, guid: 40f436190bc872646b866262197de890, type: 3} - propertyPath: m_LocalRotation.x - value: 0 + propertyPath: m_AnchorMax.x + value: 1 objectReference: {fileID: 0} - target: {fileID: 3545356684473220871, guid: 40f436190bc872646b866262197de890, type: 3} - propertyPath: m_LocalRotation.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 3545356684473220871, guid: 40f436190bc872646b866262197de890, type: 3} - propertyPath: m_LocalRotation.z + propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - target: {fileID: 3545356684473220871, guid: 40f436190bc872646b866262197de890, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 3545356684473220871, guid: 40f436190bc872646b866262197de890, type: 3} - propertyPath: m_RootOrder + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 3545356684473220871, guid: 40f436190bc872646b866262197de890, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 3545356684473220871, guid: 40f436190bc872646b866262197de890, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 3545356684473220871, guid: 40f436190bc872646b866262197de890, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 3545356684473220871, guid: 40f436190bc872646b866262197de890, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 3545356684473220871, guid: 40f436190bc872646b866262197de890, type: 3} - propertyPath: m_AnchorMin.x + propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - target: {fileID: 3545356684473220871, guid: 40f436190bc872646b866262197de890, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - target: {fileID: 3545356684473220871, guid: 40f436190bc872646b866262197de890, type: 3} - propertyPath: m_AnchorMax.x - value: 1 + propertyPath: m_LocalRotation.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 3545356684473220871, guid: 40f436190bc872646b866262197de890, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 3545356684473220871, guid: 40f436190bc872646b866262197de890, type: 3} - propertyPath: m_Pivot.x - value: 0.5 + propertyPath: m_AnchoredPosition.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 3545356684473220871, guid: 40f436190bc872646b866262197de890, type: 3} - propertyPath: m_Pivot.y + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 3545356684473220871, guid: 40f436190bc872646b866262197de890, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - target: {fileID: 3545356684473220871, guid: 40f436190bc872646b866262197de890, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - target: {fileID: 9221449550448223102, guid: 40f436190bc872646b866262197de890, diff --git a/Assets/Project/Prefabs/UI/RootNavigation/Play/BlueprintView.prefab b/Assets/Project/Prefabs/UI/RootNavigation/Play/BlueprintView.prefab index 0269a36b..07d20de3 100644 --- a/Assets/Project/Prefabs/UI/RootNavigation/Play/BlueprintView.prefab +++ b/Assets/Project/Prefabs/UI/RootNavigation/Play/BlueprintView.prefab @@ -581,6 +581,7 @@ MonoBehaviour: m_EditorClassIdentifier: m_Navigation: m_Mode: 3 + m_WrapAround: 0 m_SelectOnUp: {fileID: 0} m_SelectOnDown: {fileID: 0} m_SelectOnLeft: {fileID: 0} @@ -611,12 +612,13 @@ MonoBehaviour: m_PersistentCalls: m_Calls: - m_Target: {fileID: 5335731872024107362} - m_TargetAssemblyTypeName: + m_TargetAssemblyTypeName: Exa.Audio.GlobalAudioPlayerProxy, Assembly-CSharp m_MethodName: Play - m_Mode: 5 + m_Mode: 2 m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_ObjectArgument: {fileID: 11400000, guid: 911c51fedc82b49428337ae7075e4656, + type: 2} + m_ObjectArgumentAssemblyTypeName: Exa.Audio.Sound, Assembly-CSharp m_IntArgument: 0 m_FloatArgument: 0 m_StringArgument: UI_SFX_ButtonClick @@ -650,12 +652,13 @@ MonoBehaviour: m_PersistentCalls: m_Calls: - m_Target: {fileID: 5335731872024107362} - m_TargetAssemblyTypeName: + m_TargetAssemblyTypeName: Exa.Audio.GlobalAudioPlayerProxy, Assembly-CSharp m_MethodName: Play - m_Mode: 5 + m_Mode: 2 m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_ObjectArgument: {fileID: 11400000, guid: b48159f68624a6f4785ccc1ca593a456, + type: 2} + m_ObjectArgumentAssemblyTypeName: Exa.Audio.Sound, Assembly-CSharp m_IntArgument: 0 m_FloatArgument: 0 m_StringArgument: UI_SFX_ButtonHover @@ -847,127 +850,127 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalRotation.x - value: 0 + propertyPath: m_AnchorMax.x + value: 1 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalRotation.y - value: 0 + propertyPath: m_AnchorMax.y + value: 1 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalRotation.z + propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_RootOrder + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_AnchorMin.x + propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_AnchorMax.x - value: 1 + propertyPath: m_AnchoredPosition.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_AnchorMax.y - value: 1 + propertyPath: m_LocalEulerAnglesHint.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_Pivot.x - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 7574491075590755073, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_Pivot.y - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 9103225472738873222, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_Color.r + propertyPath: m_Color.a value: 1 objectReference: {fileID: 0} - target: {fileID: 9103225472738873222, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_Color.g + propertyPath: m_Color.b value: 1 objectReference: {fileID: 0} - target: {fileID: 9103225472738873222, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_Color.b + propertyPath: m_Color.g value: 1 objectReference: {fileID: 0} - target: {fileID: 9103225472738873222, guid: a2eca6e6eaf2e724381d5f3c377a9b85, type: 3} - propertyPath: m_Color.a + propertyPath: m_Color.r value: 1 objectReference: {fileID: 0} m_RemovedComponents: [] diff --git a/Assets/Project/Prefabs/UI/RootNavigation/Play/Play.prefab b/Assets/Project/Prefabs/UI/RootNavigation/Play/Play.prefab index 1303a6f6..b0d22498 100644 --- a/Assets/Project/Prefabs/UI/RootNavigation/Play/Play.prefab +++ b/Assets/Project/Prefabs/UI/RootNavigation/Play/Play.prefab @@ -1,6 +1,6 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: ---- !u!1 &718723682167883103 +--- !u!1 &951137106612508572 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -8,79 +8,103 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 8910865984833087401} - - component: {fileID: 105481414985920069} - - component: {fileID: 807105336449728486} + - component: {fileID: 6116667216969526472} + - component: {fileID: 3596533499745254847} + - component: {fileID: 7609048299769932874} m_Layer: 5 - m_Name: Text + m_Name: TextContainer m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!224 &8910865984833087401 +--- !u!224 &6116667216969526472 RectTransform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 718723682167883103} + m_GameObject: {fileID: 951137106612508572} 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: 254095763991085411} - m_Father: {fileID: 2552502407879250634} + - {fileID: 1819171774800650630} + m_Father: {fileID: 3878907337678949348} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 1} m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: -20} m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &105481414985920069 -CanvasRenderer: +--- !u!114 &3596533499745254847 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 718723682167883103} - m_CullTransparentMesh: 0 ---- !u!114 &807105336449728486 + m_GameObject: {fileID: 951137106612508572} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 1 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!114 &7609048299769932874 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 718723682167883103} + m_GameObject: {fileID: 951137106612508572} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} m_Name: m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.29411766, g: 0.7254902, b: 0.7053667, 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_FontData: - m_Font: {fileID: 12800000, guid: b9f47330c8d3fd443a5e4dbae17f45a7, type: 3} - m_FontSize: 36 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 0 - m_MaxSize: 40 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: Fleet builder ---- !u!1 &951137106612508572 + m_HorizontalFit: 2 + m_VerticalFit: 0 +--- !u!114 &6278850694466692168 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1094186208677630090} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1 &2376250739199336238 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -88,46 +112,44 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 6116667216969526472} - - component: {fileID: 3596533499745254847} - - component: {fileID: 7609048299769932874} + - component: {fileID: 6708354728141809643} + - component: {fileID: 7544532576992169364} m_Layer: 5 - m_Name: TextContainer + m_Name: Container m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!224 &6116667216969526472 +--- !u!224 &6708354728141809643 RectTransform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 951137106612508572} + m_GameObject: {fileID: 2376250739199336238} 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: 1819171774800650630} - m_Father: {fileID: 3878907337678949348} - m_RootOrder: 0 + m_Children: [] + m_Father: {fileID: 7587060489109887903} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0} - m_AnchorMax: {x: 0.5, y: 1} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: -20} + m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &3596533499745254847 +--- !u!114 &7544532576992169364 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 951137106612508572} + m_GameObject: {fileID: 2376250739199336238} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} m_Name: m_EditorClassIdentifier: m_Padding: @@ -136,28 +158,14 @@ MonoBehaviour: m_Top: 0 m_Bottom: 0 m_ChildAlignment: 0 - m_Spacing: 0 - m_ChildForceExpandWidth: 0 - m_ChildForceExpandHeight: 1 + m_Spacing: 10 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 m_ChildControlWidth: 1 - m_ChildControlHeight: 1 - m_ChildScaleWidth: 1 - m_ChildScaleHeight: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 1 m_ReverseArrangement: 0 ---- !u!114 &7609048299769932874 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 951137106612508572} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HorizontalFit: 2 - m_VerticalFit: 0 --- !u!114 &2662322319709389856 MonoBehaviour: m_ObjectHideFlags: 0 @@ -206,8 +214,6 @@ RectTransform: m_Children: - {fileID: 3878907337678949348} - {fileID: 7587060489109887903} - - {fileID: 3545109152192031548} - - {fileID: 5366886646125208827} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -272,86 +278,19 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: dbf5c51b36c3ddc4ca24eb015aa78b1e, type: 3} m_Name: m_EditorClassIdentifier: + rectTransform: {fileID: 0} + canvasGroup: {fileID: 0} + duration: 0.25 + animArgs: + active: + targetAlpha: 0 + animAmplitude: 0 + ease: 0 + inactive: + targetAlpha: 0 + animAmplitude: 0 + ease: 0 options: {fileID: 3078436890078483469} - fleetBuilder: {fileID: 511836859233986228} ---- !u!1 &4425618572026387657 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2552502407879250634} - - component: {fileID: 5873674906725411849} - - component: {fileID: 2381263977283414014} - m_Layer: 5 - m_Name: TextContainer - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2552502407879250634 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4425618572026387657} - 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: 8910865984833087401} - m_Father: {fileID: 3545109152192031548} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0} - m_AnchorMax: {x: 0.5, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: -20} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &5873674906725411849 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4425618572026387657} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Padding: - m_Left: 0 - m_Right: 0 - m_Top: 0 - m_Bottom: 0 - m_ChildAlignment: 0 - m_Spacing: 0 - m_ChildForceExpandWidth: 0 - m_ChildForceExpandHeight: 1 - m_ChildControlWidth: 1 - m_ChildControlHeight: 1 - m_ChildScaleWidth: 1 - m_ChildScaleHeight: 0 - m_ReverseArrangement: 0 ---- !u!114 &2381263977283414014 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4425618572026387657} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HorizontalFit: 2 - m_VerticalFit: 0 --- !u!1 &4621219942650442995 GameObject: m_ObjectHideFlags: 0 @@ -465,11 +404,11 @@ RectTransform: m_Father: {fileID: 4238829207107712170} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 240, y: 80} - m_Pivot: {x: 0, y: 1} + m_SizeDelta: {x: 360, y: 80} + m_Pivot: {x: 0.5, y: 1} --- !u!222 &3339363226879426060 CanvasRenderer: m_ObjectHideFlags: 0 @@ -543,12 +482,12 @@ RectTransform: m_Children: - {fileID: 1484380238836897510} m_Father: {fileID: 7587060489109887903} - m_RootOrder: 1 + m_RootOrder: 2 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: 48} + m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &8384871885115347601 MonoBehaviour: @@ -617,7 +556,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: hoverable: {fileID: 7659458319699722735} - message: Noooooooo + message: Play mission --- !u!222 &310495316214893833 CanvasRenderer: m_ObjectHideFlags: 0 @@ -689,15 +628,16 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: - {fileID: 8530715482856852594} + - {fileID: 6708354728141809643} - {fileID: 7451296433726455357} m_Father: {fileID: 4238829207107712170} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} m_AnchoredPosition: {x: 0, y: -80} - m_SizeDelta: {x: 240, y: 0} - m_Pivot: {x: 0, y: 1} + m_SizeDelta: {x: 360, y: 0} + m_Pivot: {x: 0.5, y: 1} --- !u!114 &3130862910042551463 MonoBehaviour: m_ObjectHideFlags: 0 @@ -720,9 +660,9 @@ MonoBehaviour: m_ChildForceExpandWidth: 1 m_ChildForceExpandHeight: 0 m_ChildControlWidth: 1 - m_ChildControlHeight: 0 + m_ChildControlHeight: 1 m_ChildScaleWidth: 0 - m_ChildScaleHeight: 0 + m_ChildScaleHeight: 1 m_ReverseArrangement: 0 --- !u!114 &5784169418823543906 MonoBehaviour: @@ -792,84 +732,9 @@ MonoBehaviour: missionDropdown: {fileID: 6566721592531317018} button: {fileID: 2662322319709389856} tooltipTrigger: {fileID: 7043931966280633992} ---- !u!1 &8466874152864604165 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3545109152192031548} - - component: {fileID: 6595813096464612333} - - component: {fileID: 8745960187506191729} - m_Layer: 5 - m_Name: FleetBuilderTitle - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &3545109152192031548 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8466874152864604165} - 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: 2552502407879250634} - m_Father: {fileID: 4238829207107712170} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 125, y: 0} - m_SizeDelta: {x: -250, y: 80} - m_Pivot: {x: 0.5, y: 1} ---- !u!222 &6595813096464612333 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8466874152864604165} - m_CullTransparentMesh: 0 ---- !u!114 &8745960187506191729 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8466874152864604165} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.15686275, g: 0.15686275, b: 0.19607843, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 9ed5f14807d0abb46b875225c7dcb3d2, type: 3} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1001 &997522259283875022 -PrefabInstance: + container: {fileID: 6708354728141809643} +--- !u!1001 &997522259283875022 +PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: @@ -887,8 +752,8 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2200079629635903882, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_Color.r - value: 0.23529412 + propertyPath: m_Color.b + value: 0.27450982 objectReference: {fileID: 0} - target: {fileID: 2200079629635903882, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} @@ -897,32 +762,37 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2200079629635903882, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_Color.b - value: 0.27450982 + propertyPath: m_Color.r + value: 0.23529412 objectReference: {fileID: 0} - target: {fileID: 2459414729525202847, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_SizeDelta.x - value: 0 + propertyPath: m_Pivot.x + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 2459414729525202847, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_Pivot.y value: 1 objectReference: {fileID: 0} - target: {fileID: 2459414729525202847, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} propertyPath: m_AnchorMax.x - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2459414729525202847, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2459414729525202847, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2459414729525202847, guid: 70629459d73ad224abf7e33d946cbdd6, + type: 3} + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2459414729525202847, guid: 70629459d73ad224abf7e33d946cbdd6, @@ -932,22 +802,27 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2459414729525202847, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_Pivot.x - value: 0.5 + propertyPath: m_LocalPosition.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 2459414729525202847, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_Pivot.y - value: 1 + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2459414729525202847, guid: 70629459d73ad224abf7e33d946cbdd6, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 5761029580240260902, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5761029580240260902, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchorMax.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5761029580240260902, guid: 70629459d73ad224abf7e33d946cbdd6, @@ -957,7 +832,12 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 5761029580240260902, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5761029580240260902, guid: 70629459d73ad224abf7e33d946cbdd6, + type: 3} + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5761029580240260902, guid: 70629459d73ad224abf7e33d946cbdd6, @@ -967,13 +847,13 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 5761029580240260902, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_Pivot.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 6665540959298001051, guid: 70629459d73ad224abf7e33d946cbdd6, + - target: {fileID: 5761029580240260902, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_FontData.m_Alignment - value: 3 + propertyPath: m_AnchoredPosition.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 6665540959298001051, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} @@ -982,109 +862,114 @@ PrefabInstance: ' objectReference: {fileID: 0} + - target: {fileID: 6665540959298001051, guid: 70629459d73ad224abf7e33d946cbdd6, + type: 3} + propertyPath: m_FontData.m_Alignment + value: 3 + objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_Pivot.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_LocalRotation.x + propertyPath: m_AnchorMax.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_LocalRotation.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_LocalRotation.z + propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_RootOrder + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_SizeDelta.y - value: 80 + propertyPath: m_LocalRotation.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_AnchorMin.x + propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_AnchorMax.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_Pivot.x + propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_Pivot.y + propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] @@ -1101,12 +986,18 @@ MonoBehaviour: type: 3} m_PrefabInstance: {fileID: 997522259283875022} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} + m_GameObject: {fileID: 1094186208677630090} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 9b1dba15de04f214d96a3f366c29745e, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!1 &1094186208677630090 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 214129591251731524, guid: 70629459d73ad224abf7e33d946cbdd6, + type: 3} + m_PrefabInstance: {fileID: 997522259283875022} + m_PrefabAsset: {fileID: 0} --- !u!1001 &4009501385228669106 PrefabInstance: m_ObjectHideFlags: 0 @@ -1116,8 +1007,8 @@ PrefabInstance: m_Modifications: - target: {fileID: 3005262395364608542, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_Color.r - value: 0.74509805 + propertyPath: m_Color.b + value: 0.7647059 objectReference: {fileID: 0} - target: {fileID: 3005262395364608542, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} @@ -1126,112 +1017,112 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3005262395364608542, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_Color.b - value: 0.7647059 + propertyPath: m_Color.r + value: 0.74509805 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 1 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_RootOrder - value: 0 + propertyPath: m_SizeDelta.x + value: 40 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 + propertyPath: m_SizeDelta.y + value: 4 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_SizeDelta.x - value: 40 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_SizeDelta.y - value: 4 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_AnchorMax.x - value: 1 + propertyPath: m_AnchoredPosition.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_Pivot.x - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} - propertyPath: m_Pivot.y + propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - target: {fileID: 7272114362287537980, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, @@ -1247,520 +1138,103 @@ RectTransform: type: 3} m_PrefabInstance: {fileID: 4009501385228669106} m_PrefabAsset: {fileID: 0} ---- !u!1001 &5515332216114415061 +--- !u!1001 &6941305138210495522 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - m_TransformParent: {fileID: 8910865984833087401} + m_TransformParent: {fileID: 7451296433726455357} m_Modifications: - - target: {fileID: 3005262395364608542, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, + - target: {fileID: 350557258748702759, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_Color.r - value: 0.74509805 + propertyPath: m_Text + value: Play objectReference: {fileID: 0} - - target: {fileID: 3005262395364608542, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, + - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_Color.g - value: 0.74509805 + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 2 objectReference: {fileID: 0} - - target: {fileID: 3005262395364608542, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, + - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_Color.b - value: 0.7647059 + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 objectReference: {fileID: 0} - - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, + - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 9087843719828468379} + - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 objectReference: {fileID: 0} - - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, + - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, - type: 3} - propertyPath: m_LocalRotation.x - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, - type: 3} - propertyPath: m_LocalRotation.y - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, - type: 3} - propertyPath: m_LocalRotation.z - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, - type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, - type: 3} - propertyPath: m_RootOrder - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, - type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, - type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, - type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, - type: 3} - propertyPath: m_SizeDelta.x - value: 40 - objectReference: {fileID: 0} - - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, - type: 3} - propertyPath: m_SizeDelta.y - value: 4 - objectReference: {fileID: 0} - - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, - type: 3} - propertyPath: m_AnchorMin.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, - type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, - type: 3} - propertyPath: m_AnchorMax.x - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, - type: 3} - propertyPath: m_AnchorMax.y - value: 0 + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName + value: NavigateToMission objectReference: {fileID: 0} - - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, + - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_Pivot.x - value: 0.5 + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName + value: Exa.UI.MissionSetup, Assembly-CSharp objectReference: {fileID: 0} - - target: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, + - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_Pivot.y - value: 0 + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine objectReference: {fileID: 0} - - target: {fileID: 7272114362287537980, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, + - target: {fileID: 5259033962641442089, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} propertyPath: m_Name - value: TooltipSpacer - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, type: 3} ---- !u!224 &254095763991085411 stripped -RectTransform: - m_CorrespondingSourceObject: {fileID: 5696173565261006006, guid: 9bb61fb0a3098ff4dbd814ecf8d8d5ed, - type: 3} - m_PrefabInstance: {fileID: 5515332216114415061} - m_PrefabAsset: {fileID: 0} ---- !u!1001 &6366198695813000875 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 4238829207107712170} - m_Modifications: - - target: {fileID: 65890198199165501, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_AnchorMax.x - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 65890198199165501, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_AnchorMax.y - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 1124628192699321896, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1124628192699321896, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1124628192699321896, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1124628192699321896, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1124628192699321896, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1124628192699321896, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1306682724390111824, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1306682724390111824, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1306682724390111824, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1306682724390111824, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_LocalRotation.x - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 1306682724390111824, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_LocalRotation.y - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 1306682724390111824, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_LocalRotation.z - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 1306682724390111824, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 1306682724390111824, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_RootOrder - value: 3 - objectReference: {fileID: 0} - - target: {fileID: 1306682724390111824, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1306682724390111824, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1306682724390111824, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1306682724390111824, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_AnchorMin.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1306682724390111824, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1306682724390111824, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_AnchorMax.x - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 1306682724390111824, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_AnchorMax.y - value: 1 + value: Button objectReference: {fileID: 0} - - target: {fileID: 1306682724390111824, guid: a0eb0741a3e431b4e9950b36951859e9, + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} propertyPath: m_Pivot.x value: 0.5 objectReference: {fileID: 0} - - target: {fileID: 1306682724390111824, guid: a0eb0741a3e431b4e9950b36951859e9, + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} propertyPath: m_Pivot.y value: 0.5 objectReference: {fileID: 0} - - target: {fileID: 1306682724390111824, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 125 - objectReference: {fileID: 0} - - target: {fileID: 1306682724390111824, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_SizeDelta.x - value: -250 - objectReference: {fileID: 0} - - target: {fileID: 1306682724390111824, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_AnchoredPosition.y - value: -40 - objectReference: {fileID: 0} - - target: {fileID: 1306682724390111824, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_SizeDelta.y - value: -80 - objectReference: {fileID: 0} - - target: {fileID: 1495390357578741025, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_AnchorMax.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1495390357578741025, guid: a0eb0741a3e431b4e9950b36951859e9, + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - - target: {fileID: 1567488978013694101, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_Name - value: FleetBuilder - objectReference: {fileID: 0} - - target: {fileID: 1567488978013694101, guid: a0eb0741a3e431b4e9950b36951859e9, + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_IsActive + propertyPath: m_AnchorMax.x value: 1 objectReference: {fileID: 0} - - target: {fileID: 3515903727551879777, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3515903727551879777, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3515903727551879777, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3515903727551879777, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3515903727551879777, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3515903727551879777, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3966378097709040637, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3966378097709040637, guid: a0eb0741a3e431b4e9950b36951859e9, + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3966378097709040637, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3966378097709040637, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3966378097709040637, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3966378097709040637, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_SizeDelta.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5297350030635572499, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6864382013964208159, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: fleetValidation.m_PersistentCalls.m_Calls.Array.size value: 1 objectReference: {fileID: 0} - - target: {fileID: 6864382013964208159, guid: a0eb0741a3e431b4e9950b36951859e9, + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: fleetValidation.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 6864382013964208159, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: fleetValidation.m_PersistentCalls.m_Calls.Array.data[0].m_CallState - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 6864382013964208159, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: fleetValidation.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 3078436890078483469} - - target: {fileID: 6864382013964208159, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: fleetValidation.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName - value: Exa.UI.MissionOptions, Assembly-CSharp - objectReference: {fileID: 0} - - target: {fileID: 6864382013964208159, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: fleetValidation.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: ReflectFleetBuilderResult - objectReference: {fileID: 0} - - target: {fileID: 6864382013964208159, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: fleetValidation.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine - objectReference: {fileID: 0} - - target: {fileID: 7580560598481858954, guid: a0eb0741a3e431b4e9950b36951859e9, + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 7580560598481858954, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7580560598481858954, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7580560598481858954, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7580560598481858954, guid: a0eb0741a3e431b4e9950b36951859e9, + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 7580560598481858954, guid: a0eb0741a3e431b4e9950b36951859e9, + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: a0eb0741a3e431b4e9950b36951859e9, type: 3} ---- !u!224 &5366886646125208827 stripped -RectTransform: - m_CorrespondingSourceObject: {fileID: 1306682724390111824, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - m_PrefabInstance: {fileID: 6366198695813000875} - m_PrefabAsset: {fileID: 0} ---- !u!114 &511836859233986228 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 6864382013964208159, guid: a0eb0741a3e431b4e9950b36951859e9, - type: 3} - m_PrefabInstance: {fileID: 6366198695813000875} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 6b301f12ccdf2844483d356dd99f4182, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1001 &6941305138210495522 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 7451296433726455357} - m_Modifications: - - target: {fileID: 350557258748702759, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_Text - value: Play - objectReference: {fileID: 0} - - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target - value: - objectReference: {fileID: 9087843719828468379} - - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName - value: Exa.UI.MissionSetup, Assembly-CSharp - objectReference: {fileID: 0} - - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName - value: NavigateToMission - objectReference: {fileID: 0} - - target: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine - objectReference: {fileID: 0} - - target: {fileID: 5259033962641442089, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_Name - value: Button - objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} propertyPath: m_LocalPosition.x @@ -1776,6 +1250,11 @@ PrefabInstance: propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} propertyPath: m_LocalRotation.x @@ -1791,31 +1270,6 @@ PrefabInstance: propertyPath: m_LocalRotation.z value: -0 objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_RootOrder - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} propertyPath: m_AnchoredPosition.x @@ -1828,53 +1282,22 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMin.x + propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_AnchorMax.x - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_AnchorMax.y - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_Pivot.x - value: 0.5 - objectReference: {fileID: 0} - - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - propertyPath: m_Pivot.y - value: 0.5 - objectReference: {fileID: 0} m_RemovedComponents: - {fileID: 1600893048667343851, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} m_SourcePrefab: {fileID: 100100000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} ---- !u!1 &2931755094302267659 stripped -GameObject: - m_CorrespondingSourceObject: {fileID: 5259033962641442089, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, - type: 3} - m_PrefabInstance: {fileID: 6941305138210495522} - m_PrefabAsset: {fileID: 0} --- !u!224 &1484380238836897510 stripped RectTransform: m_CorrespondingSourceObject: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, @@ -1887,3 +1310,9 @@ CanvasGroup: type: 3} m_PrefabInstance: {fileID: 6941305138210495522} m_PrefabAsset: {fileID: 0} +--- !u!1 &2931755094302267659 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 5259033962641442089, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + m_PrefabInstance: {fileID: 6941305138210495522} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Project/Prefabs/UI/RootNavigation/RootNavigation.prefab b/Assets/Project/Prefabs/UI/RootNavigation/RootNavigation.prefab index 1441b7a5..4b9f9427 100644 --- a/Assets/Project/Prefabs/UI/RootNavigation/RootNavigation.prefab +++ b/Assets/Project/Prefabs/UI/RootNavigation/RootNavigation.prefab @@ -168,6 +168,18 @@ MonoBehaviour: targetAlpha: 0 animAmplitude: 120 ease: 9 +--- !u!114 &7987190949031833140 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5239853332619323673} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fae5fa3f420917b4f9d93d45c1d77f13, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!225 &7445511138407406047 CanvasGroup: m_ObjectHideFlags: 0 @@ -985,13 +997,13 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2552683409821484339, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_Color.r - value: 0.29411766 + propertyPath: m_Text + value: Options objectReference: {fileID: 0} - target: {fileID: 2552683409821484339, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_Color.g - value: 0.7254902 + propertyPath: m_Color.a + value: 1 objectReference: {fileID: 0} - target: {fileID: 2552683409821484339, guid: a436a9082e0d759429f1069db7abc94b, type: 3} @@ -1000,30 +1012,30 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2552683409821484339, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_Color.a - value: 1 + propertyPath: m_Color.g + value: 0.7254902 objectReference: {fileID: 0} - target: {fileID: 2552683409821484339, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_RaycastTarget - value: 1 + propertyPath: m_Color.r + value: 0.29411766 objectReference: {fileID: 0} - target: {fileID: 2552683409821484339, guid: a436a9082e0d759429f1069db7abc94b, type: 3} propertyPath: m_Maskable value: 1 objectReference: {fileID: 0} + - target: {fileID: 2552683409821484339, guid: a436a9082e0d759429f1069db7abc94b, + type: 3} + propertyPath: m_RaycastTarget + value: 1 + objectReference: {fileID: 0} - target: {fileID: 2552683409821484339, guid: a436a9082e0d759429f1069db7abc94b, type: 3} propertyPath: m_FontData.m_Font value: objectReference: {fileID: 12800000, guid: b9f47330c8d3fd443a5e4dbae17f45a7, type: 3} - - target: {fileID: 2552683409821484339, guid: a436a9082e0d759429f1069db7abc94b, - type: 3} - propertyPath: m_FontData.m_FontSize - value: 36 - objectReference: {fileID: 0} - target: {fileID: 2552683409821484339, guid: a436a9082e0d759429f1069db7abc94b, type: 3} propertyPath: m_FontData.m_MaxSize @@ -1031,8 +1043,8 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2552683409821484339, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_FontData.m_Alignment - value: 4 + propertyPath: m_FontData.m_FontSize + value: 36 objectReference: {fileID: 0} - target: {fileID: 2552683409821484339, guid: a436a9082e0d759429f1069db7abc94b, type: 3} @@ -1041,43 +1053,43 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2552683409821484339, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_FontData.m_LineSpacing - value: 1 + propertyPath: m_FontData.m_Alignment + value: 4 objectReference: {fileID: 0} - target: {fileID: 2552683409821484339, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_Text - value: Options + propertyPath: m_FontData.m_LineSpacing + value: 1 objectReference: {fileID: 0} - target: {fileID: 3560878669631610657, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - target: {fileID: 3560878669631610657, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - target: {fileID: 3560878669631610657, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_AnchoredPosition.x - value: 259 + propertyPath: m_SizeDelta.x + value: 34 objectReference: {fileID: 0} - target: {fileID: 3560878669631610657, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_AnchoredPosition.y - value: -30 + propertyPath: m_SizeDelta.y + value: 40 objectReference: {fileID: 0} - target: {fileID: 3560878669631610657, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_SizeDelta.x - value: 34 + propertyPath: m_AnchoredPosition.x + value: 259 objectReference: {fileID: 0} - target: {fileID: 3560878669631610657, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_SizeDelta.y - value: 40 + propertyPath: m_AnchoredPosition.y + value: -30 objectReference: {fileID: 0} - target: {fileID: 3665366304931820720, guid: a436a9082e0d759429f1069db7abc94b, type: 3} @@ -1091,108 +1103,108 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4238829207107712170, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 4238829207107712170, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 4238829207107712170, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 4238829207107712170, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_LocalRotation.x - value: 0 + propertyPath: m_AnchorMax.x + value: 1 objectReference: {fileID: 0} - target: {fileID: 4238829207107712170, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_LocalRotation.y - value: 0 + propertyPath: m_AnchorMax.y + value: 1 objectReference: {fileID: 0} - target: {fileID: 4238829207107712170, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_LocalRotation.z + propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4238829207107712170, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 4238829207107712170, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_RootOrder + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4238829207107712170, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4238829207107712170, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4238829207107712170, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4238829207107712170, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 4238829207107712170, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 4238829207107712170, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4238829207107712170, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4238829207107712170, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_AnchorMin.x + propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - target: {fileID: 4238829207107712170, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4238829207107712170, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_AnchorMax.x - value: 1 + propertyPath: m_AnchoredPosition.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 4238829207107712170, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_AnchorMax.y - value: 1 + propertyPath: m_LocalEulerAnglesHint.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 4238829207107712170, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_Pivot.x - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 4238829207107712170, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_Pivot.y - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 5519713712668892042, guid: a436a9082e0d759429f1069db7abc94b, type: 3} @@ -1206,74 +1218,84 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6323683458959188099, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - target: {fileID: 6323683458959188099, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - target: {fileID: 6323683458959188099, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_AnchoredPosition.x - value: 220 + propertyPath: m_SizeDelta.x + value: 4 objectReference: {fileID: 0} - target: {fileID: 6323683458959188099, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_AnchoredPosition.y - value: -50 + propertyPath: m_SizeDelta.y + value: 40 objectReference: {fileID: 0} - target: {fileID: 6323683458959188099, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_SizeDelta.x - value: 4 + propertyPath: m_AnchoredPosition.x + value: 220 objectReference: {fileID: 0} - target: {fileID: 6323683458959188099, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_SizeDelta.y - value: 40 + propertyPath: m_AnchoredPosition.y + value: -50 objectReference: {fileID: 0} - target: {fileID: 7535569135272375498, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - target: {fileID: 7535569135272375498, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - target: {fileID: 7535569135272375498, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_AnchoredPosition.x - value: 158 + propertyPath: m_SizeDelta.x + value: 296 objectReference: {fileID: 0} - target: {fileID: 7535569135272375498, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_AnchoredPosition.y - value: -40 + propertyPath: m_SizeDelta.y + value: 60 objectReference: {fileID: 0} - target: {fileID: 7535569135272375498, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_SizeDelta.x - value: 296 + propertyPath: m_AnchoredPosition.x + value: 158 objectReference: {fileID: 0} - target: {fileID: 7535569135272375498, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_SizeDelta.y - value: 60 + propertyPath: m_AnchoredPosition.y + value: -40 objectReference: {fileID: 0} - target: {fileID: 8021509236291497302, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - target: {fileID: 8021509236291497302, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} + - target: {fileID: 8021509236291497302, guid: a436a9082e0d759429f1069db7abc94b, + type: 3} + propertyPath: m_SizeDelta.x + value: 178 + objectReference: {fileID: 0} + - target: {fileID: 8021509236291497302, guid: a436a9082e0d759429f1069db7abc94b, + type: 3} + propertyPath: m_SizeDelta.y + value: 40 + objectReference: {fileID: 0} - target: {fileID: 8021509236291497302, guid: a436a9082e0d759429f1069db7abc94b, type: 3} propertyPath: m_AnchoredPosition.x @@ -1284,15 +1306,40 @@ PrefabInstance: propertyPath: m_AnchoredPosition.y value: -30 objectReference: {fileID: 0} - - target: {fileID: 8021509236291497302, guid: a436a9082e0d759429f1069db7abc94b, + - target: {fileID: 9087843719828468379, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_SizeDelta.x - value: 178 + propertyPath: canvasGroup + value: + objectReference: {fileID: 1226624259123230049} + - target: {fileID: 9087843719828468379, guid: a436a9082e0d759429f1069db7abc94b, + type: 3} + propertyPath: rectTransform + value: + objectReference: {fileID: 4128742043632261477} + - target: {fileID: 9087843719828468379, guid: a436a9082e0d759429f1069db7abc94b, + type: 3} + propertyPath: animArgs.active.ease + value: 8 objectReference: {fileID: 0} - - target: {fileID: 8021509236291497302, guid: a436a9082e0d759429f1069db7abc94b, + - target: {fileID: 9087843719828468379, guid: a436a9082e0d759429f1069db7abc94b, type: 3} - propertyPath: m_SizeDelta.y - value: 40 + propertyPath: animArgs.inactive.ease + value: 9 + objectReference: {fileID: 0} + - target: {fileID: 9087843719828468379, guid: a436a9082e0d759429f1069db7abc94b, + type: 3} + propertyPath: animArgs.active.targetAlpha + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 9087843719828468379, guid: a436a9082e0d759429f1069db7abc94b, + type: 3} + propertyPath: animArgs.active.animAmplitude + value: 120 + objectReference: {fileID: 0} + - target: {fileID: 9087843719828468379, guid: a436a9082e0d759429f1069db7abc94b, + type: 3} + propertyPath: animArgs.inactive.animAmplitude + value: 120 objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: a436a9082e0d759429f1069db7abc94b, type: 3} @@ -1326,6 +1373,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: dbf5c51b36c3ddc4ca24eb015aa78b1e, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!225 &1226624259123230049 stripped +CanvasGroup: + m_CorrespondingSourceObject: {fileID: 1340592695222327470, guid: a436a9082e0d759429f1069db7abc94b, + type: 3} + m_PrefabInstance: {fileID: 261039143803383247} + m_PrefabAsset: {fileID: 0} --- !u!1001 &1875384254298779562 PrefabInstance: m_ObjectHideFlags: 0 @@ -1333,11 +1386,6 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 2320527761771707942} m_Modifications: - - target: {fileID: 1496742483774421795, guid: 4436753b620da8f4aa44ab701036f540, - type: 3} - propertyPath: content - value: - objectReference: {fileID: 7002349257993177011} - target: {fileID: 1496742483774421795, guid: 4436753b620da8f4aa44ab701036f540, type: 3} propertyPath: delay @@ -1348,11 +1396,21 @@ PrefabInstance: propertyPath: order value: 1 objectReference: {fileID: 0} + - target: {fileID: 1496742483774421795, guid: 4436753b620da8f4aa44ab701036f540, + type: 3} + propertyPath: content + value: + objectReference: {fileID: 7002349257993177011} - target: {fileID: 2510221419983577005, guid: 4436753b620da8f4aa44ab701036f540, type: 3} propertyPath: m_Text value: Play objectReference: {fileID: 0} + - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, + type: 3} + propertyPath: message + value: Defend your station against waves of enemy ships + objectReference: {fileID: 0} - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, type: 3} propertyPath: onHover.m_PersistentCalls.m_Calls.Array.size @@ -1363,11 +1421,6 @@ PrefabInstance: propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_Mode value: 0 objectReference: {fileID: 0} - - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, - type: 3} - propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_CallState - value: 2 - objectReference: {fileID: 0} - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, type: 3} propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_Target @@ -1375,8 +1428,8 @@ PrefabInstance: objectReference: {fileID: 7947615285114198381} - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName - value: Exa.UI.RootNavigationContent, Assembly-CSharp + propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 objectReference: {fileID: 0} - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, type: 3} @@ -1385,117 +1438,117 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine + propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName + value: Exa.UI.RootNavigationContent, Assembly-CSharp objectReference: {fileID: 0} - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: message - value: Build a fleet, and move around in space + propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_Pivot.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalPosition.z - value: 0 + propertyPath: m_RootOrder + value: 1 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_RootOrder - value: 1 + propertyPath: m_SizeDelta.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 + propertyPath: m_SizeDelta.y + value: 48 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_SizeDelta.x - value: 0 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_SizeDelta.y - value: 48 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchorMax.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_Pivot.x + propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_Pivot.y + propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, @@ -1503,16 +1556,6 @@ PrefabInstance: propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size value: 2 objectReference: {fileID: 0} - - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, - type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target - value: - objectReference: {fileID: 2029031128333844631} - - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, - type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName - value: SwitchTo - objectReference: {fileID: 0} - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode @@ -1520,19 +1563,19 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: Exa.UI.Components.Navigateable, Assembly-CSharp - objectReference: {fileID: 0} - - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, - type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_StringArgument + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target value: - objectReference: {fileID: 0} + objectReference: {fileID: 2029031128333844631} - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState value: 2 objectReference: {fileID: 0} + - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName + value: SwitchTo + objectReference: {fileID: 0} - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName @@ -1543,6 +1586,16 @@ PrefabInstance: propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgument value: objectReference: {fileID: 1063917485327832201} + - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_StringArgument + value: + objectReference: {fileID: 0} + - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: Exa.UI.Components.Navigateable, Assembly-CSharp + objectReference: {fileID: 0} - target: {fileID: 7994069015727270563, guid: 4436753b620da8f4aa44ab701036f540, type: 3} propertyPath: m_Name @@ -1550,27 +1603,27 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8233641580150254754, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8233641580150254754, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8233641580150254754, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8233641580150254754, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8233641580150254754, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] @@ -1600,11 +1653,6 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 2320527761771707942} m_Modifications: - - target: {fileID: 1496742483774421795, guid: 4436753b620da8f4aa44ab701036f540, - type: 3} - propertyPath: content - value: - objectReference: {fileID: 5062230322093476378} - target: {fileID: 1496742483774421795, guid: 4436753b620da8f4aa44ab701036f540, type: 3} propertyPath: delay @@ -1615,11 +1663,21 @@ PrefabInstance: propertyPath: order value: 2 objectReference: {fileID: 0} + - target: {fileID: 1496742483774421795, guid: 4436753b620da8f4aa44ab701036f540, + type: 3} + propertyPath: content + value: + objectReference: {fileID: 5062230322093476378} - target: {fileID: 2510221419983577005, guid: 4436753b620da8f4aa44ab701036f540, type: 3} propertyPath: m_Text value: Blueprints objectReference: {fileID: 0} + - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, + type: 3} + propertyPath: message + value: Import, export, create and edit unit blueprints + objectReference: {fileID: 0} - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, type: 3} propertyPath: onHover.m_PersistentCalls.m_Calls.Array.size @@ -1630,11 +1688,6 @@ PrefabInstance: propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_Mode value: 0 objectReference: {fileID: 0} - - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, - type: 3} - propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_CallState - value: 2 - objectReference: {fileID: 0} - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, type: 3} propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_Target @@ -1642,8 +1695,8 @@ PrefabInstance: objectReference: {fileID: 7947615285114198381} - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName - value: Exa.UI.RootNavigationContent, Assembly-CSharp + propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 objectReference: {fileID: 0} - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, type: 3} @@ -1652,117 +1705,117 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine + propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName + value: Exa.UI.RootNavigationContent, Assembly-CSharp objectReference: {fileID: 0} - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: message - value: Import, export, create and edit unit blueprints + propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_Pivot.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalPosition.z - value: 0 + propertyPath: m_RootOrder + value: 2 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_RootOrder - value: 2 + propertyPath: m_SizeDelta.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 + propertyPath: m_SizeDelta.y + value: 48 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_SizeDelta.x - value: 0 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_SizeDelta.y - value: 48 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchorMax.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_Pivot.x + propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_Pivot.y + propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, @@ -1770,16 +1823,6 @@ PrefabInstance: propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size value: 2 objectReference: {fileID: 0} - - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, - type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target - value: - objectReference: {fileID: 2029031128333844631} - - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, - type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName - value: SwitchTo - objectReference: {fileID: 0} - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode @@ -1787,19 +1830,19 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: Exa.UI.Components.Navigateable, Assembly-CSharp - objectReference: {fileID: 0} - - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, - type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_StringArgument + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target value: - objectReference: {fileID: 0} + objectReference: {fileID: 2029031128333844631} - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState value: 2 objectReference: {fileID: 0} + - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName + value: SwitchTo + objectReference: {fileID: 0} - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName @@ -1810,6 +1853,16 @@ PrefabInstance: propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgument value: objectReference: {fileID: 3639593398762387609} + - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_StringArgument + value: + objectReference: {fileID: 0} + - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: Exa.UI.Components.Navigateable, Assembly-CSharp + objectReference: {fileID: 0} - target: {fileID: 7994069015727270563, guid: 4436753b620da8f4aa44ab701036f540, type: 3} propertyPath: m_Name @@ -1817,31 +1870,37 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8233641580150254754, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8233641580150254754, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8233641580150254754, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8233641580150254754, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8233641580150254754, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 4436753b620da8f4aa44ab701036f540, type: 3} +--- !u!1 &5239853332619323673 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 7994069015727270563, guid: 4436753b620da8f4aa44ab701036f540, + type: 3} + m_PrefabInstance: {fileID: 2758192754290492346} + m_PrefabAsset: {fileID: 0} --- !u!224 &8395147963323934452 stripped RectTransform: m_CorrespondingSourceObject: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, @@ -1854,7 +1913,7 @@ MonoBehaviour: type: 3} m_PrefabInstance: {fileID: 2758192754290492346} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} + m_GameObject: {fileID: 5239853332619323673} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 34481a3f6f360a74ead57be34379b144, type: 3} @@ -1872,6 +1931,11 @@ PrefabInstance: propertyPath: m_Text value: Quit objectReference: {fileID: 0} + - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, + type: 3} + propertyPath: message + value: Quit to desktop + objectReference: {fileID: 0} - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, type: 3} propertyPath: onHover.m_PersistentCalls.m_Calls.Array.size @@ -1882,11 +1946,6 @@ PrefabInstance: propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_Mode value: 0 objectReference: {fileID: 0} - - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, - type: 3} - propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_CallState - value: 2 - objectReference: {fileID: 0} - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, type: 3} propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_Target @@ -1894,8 +1953,8 @@ PrefabInstance: objectReference: {fileID: 7947615285114198381} - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName - value: Exa.UI.RootNavigationContent, Assembly-CSharp + propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 objectReference: {fileID: 0} - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, type: 3} @@ -1904,117 +1963,117 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine + propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName + value: Exa.UI.RootNavigationContent, Assembly-CSharp objectReference: {fileID: 0} - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: message - value: Quit to desktop + propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_Pivot.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalPosition.z - value: 0 + propertyPath: m_RootOrder + value: 4 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_RootOrder - value: 4 + propertyPath: m_SizeDelta.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 + propertyPath: m_SizeDelta.y + value: 48 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_SizeDelta.x - value: 0 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_SizeDelta.y - value: 48 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchorMax.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_Pivot.x + propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_Pivot.y + propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, @@ -2022,6 +2081,11 @@ PrefabInstance: propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size value: 2 objectReference: {fileID: 0} + - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 2 + objectReference: {fileID: 0} - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target @@ -2029,38 +2093,33 @@ PrefabInstance: objectReference: {fileID: 2029031128333844631} - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName - value: SwitchTo - objectReference: {fileID: 0} - - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, - type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState value: 2 objectReference: {fileID: 0} - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: Exa.UI.Components.Navigateable, Assembly-CSharp + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName + value: SwitchTo objectReference: {fileID: 0} - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_StringArgument - value: + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName + value: Exa.UI.Components.NavigateableTabManager, Assembly-CSharp objectReference: {fileID: 0} - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState - value: 2 + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgument + value: objectReference: {fileID: 0} - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName - value: Exa.UI.Components.NavigateableTabManager, Assembly-CSharp + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_StringArgument + value: objectReference: {fileID: 0} - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgument - value: + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: Exa.UI.Components.Navigateable, Assembly-CSharp objectReference: {fileID: 0} - target: {fileID: 7994069015727270563, guid: 4436753b620da8f4aa44ab701036f540, type: 3} @@ -2069,44 +2128,44 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8233641580150254754, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8233641580150254754, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8233641580150254754, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8233641580150254754, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8233641580150254754, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} m_RemovedComponents: - {fileID: 1496742483774421795, guid: 4436753b620da8f4aa44ab701036f540, type: 3} m_SourcePrefab: {fileID: 100100000, guid: 4436753b620da8f4aa44ab701036f540, type: 3} ---- !u!1 &6097152567057939955 stripped -GameObject: - m_CorrespondingSourceObject: {fileID: 7994069015727270563, guid: 4436753b620da8f4aa44ab701036f540, - type: 3} - m_PrefabInstance: {fileID: 4210246209878103888} - m_PrefabAsset: {fileID: 0} --- !u!224 &7542214065464472094 stripped RectTransform: m_CorrespondingSourceObject: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} m_PrefabInstance: {fileID: 4210246209878103888} m_PrefabAsset: {fileID: 0} +--- !u!1 &6097152567057939955 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 7994069015727270563, guid: 4436753b620da8f4aa44ab701036f540, + type: 3} + m_PrefabInstance: {fileID: 4210246209878103888} + m_PrefabAsset: {fileID: 0} --- !u!1001 &4697109299492594915 PrefabInstance: m_ObjectHideFlags: 0 @@ -2114,11 +2173,6 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 2320527761771707942} m_Modifications: - - target: {fileID: 1496742483774421795, guid: 4436753b620da8f4aa44ab701036f540, - type: 3} - propertyPath: content - value: - objectReference: {fileID: 1994126998437515653} - target: {fileID: 1496742483774421795, guid: 4436753b620da8f4aa44ab701036f540, type: 3} propertyPath: delay @@ -2129,11 +2183,21 @@ PrefabInstance: propertyPath: order value: 3 objectReference: {fileID: 0} + - target: {fileID: 1496742483774421795, guid: 4436753b620da8f4aa44ab701036f540, + type: 3} + propertyPath: content + value: + objectReference: {fileID: 1994126998437515653} - target: {fileID: 2510221419983577005, guid: 4436753b620da8f4aa44ab701036f540, type: 3} propertyPath: m_Text value: Settings objectReference: {fileID: 0} + - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, + type: 3} + propertyPath: message + value: Change audio and video settings + objectReference: {fileID: 0} - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, type: 3} propertyPath: onHover.m_PersistentCalls.m_Calls.Array.size @@ -2144,11 +2208,6 @@ PrefabInstance: propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_Mode value: 0 objectReference: {fileID: 0} - - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, - type: 3} - propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_CallState - value: 2 - objectReference: {fileID: 0} - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, type: 3} propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_Target @@ -2156,8 +2215,8 @@ PrefabInstance: objectReference: {fileID: 7947615285114198381} - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName - value: Exa.UI.RootNavigationContent, Assembly-CSharp + propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 objectReference: {fileID: 0} - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, type: 3} @@ -2166,117 +2225,117 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine + propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName + value: Exa.UI.RootNavigationContent, Assembly-CSharp objectReference: {fileID: 0} - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: message - value: Change audio and video settings + propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_Pivot.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalPosition.z - value: 0 + propertyPath: m_RootOrder + value: 3 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_RootOrder - value: 3 + propertyPath: m_SizeDelta.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 + propertyPath: m_SizeDelta.y + value: 48 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_SizeDelta.x - value: 0 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_SizeDelta.y - value: 48 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchorMax.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_Pivot.x + propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_Pivot.y + propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, @@ -2284,16 +2343,6 @@ PrefabInstance: propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size value: 2 objectReference: {fileID: 0} - - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, - type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target - value: - objectReference: {fileID: 2029031128333844631} - - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, - type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName - value: SwitchTo - objectReference: {fileID: 0} - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode @@ -2301,19 +2350,19 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: Exa.UI.Components.Navigateable, Assembly-CSharp - objectReference: {fileID: 0} - - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, - type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_StringArgument + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target value: - objectReference: {fileID: 0} + objectReference: {fileID: 2029031128333844631} - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState value: 2 objectReference: {fileID: 0} + - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName + value: SwitchTo + objectReference: {fileID: 0} - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName @@ -2324,6 +2373,16 @@ PrefabInstance: propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgument value: objectReference: {fileID: 6190764341695651776} + - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_StringArgument + value: + objectReference: {fileID: 0} + - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: Exa.UI.Components.Navigateable, Assembly-CSharp + objectReference: {fileID: 0} - target: {fileID: 7994069015727270563, guid: 4436753b620da8f4aa44ab701036f540, type: 3} propertyPath: m_Name @@ -2331,27 +2390,27 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8233641580150254754, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8233641580150254754, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8233641580150254754, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8233641580150254754, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8233641580150254754, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] @@ -2381,11 +2440,6 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 2320527761771707942} m_Modifications: - - target: {fileID: 1496742483774421795, guid: 4436753b620da8f4aa44ab701036f540, - type: 3} - propertyPath: content - value: - objectReference: {fileID: 3420093696291048377} - target: {fileID: 1496742483774421795, guid: 4436753b620da8f4aa44ab701036f540, type: 3} propertyPath: delay @@ -2396,11 +2450,21 @@ PrefabInstance: propertyPath: order value: 0 objectReference: {fileID: 0} + - target: {fileID: 1496742483774421795, guid: 4436753b620da8f4aa44ab701036f540, + type: 3} + propertyPath: content + value: + objectReference: {fileID: 3420093696291048377} - target: {fileID: 2510221419983577005, guid: 4436753b620da8f4aa44ab701036f540, type: 3} propertyPath: m_Text value: Home objectReference: {fileID: 0} + - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, + type: 3} + propertyPath: message + value: Home + objectReference: {fileID: 0} - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, type: 3} propertyPath: onHover.m_PersistentCalls.m_Calls.Array.size @@ -2411,11 +2475,6 @@ PrefabInstance: propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_Mode value: 0 objectReference: {fileID: 0} - - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, - type: 3} - propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_CallState - value: 2 - objectReference: {fileID: 0} - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, type: 3} propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_Target @@ -2423,8 +2482,8 @@ PrefabInstance: objectReference: {fileID: 7947615285114198381} - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName - value: Exa.UI.RootNavigationContent, Assembly-CSharp + propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 objectReference: {fileID: 0} - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, type: 3} @@ -2433,117 +2492,117 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine + propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName + value: Exa.UI.RootNavigationContent, Assembly-CSharp objectReference: {fileID: 0} - target: {fileID: 3667008806515302476, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: message - value: Home + propertyPath: onHover.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_Pivot.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_RootOrder + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 + propertyPath: m_SizeDelta.y + value: 48 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_SizeDelta.x - value: 0 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_SizeDelta.y - value: 48 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchorMax.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_Pivot.x + propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5964629740232828238, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_Pivot.y + propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, @@ -2551,16 +2610,6 @@ PrefabInstance: propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size value: 2 objectReference: {fileID: 0} - - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, - type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target - value: - objectReference: {fileID: 2029031128333844631} - - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, - type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName - value: SwitchTo - objectReference: {fileID: 0} - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode @@ -2568,19 +2617,19 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: Exa.UI.Components.Navigateable, Assembly-CSharp - objectReference: {fileID: 0} - - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, - type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_StringArgument + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target value: - objectReference: {fileID: 0} + objectReference: {fileID: 2029031128333844631} - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState value: 2 objectReference: {fileID: 0} + - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName + value: SwitchTo + objectReference: {fileID: 0} - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName @@ -2591,6 +2640,16 @@ PrefabInstance: propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgument value: objectReference: {fileID: 6028148890844397603} + - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_StringArgument + value: + objectReference: {fileID: 0} + - target: {fileID: 6970348709145247333, guid: 4436753b620da8f4aa44ab701036f540, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: Exa.UI.Components.Navigateable, Assembly-CSharp + objectReference: {fileID: 0} - target: {fileID: 7994069015727270563, guid: 4436753b620da8f4aa44ab701036f540, type: 3} propertyPath: m_Name @@ -2598,27 +2657,27 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8233641580150254754, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8233641580150254754, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8233641580150254754, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8233641580150254754, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8233641580150254754, guid: 4436753b620da8f4aa44ab701036f540, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] @@ -2655,14 +2714,19 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 389940203735537715, guid: 13867757c99078141a9a2a571b505e2a, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - target: {fileID: 389940203735537715, guid: 13867757c99078141a9a2a571b505e2a, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} + - target: {fileID: 389940203735537715, guid: 13867757c99078141a9a2a571b505e2a, + type: 3} + propertyPath: m_SizeDelta.x + value: 380 + objectReference: {fileID: 0} - target: {fileID: 389940203735537715, guid: 13867757c99078141a9a2a571b505e2a, type: 3} propertyPath: m_AnchoredPosition.x @@ -2673,11 +2737,6 @@ PrefabInstance: propertyPath: m_AnchoredPosition.y value: -50 objectReference: {fileID: 0} - - target: {fileID: 389940203735537715, guid: 13867757c99078141a9a2a571b505e2a, - type: 3} - propertyPath: m_SizeDelta.x - value: 380 - objectReference: {fileID: 0} - target: {fileID: 1105175017404101740, guid: 13867757c99078141a9a2a571b505e2a, type: 3} propertyPath: m_AnchorMax.y @@ -2690,14 +2749,19 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1698739642834591421, guid: 13867757c99078141a9a2a571b505e2a, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - target: {fileID: 1698739642834591421, guid: 13867757c99078141a9a2a571b505e2a, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} + - target: {fileID: 1698739642834591421, guid: 13867757c99078141a9a2a571b505e2a, + type: 3} + propertyPath: m_SizeDelta.x + value: 380 + objectReference: {fileID: 0} - target: {fileID: 1698739642834591421, guid: 13867757c99078141a9a2a571b505e2a, type: 3} propertyPath: m_AnchoredPosition.x @@ -2708,11 +2772,6 @@ PrefabInstance: propertyPath: m_AnchoredPosition.y value: -50 objectReference: {fileID: 0} - - target: {fileID: 1698739642834591421, guid: 13867757c99078141a9a2a571b505e2a, - type: 3} - propertyPath: m_SizeDelta.x - value: 380 - objectReference: {fileID: 0} - target: {fileID: 2615701458108321312, guid: 13867757c99078141a9a2a571b505e2a, type: 3} propertyPath: m_Name @@ -2725,12 +2784,12 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2817285554947968837, guid: 13867757c99078141a9a2a571b505e2a, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - target: {fileID: 2817285554947968837, guid: 13867757c99078141a9a2a571b505e2a, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - target: {fileID: 2817285554947968837, guid: 13867757c99078141a9a2a571b505e2a, @@ -2750,99 +2809,104 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3216101939429637187, guid: 13867757c99078141a9a2a571b505e2a, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 3216101939429637187, guid: 13867757c99078141a9a2a571b505e2a, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 3216101939429637187, guid: 13867757c99078141a9a2a571b505e2a, type: 3} - propertyPath: m_LocalPosition.z - value: 0 + propertyPath: m_RootOrder + value: 3 objectReference: {fileID: 0} - target: {fileID: 3216101939429637187, guid: 13867757c99078141a9a2a571b505e2a, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 1 objectReference: {fileID: 0} - target: {fileID: 3216101939429637187, guid: 13867757c99078141a9a2a571b505e2a, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 1 objectReference: {fileID: 0} - target: {fileID: 3216101939429637187, guid: 13867757c99078141a9a2a571b505e2a, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 3216101939429637187, guid: 13867757c99078141a9a2a571b505e2a, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 3216101939429637187, guid: 13867757c99078141a9a2a571b505e2a, type: 3} - propertyPath: m_RootOrder - value: 3 + propertyPath: m_LocalPosition.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 3216101939429637187, guid: 13867757c99078141a9a2a571b505e2a, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 3216101939429637187, guid: 13867757c99078141a9a2a571b505e2a, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 3216101939429637187, guid: 13867757c99078141a9a2a571b505e2a, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 3216101939429637187, guid: 13867757c99078141a9a2a571b505e2a, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 3216101939429637187, guid: 13867757c99078141a9a2a571b505e2a, type: 3} - propertyPath: m_AnchorMin.y - value: 0 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 3216101939429637187, guid: 13867757c99078141a9a2a571b505e2a, type: 3} - propertyPath: m_AnchorMax.x - value: 1 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 3216101939429637187, guid: 13867757c99078141a9a2a571b505e2a, type: 3} - propertyPath: m_AnchorMax.y - value: 1 + propertyPath: m_LocalEulerAnglesHint.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 3216101939429637187, guid: 13867757c99078141a9a2a571b505e2a, type: 3} - propertyPath: m_Pivot.x - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 3216101939429637187, guid: 13867757c99078141a9a2a571b505e2a, type: 3} - propertyPath: m_Pivot.y - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 4163982368870557023, guid: 13867757c99078141a9a2a571b505e2a, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - target: {fileID: 4163982368870557023, guid: 13867757c99078141a9a2a571b505e2a, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} + - target: {fileID: 4163982368870557023, guid: 13867757c99078141a9a2a571b505e2a, + type: 3} + propertyPath: m_SizeDelta.x + value: 300 + objectReference: {fileID: 0} - target: {fileID: 4163982368870557023, guid: 13867757c99078141a9a2a571b505e2a, type: 3} propertyPath: m_AnchoredPosition.x @@ -2853,10 +2917,10 @@ PrefabInstance: propertyPath: m_AnchoredPosition.y value: -116 objectReference: {fileID: 0} - - target: {fileID: 4163982368870557023, guid: 13867757c99078141a9a2a571b505e2a, + - target: {fileID: 4324221802702804885, guid: 13867757c99078141a9a2a571b505e2a, type: 3} - propertyPath: m_SizeDelta.x - value: 300 + propertyPath: m_AnchorMax.y + value: 1 objectReference: {fileID: 0} - target: {fileID: 4324221802702804885, guid: 13867757c99078141a9a2a571b505e2a, type: 3} @@ -2865,8 +2929,8 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4324221802702804885, guid: 13867757c99078141a9a2a571b505e2a, type: 3} - propertyPath: m_AnchorMax.y - value: 1 + propertyPath: m_SizeDelta.x + value: 380 objectReference: {fileID: 0} - target: {fileID: 4324221802702804885, guid: 13867757c99078141a9a2a571b505e2a, type: 3} @@ -2878,21 +2942,21 @@ PrefabInstance: propertyPath: m_AnchoredPosition.y value: -100 objectReference: {fileID: 0} - - target: {fileID: 4324221802702804885, guid: 13867757c99078141a9a2a571b505e2a, - type: 3} - propertyPath: m_SizeDelta.x - value: 380 - objectReference: {fileID: 0} - target: {fileID: 4664538620416969000, guid: 13867757c99078141a9a2a571b505e2a, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - target: {fileID: 4664538620416969000, guid: 13867757c99078141a9a2a571b505e2a, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} + - target: {fileID: 4664538620416969000, guid: 13867757c99078141a9a2a571b505e2a, + type: 3} + propertyPath: m_SizeDelta.x + value: 380 + objectReference: {fileID: 0} - target: {fileID: 4664538620416969000, guid: 13867757c99078141a9a2a571b505e2a, type: 3} propertyPath: m_AnchoredPosition.x @@ -2903,11 +2967,6 @@ PrefabInstance: propertyPath: m_AnchoredPosition.y value: -100 objectReference: {fileID: 0} - - target: {fileID: 4664538620416969000, guid: 13867757c99078141a9a2a571b505e2a, - type: 3} - propertyPath: m_SizeDelta.x - value: 380 - objectReference: {fileID: 0} - target: {fileID: 4685778706967746683, guid: 13867757c99078141a9a2a571b505e2a, type: 3} propertyPath: m_AnchoredPosition.x @@ -2935,14 +2994,19 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6969477340715730035, guid: 13867757c99078141a9a2a571b505e2a, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - target: {fileID: 6969477340715730035, guid: 13867757c99078141a9a2a571b505e2a, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} + - target: {fileID: 6969477340715730035, guid: 13867757c99078141a9a2a571b505e2a, + type: 3} + propertyPath: m_SizeDelta.x + value: 300 + objectReference: {fileID: 0} - target: {fileID: 6969477340715730035, guid: 13867757c99078141a9a2a571b505e2a, type: 3} propertyPath: m_AnchoredPosition.x @@ -2953,10 +3017,10 @@ PrefabInstance: propertyPath: m_AnchoredPosition.y value: -58 objectReference: {fileID: 0} - - target: {fileID: 6969477340715730035, guid: 13867757c99078141a9a2a571b505e2a, + - target: {fileID: 8015324971161271165, guid: 13867757c99078141a9a2a571b505e2a, type: 3} - propertyPath: m_SizeDelta.x - value: 300 + propertyPath: m_AnchorMax.y + value: 1 objectReference: {fileID: 0} - target: {fileID: 8015324971161271165, guid: 13867757c99078141a9a2a571b505e2a, type: 3} @@ -2965,8 +3029,8 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8015324971161271165, guid: 13867757c99078141a9a2a571b505e2a, type: 3} - propertyPath: m_AnchorMax.y - value: 1 + propertyPath: m_SizeDelta.x + value: 380 objectReference: {fileID: 0} - target: {fileID: 8015324971161271165, guid: 13867757c99078141a9a2a571b505e2a, type: 3} @@ -2978,11 +3042,6 @@ PrefabInstance: propertyPath: m_AnchoredPosition.y value: -150 objectReference: {fileID: 0} - - target: {fileID: 8015324971161271165, guid: 13867757c99078141a9a2a571b505e2a, - type: 3} - propertyPath: m_SizeDelta.x - value: 380 - objectReference: {fileID: 0} - target: {fileID: 8645042110344778156, guid: 13867757c99078141a9a2a571b505e2a, type: 3} propertyPath: m_AnchorMax.y @@ -2995,14 +3054,19 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8810291924609688222, guid: 13867757c99078141a9a2a571b505e2a, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - target: {fileID: 8810291924609688222, guid: 13867757c99078141a9a2a571b505e2a, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} + - target: {fileID: 8810291924609688222, guid: 13867757c99078141a9a2a571b505e2a, + type: 3} + propertyPath: m_SizeDelta.x + value: 380 + objectReference: {fileID: 0} - target: {fileID: 8810291924609688222, guid: 13867757c99078141a9a2a571b505e2a, type: 3} propertyPath: m_AnchoredPosition.x @@ -3013,19 +3077,14 @@ PrefabInstance: propertyPath: m_AnchoredPosition.y value: -150 objectReference: {fileID: 0} - - target: {fileID: 8810291924609688222, guid: 13867757c99078141a9a2a571b505e2a, - type: 3} - propertyPath: m_SizeDelta.x - value: 380 - objectReference: {fileID: 0} - target: {fileID: 8898698354925067149, guid: 13867757c99078141a9a2a571b505e2a, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - target: {fileID: 8898698354925067149, guid: 13867757c99078141a9a2a571b505e2a, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - target: {fileID: 8898698354925067149, guid: 13867757c99078141a9a2a571b505e2a, @@ -3060,18 +3119,18 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 3943663ec6537784bbd7b75b3baa5175, type: 3} m_Name: m_EditorClassIdentifier: ---- !u!224 &4910041706510150926 stripped -RectTransform: - m_CorrespondingSourceObject: {fileID: 3216101939429637187, guid: 13867757c99078141a9a2a571b505e2a, - type: 3} - m_PrefabInstance: {fileID: 7530611516421574989} - m_PrefabAsset: {fileID: 0} --- !u!1 &5534587321304915821 stripped GameObject: m_CorrespondingSourceObject: {fileID: 2615701458108321312, guid: 13867757c99078141a9a2a571b505e2a, type: 3} m_PrefabInstance: {fileID: 7530611516421574989} m_PrefabAsset: {fileID: 0} +--- !u!224 &4910041706510150926 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 3216101939429637187, guid: 13867757c99078141a9a2a571b505e2a, + type: 3} + m_PrefabInstance: {fileID: 7530611516421574989} + m_PrefabAsset: {fileID: 0} --- !u!1001 &7848422808695646548 PrefabInstance: m_ObjectHideFlags: 0 @@ -3081,12 +3140,12 @@ PrefabInstance: m_Modifications: - target: {fileID: 437646031532463565, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 437646031532463565, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 437646031532463565, guid: 6dfa0c8a51be7264a852124cdfb9a408, @@ -3106,12 +3165,12 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2118724558437746524, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2118724558437746524, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2118724558437746524, guid: 6dfa0c8a51be7264a852124cdfb9a408, @@ -3126,88 +3185,88 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3486378228783330657, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 3486378228783330657, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 3486378228783330657, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_LocalPosition.z - value: 0 + propertyPath: m_RootOrder + value: 1 objectReference: {fileID: 0} - target: {fileID: 3486378228783330657, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 1 objectReference: {fileID: 0} - target: {fileID: 3486378228783330657, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 1 objectReference: {fileID: 0} - target: {fileID: 3486378228783330657, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 3486378228783330657, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 3486378228783330657, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_RootOrder - value: 1 + propertyPath: m_LocalPosition.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 3486378228783330657, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 3486378228783330657, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 3486378228783330657, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 3486378228783330657, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 3486378228783330657, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_AnchorMin.y - value: 0 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 3486378228783330657, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_AnchorMax.x - value: 1 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 3486378228783330657, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_AnchorMax.y - value: 1 + propertyPath: m_LocalEulerAnglesHint.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 3486378228783330657, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_Pivot.x - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 3486378228783330657, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_Pivot.y - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 3552804905304333927, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} @@ -3216,102 +3275,102 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 5368148692920457336, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5368148692920457336, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5368148692920457336, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5368148692920457336, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5368148692920457336, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5368148692920457336, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5403905931150193093, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5403905931150193093, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5403905931150193093, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5403905931150193093, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5403905931150193093, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5403905931150193093, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5724938619001372792, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5724938619001372792, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5724938619001372792, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5724938619001372792, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5724938619001372792, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 5724938619001372792, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5887810719739520109, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5887810719739520109, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5887810719739520109, guid: 6dfa0c8a51be7264a852124cdfb9a408, @@ -3329,11 +3388,6 @@ PrefabInstance: propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode value: 1 objectReference: {fileID: 0} - - target: {fileID: 6762428354715503504, guid: 6dfa0c8a51be7264a852124cdfb9a408, - type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState - value: 2 - objectReference: {fileID: 0} - target: {fileID: 6762428354715503504, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target @@ -3341,14 +3395,19 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6762428354715503504, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName - value: Exa.UI.MainMenu, Assembly-CSharp + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 objectReference: {fileID: 0} - target: {fileID: 6762428354715503504, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName value: NavigateToFleetBuilder objectReference: {fileID: 0} + - target: {fileID: 6762428354715503504, guid: 6dfa0c8a51be7264a852124cdfb9a408, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName + value: Exa.UI.MainMenu, Assembly-CSharp + objectReference: {fileID: 0} - target: {fileID: 6762428354715503504, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName @@ -3356,12 +3415,12 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6803274975135337433, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6803274975135337433, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6803274975135337433, guid: 6dfa0c8a51be7264a852124cdfb9a408, @@ -3381,12 +3440,12 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 7288928496159212291, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7288928496159212291, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7288928496159212291, guid: 6dfa0c8a51be7264a852124cdfb9a408, @@ -3396,12 +3455,12 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 7615590602971657483, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7615590602971657483, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7615590602971657483, guid: 6dfa0c8a51be7264a852124cdfb9a408, @@ -3416,12 +3475,12 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8045048376055713979, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8045048376055713979, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8045048376055713979, guid: 6dfa0c8a51be7264a852124cdfb9a408, @@ -3431,12 +3490,12 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8779402809637460045, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8779402809637460045, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8779402809637460045, guid: 6dfa0c8a51be7264a852124cdfb9a408, @@ -3451,12 +3510,12 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8850214217350019985, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8850214217350019985, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8850214217350019985, guid: 6dfa0c8a51be7264a852124cdfb9a408, @@ -3466,18 +3525,18 @@ PrefabInstance: objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} ---- !u!1 &1144674725514313921 stripped -GameObject: - m_CorrespondingSourceObject: {fileID: 7136377399004277141, guid: 6dfa0c8a51be7264a852124cdfb9a408, - type: 3} - m_PrefabInstance: {fileID: 7848422808695646548} - m_PrefabAsset: {fileID: 0} --- !u!224 &6667905189903178805 stripped RectTransform: m_CorrespondingSourceObject: {fileID: 3486378228783330657, guid: 6dfa0c8a51be7264a852124cdfb9a408, type: 3} m_PrefabInstance: {fileID: 7848422808695646548} m_PrefabAsset: {fileID: 0} +--- !u!1 &1144674725514313921 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 7136377399004277141, guid: 6dfa0c8a51be7264a852124cdfb9a408, + type: 3} + m_PrefabInstance: {fileID: 7848422808695646548} + m_PrefabAsset: {fileID: 0} --- !u!1001 &8054553221736800533 PrefabInstance: m_ObjectHideFlags: 0 @@ -3487,23 +3546,28 @@ PrefabInstance: m_Modifications: - target: {fileID: 114856467301393597, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - target: {fileID: 114856467301393597, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} + - target: {fileID: 114856467301393597, guid: 7b6c4268d97f32e45800f90c541de4b6, + type: 3} + propertyPath: m_SizeDelta.x + value: 380 + objectReference: {fileID: 0} - target: {fileID: 114856467301393597, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} propertyPath: m_AnchoredPosition.y value: -638 objectReference: {fileID: 0} - - target: {fileID: 114856467301393597, guid: 7b6c4268d97f32e45800f90c541de4b6, + - target: {fileID: 1014092272058676999, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_SizeDelta.x - value: 380 + propertyPath: m_AnchorMax.y + value: 1 objectReference: {fileID: 0} - target: {fileID: 1014092272058676999, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} @@ -3512,8 +3576,8 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1014092272058676999, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchorMax.y - value: 1 + propertyPath: m_SizeDelta.x + value: 380 objectReference: {fileID: 0} - target: {fileID: 1014092272058676999, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} @@ -3525,10 +3589,10 @@ PrefabInstance: propertyPath: m_AnchoredPosition.y value: -448 objectReference: {fileID: 0} - - target: {fileID: 1014092272058676999, guid: 7b6c4268d97f32e45800f90c541de4b6, + - target: {fileID: 1937285065395474628, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_SizeDelta.x - value: 380 + propertyPath: m_AnchorMax.y + value: 1 objectReference: {fileID: 0} - target: {fileID: 1937285065395474628, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} @@ -3537,8 +3601,13 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1937285065395474628, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchorMax.y - value: 1 + propertyPath: m_SizeDelta.x + value: 190 + objectReference: {fileID: 0} + - target: {fileID: 1937285065395474628, guid: 7b6c4268d97f32e45800f90c541de4b6, + type: 3} + propertyPath: m_SizeDelta.y + value: 40 objectReference: {fileID: 0} - target: {fileID: 1937285065395474628, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} @@ -3550,16 +3619,6 @@ PrefabInstance: propertyPath: m_AnchoredPosition.y value: -20 objectReference: {fileID: 0} - - target: {fileID: 1937285065395474628, guid: 7b6c4268d97f32e45800f90c541de4b6, - type: 3} - propertyPath: m_SizeDelta.x - value: 190 - objectReference: {fileID: 0} - - target: {fileID: 1937285065395474628, guid: 7b6c4268d97f32e45800f90c541de4b6, - type: 3} - propertyPath: m_SizeDelta.y - value: 40 - objectReference: {fileID: 0} - target: {fileID: 1945749335256479009, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} propertyPath: m_Value @@ -3567,42 +3626,42 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2072819067468366957, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - target: {fileID: 2072819067468366957, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - target: {fileID: 2072819067468366957, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchoredPosition.x - value: 285 + propertyPath: m_SizeDelta.x + value: 190 objectReference: {fileID: 0} - target: {fileID: 2072819067468366957, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchoredPosition.y - value: -20 + propertyPath: m_SizeDelta.y + value: 40 objectReference: {fileID: 0} - target: {fileID: 2072819067468366957, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_SizeDelta.x - value: 190 + propertyPath: m_AnchoredPosition.x + value: 285 objectReference: {fileID: 0} - target: {fileID: 2072819067468366957, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_SizeDelta.y - value: 40 + propertyPath: m_AnchoredPosition.y + value: -20 objectReference: {fileID: 0} - target: {fileID: 2632723636286434951, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - target: {fileID: 2632723636286434951, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - target: {fileID: 2632723636286434951, guid: 7b6c4268d97f32e45800f90c541de4b6, @@ -3617,23 +3676,23 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2919372326851335159, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - target: {fileID: 2919372326851335159, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - target: {fileID: 2919372326851335159, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchoredPosition.y - value: -538 + propertyPath: m_SizeDelta.x + value: 380 objectReference: {fileID: 0} - target: {fileID: 2919372326851335159, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_SizeDelta.x - value: 380 + propertyPath: m_AnchoredPosition.y + value: -538 objectReference: {fileID: 0} - target: {fileID: 3576279683413013432, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} @@ -3642,23 +3701,23 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3682681853725289973, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - target: {fileID: 3682681853725289973, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - target: {fileID: 3682681853725289973, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchoredPosition.x - value: 190 + propertyPath: m_SizeDelta.x + value: 380 objectReference: {fileID: 0} - target: {fileID: 3682681853725289973, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_SizeDelta.x - value: 380 + propertyPath: m_AnchoredPosition.x + value: 190 objectReference: {fileID: 0} - target: {fileID: 3858141253360363076, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} @@ -3677,42 +3736,42 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3881994050507141927, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - target: {fileID: 3881994050507141927, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - target: {fileID: 3881994050507141927, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchoredPosition.x - value: 285 + propertyPath: m_SizeDelta.x + value: 190 objectReference: {fileID: 0} - target: {fileID: 3881994050507141927, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchoredPosition.y - value: -20 + propertyPath: m_SizeDelta.y + value: 40 objectReference: {fileID: 0} - target: {fileID: 3881994050507141927, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_SizeDelta.x - value: 190 + propertyPath: m_AnchoredPosition.x + value: 285 objectReference: {fileID: 0} - target: {fileID: 3881994050507141927, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_SizeDelta.y - value: 40 + propertyPath: m_AnchoredPosition.y + value: -20 objectReference: {fileID: 0} - target: {fileID: 4122110057879866975, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - target: {fileID: 4122110057879866975, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - target: {fileID: 4122110057879866975, guid: 7b6c4268d97f32e45800f90c541de4b6, @@ -3727,33 +3786,33 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4203362378765115549, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - target: {fileID: 4203362378765115549, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - target: {fileID: 4203362378765115549, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchoredPosition.x - value: 285 + propertyPath: m_SizeDelta.x + value: 190 objectReference: {fileID: 0} - target: {fileID: 4203362378765115549, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchoredPosition.y - value: -20 + propertyPath: m_SizeDelta.y + value: 40 objectReference: {fileID: 0} - target: {fileID: 4203362378765115549, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_SizeDelta.x - value: 190 + propertyPath: m_AnchoredPosition.x + value: 285 objectReference: {fileID: 0} - target: {fileID: 4203362378765115549, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_SizeDelta.y - value: 40 + propertyPath: m_AnchoredPosition.y + value: -20 objectReference: {fileID: 0} - target: {fileID: 4373686914892711629, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} @@ -3772,23 +3831,23 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4861600165768005607, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - target: {fileID: 4861600165768005607, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - target: {fileID: 4861600165768005607, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchoredPosition.y - value: -588 + propertyPath: m_SizeDelta.x + value: 380 objectReference: {fileID: 0} - target: {fileID: 4861600165768005607, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_SizeDelta.x - value: 380 + propertyPath: m_AnchoredPosition.y + value: -588 objectReference: {fileID: 0} - target: {fileID: 4904183000834041118, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} @@ -3802,219 +3861,224 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 5327681853127405968, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 5327681853127405968, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 5327681853127405968, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_LocalPosition.z - value: 0 + propertyPath: m_RootOrder + value: 2 objectReference: {fileID: 0} - target: {fileID: 5327681853127405968, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 1 objectReference: {fileID: 0} - target: {fileID: 5327681853127405968, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 1 objectReference: {fileID: 0} - target: {fileID: 5327681853127405968, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 5327681853127405968, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 5327681853127405968, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_RootOrder - value: 2 + propertyPath: m_LocalPosition.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 5327681853127405968, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5327681853127405968, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 5327681853127405968, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 5327681853127405968, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 5327681853127405968, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchorMin.y - value: 0 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 5327681853127405968, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchorMax.x - value: 1 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 5327681853127405968, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchorMax.y - value: 1 + propertyPath: m_LocalEulerAnglesHint.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 5327681853127405968, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_Pivot.x - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 5327681853127405968, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_Pivot.y - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 6307157803744272420, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - target: {fileID: 6307157803744272420, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - target: {fileID: 6307157803744272420, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchoredPosition.x - value: 95 + propertyPath: m_SizeDelta.x + value: 190 objectReference: {fileID: 0} - target: {fileID: 6307157803744272420, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchoredPosition.y - value: -20 + propertyPath: m_SizeDelta.y + value: 40 objectReference: {fileID: 0} - target: {fileID: 6307157803744272420, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_SizeDelta.x - value: 190 + propertyPath: m_AnchoredPosition.x + value: 95 objectReference: {fileID: 0} - target: {fileID: 6307157803744272420, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_SizeDelta.y - value: 40 + propertyPath: m_AnchoredPosition.y + value: -20 objectReference: {fileID: 0} - target: {fileID: 6344811349178315678, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - target: {fileID: 6344811349178315678, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - target: {fileID: 6344811349178315678, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchoredPosition.x - value: 95 + propertyPath: m_SizeDelta.x + value: 190 objectReference: {fileID: 0} - target: {fileID: 6344811349178315678, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchoredPosition.y - value: -20 + propertyPath: m_SizeDelta.y + value: 40 objectReference: {fileID: 0} - target: {fileID: 6344811349178315678, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_SizeDelta.x - value: 190 + propertyPath: m_AnchoredPosition.x + value: 95 objectReference: {fileID: 0} - target: {fileID: 6344811349178315678, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_SizeDelta.y - value: 40 + propertyPath: m_AnchoredPosition.y + value: -20 objectReference: {fileID: 0} - target: {fileID: 8148965277058483412, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - target: {fileID: 8148965277058483412, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - target: {fileID: 8148965277058483412, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchoredPosition.x - value: 95 + propertyPath: m_SizeDelta.x + value: 190 objectReference: {fileID: 0} - target: {fileID: 8148965277058483412, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchoredPosition.y - value: -20 + propertyPath: m_SizeDelta.y + value: 40 objectReference: {fileID: 0} - target: {fileID: 8148965277058483412, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_SizeDelta.x - value: 190 + propertyPath: m_AnchoredPosition.x + value: 95 objectReference: {fileID: 0} - target: {fileID: 8148965277058483412, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_SizeDelta.y - value: 40 + propertyPath: m_AnchoredPosition.y + value: -20 objectReference: {fileID: 0} - target: {fileID: 8588452225068208253, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - target: {fileID: 8588452225068208253, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} - target: {fileID: 8588452225068208253, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchoredPosition.x - value: 285 + propertyPath: m_SizeDelta.x + value: 190 objectReference: {fileID: 0} - target: {fileID: 8588452225068208253, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchoredPosition.y - value: -20 + propertyPath: m_SizeDelta.y + value: 40 objectReference: {fileID: 0} - target: {fileID: 8588452225068208253, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_SizeDelta.x - value: 190 + propertyPath: m_AnchoredPosition.x + value: 285 objectReference: {fileID: 0} - target: {fileID: 8588452225068208253, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_SizeDelta.y - value: 40 + propertyPath: m_AnchoredPosition.y + value: -20 objectReference: {fileID: 0} - target: {fileID: 9220795145485792902, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - target: {fileID: 9220795145485792902, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 1 objectReference: {fileID: 0} + - target: {fileID: 9220795145485792902, guid: 7b6c4268d97f32e45800f90c541de4b6, + type: 3} + propertyPath: m_SizeDelta.x + value: 380 + objectReference: {fileID: 0} - target: {fileID: 9220795145485792902, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} propertyPath: m_AnchoredPosition.x @@ -4025,26 +4089,9 @@ PrefabInstance: propertyPath: m_AnchoredPosition.y value: -390 objectReference: {fileID: 0} - - target: {fileID: 9220795145485792902, guid: 7b6c4268d97f32e45800f90c541de4b6, - type: 3} - propertyPath: m_SizeDelta.x - value: 380 - objectReference: {fileID: 0} m_RemovedComponents: - {fileID: 4123989787599260704, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} m_SourcePrefab: {fileID: 100100000, guid: 7b6c4268d97f32e45800f90c541de4b6, type: 3} ---- !u!114 &6013977213314918360 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 4373686914892711629, guid: 7b6c4268d97f32e45800f90c541de4b6, - type: 3} - m_PrefabInstance: {fileID: 8054553221736800533} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3370111043640287974} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f01d3e2aae715b64ab52a1a3a8465ae3, type: 3} - m_Name: - m_EditorClassIdentifier: --- !u!224 &2749516919016886405 stripped RectTransform: m_CorrespondingSourceObject: {fileID: 5327681853127405968, guid: 7b6c4268d97f32e45800f90c541de4b6, @@ -4057,3 +4104,15 @@ GameObject: type: 3} m_PrefabInstance: {fileID: 8054553221736800533} m_PrefabAsset: {fileID: 0} +--- !u!114 &6013977213314918360 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 4373686914892711629, guid: 7b6c4268d97f32e45800f90c541de4b6, + type: 3} + m_PrefabInstance: {fileID: 8054553221736800533} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3370111043640287974} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f01d3e2aae715b64ab52a1a3a8465ae3, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/Project/Prefabs/UI/RootNavigation/Settings/AudioSettingsTab.prefab b/Assets/Project/Prefabs/UI/RootNavigation/Settings/AudioSettingsTab.prefab index da5da004..94a186db 100644 --- a/Assets/Project/Prefabs/UI/RootNavigation/Settings/AudioSettingsTab.prefab +++ b/Assets/Project/Prefabs/UI/RootNavigation/Settings/AudioSettingsTab.prefab @@ -33,6 +33,7 @@ RectTransform: - {fileID: 6981691715605885760} - {fileID: 5436524223707740776} - {fileID: 1751045607014585984} + - {fileID: 256776873026985776} m_Father: {fileID: 1491097042389379862} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -159,6 +160,48 @@ MonoBehaviour: masterVolumeSlider: {fileID: 8468574980972957459} musicVolumeSlider: {fileID: 6780158752704775739} effectsVolumeSlider: {fileID: 948404919981992659} + soundTrackNameDropdown: {fileID: 3374005100428386904} + soundTrackNameFolderButton: {fileID: 8304481224357930137} +--- !u!114 &464503889736591480 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9039980088045891679} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 1 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!114 &3561471398933095624 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9039980088045891679} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 2 + m_VerticalFit: 0 --- !u!1001 &2761655474868117159 PrefabInstance: m_ObjectHideFlags: 0 @@ -198,102 +241,102 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_Pivot.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_LocalPosition.z - value: 0 + propertyPath: m_RootOrder + value: 2 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_RootOrder - value: 2 + propertyPath: m_SizeDelta.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_AnchorMin.y - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_AnchorMax.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_Pivot.x + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_Pivot.y + propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - target: {fileID: 5706905766049661125, guid: 6d421f24c468ba54d8c0895ed5a37559, @@ -341,6 +384,188 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: ef365b9cbdb85354990b1d16257d5e5b, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!1001 &3859482041965950326 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 256776873026985776} + m_Modifications: + - target: {fileID: 350557258748702759, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_Text + value: Open folder + objectReference: {fileID: 0} + - target: {fileID: 1600893048667343851, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_IgnoreLayout + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5259033962641442089, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_Name + value: FolderDialog + objectReference: {fileID: 0} + - target: {fileID: 6073299296863241000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6073299296863241000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6073299296863241000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6073299296863241000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6073299296863241000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6073299296863241000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6073299296863241000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_SizeDelta.y + value: 48 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 470 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -48 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8416642528486017732, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, type: 3} +--- !u!1 &9039980088045891679 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 5259033962641442089, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + m_PrefabInstance: {fileID: 3859482041965950326} + m_PrefabAsset: {fileID: 0} +--- !u!114 &8304481224357930137 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 5093804088955523567, guid: a7d4e03c5f59d4d4aaa4aa8e370e3bde, + type: 3} + m_PrefabInstance: {fileID: 3859482041965950326} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9039980088045891679} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1001 &6844444668317662055 PrefabInstance: m_ObjectHideFlags: 0 @@ -353,6 +578,11 @@ PrefabInstance: propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} + - target: {fileID: 2021537776936930352, guid: 6d421f24c468ba54d8c0895ed5a37559, + type: 3} + propertyPath: m_ContentType + value: 2 + objectReference: {fileID: 0} - target: {fileID: 2021537776936930352, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} propertyPath: m_KeyboardType @@ -363,11 +593,6 @@ PrefabInstance: propertyPath: m_CharacterValidation value: 1 objectReference: {fileID: 0} - - target: {fileID: 2021537776936930352, guid: 6d421f24c468ba54d8c0895ed5a37559, - type: 3} - propertyPath: m_ContentType - value: 2 - objectReference: {fileID: 0} - target: {fileID: 2692675345135139743, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} propertyPath: m_Text @@ -380,102 +605,102 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_Pivot.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_RootOrder + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_AnchorMin.y - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_AnchorMax.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_Pivot.x + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_Pivot.y + propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - target: {fileID: 5706905766049661125, guid: 6d421f24c468ba54d8c0895ed5a37559, @@ -564,102 +789,102 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_Pivot.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_LocalPosition.z - value: 0 + propertyPath: m_RootOrder + value: 1 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_RootOrder - value: 1 + propertyPath: m_SizeDelta.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_AnchorMin.y - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_AnchorMax.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_Pivot.x + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_Pivot.y + propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4476483155860785191, guid: 6d421f24c468ba54d8c0895ed5a37559, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - target: {fileID: 5706905766049661125, guid: 6d421f24c468ba54d8c0895ed5a37559, @@ -707,3 +932,150 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: ef365b9cbdb85354990b1d16257d5e5b, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!1001 &8657212100524738444 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 7110552554958545767} + m_Modifications: + - target: {fileID: 214129591251731524, guid: 70629459d73ad224abf7e33d946cbdd6, + type: 3} + propertyPath: m_Name + value: SoundTrackName + objectReference: {fileID: 0} + - target: {fileID: 653537046833903826, guid: 70629459d73ad224abf7e33d946cbdd6, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6665540959298001051, guid: 70629459d73ad224abf7e33d946cbdd6, + type: 3} + propertyPath: m_Text + value: Sound track + objectReference: {fileID: 0} + - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, + type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, + type: 3} + propertyPath: m_SizeDelta.y + value: 48 + objectReference: {fileID: 0} + - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} +--- !u!224 &256776873026985776 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, + type: 3} + m_PrefabInstance: {fileID: 8657212100524738444} + m_PrefabAsset: {fileID: 0} +--- !u!114 &3374005100428386904 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 6266274317464397268, guid: 70629459d73ad224abf7e33d946cbdd6, + type: 3} + m_PrefabInstance: {fileID: 8657212100524738444} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9b1dba15de04f214d96a3f366c29745e, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/Project/Prefabs/UI/RootNavigation/Settings/VideoSettingsTab.prefab b/Assets/Project/Prefabs/UI/RootNavigation/Settings/VideoSettingsTab.prefab index a812b22b..9769dea0 100644 --- a/Assets/Project/Prefabs/UI/RootNavigation/Settings/VideoSettingsTab.prefab +++ b/Assets/Project/Prefabs/UI/RootNavigation/Settings/VideoSettingsTab.prefab @@ -119,8 +119,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: labelText: {fileID: 5239954905765319396} - selectedText: {fileID: 8653986215014985169} + buttonSelectPositive: {fileID: 11400000, guid: 9aae5c7b23a755e4d93b870b00a802ed, + type: 2} + buttonSelectNegative: {fileID: 11400000, guid: bdaa7c8727d197444a1b1e9662639ac3, + type: 2} playerProxy: {fileID: 7180975494870412884} + selectedText: {fileID: 8653986215014985169} tabArrow: {fileID: 9111261026569768542} button: {fileID: 4106350053679270685} selectedTab: {fileID: 3466506415237628741} @@ -232,102 +236,102 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_Pivot.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_LocalRotation.x + propertyPath: m_AnchorMax.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_LocalRotation.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_LocalRotation.z + propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_RootOrder + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_AnchorMin.x + propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_AnchorMax.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_Pivot.x + propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_Pivot.y + propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} m_RemovedComponents: @@ -437,12 +441,12 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3130389392743716851, guid: 803a3e779512abd47a06d0e91041f68a, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 3130389392743716851, guid: 803a3e779512abd47a06d0e91041f68a, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 3130389392743716851, guid: 803a3e779512abd47a06d0e91041f68a, @@ -452,102 +456,102 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3333367795491552514, guid: 803a3e779512abd47a06d0e91041f68a, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_Pivot.x value: 0 objectReference: {fileID: 0} - target: {fileID: 3333367795491552514, guid: 803a3e779512abd47a06d0e91041f68a, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - target: {fileID: 3333367795491552514, guid: 803a3e779512abd47a06d0e91041f68a, type: 3} - propertyPath: m_LocalPosition.z - value: 0 + propertyPath: m_RootOrder + value: 2 objectReference: {fileID: 0} - target: {fileID: 3333367795491552514, guid: 803a3e779512abd47a06d0e91041f68a, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_AnchorMax.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 3333367795491552514, guid: 803a3e779512abd47a06d0e91041f68a, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_AnchorMax.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 3333367795491552514, guid: 803a3e779512abd47a06d0e91041f68a, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 3333367795491552514, guid: 803a3e779512abd47a06d0e91041f68a, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 3333367795491552514, guid: 803a3e779512abd47a06d0e91041f68a, type: 3} - propertyPath: m_RootOrder - value: 2 + propertyPath: m_SizeDelta.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 3333367795491552514, guid: 803a3e779512abd47a06d0e91041f68a, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 3333367795491552514, guid: 803a3e779512abd47a06d0e91041f68a, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 3333367795491552514, guid: 803a3e779512abd47a06d0e91041f68a, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 3333367795491552514, guid: 803a3e779512abd47a06d0e91041f68a, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 3333367795491552514, guid: 803a3e779512abd47a06d0e91041f68a, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 3333367795491552514, guid: 803a3e779512abd47a06d0e91041f68a, type: 3} - propertyPath: m_SizeDelta.x - value: 0 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 3333367795491552514, guid: 803a3e779512abd47a06d0e91041f68a, type: 3} - propertyPath: m_AnchorMin.x - value: 0 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 3333367795491552514, guid: 803a3e779512abd47a06d0e91041f68a, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 3333367795491552514, guid: 803a3e779512abd47a06d0e91041f68a, type: 3} - propertyPath: m_AnchorMax.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 3333367795491552514, guid: 803a3e779512abd47a06d0e91041f68a, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 3333367795491552514, guid: 803a3e779512abd47a06d0e91041f68a, type: 3} - propertyPath: m_Pivot.x + propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - target: {fileID: 3333367795491552514, guid: 803a3e779512abd47a06d0e91041f68a, type: 3} - propertyPath: m_Pivot.y + propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - target: {fileID: 6307293078161421807, guid: 803a3e779512abd47a06d0e91041f68a, @@ -609,102 +613,102 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_Pivot.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_LocalPosition.z - value: 0 + propertyPath: m_RootOrder + value: 1 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_LocalRotation.x + propertyPath: m_AnchorMax.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_LocalRotation.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_LocalRotation.z + propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_RootOrder - value: 1 + propertyPath: m_SizeDelta.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_AnchorMin.x + propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_AnchorMax.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_Pivot.x + propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8913988968307136700, guid: 70629459d73ad224abf7e33d946cbdd6, type: 3} - propertyPath: m_Pivot.y + propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] diff --git a/Assets/Project/Prefabs/UI/Tooltips/Instances/BlockTemplateTooltip.prefab b/Assets/Project/Prefabs/UI/Tooltips/Instances/BlockTemplateTooltip.prefab index 8f78cd54..ec530099 100644 --- a/Assets/Project/Prefabs/UI/Tooltips/Instances/BlockTemplateTooltip.prefab +++ b/Assets/Project/Prefabs/UI/Tooltips/Instances/BlockTemplateTooltip.prefab @@ -41,32 +41,32 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4214765913254721930, guid: 976bff65b741ce24bb240b3a811a8bb3, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_Pivot.x + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 4214765913254721930, guid: 976bff65b741ce24bb240b3a811a8bb3, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_Pivot.y + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 4214765913254721930, guid: 976bff65b741ce24bb240b3a811a8bb3, type: 3} - propertyPath: m_LocalPosition.z + propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 4214765913254721930, guid: 976bff65b741ce24bb240b3a811a8bb3, type: 3} - propertyPath: m_LocalRotation.x + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4214765913254721930, guid: 976bff65b741ce24bb240b3a811a8bb3, type: 3} - propertyPath: m_LocalRotation.y + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4214765913254721930, guid: 976bff65b741ce24bb240b3a811a8bb3, type: 3} - propertyPath: m_LocalRotation.z + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 4214765913254721930, guid: 976bff65b741ce24bb240b3a811a8bb3, @@ -76,33 +76,33 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4214765913254721930, guid: 976bff65b741ce24bb240b3a811a8bb3, type: 3} - propertyPath: m_RootOrder + propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4214765913254721930, guid: 976bff65b741ce24bb240b3a811a8bb3, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4214765913254721930, guid: 976bff65b741ce24bb240b3a811a8bb3, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - target: {fileID: 4214765913254721930, guid: 976bff65b741ce24bb240b3a811a8bb3, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4214765913254721930, guid: 976bff65b741ce24bb240b3a811a8bb3, type: 3} - propertyPath: m_Pivot.x - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 4214765913254721930, guid: 976bff65b741ce24bb240b3a811a8bb3, type: 3} - propertyPath: m_Pivot.y - value: 0.5 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 5036669148666096624, guid: 976bff65b741ce24bb240b3a811a8bb3, type: 3} @@ -116,34 +116,39 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6480737172918771613, guid: 976bff65b741ce24bb240b3a811a8bb3, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6480737172918771613, guid: 976bff65b741ce24bb240b3a811a8bb3, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6480737172918771613, guid: 976bff65b741ce24bb240b3a811a8bb3, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6480737172918771613, guid: 976bff65b741ce24bb240b3a811a8bb3, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6480737172918771613, guid: 976bff65b741ce24bb240b3a811a8bb3, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6480737172918771613, guid: 976bff65b741ce24bb240b3a811a8bb3, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} + - target: {fileID: 6676156186129081355, guid: 976bff65b741ce24bb240b3a811a8bb3, + type: 3} + propertyPath: m_SizeDelta.x + value: 360 + objectReference: {fileID: 0} - target: {fileID: 6676156186129081355, guid: 976bff65b741ce24bb240b3a811a8bb3, type: 3} propertyPath: m_SizeDelta.y diff --git a/Assets/Project/Prefabs/UI/Tooltips/TooltipManager.prefab b/Assets/Project/Prefabs/UI/Tooltips/TooltipManager.prefab index fbca2325..139923c2 100644 --- a/Assets/Project/Prefabs/UI/Tooltips/TooltipManager.prefab +++ b/Assets/Project/Prefabs/UI/Tooltips/TooltipManager.prefab @@ -138,6 +138,8 @@ MonoBehaviour: type: 3} textPrefab: {fileID: 3963280057861318030, guid: 382b2815f3705b549970a8f7f1f15ce2, type: 3} + metadataPrefab: {fileID: 2684111501116982609, guid: 4b82a56f278cc9841ae9e9178742ed32, + type: 3} --- !u!1001 &1283002112867567586 PrefabInstance: m_ObjectHideFlags: 0 @@ -155,6 +157,41 @@ PrefabInstance: propertyPath: m_Name value: ShipTooltip objectReference: {fileID: 0} + - target: {fileID: 3965471935937863980, guid: 5cb50d02b225d6b44bc4c6f2991bdb60, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3965471935937863980, guid: 5cb50d02b225d6b44bc4c6f2991bdb60, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3965471935937863980, guid: 5cb50d02b225d6b44bc4c6f2991bdb60, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3965471935937863980, guid: 5cb50d02b225d6b44bc4c6f2991bdb60, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3965471935937863980, guid: 5cb50d02b225d6b44bc4c6f2991bdb60, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3965471935937863980, guid: 5cb50d02b225d6b44bc4c6f2991bdb60, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6090486190947796795, guid: 5cb50d02b225d6b44bc4c6f2991bdb60, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} - target: {fileID: 6090486190947796795, guid: 5cb50d02b225d6b44bc4c6f2991bdb60, type: 3} propertyPath: m_LocalPosition.x @@ -170,6 +207,11 @@ PrefabInstance: propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 6090486190947796795, guid: 5cb50d02b225d6b44bc4c6f2991bdb60, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} - target: {fileID: 6090486190947796795, guid: 5cb50d02b225d6b44bc4c6f2991bdb60, type: 3} propertyPath: m_LocalRotation.x @@ -185,16 +227,6 @@ PrefabInstance: propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 6090486190947796795, guid: 5cb50d02b225d6b44bc4c6f2991bdb60, - type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 6090486190947796795, guid: 5cb50d02b225d6b44bc4c6f2991bdb60, - type: 3} - propertyPath: m_RootOrder - value: 3 - objectReference: {fileID: 0} - target: {fileID: 6090486190947796795, guid: 5cb50d02b225d6b44bc4c6f2991bdb60, type: 3} propertyPath: m_LocalEulerAnglesHint.x @@ -247,6 +279,36 @@ PrefabInstance: propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} + - target: {fileID: 4524380993120171271, guid: 16e95cc44557a564aa956f97b10b1b14, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4524380993120171271, guid: 16e95cc44557a564aa956f97b10b1b14, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4524380993120171271, guid: 16e95cc44557a564aa956f97b10b1b14, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4524380993120171271, guid: 16e95cc44557a564aa956f97b10b1b14, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4524380993120171271, guid: 16e95cc44557a564aa956f97b10b1b14, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4524380993120171271, guid: 16e95cc44557a564aa956f97b10b1b14, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} - target: {fileID: 4547925157858132864, guid: 16e95cc44557a564aa956f97b10b1b14, type: 3} propertyPath: m_Name @@ -259,102 +321,102 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6720562317071880976, guid: 16e95cc44557a564aa956f97b10b1b14, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_Pivot.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6720562317071880976, guid: 16e95cc44557a564aa956f97b10b1b14, type: 3} - propertyPath: m_LocalPosition.y + propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6720562317071880976, guid: 16e95cc44557a564aa956f97b10b1b14, type: 3} - propertyPath: m_LocalPosition.z - value: 0 + propertyPath: m_RootOrder + value: 2 objectReference: {fileID: 0} - target: {fileID: 6720562317071880976, guid: 16e95cc44557a564aa956f97b10b1b14, type: 3} - propertyPath: m_LocalRotation.x + propertyPath: m_AnchorMax.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6720562317071880976, guid: 16e95cc44557a564aa956f97b10b1b14, type: 3} - propertyPath: m_LocalRotation.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6720562317071880976, guid: 16e95cc44557a564aa956f97b10b1b14, type: 3} - propertyPath: m_LocalRotation.z + propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6720562317071880976, guid: 16e95cc44557a564aa956f97b10b1b14, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_AnchorMin.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 6720562317071880976, guid: 16e95cc44557a564aa956f97b10b1b14, type: 3} - propertyPath: m_RootOrder - value: 2 + propertyPath: m_SizeDelta.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 6720562317071880976, guid: 16e95cc44557a564aa956f97b10b1b14, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6720562317071880976, guid: 16e95cc44557a564aa956f97b10b1b14, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6720562317071880976, guid: 16e95cc44557a564aa956f97b10b1b14, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 6720562317071880976, guid: 16e95cc44557a564aa956f97b10b1b14, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 6720562317071880976, guid: 16e95cc44557a564aa956f97b10b1b14, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6720562317071880976, guid: 16e95cc44557a564aa956f97b10b1b14, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6720562317071880976, guid: 16e95cc44557a564aa956f97b10b1b14, type: 3} - propertyPath: m_AnchorMin.x + propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - target: {fileID: 6720562317071880976, guid: 16e95cc44557a564aa956f97b10b1b14, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6720562317071880976, guid: 16e95cc44557a564aa956f97b10b1b14, type: 3} - propertyPath: m_AnchorMax.x + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6720562317071880976, guid: 16e95cc44557a564aa956f97b10b1b14, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - target: {fileID: 6720562317071880976, guid: 16e95cc44557a564aa956f97b10b1b14, type: 3} - propertyPath: m_Pivot.x + propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6720562317071880976, guid: 16e95cc44557a564aa956f97b10b1b14, type: 3} - propertyPath: m_Pivot.y + propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] @@ -384,6 +446,21 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 5487336474674689311} m_Modifications: + - target: {fileID: 2446365655849545173, guid: f99ac1e33b30b7144bf7b1b31323536a, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 2446365655849545173, guid: f99ac1e33b30b7144bf7b1b31323536a, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 2446365655849545173, guid: f99ac1e33b30b7144bf7b1b31323536a, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} - target: {fileID: 2446365655849545173, guid: f99ac1e33b30b7144bf7b1b31323536a, type: 3} propertyPath: m_LocalPosition.x @@ -399,6 +476,11 @@ PrefabInstance: propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 2446365655849545173, guid: f99ac1e33b30b7144bf7b1b31323536a, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} - target: {fileID: 2446365655849545173, guid: f99ac1e33b30b7144bf7b1b31323536a, type: 3} propertyPath: m_LocalRotation.x @@ -416,38 +498,48 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2446365655849545173, guid: f99ac1e33b30b7144bf7b1b31323536a, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_LocalEulerAnglesHint.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 2446365655849545173, guid: f99ac1e33b30b7144bf7b1b31323536a, type: 3} - propertyPath: m_RootOrder - value: 1 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 2446365655849545173, guid: f99ac1e33b30b7144bf7b1b31323536a, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 2446365655849545173, guid: f99ac1e33b30b7144bf7b1b31323536a, + - target: {fileID: 4791499881584151490, guid: f99ac1e33b30b7144bf7b1b31323536a, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 2446365655849545173, guid: f99ac1e33b30b7144bf7b1b31323536a, + - target: {fileID: 4791499881584151490, guid: f99ac1e33b30b7144bf7b1b31323536a, type: 3} - propertyPath: m_LocalEulerAnglesHint.z + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 2446365655849545173, guid: f99ac1e33b30b7144bf7b1b31323536a, + - target: {fileID: 4791499881584151490, guid: f99ac1e33b30b7144bf7b1b31323536a, type: 3} - propertyPath: m_Pivot.x - value: 0.5 + propertyPath: m_SizeDelta.x + value: 0 objectReference: {fileID: 0} - - target: {fileID: 2446365655849545173, guid: f99ac1e33b30b7144bf7b1b31323536a, + - target: {fileID: 4791499881584151490, guid: f99ac1e33b30b7144bf7b1b31323536a, type: 3} - propertyPath: m_Pivot.y - value: 0.5 + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4791499881584151490, guid: f99ac1e33b30b7144bf7b1b31323536a, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4791499881584151490, guid: f99ac1e33b30b7144bf7b1b31323536a, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 4875848765654760773, guid: f99ac1e33b30b7144bf7b1b31323536a, type: 3} @@ -486,6 +578,16 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 5487336474674689311} m_Modifications: + - target: {fileID: 683803219445005822, guid: b4720ac2f1d831f4083f088bdcf9e5e8, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 683803219445005822, guid: b4720ac2f1d831f4083f088bdcf9e5e8, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} - target: {fileID: 683803219445005822, guid: b4720ac2f1d831f4083f088bdcf9e5e8, type: 3} propertyPath: m_LocalPosition.x @@ -501,6 +603,11 @@ PrefabInstance: propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 683803219445005822, guid: b4720ac2f1d831f4083f088bdcf9e5e8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} - target: {fileID: 683803219445005822, guid: b4720ac2f1d831f4083f088bdcf9e5e8, type: 3} propertyPath: m_LocalRotation.x @@ -516,16 +623,6 @@ PrefabInstance: propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 683803219445005822, guid: b4720ac2f1d831f4083f088bdcf9e5e8, - type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 683803219445005822, guid: b4720ac2f1d831f4083f088bdcf9e5e8, - type: 3} - propertyPath: m_RootOrder - value: 4 - objectReference: {fileID: 0} - target: {fileID: 683803219445005822, guid: b4720ac2f1d831f4083f088bdcf9e5e8, type: 3} propertyPath: m_LocalEulerAnglesHint.x @@ -541,39 +638,34 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 683803219445005822, guid: b4720ac2f1d831f4083f088bdcf9e5e8, - type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - target: {fileID: 2625768153245414357, guid: b4720ac2f1d831f4083f088bdcf9e5e8, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2625768153245414357, guid: b4720ac2f1d831f4083f088bdcf9e5e8, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2625768153245414357, guid: b4720ac2f1d831f4083f088bdcf9e5e8, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2625768153245414357, guid: b4720ac2f1d831f4083f088bdcf9e5e8, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 2625768153245414357, guid: b4720ac2f1d831f4083f088bdcf9e5e8, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 2625768153245414357, guid: b4720ac2f1d831f4083f088bdcf9e5e8, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5533999019222784427, guid: b4720ac2f1d831f4083f088bdcf9e5e8, @@ -588,57 +680,57 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8045391073833476223, guid: b4720ac2f1d831f4083f088bdcf9e5e8, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8045391073833476223, guid: b4720ac2f1d831f4083f088bdcf9e5e8, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8045391073833476223, guid: b4720ac2f1d831f4083f088bdcf9e5e8, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8045391073833476223, guid: b4720ac2f1d831f4083f088bdcf9e5e8, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8045391073833476223, guid: b4720ac2f1d831f4083f088bdcf9e5e8, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8272179806239810332, guid: b4720ac2f1d831f4083f088bdcf9e5e8, type: 3} - propertyPath: m_AnchorMin.y + propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8272179806239810332, guid: b4720ac2f1d831f4083f088bdcf9e5e8, type: 3} - propertyPath: m_AnchorMax.y + propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8272179806239810332, guid: b4720ac2f1d831f4083f088bdcf9e5e8, type: 3} - propertyPath: m_AnchoredPosition.x + propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8272179806239810332, guid: b4720ac2f1d831f4083f088bdcf9e5e8, type: 3} - propertyPath: m_AnchoredPosition.y + propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8272179806239810332, guid: b4720ac2f1d831f4083f088bdcf9e5e8, type: 3} - propertyPath: m_SizeDelta.x + propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 8272179806239810332, guid: b4720ac2f1d831f4083f088bdcf9e5e8, type: 3} - propertyPath: m_SizeDelta.y + propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] diff --git a/Assets/Project/Prefabs/UI/Tooltips/Views/TooltipMetadata.prefab b/Assets/Project/Prefabs/UI/Tooltips/Views/TooltipMetadata.prefab new file mode 100644 index 00000000..281d90e8 --- /dev/null +++ b/Assets/Project/Prefabs/UI/Tooltips/Views/TooltipMetadata.prefab @@ -0,0 +1,451 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &6946787134472596781 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 1464599765748710889, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1464599765748710889, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1464599765748710889, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1464599765748710889, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1464599765748710889, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1464599765748710889, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1792497010058463426, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1792497010058463426, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1792497010058463426, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1792497010058463426, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1792497010058463426, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1792497010058463426, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2417009506358898106, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_fontSize + value: 28 + objectReference: {fileID: 0} + - target: {fileID: 2417009506358898106, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_fontStyle + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2417009506358898106, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_fontSizeBase + value: 28 + objectReference: {fileID: 0} + - target: {fileID: 2496663008977767101, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_SizeDelta.x + value: 24 + objectReference: {fileID: 0} + - target: {fileID: 2496663008977767101, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_SizeDelta.y + value: 24 + objectReference: {fileID: 0} + - target: {fileID: 2646930203905557555, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_PreferredWidth + value: 32 + objectReference: {fileID: 0} + - target: {fileID: 2863552557656190098, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2863552557656190098, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2863552557656190098, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2863552557656190098, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2863552557656190098, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2863552557656190098, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2920393808637952148, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: skew.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2963310940045631840, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2963310940045631840, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2963310940045631840, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2963310940045631840, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2963310940045631840, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2963310940045631840, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3486530854681188489, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: skew.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4996764847642273916, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_Name + value: TooltipMetadata + objectReference: {fileID: 0} + - target: {fileID: 5152396634740871300, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: skew.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5262758589820638859, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5262758589820638859, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5262758589820638859, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5262758589820638859, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5262758589820638859, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5262758589820638859, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6180771340351840106, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: skew.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6528648522550106359, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: skew.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6528648522550106359, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_Color.a + value: 0.39215687 + objectReference: {fileID: 0} + - target: {fileID: 6541160198654604926, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: skew.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7161395114026740188, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_fontSize + value: 28 + objectReference: {fileID: 0} + - target: {fileID: 7161395114026740188, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_fontStyle + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7161395114026740188, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_fontSizeBase + value: 28 + objectReference: {fileID: 0} + - target: {fileID: 7161395114026740188, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_fontColor32.rgba + value: 4278247167 + objectReference: {fileID: 0} + - target: {fileID: 7300801511896065495, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: skew.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8056503318451917968, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8056503318451917968, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8056503318451917968, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8056503318451917968, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8056503318451917968, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8056503318451917968, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchorMax.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchorMin.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_SizeDelta.x + value: 200 + objectReference: {fileID: 0} + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_SizeDelta.y + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 260 + objectReference: {fileID: 0} + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 80 + objectReference: {fileID: 0} + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8672196143701985953, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8892944085168885652, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8892944085168885652, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8892944085168885652, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8892944085168885652, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8892944085168885652, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8892944085168885652, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9052424163147661654, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9052424163147661654, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9052424163147661654, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9052424163147661654, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9052424163147661654, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9052424163147661654, guid: dcba3e548bdbdf94ea2f76065d70e756, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: dcba3e548bdbdf94ea2f76065d70e756, type: 3} diff --git a/Assets/Project/Prefabs/UI/Tooltips/Views/TooltipMetadata.prefab.meta b/Assets/Project/Prefabs/UI/Tooltips/Views/TooltipMetadata.prefab.meta new file mode 100644 index 00000000..71448e8d --- /dev/null +++ b/Assets/Project/Prefabs/UI/Tooltips/Views/TooltipMetadata.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4b82a56f278cc9841ae9e9178742ed32 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Prefabs/UI/UserExceptions/NotificationLogger.prefab b/Assets/Project/Prefabs/UI/UserExceptions/NotificationLogger.prefab new file mode 100644 index 00000000..4b3efe8f --- /dev/null +++ b/Assets/Project/Prefabs/UI/UserExceptions/NotificationLogger.prefab @@ -0,0 +1,207 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &4621365056658803772 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4621365056658803773} + - component: {fileID: 6016151642530589521} + - component: {fileID: 8876288434751572680} + - component: {fileID: 4275399948406767617} + - component: {fileID: 5902739707318206018} + - component: {fileID: 2070488185489477815} + m_Layer: 5 + m_Name: NotificationLogger + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4621365056658803773 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4621365056658803772} + 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: 4621365057763628049} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 400, y: 540} + m_Pivot: {x: 1, y: 0} +--- !u!114 &6016151642530589521 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4621365056658803772} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ShowMaskGraphic: 0 +--- !u!222 &8876288434751572680 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4621365056658803772} + m_CullTransparentMesh: 0 +--- !u!114 &4275399948406767617 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4621365056658803772} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!223 &5902739707318206018 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4621365056658803772} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 1 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: -1210632221 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &2070488185489477815 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4621365056658803772} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c571d2818dcaddd45beb8a30c4f2bb7e, type: 3} + m_Name: + m_EditorClassIdentifier: + notificationPrefab: {fileID: 1239511231989301239, guid: 5988e0009c6e6384cb248f9a40c8262d, + type: 3} + container: {fileID: 4621365057763628049} +--- !u!1 &4621365057763628048 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4621365057763628049} + - component: {fileID: 4621365057763628050} + - component: {fileID: 8860731025954141842} + m_Layer: 5 + m_Name: NoticeContainer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4621365057763628049 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4621365057763628048} + 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: 4621365056658803773} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0} +--- !u!114 &4621365057763628050 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4621365057763628048} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_ChildAlignment: 8 + m_Spacing: 10 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 1 + m_ReverseArrangement: 0 +--- !u!114 &8860731025954141842 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4621365057763628048} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 diff --git a/Assets/Project/Prefabs/UI/UserExceptions/UserExceptionLogger.prefab.meta b/Assets/Project/Prefabs/UI/UserExceptions/NotificationLogger.prefab.meta similarity index 100% rename from Assets/Project/Prefabs/UI/UserExceptions/UserExceptionLogger.prefab.meta rename to Assets/Project/Prefabs/UI/UserExceptions/NotificationLogger.prefab.meta diff --git a/Assets/Project/Prefabs/UI/UserExceptions/NotificationPanel.prefab b/Assets/Project/Prefabs/UI/UserExceptions/NotificationPanel.prefab new file mode 100644 index 00000000..c2af03e9 --- /dev/null +++ b/Assets/Project/Prefabs/UI/UserExceptions/NotificationPanel.prefab @@ -0,0 +1,453 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &901127252102839674 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 741222444575877882} + - component: {fileID: 6622580366454845291} + - component: {fileID: 2288579715337533464} + - component: {fileID: 1327576777796941716} + m_Layer: 5 + m_Name: Header + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &741222444575877882 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 901127252102839674} + 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: 7772341398775936294} + m_Father: {fileID: 87628289994974813} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6622580366454845291 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 901127252102839674} + m_CullTransparentMesh: 1 +--- !u!114 &2288579715337533464 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 901127252102839674} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.23529412, g: 0.23529412, b: 0.27450982, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &1327576777796941716 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 901127252102839674} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 32 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &928167369705185328 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4429817142219687305} + - component: {fileID: 8767319358525486192} + m_Layer: 5 + m_Name: Body + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4429817142219687305 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 928167369705185328} + 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: 5508091165418868540} + m_Father: {fileID: 87628289994974813} + 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.5, y: 0.5} +--- !u!114 &8767319358525486192 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 928167369705185328} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 1 + m_ReverseArrangement: 0 +--- !u!1 &1239511231989301239 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 87628289994974813} + - component: {fileID: 5213381298789745721} + - component: {fileID: 4543469231177262442} + - component: {fileID: 1095253669339464297} + - component: {fileID: 7921955672587126555} + - component: {fileID: 3544533816397179741} + m_Layer: 5 + m_Name: NotificationPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &87628289994974813 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1239511231989301239} + 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: 741222444575877882} + - {fileID: 4429817142219687305} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5213381298789745721 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1239511231989301239} + m_CullTransparentMesh: 0 +--- !u!114 &4543469231177262442 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1239511231989301239} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.15686275, g: 0.15686275, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 9ed5f14807d0abb46b875225c7dcb3d2, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &1095253669339464297 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1239511231989301239} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d470c1b90277f7f47a78fb8f9c4dcc2d, type: 3} + m_Name: + m_EditorClassIdentifier: + canvasGroup: {fileID: 3544533816397179741} + header: {fileID: 4665406585096686037} + body: {fileID: 3124399557637320911} +--- !u!114 &7921955672587126555 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1239511231989301239} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 1 + m_ReverseArrangement: 0 +--- !u!225 &3544533816397179741 +CanvasGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1239511231989301239} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 1 + m_IgnoreParentGroups: 0 +--- !u!1 &4388776626689345233 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5508091165418868540} + - component: {fileID: 7897238372369908243} + - component: {fileID: 3124399557637320911} + m_Layer: 5 + m_Name: BodyText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5508091165418868540 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4388776626689345233} + 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: 4429817142219687305} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7897238372369908243 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4388776626689345233} + m_CullTransparentMesh: 0 +--- !u!114 &3124399557637320911 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4388776626689345233} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, 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_FontData: + m_Font: {fileID: 12800000, guid: 178dfd0eb691dfc48b2338eb02b30bf6, type: 3} + m_FontSize: 28 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: User Exception +--- !u!1 &8753616192477160644 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7772341398775936294} + - component: {fileID: 5337093916685410035} + - component: {fileID: 4665406585096686037} + m_Layer: 5 + m_Name: HeaderText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7772341398775936294 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8753616192477160644} + 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: 741222444575877882} + 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: 5, y: 0} + m_SizeDelta: {x: -10, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5337093916685410035 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8753616192477160644} + m_CullTransparentMesh: 1 +--- !u!114 &4665406585096686037 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8753616192477160644} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.74509805, g: 0.74509805, b: 0.7647059, 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_FontData: + m_Font: {fileID: 12800000, guid: 178dfd0eb691dfc48b2338eb02b30bf6, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Now playing diff --git a/Assets/Project/Prefabs/UI/UserExceptions/NotificationPanel.prefab.meta b/Assets/Project/Prefabs/UI/UserExceptions/NotificationPanel.prefab.meta new file mode 100644 index 00000000..1d617c12 --- /dev/null +++ b/Assets/Project/Prefabs/UI/UserExceptions/NotificationPanel.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5988e0009c6e6384cb248f9a40c8262d +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Prefabs/UI/UserExceptions/UserExceptionLogger.prefab b/Assets/Project/Prefabs/UI/UserExceptions/UserExceptionLogger.prefab deleted file mode 100644 index 9c9423c4..00000000 --- a/Assets/Project/Prefabs/UI/UserExceptions/UserExceptionLogger.prefab +++ /dev/null @@ -1,207 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &4621365056658803772 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4621365056658803773} - - component: {fileID: 6016151642530589521} - - component: {fileID: 8876288434751572680} - - component: {fileID: 4275399948406767617} - - component: {fileID: 5902739707318206018} - - component: {fileID: 2070488185489477815} - m_Layer: 5 - m_Name: UserExceptionLogger - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &4621365056658803773 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4621365056658803772} - 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: 4621365057763628049} - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 1, y: 0} - m_AnchorMax: {x: 1, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 400, y: 540} - m_Pivot: {x: 1, y: 0} ---- !u!114 &6016151642530589521 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4621365056658803772} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3} - m_Name: - m_EditorClassIdentifier: - m_ShowMaskGraphic: 0 ---- !u!222 &8876288434751572680 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4621365056658803772} - m_CullTransparentMesh: 0 ---- !u!114 &4275399948406767617 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4621365056658803772} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 0 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!223 &5902739707318206018 -Canvas: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4621365056658803772} - m_Enabled: 1 - serializedVersion: 3 - m_RenderMode: 2 - m_Camera: {fileID: 0} - m_PlaneDistance: 100 - m_PixelPerfect: 0 - m_ReceivesEvents: 1 - m_OverrideSorting: 1 - m_OverridePixelPerfect: 0 - m_SortingBucketNormalizedSize: 0 - m_AdditionalShaderChannelsFlag: 0 - m_SortingLayerID: -1210632221 - m_SortingOrder: 0 - m_TargetDisplay: 0 ---- !u!114 &2070488185489477815 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4621365056658803772} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: c571d2818dcaddd45beb8a30c4f2bb7e, type: 3} - m_Name: - m_EditorClassIdentifier: - userExceptionPrefab: {fileID: 4718999622183323108, guid: af7b2c2dd0856de42a52d05edad193ed, - type: 3} - container: {fileID: 4621365057763628049} ---- !u!1 &4621365057763628048 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4621365057763628049} - - component: {fileID: 4621365057763628050} - - component: {fileID: 8860731025954141842} - m_Layer: 5 - m_Name: NoticeContainer - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &4621365057763628049 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4621365057763628048} - 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: 4621365056658803773} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0} ---- !u!114 &4621365057763628050 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4621365057763628048} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Padding: - m_Left: 10 - m_Right: 10 - m_Top: 10 - m_Bottom: 10 - m_ChildAlignment: 8 - m_Spacing: 10 - m_ChildForceExpandWidth: 1 - m_ChildForceExpandHeight: 0 - m_ChildControlWidth: 1 - m_ChildControlHeight: 1 - m_ChildScaleWidth: 0 - m_ChildScaleHeight: 1 - m_ReverseArrangement: 0 ---- !u!114 &8860731025954141842 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4621365057763628048} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HorizontalFit: 0 - m_VerticalFit: 2 diff --git a/Assets/Project/Prefabs/UI/UserExceptions/UserExceptionPanel.prefab b/Assets/Project/Prefabs/UI/UserExceptions/UserExceptionPanel.prefab deleted file mode 100644 index 44fd80e3..00000000 --- a/Assets/Project/Prefabs/UI/UserExceptions/UserExceptionPanel.prefab +++ /dev/null @@ -1,233 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &4718999622183323108 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5870917883705973838} - - component: {fileID: 1735934701759348266} - - component: {fileID: 8017327572630658937} - - component: {fileID: 6880935813153601658} - - component: {fileID: 4449153412048026888} - - component: {fileID: 7025148656518041934} - - component: {fileID: 7300561109378508946} - m_Layer: 5 - m_Name: UserExceptionPanel - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &5870917883705973838 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4718999622183323108} - 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: 2035145968456234287} - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 400, y: 200} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &1735934701759348266 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4718999622183323108} - m_CullTransparentMesh: 0 ---- !u!114 &8017327572630658937 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4718999622183323108} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.15686275, g: 0.15686275, b: 0.19607843, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 9ed5f14807d0abb46b875225c7dcb3d2, type: 3} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!114 &6880935813153601658 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4718999622183323108} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: d470c1b90277f7f47a78fb8f9c4dcc2d, type: 3} - m_Name: - m_EditorClassIdentifier: - canvasGroup: {fileID: 7025148656518041934} - text: {fileID: 8868424508792933084} ---- !u!114 &4449153412048026888 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4718999622183323108} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Padding: - m_Left: 10 - m_Right: 10 - m_Top: 10 - m_Bottom: 10 - m_ChildAlignment: 0 - m_Spacing: 0 - m_ChildForceExpandWidth: 1 - m_ChildForceExpandHeight: 0 - m_ChildControlWidth: 1 - m_ChildControlHeight: 1 - m_ChildScaleWidth: 0 - m_ChildScaleHeight: 1 - m_ReverseArrangement: 0 ---- !u!225 &7025148656518041934 -CanvasGroup: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4718999622183323108} - m_Enabled: 1 - m_Alpha: 1 - m_Interactable: 1 - m_BlocksRaycasts: 1 - m_IgnoreParentGroups: 0 ---- !u!114 &7300561109378508946 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4718999622183323108} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreLayout: 0 - m_MinWidth: -1 - m_MinHeight: 60 - m_PreferredWidth: -1 - m_PreferredHeight: -1 - m_FlexibleWidth: -1 - m_FlexibleHeight: -1 - m_LayoutPriority: 1 ---- !u!1 &7829209796677975234 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2035145968456234287} - - component: {fileID: 4455821138938165248} - - component: {fileID: 8868424508792933084} - m_Layer: 5 - m_Name: Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2035145968456234287 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7829209796677975234} - 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: 5870917883705973838} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &4455821138938165248 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7829209796677975234} - m_CullTransparentMesh: 0 ---- !u!114 &8868424508792933084 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7829209796677975234} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.74509805, g: 0.74509805, b: 0.7647059, 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_FontData: - m_Font: {fileID: 12800000, guid: 178dfd0eb691dfc48b2338eb02b30bf6, type: 3} - m_FontSize: 28 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 2 - m_MaxSize: 40 - m_Alignment: 0 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: KANKEEEEEEEEEE diff --git a/Assets/Project/Prefabs/UI/UserExceptions/UserExceptionPanel.prefab.meta b/Assets/Project/Prefabs/UI/UserExceptions/UserExceptionPanel.prefab.meta deleted file mode 100644 index 181daa11..00000000 --- a/Assets/Project/Prefabs/UI/UserExceptions/UserExceptionPanel.prefab.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: af7b2c2dd0856de42a52d05edad193ed -PrefabImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Prefabs/VFX.meta b/Assets/Project/Prefabs/VFX.meta new file mode 100644 index 00000000..6890ddde --- /dev/null +++ b/Assets/Project/Prefabs/VFX.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0b94f3c10243d6b43a8b28f529562f37 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Prefabs/VFX/ArcPrefab.prefab b/Assets/Project/Prefabs/VFX/ArcPrefab.prefab new file mode 100644 index 00000000..4a2bea82 --- /dev/null +++ b/Assets/Project/Prefabs/VFX/ArcPrefab.prefab @@ -0,0 +1,84 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &6479496829754540037 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6479496829754540036} + - component: {fileID: 661065314662103515} + m_Layer: 9 + m_Name: ArcPrefab + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6479496829754540036 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6479496829754540037} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.12} + m_LocalScale: {x: 0.25, y: 0.25, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &661065314662103515 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6479496829754540037} + 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: 2100000, guid: cac5f42f5e485ec4bbc116e8894abeb9, 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: 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: 197731d5700d0eb49915322ec740e2bc, type: 3} + m_Color: {r: 0.3537736, g: 1, b: 0.97167933, 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 diff --git a/Assets/Project/Prefabs/VFX/ArcPrefab.prefab.meta b/Assets/Project/Prefabs/VFX/ArcPrefab.prefab.meta new file mode 100644 index 00000000..bc2049b4 --- /dev/null +++ b/Assets/Project/Prefabs/VFX/ArcPrefab.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1267a043116d69b429d1487303d6bb5a +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Scenes/Game.unity b/Assets/Project/Scenes/Game.unity index 7f015c3a..20fbc992 100644 --- a/Assets/Project/Scenes/Game.unity +++ b/Assets/Project/Scenes/Game.unity @@ -124,6 +124,85 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1 &539943895 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 539943896} + m_Layer: 0 + m_Name: Drones + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &539943896 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 539943895} + 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: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!224 &594996301 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 1581856390994117241, guid: d689761b2ed64274ebe775612b5822a4, + type: 3} + m_PrefabInstance: {fileID: 1581856390435319348} + m_PrefabAsset: {fileID: 0} +--- !u!114 &594996304 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 1581856390994117220, guid: d689761b2ed64274ebe775612b5822a4, + type: 3} + m_PrefabInstance: {fileID: 1581856390435319348} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 44cdea69361b4574b6d1ac285d277d45, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1111311482 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1111311483} + m_Layer: 0 + m_Name: RotationOverlays + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1111311483 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1111311482} + 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: 594996301} + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1813677411 GameObject: m_ObjectHideFlags: 0 @@ -135,7 +214,7 @@ GameObject: - component: {fileID: 1813677412} - component: {fileID: 1813677413} m_Layer: 0 - m_Name: Overlay + m_Name: Overlays m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -243,13 +322,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 40bcd5a6fb36f8443b4ca9f352fbc92d, type: 3} m_Name: m_EditorClassIdentifier: - friendlyShipPrefab: {fileID: 6183172587043395867, guid: 3aea6e1a07124344f96c6f74c03a53bb, - type: 3} enemyShipPrefab: {fileID: 4004696302299950471, guid: 44ca71e0f5f540246803bc24780a9d64, type: 3} + friendlyStationPrefab: {fileID: 6183172587043395867, guid: 3aea6e1a07124344f96c6f74c03a53bb, + type: 3} shipOverlayPrefab: {fileID: 7302444608995301460, guid: 46737a4d95a0b474095ba4e71ce3f16a, type: 3} - overlayContainer: {fileID: 1813677412} --- !u!114 &2101903113 MonoBehaviour: m_ObjectHideFlags: 0 @@ -264,6 +342,130 @@ MonoBehaviour: m_EditorClassIdentifier: debrisGridPrefab: {fileID: 4945679383221027916, guid: ad007978fbf54ca4391efa9b0bac2352, type: 3} +--- !u!1001 &1581856390435319348 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1111311483} + m_Modifications: + - target: {fileID: 1581856390994117240, guid: d689761b2ed64274ebe775612b5822a4, + type: 3} + propertyPath: m_Name + value: RotationOverlay + objectReference: {fileID: 0} + - target: {fileID: 1581856390994117240, guid: d689761b2ed64274ebe775612b5822a4, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1581856390994117241, guid: d689761b2ed64274ebe775612b5822a4, + type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1581856390994117241, guid: d689761b2ed64274ebe775612b5822a4, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1581856390994117241, guid: d689761b2ed64274ebe775612b5822a4, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1581856390994117241, guid: d689761b2ed64274ebe775612b5822a4, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1581856390994117241, guid: d689761b2ed64274ebe775612b5822a4, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1581856390994117241, guid: d689761b2ed64274ebe775612b5822a4, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1581856390994117241, guid: d689761b2ed64274ebe775612b5822a4, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1581856390994117241, guid: d689761b2ed64274ebe775612b5822a4, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1581856390994117241, guid: d689761b2ed64274ebe775612b5822a4, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1581856390994117241, guid: d689761b2ed64274ebe775612b5822a4, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1581856390994117241, guid: d689761b2ed64274ebe775612b5822a4, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1581856390994117241, guid: d689761b2ed64274ebe775612b5822a4, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1581856390994117241, guid: d689761b2ed64274ebe775612b5822a4, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1581856390994117241, guid: d689761b2ed64274ebe775612b5822a4, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1581856390994117241, guid: d689761b2ed64274ebe775612b5822a4, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1581856390994117241, guid: d689761b2ed64274ebe775612b5822a4, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1581856390994117241, guid: d689761b2ed64274ebe775612b5822a4, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1581856390994117241, guid: d689761b2ed64274ebe775612b5822a4, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1581856390994117241, guid: d689761b2ed64274ebe775612b5822a4, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1581856390994117241, guid: d689761b2ed64274ebe775612b5822a4, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1581856390994117241, guid: d689761b2ed64274ebe775612b5822a4, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d689761b2ed64274ebe775612b5822a4, type: 3} --- !u!1001 &3971752619075410487 PrefabInstance: m_ObjectHideFlags: 0 @@ -311,6 +513,11 @@ PrefabInstance: propertyPath: blockGridManager value: objectReference: {fileID: 2101903113} + - target: {fileID: 3971752618548431353, guid: 5b47039535f26ce4a84ca29216ae1814, + type: 3} + propertyPath: gameplayInputManager + value: + objectReference: {fileID: 4757615413908949387} - target: {fileID: 3971752618548431354, guid: 5b47039535f26ce4a84ca29216ae1814, type: 3} propertyPath: m_RootOrder @@ -376,14 +583,22 @@ PrefabInstance: propertyPath: ships value: objectReference: {fileID: 2101903111} + - target: {fileID: 4286009776099489547, guid: 5b47039535f26ce4a84ca29216ae1814, + type: 3} + propertyPath: drones + value: + objectReference: {fileID: 539943896} + - target: {fileID: 4286009776099489547, guid: 5b47039535f26ce4a84ca29216ae1814, + type: 3} + propertyPath: overlay + value: + objectReference: {fileID: 1813677412} - target: {fileID: 4286009776099489547, guid: 5b47039535f26ce4a84ca29216ae1814, type: 3} propertyPath: projectiles value: objectReference: {fileID: 1979375274} - m_RemovedComponents: - - {fileID: 3971752618548431352, guid: 5b47039535f26ce4a84ca29216ae1814, type: 3} - - {fileID: -5148195961969832546, guid: 5b47039535f26ce4a84ca29216ae1814, type: 3} + m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 5b47039535f26ce4a84ca29216ae1814, type: 3} --- !u!114 &3971752619075410488 stripped MonoBehaviour: @@ -859,8 +1074,25 @@ PrefabInstance: propertyPath: m_SizeDelta.x value: 120 objectReference: {fileID: 0} + - target: {fileID: 9197995190180590715, guid: 64bc5546e16bfaf46aa70beef1bfc706, + type: 3} + propertyPath: stationRotationOverlay + value: + objectReference: {fileID: 594996304} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 64bc5546e16bfaf46aa70beef1bfc706, type: 3} +--- !u!114 &4757615413908949387 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 8696711327004652491, guid: 64bc5546e16bfaf46aa70beef1bfc706, + type: 3} + m_PrefabInstance: {fileID: 4757615413908949386} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5b0122423b776e94dae13c2a9b3b4da3, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!114 &4757615413908949389 stripped MonoBehaviour: m_CorrespondingSourceObject: {fileID: 4123047249362034627, guid: 64bc5546e16bfaf46aa70beef1bfc706, diff --git a/Assets/Project/Scenes/Main.meta b/Assets/Project/Scenes/Main.meta new file mode 100644 index 00000000..4da493a2 --- /dev/null +++ b/Assets/Project/Scenes/Main.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f4854ddc1f613fa409729ad69f841504 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Scenes/Main.unity b/Assets/Project/Scenes/Main.unity index 770106cb..e144e830 100644 --- a/Assets/Project/Scenes/Main.unity +++ b/Assets/Project/Scenes/Main.unity @@ -224,7 +224,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!4 &157441494 Transform: m_ObjectHideFlags: 0 @@ -251,8 +251,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 6a2ac0b803bafc8409147f19b4a4771d, type: 3} m_Name: m_EditorClassIdentifier: - targetAtmosphere: 0 - triggerOnEnable: 0 + value: 2 --- !u!1 &374036195 GameObject: m_ObjectHideFlags: 0 @@ -282,25 +281,38 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 073797afb82c5a1438f328866b10b3f0, type: 3} m_Name: m_EditorClassIdentifier: + m_ComponentVersion: 1 m_LightType: 4 m_BlendStyleIndex: 0 m_FalloffIntensity: 0.5 m_Color: {r: 1, g: 1, b: 1, a: 1} m_Intensity: 1 - m_LightVolumeOpacity: 0 + m_LightVolumeIntensity: 0 + m_LightVolumeIntensityEnabled: 0 m_ApplyToSortingLayers: 00000000 m_LightCookieSprite: {fileID: 0} - m_UseNormalMap: 0 + m_DeprecatedPointLightCookieSprite: {fileID: 0} m_LightOrder: 0 - m_AlphaBlendOnOverlap: 0 + m_OverlapOperation: 0 + m_NormalMapDistance: 3 + m_NormalMapQuality: 2 + m_UseNormalMap: 0 + m_ShadowIntensityEnabled: 0 m_ShadowIntensity: 0 + m_ShadowVolumeIntensityEnabled: 0 m_ShadowVolumeIntensity: 0 + m_Vertices: + - position: {x: 0, y: 0, z: 0} + color: {r: 0, g: 0, b: 0, a: 0} + uv: {x: 0, y: 0} + m_Triangles: 0000 + m_LocalBounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} m_PointLightInnerAngle: 360 m_PointLightOuterAngle: 360 m_PointLightInnerRadius: 0 m_PointLightOuterRadius: 1 - m_PointLightDistance: 3 - m_PointLightQuality: 1 m_ShapeLightParametricSides: 5 m_ShapeLightParametricAngleOffset: 0 m_ShapeLightParametricRadius: 1 @@ -325,122 +337,12 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &526414011 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 526414015} - - component: {fileID: 526414014} - - component: {fileID: 526414013} - - component: {fileID: 526414012} - m_Layer: 0 - m_Name: MainCamera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &526414012 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 526414011} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} - m_Name: - m_EditorClassIdentifier: - m_RenderShadows: 1 - m_RequiresDepthTextureOption: 2 - m_RequiresOpaqueTextureOption: 2 - m_CameraType: 0 - m_Cameras: [] - m_RendererIndex: -1 - m_VolumeLayerMask: - serializedVersion: 2 - m_Bits: 1 - m_VolumeTrigger: {fileID: 0} - m_RenderPostProcessing: 0 - m_Antialiasing: 0 - m_AntialiasingQuality: 2 - m_StopNaN: 0 - m_Dithering: 0 - m_ClearDepth: 1 - m_AllowXRRendering: 1 - m_RequiresDepthTexture: 0 - m_RequiresColorTexture: 0 - m_Version: 2 ---- !u!81 &526414013 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 526414011} - m_Enabled: 1 ---- !u!20 &526414014 +--- !u!20 &526414014 stripped Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 526414011} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 2 - m_BackGroundColor: {r: 0.078431375, g: 0.078431375, b: 0.11764706, a: 1} - 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: 5 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &526414015 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 3062168236378660383, guid: 75afdb1f953b5ed4f9c18ba6b029ecae, + type: 3} + m_PrefabInstance: {fileID: 3062168236259143329} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 526414011} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, 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!114 &684846338 stripped MonoBehaviour: m_CorrespondingSourceObject: {fileID: 1617958063522696134, guid: 84dc0bf7b928d2844ba5df3b7352dc5e, @@ -544,7 +446,7 @@ LightingSettings: m_PVREnvironmentReferencePointCount: 2048 m_LightProbeSampleCountMultiplier: 4 m_PVRBounces: 2 - m_PVRMinBounces: 1 + m_PVRMinBounces: 2 m_PVREnvironmentMIS: 0 m_PVRFilteringMode: 2 m_PVRDenoiserTypeDirect: 0 @@ -583,6 +485,87 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 580006f3f0068ab45a98cb5a94e3ad63, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!1001 &3062168236259143329 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 3062168236378660378, guid: 75afdb1f953b5ed4f9c18ba6b029ecae, + type: 3} + propertyPath: m_Name + value: MainCamera + objectReference: {fileID: 0} + - target: {fileID: 3062168236378660382, guid: 75afdb1f953b5ed4f9c18ba6b029ecae, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3062168236378660382, guid: 75afdb1f953b5ed4f9c18ba6b029ecae, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3062168236378660382, guid: 75afdb1f953b5ed4f9c18ba6b029ecae, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3062168236378660382, guid: 75afdb1f953b5ed4f9c18ba6b029ecae, + type: 3} + propertyPath: m_LocalPosition.z + value: -10 + objectReference: {fileID: 0} + - target: {fileID: 3062168236378660382, guid: 75afdb1f953b5ed4f9c18ba6b029ecae, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3062168236378660382, guid: 75afdb1f953b5ed4f9c18ba6b029ecae, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3062168236378660382, guid: 75afdb1f953b5ed4f9c18ba6b029ecae, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3062168236378660382, guid: 75afdb1f953b5ed4f9c18ba6b029ecae, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3062168236378660382, guid: 75afdb1f953b5ed4f9c18ba6b029ecae, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3062168236378660382, guid: 75afdb1f953b5ed4f9c18ba6b029ecae, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3062168236378660382, guid: 75afdb1f953b5ed4f9c18ba6b029ecae, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 75afdb1f953b5ed4f9c18ba6b029ecae, type: 3} +--- !u!114 &3062168236259143330 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 2341179434791797879, guid: 75afdb1f953b5ed4f9c18ba6b029ecae, + type: 3} + m_PrefabInstance: {fileID: 3062168236259143329} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1a9bd967442da4e4b89ad43d9ccf7b49, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1001 &5526384382011362056 PrefabInstance: m_ObjectHideFlags: 0 @@ -705,6 +688,11 @@ PrefabInstance: propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} + - target: {fileID: 494224608770583278, guid: 3e219537f6421be4da8379d71ff2d5fa, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} - target: {fileID: 525870847999883175, guid: 3e219537f6421be4da8379d71ff2d5fa, type: 3} propertyPath: m_AnchoredPosition.x @@ -1715,6 +1703,21 @@ PrefabInstance: propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} + - target: {fileID: 5526384382393517144, guid: 3e219537f6421be4da8379d71ff2d5fa, + type: 3} + propertyPath: m_Name + value: NotificationLogger + objectReference: {fileID: 0} + - target: {fileID: 5526384382393517145, guid: 3e219537f6421be4da8379d71ff2d5fa, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5526384382393517145, guid: 3e219537f6421be4da8379d71ff2d5fa, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} - target: {fileID: 5526384382514086163, guid: 3e219537f6421be4da8379d71ff2d5fa, type: 3} propertyPath: m_Name @@ -1945,6 +1948,11 @@ PrefabInstance: propertyPath: m_AnchoredPosition.x value: -204.99994 objectReference: {fileID: 0} + - target: {fileID: 6078577517684990339, guid: 3e219537f6421be4da8379d71ff2d5fa, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} - target: {fileID: 6179197629143929458, guid: 3e219537f6421be4da8379d71ff2d5fa, type: 3} propertyPath: animTime @@ -2315,6 +2323,11 @@ PrefabInstance: propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} + - target: {fileID: 7494097066478924946, guid: 3e219537f6421be4da8379d71ff2d5fa, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -48 + objectReference: {fileID: 0} - target: {fileID: 7528278427315002214, guid: 3e219537f6421be4da8379d71ff2d5fa, type: 3} propertyPath: m_AnchorMax.y @@ -2650,6 +2663,11 @@ PrefabInstance: propertyPath: m_AnchoredPosition.y value: -20 objectReference: {fileID: 0} + - target: {fileID: 8555430702455480077, guid: 3e219537f6421be4da8379d71ff2d5fa, + type: 3} + propertyPath: m_Name + value: GridEditorOverlay + objectReference: {fileID: 0} - target: {fileID: 8765884238405259644, guid: 3e219537f6421be4da8379d71ff2d5fa, type: 3} propertyPath: m_AnchorMax.y @@ -2817,6 +2835,18 @@ PrefabInstance: objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 3e219537f6421be4da8379d71ff2d5fa, type: 3} +--- !u!114 &5526384382011362057 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 503639679737158215, guid: 3e219537f6421be4da8379d71ff2d5fa, + type: 3} + m_PrefabInstance: {fileID: 5526384382011362056} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3943663ec6537784bbd7b75b3baa5175, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1001 &5676475580507379944 PrefabInstance: m_ObjectHideFlags: 0 @@ -2824,6 +2854,11 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 0} m_Modifications: + - target: {fileID: 5676475580568291460, guid: 29d1d30fcec04de40816d90ac6e32d7e, + type: 3} + propertyPath: debugMode + value: 5 + objectReference: {fileID: 0} - target: {fileID: 5676475580568291469, guid: 29d1d30fcec04de40816d90ac6e32d7e, type: 3} propertyPath: m_Name @@ -2834,11 +2869,31 @@ PrefabInstance: propertyPath: mainUI value: objectReference: {fileID: 1644759584} + - target: {fileID: 5676475580568291470, guid: 29d1d30fcec04de40816d90ac6e32d7e, + type: 3} + propertyPath: loadSafe + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5676475580568291470, guid: 29d1d30fcec04de40816d90ac6e32d7e, + type: 3} + propertyPath: gridEditor + value: + objectReference: {fileID: 684846338} - target: {fileID: 5676475580568291470, guid: 29d1d30fcec04de40816d90ac6e32d7e, type: 3} propertyPath: shipEditor value: objectReference: {fileID: 684846338} + - target: {fileID: 5676475580568291470, guid: 29d1d30fcec04de40816d90ac6e32d7e, + type: 3} + propertyPath: settingsManager + value: + objectReference: {fileID: 5526384382011362057} + - target: {fileID: 5676475580568291470, guid: 29d1d30fcec04de40816d90ac6e32d7e, + type: 3} + propertyPath: cameraController + value: + objectReference: {fileID: 3062168236259143330} - target: {fileID: 5676475580568291470, guid: 29d1d30fcec04de40816d90ac6e32d7e, type: 3} propertyPath: godModeIsAnabled @@ -2909,6 +2964,31 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 5676475580605553491, guid: 29d1d30fcec04de40816d90ac6e32d7e, + type: 3} + propertyPath: defaultTrigger + value: + objectReference: {fileID: 157441495} + - target: {fileID: 5676475581545504187, guid: 29d1d30fcec04de40816d90ac6e32d7e, + type: 3} + propertyPath: backgroundColor.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5676475581545504187, guid: 29d1d30fcec04de40816d90ac6e32d7e, + type: 3} + propertyPath: backgroundColor.b + value: 0.11764706 + objectReference: {fileID: 0} + - target: {fileID: 5676475581545504187, guid: 29d1d30fcec04de40816d90ac6e32d7e, + type: 3} + propertyPath: backgroundColor.g + value: 0.078431375 + objectReference: {fileID: 0} + - target: {fileID: 5676475581545504187, guid: 29d1d30fcec04de40816d90ac6e32d7e, + type: 3} + propertyPath: backgroundColor.r + value: 0.078431375 + objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 29d1d30fcec04de40816d90ac6e32d7e, type: 3} --- !u!1001 &8423510518229979854 @@ -2931,7 +3011,7 @@ PrefabInstance: - target: {fileID: 3467558800746813093, guid: 84dc0bf7b928d2844ba5df3b7352dc5e, type: 3} propertyPath: m_Name - value: ShipEditor + value: GridEditor objectReference: {fileID: 0} - target: {fileID: 3467558800746813093, guid: 84dc0bf7b928d2844ba5df3b7352dc5e, type: 3} diff --git a/Assets/Project/Scenes/Main/MainCamera Profile.asset b/Assets/Project/Scenes/Main/MainCamera Profile.asset new file mode 100644 index 00000000..1bd64eda --- /dev/null +++ b/Assets/Project/Scenes/Main/MainCamera Profile.asset @@ -0,0 +1,68 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-6841662802291887521 +MonoBehaviour: + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0b2db86121404754db890f4c8dfe81b2, type: 3} + m_Name: Bloom + m_EditorClassIdentifier: + active: 1 + m_AdvancedMode: 0 + threshold: + m_OverrideState: 1 + m_Value: 0.9 + min: 0 + intensity: + m_OverrideState: 1 + m_Value: 1 + min: 0 + scatter: + m_OverrideState: 0 + m_Value: 0.7 + min: 0 + max: 1 + clamp: + m_OverrideState: 0 + m_Value: 65472 + min: 0 + tint: + m_OverrideState: 0 + m_Value: {r: 1, g: 1, b: 1, a: 1} + hdr: 0 + showAlpha: 0 + showEyeDropper: 1 + highQualityFiltering: + m_OverrideState: 0 + m_Value: 0 + skipIterations: + m_OverrideState: 0 + m_Value: 1 + min: 0 + max: 16 + dirtTexture: + m_OverrideState: 0 + m_Value: {fileID: 0} + dirtIntensity: + m_OverrideState: 0 + m_Value: 0 + min: 0 +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d7fd9488000d3734a9e00ee676215985, type: 3} + m_Name: MainCamera Profile + m_EditorClassIdentifier: + components: + - {fileID: -6841662802291887521} diff --git a/Assets/Project/Scenes/Main/MainCamera Profile.asset.meta b/Assets/Project/Scenes/Main/MainCamera Profile.asset.meta new file mode 100644 index 00000000..f824a450 --- /dev/null +++ b/Assets/Project/Scenes/Main/MainCamera Profile.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0ff924150f8861e4f94e69c9e204dfe4 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Scenes/RotationControllerTest.meta b/Assets/Project/Scenes/RotationControllerTest.meta new file mode 100644 index 00000000..a81d55a8 --- /dev/null +++ b/Assets/Project/Scenes/RotationControllerTest.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 53dcf40675d5a104493ac179c03dd292 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Scenes/RotationControllerTest/Fipping Phone.unity b/Assets/Project/Scenes/RotationControllerTest/Fipping Phone.unity new file mode 100644 index 00000000..b498729d --- /dev/null +++ b/Assets/Project/Scenes/RotationControllerTest/Fipping Phone.unity @@ -0,0 +1,568 @@ +%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.2, g: 0.2, b: 0.2, a: 1} + m_AmbientEquatorColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientGroundColor: {r: 0.2, g: 0.2, b: 0.2, 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 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 1 + m_BakeResolution: 50 + m_AtlasSize: 1024 + m_AO: 1 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 0 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 0 + 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: 82bcfd04658187c4eb44662b18ad18ea, + type: 2} +--- !u!196 &5 +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.16666666 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &39766518 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 39766519} + - component: {fileID: 39766522} + - component: {fileID: 39766521} + - component: {fileID: 39766520} + m_Layer: 0 + m_Name: Phone + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &39766519 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 39766518} + 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: 571096426} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &39766520 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 39766518} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 58ce7c403f8b2954da923fb8735e65a9, type: 3} + m_Name: + m_EditorClassIdentifier: + maxTorque: 1 + stopThresholdMultiplier: 0.001 + baseStopThreshold: 0.1 + proxy: {fileID: 39766522} +--- !u!50 &39766521 +Rigidbody2D: + serializedVersion: 4 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 39766518} + m_BodyType: 0 + m_Simulated: 1 + m_UseFullKinematicContacts: 0 + m_UseAutoMass: 1 + m_Mass: 3 + m_LinearDrag: 0 + m_AngularDrag: 0 + m_GravityScale: 0 + m_Material: {fileID: 0} + m_Interpolate: 0 + m_SleepingMode: 1 + m_CollisionDetection: 0 + m_Constraints: 0 +--- !u!114 &39766522 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 39766518} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 87861b5d8a884a14b2b69fa9b06819f1, type: 3} + m_Name: + m_EditorClassIdentifier: + rb: {fileID: 39766521} +--- !u!1 &571096422 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 571096426} + - component: {fileID: 571096425} + - component: {fileID: 571096423} + - component: {fileID: 571096424} + - component: {fileID: 571096427} + m_Layer: 0 + m_Name: Slab + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &571096423 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 571096422} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10302, 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: 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 &571096424 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 571096422} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a9253c84d81febe43ac19b0fc723c736, type: 3} + m_Name: + m_EditorClassIdentifier: + ship: {fileID: 39766520} + buttonDown: 0 + action: + m_Name: Action + m_Type: 0 + m_ExpectedControlType: + m_Id: 268fa900-c819-445e-b07e-f3b890612a8d + m_Processors: + m_Interactions: + m_SingletonActionBindings: + - m_Name: + m_Id: c57705d3-3595-4d61-9e24-700851d6efda + m_Path: /leftButton + m_Interactions: + m_Processors: + m_Groups: + m_Action: Action + m_Flags: 0 +--- !u!33 &571096425 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 571096422} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &571096426 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 571096422} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 3, y: 1, z: 3} + m_Children: [] + m_Father: {fileID: 39766519} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!61 &571096427 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 571096422} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + serializedVersion: 2 + m_Size: {x: 1, y: 1} + m_EdgeRadius: 0 +--- !u!1 &1846590979 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1846590981} + - component: {fileID: 1846590980} + m_Layer: 0 + m_Name: Directional light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1846590980 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1846590979} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 0 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 1 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1846590981 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1846590979} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.109381676, w: 0.87542605} + m_LocalPosition: {x: 4.6797333, y: 10.3032055, z: -4.891918} + 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 &2058467885 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2058467890} + - component: {fileID: 2058467889} + - component: {fileID: 2058467887} + - component: {fileID: 2058467886} + - component: {fileID: 2058467888} + 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 &2058467886 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2058467885} + m_Enabled: 1 +--- !u!124 &2058467887 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2058467885} + m_Enabled: 1 +--- !u!114 &2058467888 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2058467885} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_RenderPostProcessing: 0 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_AllowXRRendering: 1 + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_Version: 2 +--- !u!20 &2058467889 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2058467885} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + 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: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &2058467890 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2058467885} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, 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} diff --git a/Assets/Project/Scenes/RotationControllerTest/Fipping Phone.unity.meta b/Assets/Project/Scenes/RotationControllerTest/Fipping Phone.unity.meta new file mode 100644 index 00000000..80046950 --- /dev/null +++ b/Assets/Project/Scenes/RotationControllerTest/Fipping Phone.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 183b9a79fd64d4f55bd549600fe327d8 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Scenes/RotationControllerTest/Fipping PhoneSettings.lighting b/Assets/Project/Scenes/RotationControllerTest/Fipping PhoneSettings.lighting new file mode 100644 index 00000000..da3f8736 --- /dev/null +++ b/Assets/Project/Scenes/RotationControllerTest/Fipping PhoneSettings.lighting @@ -0,0 +1,63 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!850595691 &4890085278179872738 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Fipping PhoneSettings + serializedVersion: 3 + m_GIWorkflowMode: 1 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 0 + m_BakeBackend: 0 + m_LightmapMaxSize: 1024 + m_BakeResolution: 50 + m_Padding: 2 + m_TextureCompression: 0 + m_AO: 1 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 1 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 1 + 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: 512 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRMinBounces: 2 + m_PVREnvironmentMIS: 0 + m_PVRFilteringMode: 0 + 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/Project/Scenes/RotationControllerTest/Fipping PhoneSettings.lighting.meta b/Assets/Project/Scenes/RotationControllerTest/Fipping PhoneSettings.lighting.meta new file mode 100644 index 00000000..222bc985 --- /dev/null +++ b/Assets/Project/Scenes/RotationControllerTest/Fipping PhoneSettings.lighting.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 82bcfd04658187c4eb44662b18ad18ea +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 4890085278179872738 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Scenes/Test.unity b/Assets/Project/Scenes/Test.unity new file mode 100644 index 00000000..810e7acc --- /dev/null +++ b/Assets/Project/Scenes/Test.unity @@ -0,0 +1,522 @@ +%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: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 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!1001 &663888240 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 3062168236378660378, guid: 75afdb1f953b5ed4f9c18ba6b029ecae, + type: 3} + propertyPath: m_Name + value: MainCamera + objectReference: {fileID: 0} + - target: {fileID: 3062168236378660382, guid: 75afdb1f953b5ed4f9c18ba6b029ecae, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3062168236378660382, guid: 75afdb1f953b5ed4f9c18ba6b029ecae, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3062168236378660382, guid: 75afdb1f953b5ed4f9c18ba6b029ecae, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3062168236378660382, guid: 75afdb1f953b5ed4f9c18ba6b029ecae, + type: 3} + propertyPath: m_LocalPosition.z + value: -10 + objectReference: {fileID: 0} + - target: {fileID: 3062168236378660382, guid: 75afdb1f953b5ed4f9c18ba6b029ecae, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3062168236378660382, guid: 75afdb1f953b5ed4f9c18ba6b029ecae, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3062168236378660382, guid: 75afdb1f953b5ed4f9c18ba6b029ecae, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3062168236378660382, guid: 75afdb1f953b5ed4f9c18ba6b029ecae, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3062168236378660382, guid: 75afdb1f953b5ed4f9c18ba6b029ecae, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3062168236378660382, guid: 75afdb1f953b5ed4f9c18ba6b029ecae, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3062168236378660382, guid: 75afdb1f953b5ed4f9c18ba6b029ecae, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 75afdb1f953b5ed4f9c18ba6b029ecae, type: 3} +--- !u!1 &663888241 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 3062168236378660378, guid: 75afdb1f953b5ed4f9c18ba6b029ecae, + type: 3} + m_PrefabInstance: {fileID: 663888240} + m_PrefabAsset: {fileID: 0} +--- !u!114 &663888242 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 663888241} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 073797afb82c5a1438f328866b10b3f0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ComponentVersion: 1 + m_LightType: 4 + m_BlendStyleIndex: 0 + m_FalloffIntensity: 0.5 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 1 + m_LightVolumeIntensity: 0 + m_LightVolumeIntensityEnabled: 0 + m_ApplyToSortingLayers: 00000000 + m_LightCookieSprite: {fileID: 0} + m_DeprecatedPointLightCookieSprite: {fileID: 0} + m_LightOrder: 0 + m_OverlapOperation: 0 + m_NormalMapDistance: 3 + m_NormalMapQuality: 2 + m_UseNormalMap: 0 + m_ShadowIntensityEnabled: 0 + m_ShadowIntensity: 0 + m_ShadowVolumeIntensityEnabled: 0 + m_ShadowVolumeIntensity: 0 + m_Vertices: + - position: {x: 0, y: 0, z: 0} + color: {r: 0, g: 0, b: 0, a: 0} + uv: {x: 0, y: 0} + m_Triangles: 0000 + m_LocalBounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_PointLightInnerAngle: 360 + m_PointLightOuterAngle: 360 + m_PointLightInnerRadius: 0 + m_PointLightOuterRadius: 1 + m_ShapeLightParametricSides: 5 + m_ShapeLightParametricAngleOffset: 0 + m_ShapeLightParametricRadius: 1 + m_ShapeLightFalloffSize: 0.5 + m_ShapeLightFalloffOffset: {x: 0, y: 0} + m_ShapePath: + - {x: -0.5, y: -0.5, z: 0} + - {x: 0.5, y: -0.5, z: 0} + - {x: 0.5, y: 0.5, z: 0} + - {x: -0.5, y: 0.5, z: 0} +--- !u!1001 &956378672 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4763967880091695, guid: 5246ab3b0a4e35a4d876a3e32059717c, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 85152313754506678, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 505207126516942132, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 760925831165450865, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 874510926694736923, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 896120906640627943, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 896120906640627943, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_Parameters.colorGradient.key0.b + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 896120906640627943, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_Parameters.colorGradient.key0.g + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 896120906640627943, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_Parameters.colorGradient.key0.r + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 973781664439295301, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1240508008565092121, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1323540494993351275, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_Positions.Array.data[0].z + value: -0.2 + objectReference: {fileID: 0} + - target: {fileID: 1420592358885256687, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1958576970963449032, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2048717211375614830, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2331330867240891980, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2990799038394150970, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3492110053812920544, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3843781605867872969, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3946522825241358909, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4060701587476223987, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4228943393522577119, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4335415038549390017, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4664583409381600455, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5692307517634391176, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5810594951229872469, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_Name + value: GaussCannon + objectReference: {fileID: 0} + - target: {fileID: 5810594951229872469, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5817482711751204554, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5944165279527355673, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_Color.b + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5944165279527355673, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_Color.g + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5944165279527355673, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_Color.r + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5969139150647397623, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6177891780101686507, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7341688551777849792, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7475752626661969207, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7626122949391423833, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7777669498037966104, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7886585862220451945, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_Color.b + value: 0.97167933 + objectReference: {fileID: 0} + - target: {fileID: 7886585862220451945, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_Color.g + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7886585862220451945, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_Color.r + value: 0.3537736 + objectReference: {fileID: 0} + - target: {fileID: 8208093733467377764, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8208093733467377764, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8208093733467377764, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8208093733467377764, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8208093733467377764, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8208093733467377764, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8208093733467377764, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8208093733467377764, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8208093733467377764, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8208093733467377764, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8208093733467377764, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8444692700966640382, guid: 5246ab3b0a4e35a4d876a3e32059717c, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 5246ab3b0a4e35a4d876a3e32059717c, type: 3} diff --git a/Assets/Project/Scenes/Test.unity.meta b/Assets/Project/Scenes/Test.unity.meta new file mode 100644 index 00000000..6b421393 --- /dev/null +++ b/Assets/Project/Scenes/Test.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 62b12230898b52241a2a744ee17c57f9 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/AI/AIManager.cs b/Assets/Project/Source/AI/AIManager.cs index a1487212..33412178 100644 --- a/Assets/Project/Source/AI/AIManager.cs +++ b/Assets/Project/Source/AI/AIManager.cs @@ -1,36 +1,35 @@ using System.Collections.Generic; using UnityEngine; -namespace Exa.AI -{ - public class AIManager : MonoBehaviour - { +namespace Exa.AI { + public class AIManager : MonoBehaviour { [SerializeField] private int ticksPerSecond = 10; - private float elapsedSinceLastTick = 0f; - private float updateDeltaThreshold; private readonly List agents = new List(); + private float elapsedSinceLastTick; + private float updateDeltaThreshold; private void Awake() { updateDeltaThreshold = 1f / ticksPerSecond; } - public void Register(IAgent agent) { - agents.Add(agent); - } - - public void Unregister(IAgent agent) { - agents.Remove(agent); - } - private void Update() { if (elapsedSinceLastTick > updateDeltaThreshold) { - foreach (var agent in agents) + foreach (var agent in agents) { agent.AIUpdate(); + } elapsedSinceLastTick = 0f; } elapsedSinceLastTick += Time.deltaTime; } + + public void Register(IAgent agent) { + agents.Add(agent); + } + + public void Unregister(IAgent agent) { + agents.Remove(agent); + } } } \ No newline at end of file diff --git a/Assets/Project/Source/AI/ActionLane.cs b/Assets/Project/Source/AI/ActionLane.cs index 30f43b89..7a83d8f9 100644 --- a/Assets/Project/Source/AI/ActionLane.cs +++ b/Assets/Project/Source/AI/ActionLane.cs @@ -1,13 +1,11 @@ using System; -namespace Exa.AI -{ +namespace Exa.AI { [Flags] - public enum ActionLane : uint - { + public enum ActionLane : uint { None = 0, Movement = 1 << 0, AimTurrets = 1 << 1, - Rotation = 1 << 2, + Rotation = 1 << 2 } } \ No newline at end of file diff --git a/Assets/Project/Source/AI/ActionList.cs b/Assets/Project/Source/AI/ActionList.cs index e506167d..c0c08fc4 100644 --- a/Assets/Project/Source/AI/ActionList.cs +++ b/Assets/Project/Source/AI/ActionList.cs @@ -1,20 +1,27 @@ -using Exa.Utils; +using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; +using Exa.Utils; -namespace Exa.AI -{ - public class ActionList - { +namespace Exa.AI { + public class ActionList : IEnumerable { private readonly List actions; private readonly float priorityThreshold; - public ActionList(float priorityThreshold, IAction[] actions) { + public ActionList(float priorityThreshold, IEnumerable actions) { this.actions = new List(actions); this.priorityThreshold = priorityThreshold; } + public IEnumerator GetEnumerator() { + return actions.GetEnumerator(); + } + + IEnumerator IEnumerable.GetEnumerator() { + return GetEnumerator(); + } + public void Add(IAction action) { actions.Add(action); } @@ -28,8 +35,7 @@ public void RunActions() { if (shouldRun) { action.Blocking = action.Update(mask); mask |= action.Blocking; - } - else { + } else { action.Blocking = ActionLane.None; } } @@ -37,18 +43,23 @@ public void RunActions() { private IEnumerable SortActions() { return actions - .OrderByDescending(action => { - action.UpdatePriority(); - return action.Priority; - }) + .OrderByDescending( + action => { + action.UpdatePriority(); + + return action.Priority; + } + ) .Where(action => action.Priority > priorityThreshold); } public string ToString(int tabs = 0) { var sb = new StringBuilder(); + var tableString = actions .OrderByDescending(action => action.Priority) - .ToStringTable(new[] { + .ToStringTable( + new[] { "Action name", "Priority", "Blocking lane", @@ -57,8 +68,11 @@ public string ToString(int tabs = 0) { action => action.GetType().Name, action => action.Priority, action => action.Blocking, - action => action.DebugString); + action => action.DebugString + ); + sb.AppendLineIndented(tableString, tabs); + return sb.ToString(); } } diff --git a/Assets/Project/Source/AI/Actions/AAimAtClosestTarget.cs b/Assets/Project/Source/AI/Actions/AAimAtClosestTarget.cs index 3e56fba0..e43cec4e 100644 --- a/Assets/Project/Source/AI/Actions/AAimAtClosestTarget.cs +++ b/Assets/Project/Source/AI/Actions/AAimAtClosestTarget.cs @@ -1,34 +1,41 @@ -using Exa.Ships; +using Exa.Grids.Blocks.Components; +using Exa.Ships; using Exa.Ships.Targeting; -namespace Exa.AI.Actions -{ +namespace Exa.AI.Actions { // TODO: Implement a distance difference threshold that prevents already targeted ships from being untargeted too quickly - public class AAimAtClosestTarget : ShipAiAction - { - public override ActionLane Lanes => ActionLane.AimTurrets; - - private Ship enemyTarget = null; + public class AAimAtClosestTarget : GridAiAction { private readonly float detectionRadius; - internal AAimAtClosestTarget(Ship ship, float detectionRadius) - : base(ship) { + private GridInstance enemyTarget; + + internal AAimAtClosestTarget(GridInstance gridInstance, float detectionRadius) + : base(gridInstance) { this.detectionRadius = detectionRadius; } + public override ActionLane Lanes { + get => ActionLane.AimTurrets; + } + public override ActionLane Update(ActionLane blockedLanes) { var target = new ShipTarget(enemyTarget); - ship.BlockGrid.Metadata.TurretList.SetTarget(target); + + foreach (var turret in grid.BlockGrid.QueryLike()) { + if (turret.AutoFireEnabled) { + turret.Target = target; + } + } return ActionLane.AimTurrets; } protected override float CalculatePriority() { - var blockMask = new ShipMask(~ship.BlockContext); + var blockMask = (~grid.BlockContext).GetShipMask(); var closestDistance = float.MaxValue; - foreach (var enemy in ship.QueryNeighbours(detectionRadius, blockMask, true)) { - var distance = (enemy.transform.position - ship.transform.position).magnitude; + foreach (var enemy in grid.QueryNeighbours(detectionRadius, blockMask, true)) { + var distance = (enemy.transform.position - grid.transform.position).magnitude; if (distance < closestDistance) { closestDistance = distance; diff --git a/Assets/Project/Source/AI/Actions/AAvoidCollision.cs b/Assets/Project/Source/AI/Actions/AAvoidCollision.cs index 894c6f10..72b79b15 100644 --- a/Assets/Project/Source/AI/Actions/AAvoidCollision.cs +++ b/Assets/Project/Source/AI/Actions/AAvoidCollision.cs @@ -1,36 +1,36 @@ -using Exa.Grids.Blocks; +using System.Collections.Generic; +using Exa.Grids.Blocks; using Exa.Math; using Exa.Ships; using Exa.Ships.Targeting; -using System.Collections.Generic; using UnityEngine; -namespace Exa.AI.Actions -{ - public class AAvoidCollisionSettings - { +namespace Exa.AI.Actions { + public class AAvoidCollisionSettings { public float detectionRadius; - public float priorityMultiplier; - public float priorityBase; public float headingCorrectionMultiplier; + public float priorityBase; + public float priorityMultiplier; } // TODO: Use position prediction and target paths to increase accuracy - public class AAvoidCollision : ShipAiAction - { - public override ActionLane Lanes => ActionLane.Movement; - - private List neighbourCache; + public class AAvoidCollision : GridAiAction { private readonly AAvoidCollisionSettings settings; - internal AAvoidCollision(Ship ship, AAvoidCollisionSettings settings) - : base(ship) { + private List neighbourCache; + + internal AAvoidCollision(EnemyGrid grid, AAvoidCollisionSettings settings) + : base(grid) { this.settings = settings; } + public override ActionLane Lanes { + get => ActionLane.Movement; + } + public override ActionLane Update(ActionLane blockedLanes) { - var globalPos = ship.transform.position.ToVector2(); - var currentVel = ship.Rigidbody2D.velocity; + var globalPos = grid.transform.position.ToVector2(); + var currentVel = grid.Rigidbody2D.velocity; var headingVector = currentVel.normalized; foreach (var neighbour in neighbourCache) { @@ -40,26 +40,32 @@ public override ActionLane Update(ActionLane blockedLanes) { } headingVector = headingVector.normalized; - var offset = Vector2.ClampMagnitude(headingVector * settings.headingCorrectionMultiplier, - settings.detectionRadius); + + var offset = Vector2.ClampMagnitude( + headingVector * settings.headingCorrectionMultiplier, + settings.detectionRadius + ); + var target = new StaticPositionTarget(globalPos + offset); - ship.Navigation.MoveTo = target; + grid.Navigation.MoveTo = target; return ActionLane.Movement; } // TODO: Improve detection of large ships, as this only registers other ships whose centre overlaps the detection radius protected override float CalculatePriority() { - var globalPos = ship.transform.position; - var shipMask = new ShipMask(~BlockContext.None); + var globalPos = grid.transform.position; + var shipMask = (~BlockContext.None).GetShipMask(); var shortestDistance = float.MaxValue; neighbourCache?.Clear(); - neighbourCache = neighbourCache ?? new List(); + neighbourCache = neighbourCache ?? new List(); - foreach (var neighbour in ship.QueryNeighbours(settings.detectionRadius, shipMask)) { - if (!ShouldYield(neighbour)) continue; + foreach (var neighbour in grid.QueryNeighbours(settings.detectionRadius, shipMask)) { + if (!ShouldYield(neighbour)) { + continue; + } var neighbourPos = neighbour.transform.position; var dist = (globalPos - neighbourPos).magnitude; @@ -76,28 +82,31 @@ protected override float CalculatePriority() { } // Calculate the priority value due to distance to the shortest - var distancePriority = (settings.detectionRadius - shortestDistance) / settings.detectionRadius * - settings.priorityMultiplier; + var distancePriority = (settings.detectionRadius - shortestDistance) / + settings.detectionRadius * + settings.priorityMultiplier; return distancePriority + settings.priorityBase; } - private void MofidyHeading(ref Vector2 heading, Vector2 direction, Ship other) { - if (!ShouldYield(other)) return; + private void MofidyHeading(ref Vector2 heading, Vector2 direction, GridInstance other) { + if (!ShouldYield(other)) { + return; + } var headingModification = direction / settings.detectionRadius; heading -= headingModification; } - private bool ShouldYield(Ship other) { - var thisMass = ship.Blueprint.Blocks.Totals.Mass; - var otherMass = other.Blueprint.Blocks.Totals.Mass; + private bool ShouldYield(GridInstance other) { + var thisMass = grid.BlockGrid.GetTotals().Mass; + var otherMass = other.BlockGrid.GetTotals().Mass; if (otherMass != thisMass) { return otherMass > thisMass; } - return other.GetInstanceID() > ship.GetInstanceID(); + return other.GetInstanceID() > grid.GetInstanceID(); } } } \ No newline at end of file diff --git a/Assets/Project/Source/AI/Actions/ALookAtTarget.cs b/Assets/Project/Source/AI/Actions/ALookAtTarget.cs index b2a75d56..6f591e55 100644 --- a/Assets/Project/Source/AI/Actions/ALookAtTarget.cs +++ b/Assets/Project/Source/AI/Actions/ALookAtTarget.cs @@ -1,21 +1,24 @@ using Exa.Ships; using Exa.Ships.Targeting; -namespace Exa.AI -{ - public class ALookAtTarget : ShipAiAction - { - public override ActionLane Lanes => ActionLane.Rotation; +namespace Exa.AI { + public class ALookAtTarget : GridAiAction { + internal ALookAtTarget(EnemyGrid grid) + : base(grid) { } - public ITarget Target { get; set; } = null; + public override ActionLane Lanes { + get => ActionLane.Rotation; + } - internal ALookAtTarget(Ship ship) - : base(ship) { } + public ITarget Target { get; set; } = null; public override ActionLane Update(ActionLane blockedLanes) { - if (Target == null) return ActionLane.None; + if (Target == null) { + return ActionLane.None; + } + + grid.Navigation.LookAt = Target; - ship.Navigation.LookAt = Target; return ActionLane.Rotation; } diff --git a/Assets/Project/Source/AI/Actions/AMoveToTarget.cs b/Assets/Project/Source/AI/Actions/AMoveToTarget.cs index fa8595e3..c5d6011c 100644 --- a/Assets/Project/Source/AI/Actions/AMoveToTarget.cs +++ b/Assets/Project/Source/AI/Actions/AMoveToTarget.cs @@ -1,21 +1,24 @@ using Exa.Ships; using Exa.Ships.Targeting; -namespace Exa.AI.Actions -{ - public class AMoveToTarget : ShipAiAction - { - public override ActionLane Lanes => ActionLane.Movement; +namespace Exa.AI.Actions { + public class AMoveToTarget : GridAiAction { + internal AMoveToTarget(EnemyGrid grid) + : base(grid) { } - public ITarget Target { get; set; } = null; + public override ActionLane Lanes { + get => ActionLane.Movement; + } - internal AMoveToTarget(Ship ship) - : base(ship) { } + public ITarget Target { get; set; } = null; public override ActionLane Update(ActionLane blockedLanes) { - if (Target == null) return ActionLane.None; + if (Target == null) { + return ActionLane.None; + } + + grid.Navigation.MoveTo = Target; - ship.Navigation.MoveTo = Target; return ActionLane.Movement; } diff --git a/Assets/Project/Source/AI/Agent.cs b/Assets/Project/Source/AI/Agent.cs index b12370d3..15a14baf 100644 --- a/Assets/Project/Source/AI/Agent.cs +++ b/Assets/Project/Source/AI/Agent.cs @@ -1,17 +1,16 @@ using Exa.SceneManagement; using UnityEngine; -namespace Exa.AI -{ - public abstract class Agent : MonoBehaviour, IAgent - { +namespace Exa.AI { + public abstract class Agent : MonoBehaviour, IAgent { protected virtual void OnEnable() { - GameSystems.AI.Register(this); + GS.AI.Register(this); } protected virtual void OnDisable() { - if (GameSystems.Instance != null && GameSystems.AI != null && !GameSystems.AI.GetParentSceneIsUnloading()) - GameSystems.AI.Unregister(this); + if (GS.Instance != null && GS.AI != null && !GS.AI.GetParentSceneIsUnloading()) { + GS.AI.Unregister(this); + } } public abstract void AIUpdate(); diff --git a/Assets/Project/Source/AI/EnemyAi.cs b/Assets/Project/Source/AI/EnemyAi.cs new file mode 100644 index 00000000..fd477cd5 --- /dev/null +++ b/Assets/Project/Source/AI/EnemyAi.cs @@ -0,0 +1,25 @@ +using System.Collections.Generic; +using System.Linq; +using Exa.AI.Actions; +using Exa.Ships; + +namespace Exa.AI { + public class EnemyAi : GridAi { + protected override IEnumerable BuildActionList() { + return base.BuildActionList() + .Append(new ALookAtTarget(GridInstance as EnemyGrid)) + .Append(new AMoveToTarget(GridInstance as EnemyGrid)) + .Append( + new AAvoidCollision( + GridInstance as EnemyGrid, + new AAvoidCollisionSettings { + detectionRadius = GridInstance.BlockGrid.MaxSize, + priorityMultiplier = 1, + priorityBase = 10, + headingCorrectionMultiplier = 8 + } + ) + ); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/AI/EnemyAi.cs.meta b/Assets/Project/Source/AI/EnemyAi.cs.meta new file mode 100644 index 00000000..4d818167 --- /dev/null +++ b/Assets/Project/Source/AI/EnemyAi.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d3fbde347d383324aac239bb7faf9ba4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/AI/GridAi.cs b/Assets/Project/Source/AI/GridAi.cs new file mode 100644 index 00000000..e542e448 --- /dev/null +++ b/Assets/Project/Source/AI/GridAi.cs @@ -0,0 +1,51 @@ +using System; +using System.Collections.Generic; +using Exa.AI.Actions; +using Exa.Ships; +using Exa.UI.Tooltips; +using UnityEngine; + +#pragma warning disable CS0649 + +namespace Exa.AI { + public class GridAi : Agent { + [SerializeField] private GridInstance gridInstance; + [SerializeField] private float activeValueThreshold; + private ActionList actionList; + + public GridInstance GridInstance { + get => gridInstance; + } + + public void Init() { + actionList = new ActionList(activeValueThreshold, BuildActionList()); + } + + public override void AIUpdate() { + actionList.RunActions(); + } + + public T GetAction() + where T : class, IAction { + foreach (var action in actionList) { + if (action is T convertedAction) { + return convertedAction; + } + } + + throw new InvalidOperationException($"Cannot find action of type {typeof(T)}"); + } + + protected virtual IEnumerable BuildActionList() { + return new IAction[] { + new AAimAtClosestTarget(GridInstance, 200f) + }; + } + + public IEnumerable GetDebugTooltipComponents() { + return new ITooltipComponent[] { + new TooltipText(actionList.ToString()) + }; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/AI/ShipAI.cs.meta b/Assets/Project/Source/AI/GridAi.cs.meta similarity index 100% rename from Assets/Project/Source/AI/ShipAI.cs.meta rename to Assets/Project/Source/AI/GridAi.cs.meta diff --git a/Assets/Project/Source/AI/IAction.cs b/Assets/Project/Source/AI/IAction.cs index 2934b55c..eb2bfce1 100644 --- a/Assets/Project/Source/AI/IAction.cs +++ b/Assets/Project/Source/AI/IAction.cs @@ -1,33 +1,31 @@ -namespace Exa.AI -{ - public interface IAction - { +namespace Exa.AI { + public interface IAction { ///

- /// The lanes required for an action to be updated + /// The lanes required for an action to be updated /// ActionLane Lanes { get; } /// - /// The lanes that this action blocks + /// The lanes that this action blocks /// ActionLane Blocking { get; set; } /// - /// The priority of this action + /// The priority of this action /// float Priority { get; } string DebugString { get; } /// - /// Update the action + /// Update the action /// /// Currently blocked lanes on the action list /// The lanes that this action has blocked ActionLane Update(ActionLane blockedLanes); /// - /// Updates the priority of the action + /// Updates the priority of the action /// void UpdatePriority(); } diff --git a/Assets/Project/Source/AI/IAgent.cs b/Assets/Project/Source/AI/IAgent.cs index 07e90d63..351c37bf 100644 --- a/Assets/Project/Source/AI/IAgent.cs +++ b/Assets/Project/Source/AI/IAgent.cs @@ -1,7 +1,5 @@ -namespace Exa.AI -{ - public interface IAgent - { +namespace Exa.AI { + public interface IAgent { void AIUpdate(); } } \ No newline at end of file diff --git a/Assets/Project/Source/AI/ShipAI.cs b/Assets/Project/Source/AI/ShipAI.cs deleted file mode 100644 index 65aa5ab8..00000000 --- a/Assets/Project/Source/AI/ShipAI.cs +++ /dev/null @@ -1,50 +0,0 @@ -using Exa.AI.Actions; -using Exa.Ships; -using Exa.UI.Tooltips; -using System.Collections.Generic; -using UnityEngine; - -#pragma warning disable CS0649 - -namespace Exa.AI -{ - public class ShipAi : Agent - { - public AAimAtClosestTarget aimAtTarget; - public ALookAtTarget lookAtTarget; - public AMoveToTarget moveToTarget; - public AAvoidCollision avoidCollision; - - [SerializeField] private Ship ship; - [SerializeField] private float activeValueThreshold; - private ActionList actionList; - - public Ship Ship => ship; - - public void Init() { - actionList = BuildActionList(); - } - - public override void AIUpdate() { - actionList.RunActions(); - } - - protected virtual ActionList BuildActionList() { - return new ActionList(activeValueThreshold, new IAction[] { - aimAtTarget = new AAimAtClosestTarget(Ship, 200f), - lookAtTarget = new ALookAtTarget(Ship), - moveToTarget = new AMoveToTarget(Ship), - avoidCollision = new AAvoidCollision(Ship, new AAvoidCollisionSettings { - detectionRadius = Ship.BlockGrid.MaxSize, - priorityMultiplier = 1, - priorityBase = 10, - headingCorrectionMultiplier = 8 - }) - }); - } - - public IEnumerable GetDebugTooltipComponents() => new ITooltipComponent[] { - new TooltipText(actionList.ToString()) - }; - } -} \ No newline at end of file diff --git a/Assets/Project/Source/AI/ShipAIAction.cs b/Assets/Project/Source/AI/ShipAIAction.cs index 5b29c0a3..0e4356c6 100644 --- a/Assets/Project/Source/AI/ShipAIAction.cs +++ b/Assets/Project/Source/AI/ShipAIAction.cs @@ -1,20 +1,21 @@ using Exa.Ships; -namespace Exa.AI -{ - public abstract class ShipAiAction : IAction - { - protected Ship ship; +namespace Exa.AI { + public abstract class GridAiAction : GridAiAction + where T : GridInstance { + protected T grid; + internal GridAiAction(T grid) { + this.grid = grid; + } + } + + public abstract class GridAiAction : IAction { public abstract ActionLane Lanes { get; } public ActionLane Blocking { get; set; } public float Priority { get; private set; } public string DebugString { get; protected set; } - internal ShipAiAction(Ship ship) { - this.ship = ship; - } - public abstract ActionLane Update(ActionLane blockedLanes); public void UpdatePriority() { diff --git a/Assets/Project/Source/Audio/AudioManager.cs b/Assets/Project/Source/Audio/AudioManager.cs index b331e789..91571e38 100644 --- a/Assets/Project/Source/Audio/AudioManager.cs +++ b/Assets/Project/Source/Audio/AudioManager.cs @@ -1,53 +1,49 @@ using System; -using Exa.Audio.Music; using System.Collections.Generic; +using Exa.Audio.Music; using UnityEngine; -namespace Exa.Audio -{ - public class AudioManager : MonoBehaviour - { - public SoundBag soundBag; - public MusicTrack ST_AudioTrack; - public AudioTrack UI_SFX_AudioTrack; +namespace Exa.Audio { + public class AudioManager : MonoBehaviour { + [SerializeField] private SoundBag soundBag; + [SerializeField] private AtmosphereTrigger defaultTrigger; + [SerializeField] private MusicPlayerGroup ST_AudioTrack; + [SerializeField] private AudioPlayerGroup UI_SFX_AudioTrack; private readonly Dictionary soundById = new Dictionary(); - private void Awake() { + public MusicPlayerGroup Music { + get => ST_AudioTrack; + } + + public AudioPlayerGroup Effects { + get => UI_SFX_AudioTrack; + } + + public void Init() { foreach (var sound in soundBag) { Register(sound); } + + defaultTrigger.gameObject.SetActive(true); } - /// - /// Play a sound with the given id - /// - /// - public void PlayGlobal(string soundId) { - if (!soundById.ContainsKey(soundId)) { - UnityEngine.Debug.LogError($"{soundId} doesn't exist"); - return; - } - - var sound = soundById[soundId]; - - GetTrack(sound.audioType).PlayGlobal(sound); + public void PlayGlobal(Sound sound, float progress = 0f) { + GetTrack(sound.AudioType).PlayGlobal(sound, progress); } public void Register(Sound sound) { - soundById[sound.id] = sound; - GetTrack(sound.audioType).Register(sound); + soundById[sound.Id] = sound; + GetTrack(sound.AudioType)?.Register(sound); } - - private AudioTrack GetTrack(AudioType audioType) - { - if (audioType == AudioType.ST) - return ST_AudioTrack; - - if (audioType == AudioType.UI_SFX) - return UI_SFX_AudioTrack; - throw new ArgumentException("Invalid audioType given", nameof(audioType)); + private AudioPlayerGroup GetTrack(AudioType audioType) { + return audioType switch { + AudioType.Soundtrack => ST_AudioTrack, + AudioType.InterfaceSFX => UI_SFX_AudioTrack, + AudioType.GameplaySFX => null, + _ => throw new ArgumentException("Invalid audioType given", nameof(audioType)) + }; } } } \ No newline at end of file diff --git a/Assets/Project/Source/Audio/AudioPlayerGroup.cs b/Assets/Project/Source/Audio/AudioPlayerGroup.cs new file mode 100644 index 00000000..c95245d1 --- /dev/null +++ b/Assets/Project/Source/Audio/AudioPlayerGroup.cs @@ -0,0 +1,88 @@ +using System.Collections; +using System.Collections.Generic; +using Exa.Utils; +using UnityEngine; +using UnityEngine.Audio; + +#pragma warning disable CS0649 + +namespace Exa.Audio { + public class AudioPlayerGroup : MonoBehaviour, ITrackContext { + [SerializeField] private string volumeKey; + [SerializeField] private AudioMixerGroup audioMixerGroup; + + // Stores a handle group for the currently playing sounds of the given id + protected SoundHandleGroupDictionary handles = new SoundHandleGroupDictionary(); + + // Stores an audio source for sound on the track + protected Dictionary players = new Dictionary(); + + // Set the volume of an audio track using a 0-1 based float range + public float Volume { + set { + // Convert linear to logarithmic + var actualVolume = value > 0.001f + ? Mathf.Log(value) * 20 + : -80; + + audioMixerGroup.audioMixer.SetFloat(volumeKey, actualVolume); + } + } + + public void RegisterHandle(SoundHandle soundHandle) { + soundHandle.RegisterHandle(handles); + } + + public void StopAllSounds() { + handles.Stop(); + } + + /// + /// Plays an audio object on this track + /// + /// Audio object to be played + /// Progress + public SoundHandle PlayGlobal(ISound sound, float progress = 0f) { + // Get a handle for the sound, play it, and add it to the collection + var handle = GetGlobalHandle(sound); + + // Return the handle to the caller + handle.Play(this, progress); + + return handle; + } + + /// + /// Registers a sound on this track + /// + /// + public void Register(ISound sound) { + var go = new GameObject($"Player: {sound.Id}"); + go.transform.SetParent(transform); + var source = go.AddComponent(); + source.outputAudioMixerGroup = audioMixerGroup; + players[sound.Id] = source; + handles.RegisterGroup(sound.Id); + } + + public void Clear() { + players.Values.ForEach(player => player.gameObject.Destroy()); + players.Clear(); + handles.Clear(); + } + + /// + /// Generates the handle for the sound that needs to be played + /// + /// + /// + private SoundHandle GetGlobalHandle(ISound sound) { + var source = players[sound.Id]; + + return new SoundHandle { + audioSource = source, + sound = sound + }; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Audio/AudioTrack.cs.meta b/Assets/Project/Source/Audio/AudioPlayerGroup.cs.meta similarity index 100% rename from Assets/Project/Source/Audio/AudioTrack.cs.meta rename to Assets/Project/Source/Audio/AudioPlayerGroup.cs.meta diff --git a/Assets/Project/Source/Audio/AudioTrack.cs b/Assets/Project/Source/Audio/AudioTrack.cs deleted file mode 100644 index d3e02ae0..00000000 --- a/Assets/Project/Source/Audio/AudioTrack.cs +++ /dev/null @@ -1,111 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; -using UnityEngine.Audio; - -#pragma warning disable CS0649 - -namespace Exa.Audio -{ - public class AudioTrack : MonoBehaviour, ITrackContext - { - [SerializeField] private string volumeKey; - [SerializeField] private AudioMixerGroup audioMixerGroup; - - // Stores a handle group for the currently playing sounds of the given id - protected SoundHandleGroupDictionary handleGroups = new SoundHandleGroupDictionary(); - - // Stores an audio source for sound on the track - protected Dictionary players = new Dictionary(); - - // Set the volume of an audio track using a 0-1 based float range - public float Volume { - set { - // Convert linear to logarithmic - var actualVolume = value > 0.001f - ? Mathf.Log(value) * 20 - : -80; - - audioMixerGroup.audioMixer.SetFloat(volumeKey, actualVolume); - } - } - - /// - /// Plays an audio object on this track - /// - /// Audio object to be played - public SoundHandle PlayGlobal(Sound sound) { - // Get a handle for the sound, play it, and add it to the collection - var handle = GetGlobalHandle(sound); - - // Return the handle to the caller - handle.Play(this); - - return handle; - } - - /// - /// Registers a sound on this track - /// - /// - public void Register(Sound sound) { - var source = gameObject.AddComponent(); - source.outputAudioMixerGroup = audioMixerGroup; - players[sound.id] = source; - - handleGroups.RegisterGroup(sound.id); - } - - public void RegisterHandle(SoundHandle handle) { - // Remove the handle for the sound after finishing playing - var endRoutine = Systems.Instance.StartCoroutine(WaitForSoundEnd(handle)); - - handle.onStop.AddListener(() => { - handle.onEnd.Invoke(); - handleGroups.Remove(handle); - StopCoroutine(endRoutine); - }); - - handleGroups.Add(handle); - } - - public void StopAllSounds() { - foreach (var group in handleGroups.Handles) { - group.Stop(); - } - } - - /// - /// Generates the handle for the sound that needs to be played - /// - /// - /// - private SoundHandle GetGlobalHandle(Sound sound) { - var source = players[sound.id]; - - var handle = new SoundHandle { - audioSource = source, - sound = sound - }; - - return handle; - } - - /// - /// Waits for a sound to end, - /// assumes a sound - /// - /// - /// - private IEnumerator WaitForSoundEnd(SoundHandle handle) { - // Wait for the sound to play - yield return new WaitForSeconds(handle.sound.audioClip.length - handle.audioSource.time); - - // Remove context from currently playing sounds - handleGroups.Remove(handle); - - // Invoke the on end callback on the sound handle - handle.onEnd?.Invoke(); - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Audio/AudioType.cs b/Assets/Project/Source/Audio/AudioType.cs index 261de87c..9ecac882 100644 --- a/Assets/Project/Source/Audio/AudioType.cs +++ b/Assets/Project/Source/Audio/AudioType.cs @@ -1,15 +1,10 @@ -namespace Exa.Audio -{ - public enum AudioType - { - /// - /// Defines a soundtrack audio type - /// - ST, +using System; - /// - /// Defines a soundtrack audio type - /// - UI_SFX +namespace Exa.Audio { + [Flags] + public enum AudioType { + Soundtrack = 1 << 0, + InterfaceSFX = 1 << 1, + GameplaySFX = 1 << 2, } } \ No newline at end of file diff --git a/Assets/Project/Source/Audio/GlobalAudioPlayerProxy.cs b/Assets/Project/Source/Audio/GlobalAudioPlayerProxy.cs index ad600e91..98bb01ea 100644 --- a/Assets/Project/Source/Audio/GlobalAudioPlayerProxy.cs +++ b/Assets/Project/Source/Audio/GlobalAudioPlayerProxy.cs @@ -1,11 +1,9 @@ using UnityEngine; -namespace Exa.Audio -{ - public class GlobalAudioPlayerProxy : MonoBehaviour - { - public void Play(string soundId) { - Systems.Audio.PlayGlobal(soundId); +namespace Exa.Audio { + public class GlobalAudioPlayerProxy : MonoBehaviour { + public void Play(Sound sound) { + S.Audio.PlayGlobal(sound); } } } \ No newline at end of file diff --git a/Assets/Project/Source/Audio/ISound.cs b/Assets/Project/Source/Audio/ISound.cs new file mode 100644 index 00000000..ace76ea5 --- /dev/null +++ b/Assets/Project/Source/Audio/ISound.cs @@ -0,0 +1,10 @@ +using UnityEngine; + +namespace Exa.Audio { + public interface ISound { + public AudioType AudioType { get; } + public string Id { get; } + public AudioClip AudioClip { get; } + public SoundConfig Config { get; } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Audio/ISound.cs.meta b/Assets/Project/Source/Audio/ISound.cs.meta new file mode 100644 index 00000000..57a48c0b --- /dev/null +++ b/Assets/Project/Source/Audio/ISound.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1f7a272854c72ca4bbcc24c270a35d20 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Audio/ITrackContext.cs b/Assets/Project/Source/Audio/ITrackContext.cs index d148621a..cbd15fe5 100644 --- a/Assets/Project/Source/Audio/ITrackContext.cs +++ b/Assets/Project/Source/Audio/ITrackContext.cs @@ -1,21 +1,19 @@ -namespace Exa.Audio -{ +namespace Exa.Audio { /// - /// Supports managing the events for a given sound handle + /// Supports managing the events for a given sound handle /// - public interface ITrackContext - { + public interface ITrackContext { /// - /// Registers a sound on the track context - /// - /// This is used to setup the events for the handle - /// + /// Registers a sound on the track context + /// + /// This is used to setup the events for the handle + /// /// /// Sound handle to register void RegisterHandle(SoundHandle soundHandle); /// - /// Stops all the sounds in the audio track + /// Stops all the sounds in the audio track /// void StopAllSounds(); } diff --git a/Assets/Project/Source/Audio/LocalAudioPlayerProxy.cs b/Assets/Project/Source/Audio/LocalAudioPlayerProxy.cs new file mode 100644 index 00000000..55133a16 --- /dev/null +++ b/Assets/Project/Source/Audio/LocalAudioPlayerProxy.cs @@ -0,0 +1,59 @@ +using Exa.Types.Generics; +using UnityEditor; +using UnityEngine; + +namespace Exa.Audio { + public class LocalAudioPlayerProxy : MonoBehaviour, ITrackContext { + [SerializeField] private SerializableDictionary players; + private SoundHandleGroupDictionary handles; + + public SoundHandleGroupDictionary Handles { + get => handles; + } + + private void Awake() { + handles = new SoundHandleGroupDictionary(); + + foreach (var sound in players.Keys) { + handles.RegisterGroup(sound.Id); + } + } + + public SoundHandle Play(Sound sound, float progress = 0f) { + var handler = new SoundHandle { + sound = sound, + audioSource = players[sound] + }; + + handler.Play(this, progress); + + return handler; + } + + public void RegisterHandle(SoundHandle soundHandle) { + soundHandle.RegisterHandle(handles); + } + + public void StopAllSounds() { + handles.Stop(); + } + + #if UNITY_EDITOR + [ContextMenu(nameof(GenerateAudioSources))] + public void GenerateAudioSources() { + foreach (var sound in players.Keys) { + var player = players[sound]; + + if (player == null) { + player = gameObject.AddComponent(); + players[sound] = player; + } + + player.clip = sound.AudioClip; + } + + EditorUtility.SetDirty(gameObject); + } + #endif + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Audio/LocalAudioPlayerProxy.cs.meta b/Assets/Project/Source/Audio/LocalAudioPlayerProxy.cs.meta new file mode 100644 index 00000000..ed328f6c --- /dev/null +++ b/Assets/Project/Source/Audio/LocalAudioPlayerProxy.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: b75b37b68fe44970bb1b6951421d88fd +timeCreated: 1630441790 \ No newline at end of file diff --git a/Assets/Project/Source/Audio/Music/AtmosphereOverrideList.cs b/Assets/Project/Source/Audio/Music/AtmosphereOverrideList.cs new file mode 100644 index 00000000..0319b8f3 --- /dev/null +++ b/Assets/Project/Source/Audio/Music/AtmosphereOverrideList.cs @@ -0,0 +1,14 @@ +using System; +using System.Linq; +using Exa.Types.Generics; + +namespace Exa.Audio.Music { + public class AtmosphereOverrideList : OverrideList { + public AtmosphereOverrideList(Atmosphere defaultValue, Action onValueChange) + : base(defaultValue, onValueChange) { } + + protected override Atmosphere SelectValue() { + return overrides.Aggregate(Atmosphere.None, (atmosphere, valueOverride) => atmosphere | valueOverride.Value); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Audio/Music/AtmosphereOverrideList.cs.meta b/Assets/Project/Source/Audio/Music/AtmosphereOverrideList.cs.meta new file mode 100644 index 00000000..d4d394b6 --- /dev/null +++ b/Assets/Project/Source/Audio/Music/AtmosphereOverrideList.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1bc4e8fb569780e408c007461d43adbc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Audio/Music/AtmosphereTrigger.cs b/Assets/Project/Source/Audio/Music/AtmosphereTrigger.cs index dc1b796b..e5273754 100644 --- a/Assets/Project/Source/Audio/Music/AtmosphereTrigger.cs +++ b/Assets/Project/Source/Audio/Music/AtmosphereTrigger.cs @@ -1,29 +1,12 @@ -using System.Collections; -using UnityEngine; +using Exa.Types.Generics; -namespace Exa.Audio.Music -{ +namespace Exa.Audio.Music { /// - /// Sets the current atmosphere when enabled + /// Sets the current atmosphere when enabled /// - public class AtmosphereTrigger : MonoBehaviour - { - [SerializeField] private Atmosphere targetAtmosphere = Atmosphere.None; - [SerializeField] private bool triggerOnEnable = false; - - private void OnEnable() { - if (triggerOnEnable) - StartCoroutine(DelayedSetAtmosphere()); - } - - public void Trigger() { - Systems.Audio.ST_AudioTrack.SetAtmosphere(targetAtmosphere); - } - - private IEnumerator DelayedSetAtmosphere() { - yield return null; - - Trigger(); + public class AtmosphereTrigger : MonoOverride { + protected override OverrideList GetPath() { + return S.Audio.Music.Atmospheres; } } } \ No newline at end of file diff --git a/Assets/Project/Source/Audio/Music/CustomSoundTracks.meta b/Assets/Project/Source/Audio/Music/CustomSoundTracks.meta new file mode 100644 index 00000000..c08542d8 --- /dev/null +++ b/Assets/Project/Source/Audio/Music/CustomSoundTracks.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5b56711865d6c1b47bc4932cccdb5102 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Audio/Music/CustomSoundTracks/CustomSong.cs b/Assets/Project/Source/Audio/Music/CustomSoundTracks/CustomSong.cs new file mode 100644 index 00000000..91b10ed9 --- /dev/null +++ b/Assets/Project/Source/Audio/Music/CustomSoundTracks/CustomSong.cs @@ -0,0 +1,25 @@ +using UnityEngine; + +namespace Exa.Audio.Music { + public class CustomSong : ISong { + public CustomSong(AudioClip audioClip, CustomSongMetadata metadata) { + Id = metadata.Name; + AudioClip = audioClip; + + Config = new SoundConfig { + volume = metadata.Volume + }; + + AtmosphereFilter = metadata.Atmospheres; + } + + public AudioType AudioType { + get => AudioType.Soundtrack; + } + + public string Id { get; } + public AudioClip AudioClip { get; } + public SoundConfig Config { get; } + public Atmosphere AtmosphereFilter { get; } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Audio/Music/CustomSoundTracks/CustomSong.cs.meta b/Assets/Project/Source/Audio/Music/CustomSoundTracks/CustomSong.cs.meta new file mode 100644 index 00000000..89fe635d --- /dev/null +++ b/Assets/Project/Source/Audio/Music/CustomSoundTracks/CustomSong.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 269718a0d967ca4469ea568c1f120148 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Audio/Music/CustomSoundTracks/CustomSongMetadata.cs b/Assets/Project/Source/Audio/Music/CustomSoundTracks/CustomSongMetadata.cs new file mode 100644 index 00000000..11808891 --- /dev/null +++ b/Assets/Project/Source/Audio/Music/CustomSoundTracks/CustomSongMetadata.cs @@ -0,0 +1,8 @@ +namespace Exa.Audio.Music { + public class CustomSongMetadata { + public string Name { get; set; } + public string FileName { get; set; } + public Atmosphere Atmospheres { get; set; } = Atmosphere.All; + public float Volume { get; set; } = 1f; + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Audio/Music/CustomSoundTracks/CustomSongMetadata.cs.meta b/Assets/Project/Source/Audio/Music/CustomSoundTracks/CustomSongMetadata.cs.meta new file mode 100644 index 00000000..18d4e0ef --- /dev/null +++ b/Assets/Project/Source/Audio/Music/CustomSoundTracks/CustomSongMetadata.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: da39fa79cae66ce4fbf01c114631a4a3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Audio/Music/CustomSoundTracks/CustomSoundTrack.cs b/Assets/Project/Source/Audio/Music/CustomSoundTracks/CustomSoundTrack.cs new file mode 100644 index 00000000..5fd98fe0 --- /dev/null +++ b/Assets/Project/Source/Audio/Music/CustomSoundTracks/CustomSoundTrack.cs @@ -0,0 +1,22 @@ +using System.Collections; +using System.Collections.Generic; + +namespace Exa.Audio.Music { + public class CustomSoundTrack : ISoundTrack { + public CustomSoundTrack(IList songs, ISoundTrackDescription description) { + Songs = songs; + Description = description; + } + + public IList Songs { get; } + public ISoundTrackDescription Description { get; } + + public IEnumerator GetEnumerator() { + return Songs.GetEnumerator(); + } + + IEnumerator IEnumerable.GetEnumerator() { + return GetEnumerator(); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Audio/Music/CustomSoundTracks/CustomSoundTrack.cs.meta b/Assets/Project/Source/Audio/Music/CustomSoundTracks/CustomSoundTrack.cs.meta new file mode 100644 index 00000000..4e972aaf --- /dev/null +++ b/Assets/Project/Source/Audio/Music/CustomSoundTracks/CustomSoundTrack.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d71d40b3b3b88ef469b33d05e550d1ba +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Audio/Music/CustomSoundTracks/CustomSoundTrackDescription.cs b/Assets/Project/Source/Audio/Music/CustomSoundTracks/CustomSoundTrackDescription.cs new file mode 100644 index 00000000..de7cf5ae --- /dev/null +++ b/Assets/Project/Source/Audio/Music/CustomSoundTracks/CustomSoundTrackDescription.cs @@ -0,0 +1,118 @@ +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using Exa.IO; +using Ionic.Zip; +using UnityEngine; +using UnityEngine.Networking; +using CompressionLevel = Ionic.Zlib.CompressionLevel; + +namespace Exa.Audio.Music { + public class CustomSoundTrackDescription : ISoundTrackDescription { + private static readonly IEnumerable SupportedAudioTypes = new[] { + ".wav" + }; + private static readonly string ConfigName = "config.json"; + + private readonly CustomSoundTrackMetadata metadata; + private readonly string path; + + public CustomSoundTrackDescription(string path) { + this.path = path; + + metadata = GetMetadata(path); + } + + public string Name { + get => metadata.Name; + } + + public int SongCount { + get => metadata.Songs.Count(); + } + + public void LoadSoundTrack(SoundTrackLoadHandler loadHandler) { + var zip = ZipFile.Read(path); + var songList = new List(); + var soundTrack = new CustomSoundTrack(songList, this); + loadHandler.LoadEnumerator = LoadFiles(metadata, zip, loadHandler, soundTrack); + } + + public IEnumerator LoadFiles(CustomSoundTrackMetadata metadata, ZipFile zip, SoundTrackLoadHandler loadHandler, ISoundTrack target) { + loadHandler.Progress.Report(0f); + + var zipEntries = zip.Entries.ToDictionary(entry => entry.FileName); + var songCount = (float) metadata.Songs.Count(); + var count = 0f; + + yield return new WaitForEndOfFrame(); + + foreach (var songMetadata in metadata.Songs) { + using var stream = zipEntries[songMetadata.FileName].GetStream(); + var fileName = Path.GetTempFileName(); + File.WriteAllBytes(fileName, stream.ToArray()); + + yield return new WaitForEndOfFrame(); + + var www = UnityWebRequestMultimedia.GetAudioClip(fileName, UnityEngine.AudioType.WAV); + var request = www.SendWebRequest(); + + while (!request.isDone) { + loadHandler.Progress.Report(count / songCount + request.progress / songCount); + + yield return new WaitForEndOfFrame(); + } + + var clip = DownloadHandlerAudioClip.GetContent(www); + + File.Delete(fileName); + + target.Songs.Add(new CustomSong(clip, songMetadata)); + loadHandler.Progress.Report(++count / songCount); + } + + loadHandler.OutputSoundtrack = target; + } + + private CustomSoundTrackMetadata GetMetadata(string path) { + using var zip = ZipFile.Read(path); + zip.CompressionLevel = CompressionLevel.BestCompression; + var configEntry = zip.Entries.FirstOrDefault(entry => entry.FileName == ConfigName); + + return configEntry == null + ? GenerateMetadata(zip) + : configEntry.ReadJson(SerializationMode.Readable); + } + + private CustomSoundTrackMetadata GenerateMetadata(ZipFile zip) { + var name = Path.GetFileNameWithoutExtension(zip.Name); + + var songs = zip.Entries.Filter(SupportedAudioTypes) + .Select( + entry => new CustomSongMetadata { + Name = Path.GetFileNameWithoutExtension(entry.FileName), + FileName = entry.FileName, + Atmospheres = Atmosphere.All, + Volume = 1f + } + ); + + var metadata = new CustomSoundTrackMetadata { + Name = name, + Songs = songs.ToList() + }; + + AppendMetadata(zip, metadata); + + return metadata; + } + + private void AppendMetadata(ZipFile file, CustomSoundTrackMetadata metadata) { + var json = IOUtils.ToJson(metadata, SerializationMode.Readable); + file.AddEntry(ConfigName, Encoding.UTF8.GetBytes(json)); + file.Save(); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Audio/Music/CustomSoundTracks/CustomSoundTrackDescription.cs.meta b/Assets/Project/Source/Audio/Music/CustomSoundTracks/CustomSoundTrackDescription.cs.meta new file mode 100644 index 00000000..5025fec6 --- /dev/null +++ b/Assets/Project/Source/Audio/Music/CustomSoundTracks/CustomSoundTrackDescription.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 052abd9fc7b58734c825095fc9cdc9ea +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Audio/Music/CustomSoundTracks/CustomSoundTrackMetadata.cs b/Assets/Project/Source/Audio/Music/CustomSoundTracks/CustomSoundTrackMetadata.cs new file mode 100644 index 00000000..18e0baf6 --- /dev/null +++ b/Assets/Project/Source/Audio/Music/CustomSoundTracks/CustomSoundTrackMetadata.cs @@ -0,0 +1,8 @@ +using System.Collections.Generic; + +namespace Exa.Audio.Music { + public class CustomSoundTrackMetadata { + public string Name { get; set; } + public IEnumerable Songs { get; set; } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Audio/Music/CustomSoundTracks/CustomSoundTrackMetadata.cs.meta b/Assets/Project/Source/Audio/Music/CustomSoundTracks/CustomSoundTrackMetadata.cs.meta new file mode 100644 index 00000000..5c672e32 --- /dev/null +++ b/Assets/Project/Source/Audio/Music/CustomSoundTracks/CustomSoundTrackMetadata.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 20a9522cde6854c42970ded971d10d6b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Audio/Music/DefaultSoundTrack.cs b/Assets/Project/Source/Audio/Music/DefaultSoundTrack.cs new file mode 100644 index 00000000..c3ceb017 --- /dev/null +++ b/Assets/Project/Source/Audio/Music/DefaultSoundTrack.cs @@ -0,0 +1,20 @@ +using System.Collections.Generic; +using Exa.Types.Generics; +using UnityEngine; + +namespace Exa.Audio.Music { + [CreateAssetMenu(menuName = "Audio/TrackList")] + public class DefaultSoundTrack : ScriptableObjectBag, ISoundTrack { + private void OnEnable() { + Songs = new List(objects); + Description = new DefaultSoundTrackDescription(this); + } + + public IList Songs { get; private set; } + public ISoundTrackDescription Description { get; private set; } + + IEnumerator IEnumerable.GetEnumerator() { + return GetEnumerator(); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Audio/Music/TrackList.cs.meta b/Assets/Project/Source/Audio/Music/DefaultSoundTrack.cs.meta similarity index 100% rename from Assets/Project/Source/Audio/Music/TrackList.cs.meta rename to Assets/Project/Source/Audio/Music/DefaultSoundTrack.cs.meta diff --git a/Assets/Project/Source/Audio/Music/DefaultSoundTrackDescription.cs b/Assets/Project/Source/Audio/Music/DefaultSoundTrackDescription.cs new file mode 100644 index 00000000..f0bf5090 --- /dev/null +++ b/Assets/Project/Source/Audio/Music/DefaultSoundTrackDescription.cs @@ -0,0 +1,33 @@ +using System.Collections; +using System.Linq; +using UnityEngine; + +namespace Exa.Audio.Music { + public class DefaultSoundTrackDescription : ISoundTrackDescription { + private readonly ISoundTrack soundTrack; + + public DefaultSoundTrackDescription(ISoundTrack soundTrack) { + this.soundTrack = soundTrack; + } + + public string Name { + get => "Default soundtrack"; + } + + public int SongCount { + get => soundTrack.Count(); + } + + public void LoadSoundTrack(SoundTrackLoadHandler loadHandler) { + loadHandler.LoadEnumerator = Load(loadHandler); + loadHandler.Progress.Report(0f); + } + + private IEnumerator Load(SoundTrackLoadHandler loadHandler) { + yield return new WaitForSeconds(0.5f); + + loadHandler.Progress.Report(1f); + loadHandler.OutputSoundtrack = soundTrack; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Audio/Music/DefaultSoundTrackDescription.cs.meta b/Assets/Project/Source/Audio/Music/DefaultSoundTrackDescription.cs.meta new file mode 100644 index 00000000..1bf14cbd --- /dev/null +++ b/Assets/Project/Source/Audio/Music/DefaultSoundTrackDescription.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e65c624cdca543d4a8234ef37741d463 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Audio/Music/ISong.cs b/Assets/Project/Source/Audio/Music/ISong.cs new file mode 100644 index 00000000..280d02b1 --- /dev/null +++ b/Assets/Project/Source/Audio/Music/ISong.cs @@ -0,0 +1,5 @@ +namespace Exa.Audio.Music { + public interface ISong : ISound { + public Atmosphere AtmosphereFilter { get; } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Audio/Music/ISong.cs.meta b/Assets/Project/Source/Audio/Music/ISong.cs.meta new file mode 100644 index 00000000..e2bb64f5 --- /dev/null +++ b/Assets/Project/Source/Audio/Music/ISong.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: df94dc73723857148b7931ee3e1eb016 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Audio/Music/ISoundTrack.cs b/Assets/Project/Source/Audio/Music/ISoundTrack.cs new file mode 100644 index 00000000..176d5095 --- /dev/null +++ b/Assets/Project/Source/Audio/Music/ISoundTrack.cs @@ -0,0 +1,18 @@ +using System.Collections.Generic; +using System.Linq; +using Exa.Utils; + +namespace Exa.Audio.Music { + public interface ISoundTrack : IEnumerable { + public IList Songs { get; } + public ISoundTrackDescription Description { get; } + } + + public static class ISoundTrackExtensions { + public static ISong SelectSong(this ISoundTrack soundTrack, Atmosphere currentAtmosphere) { + return soundTrack + .Where(sound => sound.AtmosphereFilter.HasAnyValue(currentAtmosphere)) + .GetRandomElement(); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Audio/Music/ISoundTrack.cs.meta b/Assets/Project/Source/Audio/Music/ISoundTrack.cs.meta new file mode 100644 index 00000000..e22f8b8a --- /dev/null +++ b/Assets/Project/Source/Audio/Music/ISoundTrack.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 71d5111c5860d23439713d1dc781245e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Audio/Music/ISoundTrackDescription.cs b/Assets/Project/Source/Audio/Music/ISoundTrackDescription.cs new file mode 100644 index 00000000..8cfa5ed1 --- /dev/null +++ b/Assets/Project/Source/Audio/Music/ISoundTrackDescription.cs @@ -0,0 +1,19 @@ +using Exa.Types.Generics; + +namespace Exa.Audio.Music { + public interface ISoundTrackDescription { + public string Name { get; } + public int SongCount { get; } + + public void LoadSoundTrack(SoundTrackLoadHandler loadHandler); + } + + public static class ISoundTrackDescriptionExtensions { + public static ILabeledValue GetLabeledValue(this ISoundTrackDescription description) { + return new LabeledValue { + Label = description.Name, + Value = description.Name + }; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Audio/Music/ISoundTrackDescription.cs.meta b/Assets/Project/Source/Audio/Music/ISoundTrackDescription.cs.meta new file mode 100644 index 00000000..2d0fc9ea --- /dev/null +++ b/Assets/Project/Source/Audio/Music/ISoundTrackDescription.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fd98ff4a66d4cdf459d2ea84b3cb8260 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Audio/Music/MusicPlayerGroup.cs b/Assets/Project/Source/Audio/Music/MusicPlayerGroup.cs new file mode 100644 index 00000000..5ed58175 --- /dev/null +++ b/Assets/Project/Source/Audio/Music/MusicPlayerGroup.cs @@ -0,0 +1,94 @@ +using System; +using Exa.Utils; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using UnityEngine; + +#pragma warning disable CS0649 + +namespace Exa.Audio.Music { + [Flags] + [JsonConverter(typeof(StringEnumConverter))] + public enum Atmosphere { + None = 1 << 0, + MainMenu = 1 << 1, + Combat = 1 << 2, + All = ~0 + } + + public class MusicPlayerGroup : AudioPlayerGroup { + [SerializeField] private SoundTrackProvider soundTrackProvider; + + private Atmosphere atmosphere = Atmosphere.None; + private SoundHandle currentSoundHandle; + private ISoundTrack currentSoundtrack; + private bool isPlaying; + + public ISoundTrack CurrentSoundtrack { + get => currentSoundtrack; + set { + if (value == currentSoundtrack) { + return; + } + + IsPlaying = false; + currentSoundtrack = value; + + Clear(); + value.ForEach(Register); + } + } + + public bool IsPlaying { + get => isPlaying; + set { + if (!isPlaying && value) { + Play(); + } + + if (isPlaying && !value) { + Stop(); + } + + isPlaying = value; + } + } + + public SoundTrackProvider Provider { + get => soundTrackProvider; + } + + public AtmosphereOverrideList Atmospheres { get; private set; } + + private void Awake() { + Atmospheres = new AtmosphereOverrideList(Atmosphere.None, SetAtmosphere); + } + + private void SetAtmosphere(Atmosphere atmosphere) { + this.atmosphere = atmosphere; + + if (currentSoundHandle?.sound is ISong song && song.AtmosphereFilter.HasValue(atmosphere) && isPlaying) { + Stop(); + Play(); + } + } + + private void Play() { + if (currentSoundtrack.SelectSong(atmosphere).IsNotNull(out var song)) { + currentSoundHandle = PlayGlobal(song); + currentSoundHandle.onEnd.AddListener(Play); + S.UI.Logger.NotifyNowPlaying(song.Id); + } else { + var message = $"Cannot select a song from the current soundtrack {currentSoundtrack.Description.Name}, " + + $"as it probably doesn't have a song for the atmosphere {atmosphere}"; + + throw new InvalidOperationException(message); + } + } + + private void Stop() { + currentSoundHandle?.Stop(); + currentSoundHandle = null; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Audio/Music/MusicTrack.cs.meta b/Assets/Project/Source/Audio/Music/MusicPlayerGroup.cs.meta similarity index 100% rename from Assets/Project/Source/Audio/Music/MusicTrack.cs.meta rename to Assets/Project/Source/Audio/Music/MusicPlayerGroup.cs.meta diff --git a/Assets/Project/Source/Audio/Music/MusicTrack.cs b/Assets/Project/Source/Audio/Music/MusicTrack.cs deleted file mode 100644 index 942aea62..00000000 --- a/Assets/Project/Source/Audio/Music/MusicTrack.cs +++ /dev/null @@ -1,61 +0,0 @@ -using UnityEngine; - -#pragma warning disable CS0649 - -namespace Exa.Audio.Music -{ - public enum Atmosphere - { - MainMenu, - None - } - - public class MusicTrack : AudioTrack - { - [SerializeField] private TrackList MainMenuTrackList; - private Atmosphere activeAtmosphere = Atmosphere.None; - - public void SetAtmosphere(Atmosphere atmosphere) { - if (activeAtmosphere == atmosphere) return; - - // Fade out the current atmosphere - ProcessOldAtmosphere(activeAtmosphere); - - // Fade in the new atmosphere - ProcessNewAtmosphere(atmosphere); - - activeAtmosphere = atmosphere; - } - - private void ProcessNewAtmosphere(Atmosphere newAtmosphere) { - // since no sounds are related to this atmosphere, Atmosphere.None is just a no-op - if (newAtmosphere == Atmosphere.None) return; - - // Get the tracklist, select a track and play it - var trackList = GetTrackList(newAtmosphere); - var track = trackList.SelectSound(); - var handle = PlayGlobal(track); - trackList.activeHandle = handle; - } - - private void ProcessOldAtmosphere(Atmosphere oldAtmosphere) { - // since no sounds are related to this atmosphere, Atmosphere.None is just a no-op - if (oldAtmosphere == Atmosphere.None) return; - - // Get the tracklist and stop the current playing track - var trackList = GetTrackList(oldAtmosphere); - var handle = trackList.activeHandle; - handle?.Stop(); - } - - private TrackList GetTrackList(Atmosphere atmosphere) { - switch (atmosphere) { - case Atmosphere.MainMenu: - return MainMenuTrackList; - - default: - return null; - } - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Audio/Music/Song.cs b/Assets/Project/Source/Audio/Music/Song.cs new file mode 100644 index 00000000..81662a45 --- /dev/null +++ b/Assets/Project/Source/Audio/Music/Song.cs @@ -0,0 +1,12 @@ +using UnityEngine; + +namespace Exa.Audio.Music { + [CreateAssetMenu(menuName = "Audio/Song")] + public class Song : Sound, ISong { + [SerializeField] private Atmosphere atmosphereFilter; + + public Atmosphere AtmosphereFilter { + get => atmosphereFilter; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Audio/Music/Song.cs.meta b/Assets/Project/Source/Audio/Music/Song.cs.meta new file mode 100644 index 00000000..77ce9bc1 --- /dev/null +++ b/Assets/Project/Source/Audio/Music/Song.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5b97a06f550f0ad4bb81dfdca4af6fdc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Audio/Music/SoundTrackProvider.cs b/Assets/Project/Source/Audio/Music/SoundTrackProvider.cs new file mode 100644 index 00000000..1e03c7f0 --- /dev/null +++ b/Assets/Project/Source/Audio/Music/SoundTrackProvider.cs @@ -0,0 +1,44 @@ +using System.Collections.Generic; +using System.Linq; +using Exa.Types.Generics; +using UnityEngine; +using Tree = Exa.IO.Tree; + +namespace Exa.Audio.Music { + public class SoundTrackProvider : MonoBehaviour { + [SerializeField] private DefaultSoundTrack defaultSoundTrack; + public LazyCache> descriptionsBackingField; + + public ISoundTrackDescription DefaultSoundTrack { + get => defaultSoundTrack.Description; + } + + public IEnumerable Descriptions { + get => descriptionsBackingField.Value; + } + + private void Awake() { + descriptionsBackingField = new LazyCache>(() => { return GetSoundTrackDescriptions().ToList(); }); + } + + private IEnumerable GetSoundTrackDescriptions() { + yield return new DefaultSoundTrackDescription(defaultSoundTrack); + + foreach (var file in Tree.Root.CustomSoundTracks.GetFiles("*.zip")) { + yield return new CustomSoundTrackDescription(file); + } + } + + public bool HasSoundTrack(string soundTrackName) { + return Descriptions.Any(description => description.Name == soundTrackName); + } + + public ISoundTrackDescription Find(string soundTrackName) { + if (string.IsNullOrEmpty(soundTrackName)) { + return null; + } + + return Descriptions.FirstOrDefault(description => description.Name == soundTrackName); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Audio/Music/SoundTrackProvider.cs.meta b/Assets/Project/Source/Audio/Music/SoundTrackProvider.cs.meta new file mode 100644 index 00000000..e85f5408 --- /dev/null +++ b/Assets/Project/Source/Audio/Music/SoundTrackProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 27a459d32b3d0c64f99cc6cf4b480a63 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Audio/Music/TrackList.cs b/Assets/Project/Source/Audio/Music/TrackList.cs deleted file mode 100644 index 31807634..00000000 --- a/Assets/Project/Source/Audio/Music/TrackList.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System.Collections.Generic; -using UnityEngine; - -namespace Exa.Audio.Music -{ - [CreateAssetMenu(menuName = "Audio/TrackList")] - public class TrackList : ScriptableObject - { - public List tracks; - public SoundHandle activeHandle; - - public Sound SelectSound() { - var random = new System.Random(); - var index = random.Next(tracks.Count); - return tracks[index]; - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Audio/Sound.cs b/Assets/Project/Source/Audio/Sound.cs index ba0353da..4221ee47 100644 --- a/Assets/Project/Source/Audio/Sound.cs +++ b/Assets/Project/Source/Audio/Sound.cs @@ -1,46 +1,30 @@ using UnityEngine; -namespace Exa.Audio -{ +namespace Exa.Audio { /// - /// Supports an audioclip with additional properties that gives audio tracks more context + /// Supports an audioclip with additional properties that gives audio tracks more context /// [CreateAssetMenu(menuName = "Audio/Sound")] - public class Sound : ScriptableObject - { - /// - /// Global audio identifier - /// - public string id; + public class Sound : ScriptableObject, ISound { + [SerializeField] private string id; + [SerializeField] private AudioType audioType; + [SerializeField] private AudioClip audioClip; + [SerializeField] private SoundConfig soundConfig; - /// - /// Type of the audio object - /// - public AudioType audioType; + public string Id { + get => id; + } - /// - /// Clip of the audio object - /// - public AudioClip audioClip; + public AudioType AudioType { + get => audioType; + } - /// - /// Volume the clip should be played at - /// - public float volume = 1f; + public AudioClip AudioClip { + get => audioClip; + } - /// - /// Pitch the clip should be played at - /// - public float pitch = 1f; - - /// - /// Wether or not it cancels other sounds playing on the current track - /// - public bool allowMultipleOnTrack = true; - - /// - /// Wether or not multiple sounds of this type can be played simoultaniously - /// - public bool allowMultipleOfType = true; + public SoundConfig Config { + get => soundConfig; + } } } \ No newline at end of file diff --git a/Assets/Project/Source/Audio/SoundBag.cs b/Assets/Project/Source/Audio/SoundBag.cs index eb38c01e..77fd577c 100644 --- a/Assets/Project/Source/Audio/SoundBag.cs +++ b/Assets/Project/Source/Audio/SoundBag.cs @@ -1,11 +1,18 @@ -using Exa.Generics; -using System; +using System; +using System.Collections.Generic; +using System.Linq; +using Exa.Types.Generics; +using Exa.Utils; using UnityEngine; -namespace Exa.Audio -{ +namespace Exa.Audio { [CreateAssetMenu(menuName = "Audio/SoundBag")] [Serializable] - public class SoundBag : ScriptableObjectBag - { } + public class SoundBag : ScriptableObjectBag { + [SerializeField] private AudioType filter; + + protected override IEnumerable GetAllInstances() { + return base.GetAllInstances().Where(sound => filter.HasValue(sound.AudioType)); + } + } } \ No newline at end of file diff --git a/Assets/Project/Source/Audio/SoundConfig.cs b/Assets/Project/Source/Audio/SoundConfig.cs new file mode 100644 index 00000000..77ab04c7 --- /dev/null +++ b/Assets/Project/Source/Audio/SoundConfig.cs @@ -0,0 +1,11 @@ +using System; + +namespace Exa.Audio { + [Serializable] + public class SoundConfig { + public float volume = 1f; + public float pitch = 1f; + public bool allowMultipleOfType = true; + public bool oneShot = true; + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Audio/SoundConfig.cs.meta b/Assets/Project/Source/Audio/SoundConfig.cs.meta new file mode 100644 index 00000000..d6329214 --- /dev/null +++ b/Assets/Project/Source/Audio/SoundConfig.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 78bc9717aa73dc14e93cc36098ce681f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Audio/SoundHandle.cs b/Assets/Project/Source/Audio/SoundHandle.cs index 1c294dc0..4f16fb4b 100644 --- a/Assets/Project/Source/Audio/SoundHandle.cs +++ b/Assets/Project/Source/Audio/SoundHandle.cs @@ -1,50 +1,45 @@ -using UnityEngine; +using System.Collections; +using Exa.Utils; +using UnityEngine; using UnityEngine.Events; -namespace Exa.Audio -{ +namespace Exa.Audio { /// - /// Defines a handle for a single sound + /// Defines a handle for a single sound /// - public class SoundHandle - { + public class SoundHandle { public AudioSource audioSource; - public Sound sound; - /// - /// Is invoked when played - /// - public UnityEvent onPlay = new UnityEvent(); + private ITrackContext context; /// - /// Is invoked when the sound ends or is stopped + /// Is invoked when the sound ends or is stopped /// public UnityEvent onEnd = new UnityEvent(); /// - /// Is invoked when the sound is manually stopped + /// Is invoked when the sound is manually stopped /// public UnityEvent onStop = new UnityEvent(); + public ISound sound; - private ITrackContext context; - - public void Play(ITrackContext playableContext) { + public void Play(ITrackContext playableContext, float progress) { context = playableContext; - if (!sound.allowMultipleOnTrack) { + if (!sound.Config.allowMultipleOfType) { context.StopAllSounds(); } - if (sound.allowMultipleOfType) { - audioSource.PlayOneShot(sound.audioClip, sound.volume); - } - else { - audioSource.clip = sound.audioClip; - audioSource.volume = sound.volume; + if (sound.Config.oneShot) { + audioSource.PlayOneShot(sound.AudioClip, sound.Config.volume); + } else { + audioSource.clip = sound.AudioClip; + audioSource.volume = sound.Config.volume; + audioSource.time = progress * sound.AudioClip.length; audioSource.Play(); } - audioSource.pitch = sound.pitch; + audioSource.pitch = sound.Config.pitch; context.RegisterHandle(this); } @@ -53,5 +48,37 @@ public void Stop() { onStop?.Invoke(); audioSource.Stop(); } + + public void RegisterHandle(SoundHandleGroupDictionary handles) { + // Remove the handle for the sound after finishing playing + var endRoutine = WaitForSoundEnd(handles).Start(S.Audio); + + onStop.AddListener( + () => { + handles.Remove(this); + onEnd.Invoke(); + S.Audio.StopCoroutine(endRoutine); + } + ); + + handles.Add(this); + } + + /// + /// Waits for a sound to end, + /// assumes a sound + /// + /// + /// + public IEnumerator WaitForSoundEnd(SoundHandleGroupDictionary handles) { + // Wait for the sound to play + yield return new WaitForSeconds(sound.AudioClip.length - audioSource.time); + + // Remove context from currently playing sounds + handles.Remove(this); + + // Invoke the on end callback on the sound handle + onEnd?.Invoke(); + } } } \ No newline at end of file diff --git a/Assets/Project/Source/Audio/SoundHandleGroup.cs b/Assets/Project/Source/Audio/SoundHandleGroup.cs index 4a765741..54ea4b5e 100644 --- a/Assets/Project/Source/Audio/SoundHandleGroup.cs +++ b/Assets/Project/Source/Audio/SoundHandleGroup.cs @@ -1,17 +1,16 @@ using System.Collections.Generic; +using System.Linq; -namespace Exa.Audio -{ +namespace Exa.Audio { /// - /// Supports a collection of sound handle context objects + /// Supports a collection of sound handle context objects /// - public class SoundHandleGroup : List - { + public class SoundHandleGroup : List { /// - /// Stop every sound + /// Stop every sound /// public void Stop() { - foreach (var handle in this) { + foreach (var handle in this.ToList()) { handle.Stop(); } } diff --git a/Assets/Project/Source/Audio/SoundHandleGroupDictionary.cs b/Assets/Project/Source/Audio/SoundHandleGroupDictionary.cs index ffcdf85d..8b3a2caf 100644 --- a/Assets/Project/Source/Audio/SoundHandleGroupDictionary.cs +++ b/Assets/Project/Source/Audio/SoundHandleGroupDictionary.cs @@ -1,25 +1,33 @@ using System.Collections.Generic; -namespace Exa.Audio -{ - public class SoundHandleGroupDictionary - { +namespace Exa.Audio { + public class SoundHandleGroupDictionary { private readonly Dictionary dict = new Dictionary(); + public IEnumerable Handles { + get => dict.Values; + } + public void Add(SoundHandle handle) { - dict[handle.sound.id].Add(handle); + dict[handle.sound.Id].Add(handle); } public void Remove(SoundHandle handle) { - dict[handle.sound.id].Remove(handle); + dict[handle.sound.Id].Remove(handle); } public void RegisterGroup(string id) { dict[id] = new SoundHandleGroup(); } - public IEnumerable Handles { - get => dict.Values; + public void Stop() { + foreach (var group in Handles) { + group.Stop(); + } + } + + public void Clear() { + dict.Clear(); } } } \ No newline at end of file diff --git a/Assets/Project/Source/Audio/SoundTrackLoadHandler.cs b/Assets/Project/Source/Audio/SoundTrackLoadHandler.cs new file mode 100644 index 00000000..89ffe72d --- /dev/null +++ b/Assets/Project/Source/Audio/SoundTrackLoadHandler.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections; +using Exa.Audio.Music; + +namespace Exa.Audio { + public class SoundTrackLoadHandler { + public IProgress Progress { get; set; } + public IEnumerator LoadEnumerator { get; set; } + public ISoundTrack OutputSoundtrack { get; set; } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Audio/SoundTrackLoadHandler.cs.meta b/Assets/Project/Source/Audio/SoundTrackLoadHandler.cs.meta new file mode 100644 index 00000000..9406437d --- /dev/null +++ b/Assets/Project/Source/Audio/SoundTrackLoadHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f803f33ebeecf584c9229716cad07369 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/ShipEditor.meta b/Assets/Project/Source/BlueprintEditor.meta similarity index 100% rename from Assets/Project/Source/ShipEditor.meta rename to Assets/Project/Source/BlueprintEditor.meta diff --git a/Assets/Project/Source/BlueprintEditor/BlockFlip.cs b/Assets/Project/Source/BlueprintEditor/BlockFlip.cs new file mode 100644 index 00000000..4f669232 --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/BlockFlip.cs @@ -0,0 +1,11 @@ +using System; + +namespace Exa.ShipEditor { + [Flags] + public enum BlockFlip { + None = 0, + FlipX = 1 << 0, + FlipY = 2 << 0, + Both = FlipX | FlipY + } +} \ No newline at end of file diff --git a/Assets/Project/Source/BlueprintEditor/BlockFlip.cs.meta b/Assets/Project/Source/BlueprintEditor/BlockFlip.cs.meta new file mode 100644 index 00000000..e887691f --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/BlockFlip.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 80877294c585ddc4f92767d149ff2977 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/BlueprintEditor/EditorCameraTarget.cs b/Assets/Project/Source/BlueprintEditor/EditorCameraTarget.cs new file mode 100644 index 00000000..832f5675 --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/EditorCameraTarget.cs @@ -0,0 +1,13 @@ +using Exa.Camera; +using UnityEngine; + +namespace Exa.ShipEditor { + public class EditorCameraTarget : CameraTarget { + public EditorCameraTarget(CameraTargetSettings settings) + : base(settings) { } + + public override Vector2 GetWorldPosition() { + return Vector2.zero; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/BlueprintEditor/EditorCameraTarget.cs.meta b/Assets/Project/Source/BlueprintEditor/EditorCameraTarget.cs.meta new file mode 100644 index 00000000..488cc03a --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/EditorCameraTarget.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 6837e60465214810acda50bf0c1688ce +timeCreated: 1615148634 \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/EditorGrid.meta b/Assets/Project/Source/BlueprintEditor/EditorGrid.meta similarity index 100% rename from Assets/Project/Source/ShipEditor/EditorGrid.meta rename to Assets/Project/Source/BlueprintEditor/EditorGrid.meta diff --git a/Assets/Project/Source/BlueprintEditor/EditorGrid/BackgroundLayer.meta b/Assets/Project/Source/BlueprintEditor/EditorGrid/BackgroundLayer.meta new file mode 100644 index 00000000..f4dbd9ee --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/EditorGrid/BackgroundLayer.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9b69e81953de8854e9ad6a0752cdb45e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/BlueprintEditor/EditorGrid/BackgroundLayer/EditorGridBackgroundItem.cs b/Assets/Project/Source/BlueprintEditor/EditorGrid/BackgroundLayer/EditorGridBackgroundItem.cs new file mode 100644 index 00000000..f847d96b --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/EditorGrid/BackgroundLayer/EditorGridBackgroundItem.cs @@ -0,0 +1,17 @@ +using UnityEngine; + +#pragma warning disable CS0649 + +namespace Exa.ShipEditor { + public class EditorGridBackgroundItem : MonoBehaviour { + [SerializeField] private SpriteRenderer spriteRenderer; + [SerializeField] private Color defaultColor; + [SerializeField] private Color hoverColor; + + public Vector2Int GridPosition { get; set; } + + public void SetColor(bool enabled) { + spriteRenderer.color = enabled ? hoverColor : defaultColor; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/BlueprintEditor/EditorGrid/BackgroundLayer/EditorGridBackgroundItem.cs.meta b/Assets/Project/Source/BlueprintEditor/EditorGrid/BackgroundLayer/EditorGridBackgroundItem.cs.meta new file mode 100644 index 00000000..10599d43 --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/EditorGrid/BackgroundLayer/EditorGridBackgroundItem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: be2011b4cb3f3dd4691c5089770e0fae +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/ShipEditor/EditorGrid/EditorGridBackgroundLayer.cs b/Assets/Project/Source/BlueprintEditor/EditorGrid/BackgroundLayer/EditorGridBackgroundLayer.cs similarity index 75% rename from Assets/Project/Source/ShipEditor/EditorGrid/EditorGridBackgroundLayer.cs rename to Assets/Project/Source/BlueprintEditor/EditorGrid/BackgroundLayer/EditorGridBackgroundLayer.cs index 0553efd5..5a809fb6 100644 --- a/Assets/Project/Source/ShipEditor/EditorGrid/EditorGridBackgroundLayer.cs +++ b/Assets/Project/Source/BlueprintEditor/EditorGrid/BackgroundLayer/EditorGridBackgroundLayer.cs @@ -1,28 +1,21 @@ -using Exa.Math; +using System.Collections.Generic; +using Exa.Math; using Exa.Utils; -using System.Collections.Generic; using UnityEngine; -using UnityEngine.InputSystem; #pragma warning disable CS0649 -namespace Exa.ShipEditor -{ +namespace Exa.ShipEditor { public delegate void HoverDelegate(Vector2Int? gridItem); public delegate void ExitDelegate(); - public class EditorGridBackgroundLayer : MonoBehaviour - { - public event HoverDelegate EnterGrid; - - public event ExitDelegate ExitGrid; - + public class EditorGridBackgroundLayer : MonoBehaviour { [SerializeField] private GameObject gridItemPrefab; - private KeyValuePair? currActiveGridItem; - private readonly Dictionary - gridItems = new Dictionary(); + private readonly Dictionary + gridItems = new Dictionary(); + private KeyValuePair? currActiveGridItem; private Vector2Int size = Vector2Int.zero; @@ -33,6 +26,9 @@ private void OnDisable() { } } + public event HoverDelegate EnterGrid; + public event ExitDelegate ExitGrid; + public void SetGridBackgroundItemColor(Vector2Int? gridPos, bool active) { var realGridPos = gridPos.GetValueOrDefault(); @@ -40,7 +36,9 @@ public void SetGridBackgroundItemColor(Vector2Int? gridPos, bool active) { } public void GenerateGrid(Vector2Int size) { - if (this.size == size) return; + if (this.size == size) { + return; + } this.size = size; @@ -49,9 +47,9 @@ public void GenerateGrid(Vector2Int size) { gridItems.Clear(); foreach (var vector in MathUtils.EnumerateVectors(size)) { - var gridItemGO = Instantiate(gridItemPrefab, transform); - gridItemGO.transform.localPosition = vector.ToVector3(); - var gridItem = gridItemGO.GetComponent(); + var gridItem = gridItemPrefab.Create(transform); + gridItem.transform.localPosition = vector.ToVector3(); + gridItem.GridPosition = vector; gridItems.Add(vector, gridItem); } } @@ -74,8 +72,9 @@ public void UpdateCurrActiveGridItem(Vector2 playerPos) { // If no currently active grid item has been set if (currActiveGridItem == null) { - currActiveGridItem = new KeyValuePair(gridPos, gridItem); + currActiveGridItem = new KeyValuePair(gridPos, gridItem); EnterGrid?.Invoke(gridPos); + return; } @@ -83,11 +82,13 @@ public void UpdateCurrActiveGridItem(Vector2 playerPos) { var lastGridPos = currActiveGridItem.GetValueOrDefault().Key; var lastGridItem = currActiveGridItem?.Value; - if (lastGridPos == gridPos) return; + if (lastGridPos == gridPos) { + return; + } // Grid item events EnterGrid?.Invoke(gridPos); - currActiveGridItem = new KeyValuePair(gridPos, gridItem); + currActiveGridItem = new KeyValuePair(gridPos, gridItem); } public bool PosIsInGrid(Vector2Int pos) { @@ -100,7 +101,7 @@ public bool PosIsInGrid(Vector2Int pos) { private Vector2Int GetGridPosFromMousePos(Vector2 playerPos) { // Get grid position from world position mouse - var screenPoint = Camera.main.ScreenToWorldPoint(Mouse.current.position.ReadValue()); + var screenPoint = S.Input.MouseWorldPoint; var posXFloor = Mathf.FloorToInt(screenPoint.x - playerPos.x + 0.5f); var posYFloor = Mathf.FloorToInt(screenPoint.y - playerPos.y + 0.5f); diff --git a/Assets/Project/Source/ShipEditor/EditorGrid/EditorGridBackgroundLayer.cs.meta b/Assets/Project/Source/BlueprintEditor/EditorGrid/BackgroundLayer/EditorGridBackgroundLayer.cs.meta similarity index 83% rename from Assets/Project/Source/ShipEditor/EditorGrid/EditorGridBackgroundLayer.cs.meta rename to Assets/Project/Source/BlueprintEditor/EditorGrid/BackgroundLayer/EditorGridBackgroundLayer.cs.meta index fdbe5a1f..438141d3 100644 --- a/Assets/Project/Source/ShipEditor/EditorGrid/EditorGridBackgroundLayer.cs.meta +++ b/Assets/Project/Source/BlueprintEditor/EditorGrid/BackgroundLayer/EditorGridBackgroundLayer.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: dc6c2862bff6d1d4f8260812fe6b2417 +guid: 4ba9dda985693f24bb22a74bf63f3d9f MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Project/Source/BlueprintEditor/EditorGrid/BlueprintLayer.meta b/Assets/Project/Source/BlueprintEditor/EditorGrid/BlueprintLayer.meta new file mode 100644 index 00000000..9286c17d --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/EditorGrid/BlueprintLayer.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ce6b5ae8523cee2469b88643879cf487 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/BlueprintEditor/EditorGrid/BlueprintLayer/EditorGridBlueprintLayer.cs b/Assets/Project/Source/BlueprintEditor/EditorGrid/BlueprintLayer/EditorGridBlueprintLayer.cs new file mode 100644 index 00000000..dfe3908f --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/EditorGrid/BlueprintLayer/EditorGridBlueprintLayer.cs @@ -0,0 +1,76 @@ +using System.Collections.Generic; +using Exa.Grids.Blueprints; +using Exa.Utils; +using UnityEngine; +using UnityEngine.Events; + +#pragma warning disable CS0649 + +namespace Exa.ShipEditor { + public class EditorGridBlueprintLayer : MonoBehaviour { + public UnityEvent onBlueprintChanged; + [SerializeField] private GridEditorStopwatch stopwatch; + [SerializeField] private EditorGrid editorGrid; + + private Dictionary blocksByBlueprintAnchor = new Dictionary(); + + public Blueprint ActiveBlueprint { get; private set; } + + private void OnDisable() { + transform.SetActiveChildren(false); + + blocksByBlueprintAnchor = new Dictionary(); + } + + public void Import(Blueprint blueprint) { + ActiveBlueprint = blueprint; + + foreach (var block in blueprint.Grid) { + PlaceBlock(block); + } + } + + public void AddBlock(ABpBlock block) { + // Reset the stopwatch timer used by the shipeditor to time blueprint grid validation + stopwatch.Reset(); + PlaceBlock(block); + ActiveBlueprint.Add(block); + onBlueprintChanged?.Invoke(); + } + + public void PlaceBlock(ABpBlock block) { + var blockGO = block.CreateInactiveInertBlockInGrid(transform); + blockGO.SetActive(true); + blocksByBlueprintAnchor[block.gridAnchor] = blockGO; + + editorGrid.CustomLayers.ForEach(layer => layer.TryAddToGrid(block)); + } + + public void RemoveBlock(Vector2Int gridPos) { + if (!ActiveBlueprint.Grid.ContainsMember(gridPos)) { + return; + } + + RemoveBlock(ActiveBlueprint.Grid.GetMember(gridPos)); + } + + public void RemoveBlock(ABpBlock block) { + // Reset the stopwatch timer used by the shipeditor to time blueprint grid validation + stopwatch.Reset(); + var pos = block.GridAnchor; + + ActiveBlueprint.Remove(pos); + onBlueprintChanged?.Invoke(); + + editorGrid.CustomLayers.ForEach(layer => layer.TryRemoveFromGrid(block)); + + blocksByBlueprintAnchor[pos].SetActive(false); + } + + public void ClearBlueprint() { + transform.SetActiveChildren(false); + + ActiveBlueprint?.ClearBlocks(); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/EditorGrid/EditorGridBlueprintLayer.cs.meta b/Assets/Project/Source/BlueprintEditor/EditorGrid/BlueprintLayer/EditorGridBlueprintLayer.cs.meta similarity index 100% rename from Assets/Project/Source/ShipEditor/EditorGrid/EditorGridBlueprintLayer.cs.meta rename to Assets/Project/Source/BlueprintEditor/EditorGrid/BlueprintLayer/EditorGridBlueprintLayer.cs.meta diff --git a/Assets/Project/Source/BlueprintEditor/EditorGrid/CustomLayer.meta b/Assets/Project/Source/BlueprintEditor/EditorGrid/CustomLayer.meta new file mode 100644 index 00000000..02999860 --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/EditorGrid/CustomLayer.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3b7c219ec6ba1fa40bfcb8f313c0e16f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/BlueprintEditor/EditorGrid/CustomLayer/CustomEditorGridLayer.cs b/Assets/Project/Source/BlueprintEditor/EditorGrid/CustomLayer/CustomEditorGridLayer.cs new file mode 100644 index 00000000..78aeb7be --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/EditorGrid/CustomLayer/CustomEditorGridLayer.cs @@ -0,0 +1,31 @@ +using Exa.Grids.Blocks; +using Exa.Grids.Blueprints; +using UnityEngine; + +namespace Exa.ShipEditor { + public abstract class CustomEditorGridLayer : EditorGridLayer { + public override void TryAddToGrid(ABpBlock block) { + if (Predicate(block.Template)) { + OnAdd(block); + } + } + + public override void TryRemoveFromGrid(ABpBlock block) { + if (Predicate(block.Template)) { + OnRemove(block); + } + } + + protected abstract bool Predicate(BlockTemplate template); + + protected abstract void OnAdd(ABpBlock block); + + protected abstract void OnRemove(ABpBlock block); + } + + public abstract class EditorGridLayer : MonoBehaviour, ICustomEditorGridLayer { + public abstract void TryAddToGrid(ABpBlock block); + + public abstract void TryRemoveFromGrid(ABpBlock block); + } +} \ No newline at end of file diff --git a/Assets/Project/Source/BlueprintEditor/EditorGrid/CustomLayer/CustomEditorGridLayer.cs.meta b/Assets/Project/Source/BlueprintEditor/EditorGrid/CustomLayer/CustomEditorGridLayer.cs.meta new file mode 100644 index 00000000..209b6411 --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/EditorGrid/CustomLayer/CustomEditorGridLayer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8177d62570fd7d9459acb1a395f860fd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/BlueprintEditor/EditorGrid/CustomLayer/ICustomEditorGridLayer.cs b/Assets/Project/Source/BlueprintEditor/EditorGrid/CustomLayer/ICustomEditorGridLayer.cs new file mode 100644 index 00000000..4103bd32 --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/EditorGrid/CustomLayer/ICustomEditorGridLayer.cs @@ -0,0 +1,9 @@ +using Exa.Grids.Blueprints; + +namespace Exa.ShipEditor { + public interface ICustomEditorGridLayer { + public void TryAddToGrid(ABpBlock block); + + public void TryRemoveFromGrid(ABpBlock block); + } +} \ No newline at end of file diff --git a/Assets/Project/Source/BlueprintEditor/EditorGrid/CustomLayer/ICustomEditorGridLayer.cs.meta b/Assets/Project/Source/BlueprintEditor/EditorGrid/CustomLayer/ICustomEditorGridLayer.cs.meta new file mode 100644 index 00000000..d552472b --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/EditorGrid/CustomLayer/ICustomEditorGridLayer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4871cf7cbdafe4f4789064ed46e39e1a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/BlueprintEditor/EditorGrid/EditorGrid.Input.cs b/Assets/Project/Source/BlueprintEditor/EditorGrid/EditorGrid.Input.cs new file mode 100644 index 00000000..e0498527 --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/EditorGrid/EditorGrid.Input.cs @@ -0,0 +1,110 @@ +using System; +using System.Linq; +using Exa.Grids.Blocks; +using Exa.Grids.Blocks.BlockTypes; +using Exa.Grids.Blocks.Components; +using Exa.UI.Tweening; +using UnityEngine; + +namespace Exa.ShipEditor { + public partial class EditorGrid { + [SerializeField] private MovementConfiguration movementCfg; + private Vector2Int? mouseGridPos; + + /// + /// Current mouse position in the grid + /// + /// A null value signifies a mouse outside of the grid + /// + /// + private Vector2Int? MouseGridPos { + get => mouseGridPos; + set { + if (mouseGridPos == value) { + return; + } + + if (mouseGridPos != null) { + SetActiveBackground(mouseGridPos, false); + } + + mouseGridPos = value; + + if (value != null) { + SetActiveBackground(value, true); + } + + ghostLayer.MoveGhost(size, value); + } + } + + public void OnBlockSelected(BlockTemplate template) { + ghostLayer.ImportTemplate(template); + turretLayer.OverlayVisibility = template?.GetAnyPartialDataIsOf() ?? false; + } + + public void OnRotateLeft() { + ghostLayer.RotateGhosts(1); + } + + public void OnRotateRight() { + ghostLayer.RotateGhosts(-1); + } + + public void OnLeftClickPressed() { + if (MouseGridPos == null || !Interactable || MouseOverUI) { + return; + } + + ghostLayer.TryPlace(); + } + + public void OnRightClickPressed() { + if (MouseGridPos == null || !Interactable) { + return; + } + + ghostLayer.TryDelete(); + } + + private void UpdatePosition() { + // Move the grid to keyboard input + // Remap zoom scale range to damp scale + var remappedZoomScale = movementCfg.zoomCurve.Evaluate(S.Editor.EditorCameraTarget.ZoomScale); + + // Calculate movement offset + playerPos -= MovementVector * (movementCfg.speed * Time.deltaTime * remappedZoomScale); + + // Clamp movement offset to prevent going out of bounds + playerPos = Vector2.ClampMagnitude(playerPos, 15f); + + // Get position by adding the pivot to the offset + positionTween.To(centerPos + playerPos, 0.3f); + } + + private void OnEnterGrid(Vector2Int? gridPos) { + MouseGridPos = gridPos; + } + + private void OnExitGrid() { + MouseGridPos = null; + } + + private void SetActiveBackground(Vector2Int? gridPos, bool enter) { + if (gridPos == null) { + return; + } + + backgroundLayer.SetGridBackgroundItemColor(gridPos, enter); + } + + [Serializable] + public struct MovementConfiguration { + [Header("Base movement speed multiplier")] + public float speed; + + [Header("Zoom to movement speed remapping multiplier")] + public ExaEase zoomCurve; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/EditorGrid/EditorGrid.Input.cs.meta b/Assets/Project/Source/BlueprintEditor/EditorGrid/EditorGrid.Input.cs.meta similarity index 100% rename from Assets/Project/Source/ShipEditor/EditorGrid/EditorGrid.Input.cs.meta rename to Assets/Project/Source/BlueprintEditor/EditorGrid/EditorGrid.Input.cs.meta diff --git a/Assets/Project/Source/BlueprintEditor/EditorGrid/EditorGrid.cs b/Assets/Project/Source/BlueprintEditor/EditorGrid/EditorGrid.cs new file mode 100644 index 00000000..91f259f4 --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/EditorGrid/EditorGrid.cs @@ -0,0 +1,112 @@ +using System.Collections.Generic; +using DG.Tweening; +using Exa.Grids.Blueprints; +using Exa.Math; +using Exa.UI; +using Exa.UI.Tweening; +using UnityEngine; + +#pragma warning disable CS0649 + +namespace Exa.ShipEditor { + /// + /// Grid layer for the Ship layer + /// + public partial class EditorGrid : MonoBehaviour, IUIGroup { + [SerializeReference] private List customLayers; + public EditorGridBackgroundLayer backgroundLayer; + public EditorGridBlueprintLayer blueprintLayer; + public EditorGridGhostLayer ghostLayer; + public EditorGridTurretLayer turretLayer; + private Vector2 centerPos; + private bool interactable = true; + private Vector2 playerPos = Vector2.zero; + private TweenWrapper positionTween; + private Vector2Int size; + + public Vector2 MovementVector { private get; set; } + + public IEnumerable CustomLayers { + get => customLayers; + } + + /// + /// Whether or not the mouse is over UI + /// + public bool MouseOverUI { get; set; } + + private void Awake() { + backgroundLayer.EnterGrid += OnEnterGrid; + backgroundLayer.ExitGrid += OnExitGrid; + positionTween = new TweenWrapper((e, t) => transform.DOLocalMove(e, t)); + } + + public void Update() { + if (!Interactable) { + return; + } + + UpdatePosition(); + + // Check for mouse input + backgroundLayer.UpdateCurrActiveGridItem(transform.localPosition.ToVector2()); + } + + public void OnDisable() { + // Reset values + playerPos = Vector2.zero; + mouseGridPos = null; + transform.localPosition = Vector3.zero; + } + + /// + /// Whether or not the grid can be interacted with + /// + public bool Interactable { + get => interactable; + set { + interactable = value; + + if (!value) { + ghostLayer.SetVisibility(false); + } + } + } + + /// + /// Creates a grid with the given size + /// + /// + public void GenerateGrid(Vector2Int size) { + // Set the active size and set target player position the center of the grid + this.size = size; + + // Set the movement pivot + centerPos = GetGridOffset(); + transform.localPosition = centerPos.ToVector3(); + + // Generate the grid + backgroundLayer.GenerateGrid(size); + } + + public void Import(Blueprint blueprint) { + // Get size of blueprint class and resize the grid accordingly + var editorSize = blueprint.BlueprintType.maxSize; + GenerateGrid(editorSize); + blueprintLayer.Import(blueprint); + } + + public void ClearBlueprint() { + blueprintLayer.ClearBlueprint(); + } + + private Vector2 GetGridOffset() { + var halfSize = size.ToVector2() / 2f; + + return new Vector2 { + x = -halfSize.x + 0.5f, + y = -halfSize.y + 0.5f + }; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/EditorGrid/EditorGrid.cs.meta b/Assets/Project/Source/BlueprintEditor/EditorGrid/EditorGrid.cs.meta similarity index 100% rename from Assets/Project/Source/ShipEditor/EditorGrid/EditorGrid.cs.meta rename to Assets/Project/Source/BlueprintEditor/EditorGrid/EditorGrid.cs.meta diff --git a/Assets/Project/Source/BlueprintEditor/EditorGrid/GhostLayer.meta b/Assets/Project/Source/BlueprintEditor/EditorGrid/GhostLayer.meta new file mode 100644 index 00000000..6bb01150 --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/EditorGrid/GhostLayer.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 66d05bfef8753794ebe96470fa4aa72a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/BlueprintEditor/EditorGrid/GhostLayer/BlockGhost.cs b/Assets/Project/Source/BlueprintEditor/EditorGrid/GhostLayer/BlockGhost.cs new file mode 100644 index 00000000..3a5c2677 --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/EditorGrid/GhostLayer/BlockGhost.cs @@ -0,0 +1,46 @@ +using Exa.Grids; +using Exa.Grids.Blueprints; +using Exa.Math; +using UnityEngine; + +#pragma warning disable CS0649 + +namespace Exa.ShipEditor { + /// + /// Represents a single block that is not yet placed + /// + public class BlockGhost : MonoBehaviour { + [SerializeField] private SpriteRenderer filter; + [SerializeField] private Transform filterTransform; + [SerializeField] private BlockPresenter presenter; + [SerializeField] private Color activeColor; + [SerializeField] private Color inactiveColor; + + public BlockPresenter Presenter { + get => presenter; + } + + public ABpBlock Block { get; private set; } + + /// + /// Update the block the ghost is representing + /// + /// + public void ImportBlock(BlueprintBlock block) { + presenter.Renderer.sprite = block.Template.thumbnail; + filterTransform.localScale = block.Template.size.ToVector3(); + Block = new ABpBlock(new Vector2Int(), block); + presenter.Present(Block); + } + + public void SetFilterColor(bool active) { + filter.color = active ? activeColor : inactiveColor; + } + + public void Clear() { + presenter.Renderer.sprite = null; + filterTransform.localScale = Vector3.one; + Block = null; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/EditorGrid/BlockGhost.cs.meta b/Assets/Project/Source/BlueprintEditor/EditorGrid/GhostLayer/BlockGhost.cs.meta similarity index 83% rename from Assets/Project/Source/ShipEditor/EditorGrid/BlockGhost.cs.meta rename to Assets/Project/Source/BlueprintEditor/EditorGrid/GhostLayer/BlockGhost.cs.meta index 6f4c95f4..44a5ac96 100644 --- a/Assets/Project/Source/ShipEditor/EditorGrid/BlockGhost.cs.meta +++ b/Assets/Project/Source/BlueprintEditor/EditorGrid/GhostLayer/BlockGhost.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 5414b8559b217c14e82ba2208e89b2fb +guid: 68eb71d6eca0ae34695d69ca111ad29c MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Project/Source/BlueprintEditor/EditorGrid/GhostLayer/EditorGridGhostLayer.cs b/Assets/Project/Source/BlueprintEditor/EditorGrid/GhostLayer/EditorGridGhostLayer.cs new file mode 100644 index 00000000..7e20a176 --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/EditorGrid/GhostLayer/EditorGridGhostLayer.cs @@ -0,0 +1,187 @@ +using System.Collections.Generic; +using System.Linq; +using Exa.Grids; +using Exa.Grids.Blocks; +using Exa.Grids.Blocks.BlockTypes; +using Exa.Grids.Blocks.Components; +using Exa.Grids.Blueprints; +using Exa.Utils; +using UnityEngine; + +namespace Exa.ShipEditor { + public class EditorGridGhostLayer : MonoBehaviour { + public GameObject ghostPrefab; + public EditorGridBackgroundLayer backgroundLayer; + public EditorGridBlueprintLayer blueprintLayer; + public EditorGridTurretLayer turretLayer; + + private IEnumerable controllers; + + public bool PlacementIsAllowed { get; private set; } + public BlockTemplate ImportedTemplate { get; private set; } + + private void Awake() { + controllers = new List { + InitController(BlockFlip.None), + InitController(BlockFlip.FlipX), + InitController(BlockFlip.FlipY), + InitController(BlockFlip.Both) + }; + } + + public void SetFlip(BlockFlip mask) { + controllers.ForEach(controller => controller.SetActive(mask)); + UpdateGhostsOverlap(); + } + + public void RotateGhosts(int value) { + if (!ImportedTemplate) { + return; + } + + controllers.ForEach(controller => controller.Rotate(value)); + UpdateGhosts(); + } + + public void MoveGhost(Vector2Int gridSize, Vector2Int? gridPos) { + SetVisibility(gridPos != null); + + if (!ImportedTemplate) { + return; + } + + controllers.ForEach(controller => controller.MoveGhost(gridSize, gridPos)); + + UpdateGhostsOverlap(); + UpdateGhosts(); + } + + public void TryPlace() { + if (!PlacementIsAllowed) { + return; + } + + QueryActiveControllers() + .ForEach( + controller => { + var block = controller.BlueprintBlock.Clone(); + blueprintLayer.AddBlock(block); + } + ); + + UpdateGhosts(); + } + + public void TryDelete() { + var blocks = blueprintLayer.ActiveBlueprint.Grid; + + QueryActiveControllers() + .ForEach( + controller => { + var pos = controller.BlueprintBlock.gridAnchor; + + if (blocks.TryGetMember(pos, out var member)) { + blueprintLayer.RemoveBlock(member); + } + } + ); + + UpdateGhosts(); + } + + public void ImportTemplate(BlockTemplate template) { + ImportedTemplate = template; + + if (template == null) { + controllers.ForEach(controller => controller.Clear()); + + return; + } + + var block = new BlueprintBlock { + id = template.id, + Rotation = 0 + }; + + controllers.ForEach( + controller => { + controller.ImportBlock(block); + + var overlay = template.GetAnyPartialDataIsOf() + ? turretLayer.CreateGhostOverlay(controller.Ghost.Block) + : null; + + controller.SetOverlay(overlay); + } + ); + } + + public void SetVisibility(bool value) { + controllers.ForEach(controller => { controller.State = controller.State.SetFlag(GhostControllerState.Visible, value); }); + } + + private void UpdateGhostsOverlap() { + void SetFlags(IEnumerable controllers, bool value) { + controllers.ForEach(controller => { controller.State = controller.State.SetFlag(GhostControllerState.Overlapped, value); }); + } + + var activeControllers = QueryActiveControllers(); + SetFlags(controllers.Except(activeControllers), true); + SetFlags(activeControllers, false); + } + + private void UpdateGhosts() { + // Block placement validation may rely on collider casts, + // which by default only sync with the transform in fixedUpdate + Physics2D.SyncTransforms(); + var ghostPlacementIsValid = GetBlockPlacementIsValid(); + PlacementIsAllowed = ghostPlacementIsValid; + SetFilter(ghostPlacementIsValid); + } + + private bool GetBlockPlacementIsValid() { + var activeControllers = QueryActiveControllers(); + + if (!activeControllers.Any()) { + return false; + } + + var occupiedBlocks = activeControllers + .SelectMany(controller => controller.BlueprintBlock.GetTileClaims()); + + var positionValid = occupiedBlocks.Distinct().Count() == occupiedBlocks.Count() && occupiedBlocks.All(pos => backgroundLayer.PosIsInGrid(pos)) && !blueprintLayer.ActiveBlueprint.Grid.HasOverlap(occupiedBlocks); + + if (!positionValid) { + return false; + } + + if (ImportedTemplate.GetAnyPartialDataIsOf()) { + var ghostTurretClaims = activeControllers.SelectMany(controller => controller.Overlay.GetTurretClaims()); + var currentBlockClaims = turretLayer.TurretBlocks.SelectMany(block => block.GetTileClaims()); + + return !ghostTurretClaims.Intersect(occupiedBlocks).Any() && !ghostTurretClaims.Intersect(currentBlockClaims).Any() && !turretLayer.TurretBlocks.GetTurretClaims().Intersect(occupiedBlocks).Any(); + } + + return true; + } + + private GhostController InitController(BlockFlip flip) { + var ghost = Instantiate(ghostPrefab, transform).GetComponent(); + ghost.gameObject.name = $"GhostController (Flip: {flip})"; + ghost.gameObject.SetActive(false); + + return new GhostController(ghost, flip); + } + + private IEnumerable QueryActiveControllers() { + return controllers.Where(controller => controller.State.HasValue(GhostControllerState.Active)) + .Where(controller => controller.BlueprintBlock != null) + .GroupBy(controller => controller.BlueprintBlock.gridAnchor) + .Select(group => group.First()); + } + + private void SetFilter(bool active) { + controllers.ForEach(controller => controller.SetFilterColor(active)); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/EditorGrid/EditorGridGhostLayer.cs.meta b/Assets/Project/Source/BlueprintEditor/EditorGrid/GhostLayer/EditorGridGhostLayer.cs.meta similarity index 83% rename from Assets/Project/Source/ShipEditor/EditorGrid/EditorGridGhostLayer.cs.meta rename to Assets/Project/Source/BlueprintEditor/EditorGrid/GhostLayer/EditorGridGhostLayer.cs.meta index fc689176..5fb58545 100644 --- a/Assets/Project/Source/ShipEditor/EditorGrid/EditorGridGhostLayer.cs.meta +++ b/Assets/Project/Source/BlueprintEditor/EditorGrid/GhostLayer/EditorGridGhostLayer.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 7a6b8723510b7c1488be61d72e8f74fb +guid: 24355614bbf73474a84d500f181dfa6d MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Project/Source/BlueprintEditor/EditorGrid/GhostLayer/GhostController.cs b/Assets/Project/Source/BlueprintEditor/EditorGrid/GhostLayer/GhostController.cs new file mode 100644 index 00000000..33497d58 --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/EditorGrid/GhostLayer/GhostController.cs @@ -0,0 +1,118 @@ +using System; +using Exa.Grids; +using Exa.Grids.Blueprints; +using Exa.Utils; +using UnityEngine; + +namespace Exa.ShipEditor { + [Flags] + public enum GhostControllerState { + Visible = 1 << 0, + Active = 1 << 1, + Overlapped = 1 << 2, + Valid = Visible | Active + } + + public class GhostController { + private readonly BlockFlip flip; + private GhostControllerState state; + + public GhostController(BlockGhost blockGhost, BlockFlip flip) { + Ghost = blockGhost; + this.flip = flip; + } + + public BlockGhost Ghost { get; } + public TurretOverlay Overlay { get; private set; } + + public ABpBlock BlueprintBlock { + get => Ghost.Block; + } + + public GhostControllerState State { + get => state; + set { + state = value; + Ghost.gameObject.SetActive(state == GhostControllerState.Valid); + UpdateOverlay(); + } + } + + public void SetActive(BlockFlip mask) { + State = State.SetFlag(GhostControllerState.Active, mask.HasValue(flip)); + } + + public void SetFilterColor(bool active) { + Ghost.SetFilterColor(active); + + if (Overlay != null) { + Overlay.SetColor(Colors.GetActiveColor(active)); + } + } + + public void ImportBlock(BlueprintBlock block) { + Ghost.ImportBlock( + new BlueprintBlock { + flippedX = flip.HasValue(BlockFlip.FlipX), + flippedY = flip.HasValue(BlockFlip.FlipY), + id = block.id, + Rotation = block.Rotation + } + ); + } + + public void Clear() { + Ghost.Clear(); + } + + public void SetOverlay(TurretOverlay overlay) { + if (Overlay != null) { + Overlay.gameObject.Destroy(); + } + + Overlay = overlay; + + if (overlay != null) { + overlay.SetVisibility(false); + } + + UpdateOverlay(); + } + + public void Rotate(int value) { + Ghost.Block.blueprintBlock.Rotation += value; + Ghost.Presenter.Present(Ghost.Block); + + UpdateOverlay(); + } + + public void MoveGhost(Vector2Int gridSize, Vector2Int? originalPos) { + if (originalPos != null) { + var gridPos = GetMirroredGridPos(gridSize, originalPos.Value); + Ghost.Block.GridAnchor = gridPos; + Ghost.Presenter.Present(Ghost.Block); + + if (Overlay != null) { + Overlay.SetVisibility(true); + } + + UpdateOverlay(); + } else { + if (Overlay != null) { + Overlay.SetVisibility(false); + } + } + } + + public Vector2Int GetMirroredGridPos(Vector2Int gridSize, Vector2Int originalPos) { + return GridUtils.GetMirroredGridPos(gridSize, originalPos, flip); + } + + private void UpdateOverlay() { + if (Overlay != null && Ghost.Block != null) { + Overlay.Presenter.Present(Ghost.Block); + Overlay.SetVisibility(state.HasValue(GhostControllerState.Valid)); + } + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/BlueprintEditor/EditorGrid/GhostLayer/GhostController.cs.meta b/Assets/Project/Source/BlueprintEditor/EditorGrid/GhostLayer/GhostController.cs.meta new file mode 100644 index 00000000..a07099be --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/EditorGrid/GhostLayer/GhostController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d4f9e681d7feeae4fb004ed23fef2840 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/BlueprintEditor/EditorGrid/TurretLayer.meta b/Assets/Project/Source/BlueprintEditor/EditorGrid/TurretLayer.meta new file mode 100644 index 00000000..c18fc59a --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/EditorGrid/TurretLayer.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fcdb8c0880c18f14892fc7006238daf4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/BlueprintEditor/EditorGrid/TurretLayer/EditorGridTurretLayer.cs b/Assets/Project/Source/BlueprintEditor/EditorGrid/TurretLayer/EditorGridTurretLayer.cs new file mode 100644 index 00000000..40a33be7 --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/EditorGrid/TurretLayer/EditorGridTurretLayer.cs @@ -0,0 +1,100 @@ +using System.Collections.Generic; +using System.Linq; +using Exa.Grids.Blocks; +using Exa.Grids.Blocks.BlockTypes; +using Exa.Grids.Blocks.Components; +using Exa.Grids.Blueprints; +using Exa.Utils; +using NaughtyAttributes; +using UnityEngine; + +namespace Exa.ShipEditor { + public class EditorGridTurretLayer : CustomEditorGridLayer { + [SerializeField] private GameObject basePrefab; + [SerializeField] private Transform prefabContainer; + [SerializeField] private Transform instanceContainer; + private Dictionary overlayInstances; + + private Dictionary overlayPrefabs; + private bool overlayVisibility; + + public bool OverlayVisibility { + set { + overlayVisibility = value; + overlayInstances.Values.ForEach(overlay => overlay.SetVisibility(value)); + } + } + + public TurretBlocks TurretBlocks { get; private set; } + + // ReSharper disable Unity.PerformanceAnalysis + public void Init() { + prefabContainer.DestroyChildren(); + instanceContainer.DestroyChildren(); + TurretBlocks = new TurretBlocks(this); + overlayPrefabs = new Dictionary(); + overlayInstances = new Dictionary(); + + var templates = S.Blocks.blockTemplates + .Select(elem => elem.Data) + .Where(Predicate); + + if (!templates.Any()) { + Debug.LogError("Template filtering found no turret templates, this shouldn't happen"); + } + + templates.ForEach(GenerateTurretOverlayPrefab); + } + + [Button] + public void PrintTurretClaims() { + Debug.Log(TurretBlocks.GetTurretClaims().Join(", ")); + } + + public TurretOverlay CreateGhostOverlay(ABpBlock block) { + return CreateOverlay(block); + } + + public TurretOverlay CreateStationaryOverlay(ABpBlock block) { + var overlay = CreateOverlay(block); + overlay.SetColor(Color.white.SetAlpha(0.5f)); + overlay.Presenter.Present(block); + overlay.SetVisibility(overlayVisibility); + overlayInstances[block] = overlay; + + return overlay; + } + + private TurretOverlay CreateOverlay(ABpBlock block) { + var overlay = overlayPrefabs[block.Template].Create(instanceContainer); + overlay.Import(block); + + return overlay; + } + + public void RemoveStationaryOverlay(ABpBlock block) { + Destroy(overlayInstances[block].gameObject); + overlayInstances.Remove(block); + } + + // TODO: Don't hardcode the user group here + private void GenerateTurretOverlayPrefab(BlockTemplate template) { + var overlay = basePrefab.Create(prefabContainer); + overlay.Generate(template.GetValues(BlockContext.UserGroup)); + overlayPrefabs[template] = overlay.gameObject; + } + + protected override bool Predicate(BlockTemplate template) { + // this editor layer should only be triggered by templates that contain turret values + return template.GetAnyPartialDataIsOf(); + } + + protected override void OnAdd(ABpBlock block) { + TurretBlocks.AddTurret(block); + } + + protected override void OnRemove(ABpBlock block) { + TurretBlocks.Remove(block); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/BlueprintEditor/EditorGrid/TurretLayer/EditorGridTurretLayer.cs.meta b/Assets/Project/Source/BlueprintEditor/EditorGrid/TurretLayer/EditorGridTurretLayer.cs.meta new file mode 100644 index 00000000..be59f9cb --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/EditorGrid/TurretLayer/EditorGridTurretLayer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8f28abf814533344a8169547f005702e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/BlueprintEditor/EditorGrid/TurretLayer/TurretBlocks.cs b/Assets/Project/Source/BlueprintEditor/EditorGrid/TurretLayer/TurretBlocks.cs new file mode 100644 index 00000000..399a5b75 --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/EditorGrid/TurretLayer/TurretBlocks.cs @@ -0,0 +1,52 @@ +using System.Collections.Generic; +using System.Linq; +using Exa.Grids; +using Exa.Grids.Blocks; +using Exa.Grids.Blocks.BlockTypes; +using Exa.Grids.Blueprints; +using UnityEngine; + +namespace Exa.ShipEditor { + public class TurretBlocks : Grid { + private readonly Dictionary cache; + private readonly EditorGridTurretLayer turretLayer; + + public TurretBlocks(EditorGridTurretLayer turretLayer) { + this.turretLayer = turretLayer; + cache = new Dictionary(); + } + + public void AddTurret(ABpBlock block) { + var overlay = turretLayer.CreateStationaryOverlay(block); + var claims = overlay.GetTurretClaims().ToList(); + + cache.Add( + block, + new TurretCache { + Template = block.Template, + Overlay = overlay, + TurretClaimedTiles = claims + } + ); + + base.Add(block); + } + + public IEnumerable GetTurretClaims() { + return cache.Values.SelectMany(cache => cache.TurretClaimedTiles).Distinct(); + } + + public override void Remove(ABpBlock block) { + cache.Remove(block); + turretLayer.RemoveStationaryOverlay(block); + + base.Remove(block); + } + + private struct TurretCache { + public BlockTemplate Template { get; set; } + public IEnumerable TurretClaimedTiles { get; set; } + public TurretOverlay Overlay { get; set; } + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/BlueprintEditor/EditorGrid/TurretLayer/TurretBlocks.cs.meta b/Assets/Project/Source/BlueprintEditor/EditorGrid/TurretLayer/TurretBlocks.cs.meta new file mode 100644 index 00000000..020ca688 --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/EditorGrid/TurretLayer/TurretBlocks.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b2d6e795c032f864e82529a3ec8ab916 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/BlueprintEditor/EditorGrid/TurretLayer/TurretOverlay.cs b/Assets/Project/Source/BlueprintEditor/EditorGrid/TurretLayer/TurretOverlay.cs new file mode 100644 index 00000000..a610acf0 --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/EditorGrid/TurretLayer/TurretOverlay.cs @@ -0,0 +1,114 @@ +using System.Collections.Generic; +using System.Linq; +using Exa.Drawing; +using Exa.Grids; +using Exa.Grids.Blocks.Components; +using Exa.Grids.Blueprints; +using Exa.Math; +using Exa.UI.Tweening; +using Exa.Utils; +using NaughtyAttributes; +using UnityEngine; +using Texture2DExtensions = Exa.Drawing.Texture2DExtensions; + +namespace Exa.ShipEditor { + public enum TurretOverlayMode { + Stationary, + Ghost + } + + public class TurretOverlay : MonoBehaviour { + [SerializeField] private BlockPresenter presenter; + [SerializeField] private PolygonCollider2D polygonCollider; + [SerializeField] private ExaEase ease; + + public BlockPresenter Presenter { + get => presenter; + } + + public ABpBlock Block { get; private set; } + + public void SetVisibility(bool value) { + Presenter.Renderer.gameObject.SetActive(value); + } + + public void SetColor(Color color) { + presenter.Renderer.color = color; + } + + public void Generate(ITurretValues values) { + presenter.Renderer.sprite = GenerateTexture(values).CreateSprite(); + polygonCollider.points = GeneratePoints(values); + SetVisibility(false); + } + + public void Import(ABpBlock block) { + Block = block; + } + + public IEnumerable GetTurretClaims() { + // Sync transforms, as the collider may be out of sync with the parent transform + Physics2D.SyncTransforms(); + + return polygonCollider.StationaryCast(LayerMask.GetMask("editorGridItems")) + .Select(hit => hit.transform.GetComponent().GridPosition) + .Except(Block.GetTileClaims()); + } + + [Button("Print turret claims")] + public void PrintTurretClaims() { + Debug.Log(GetTurretClaims().Join(", ")); + } + + private Texture2D GenerateTexture(ITurretValues values) { + var pixelRadius = Mathf.RoundToInt(values.TurretRadius * 32); + var size = pixelRadius * 2; + + var baseConfig = new ConeArgs { + color = Color.white, + centre = (pixelRadius - 0.5f).ToVector2(), + radius = pixelRadius, + arc = values.TurretArc + }; + + var fadedConfig = baseConfig; + fadedConfig.color = Color.white.SetAlpha(0.5f); + fadedConfig.easingFunc = ease.Evaluate; + + var tex = new Texture2D(size, size).SetDefaults(); + + return tex + .DrawSuperSampledCone(fadedConfig) + .DrawSuperSampledCone( + baseConfig, + new SuperSamplingArgs { + applier = (pixel, value) => { + if (value > tex.GetPixel(pixel).a) { + tex.SetPixel(pixel, baseConfig.color.SetAlpha(value)); + } + }, + sampler = (point, localPoint) => { + var between = localPoint.magnitude.Between(pixelRadius - 2f, pixelRadius); + + return between ? Texture2DExtensions.ConeSampler(localPoint, baseConfig, false) : 0f; + } + } + ); + } + + private Vector2[] GeneratePoints(ITurretValues values, int subdivisions = 20) { + var points = new Vector2[subdivisions + 2]; + points[0] = Vector2.zero; + + var startAngle = values.GetTurretArcMinMax().min; + var subdivisionAngleSize = values.TurretArc / subdivisions; + + for (var i = 0; i < subdivisions + 1; i++) { + var angle = startAngle + subdivisionAngleSize * i; + points[i + 1] = MathUtils.FromAngledMagnitude(values.TurretRadius, angle); + } + + return points; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/BlueprintEditor/EditorGrid/TurretLayer/TurretOverlay.cs.meta b/Assets/Project/Source/BlueprintEditor/EditorGrid/TurretLayer/TurretOverlay.cs.meta new file mode 100644 index 00000000..c5b43307 --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/EditorGrid/TurretLayer/TurretOverlay.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8a8839c6f2ce54e46aa41d0b503bfb49 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/ShipEditor/ShipEditorOverlay.meta b/Assets/Project/Source/BlueprintEditor/EditorOverlay.meta similarity index 100% rename from Assets/Project/Source/ShipEditor/ShipEditorOverlay.meta rename to Assets/Project/Source/BlueprintEditor/EditorOverlay.meta diff --git a/Assets/Project/Source/BlueprintEditor/EditorOverlay/BlockTemplateView.cs b/Assets/Project/Source/BlueprintEditor/EditorOverlay/BlockTemplateView.cs new file mode 100644 index 00000000..d4e43102 --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/EditorOverlay/BlockTemplateView.cs @@ -0,0 +1,40 @@ +using Exa.Data; +using Exa.Grids.Blocks; +using Exa.Types.Binding; +using Exa.UI; +using Exa.UI.Components; +using UnityEngine; +using UnityEngine.UI; + +#pragma warning disable CS0649 + +namespace Exa.ShipEditor { + public class BlockTemplateView : MonoBehaviour, IObserver { + [Header("References")] + public Button button; + [SerializeField] private Text blockSizeText; + [SerializeField] private Image image; + [SerializeField] private Border activeBorder; + [SerializeField] private Hoverable hoverable; + + [Header("Settings")] + [SerializeField] private ActivePair backgroundColors; + + private BlockTemplate data; + + public bool Selected { + set => activeBorder.SetVisibility(value); + } + + private void Awake() { + hoverable.onPointerEnter.AddListener(() => { S.UI.Tooltips.blockTemplateTooltip.Show(BlockContext.DefaultGroup, data); }); + hoverable.onPointerExit.AddListener(() => { S.UI.Tooltips.blockTemplateTooltip.Hide(); }); + } + + public void OnUpdate(BlockTemplate data) { + this.data = data; + image.sprite = data.thumbnail; + blockSizeText.text = $"{data.size.x}x{data.size.y}"; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/ShipEditorOverlay/BlockTemplateView.cs.meta b/Assets/Project/Source/BlueprintEditor/EditorOverlay/BlockTemplateView.cs.meta similarity index 100% rename from Assets/Project/Source/ShipEditor/ShipEditorOverlay/BlockTemplateView.cs.meta rename to Assets/Project/Source/BlueprintEditor/EditorOverlay/BlockTemplateView.cs.meta diff --git a/Assets/Project/Source/BlueprintEditor/EditorOverlay/BudgetView.cs b/Assets/Project/Source/BlueprintEditor/EditorOverlay/BudgetView.cs new file mode 100644 index 00000000..a8f6cbb6 --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/EditorOverlay/BudgetView.cs @@ -0,0 +1,69 @@ +using DG.Tweening; +using Exa.Grids.Blocks; +using Exa.Utils; +using UnityEngine; +using UnityEngine.UI; + +namespace Exa.ShipEditor { + public class BudgetView : MonoBehaviour { + public BlockCostsView view; + + private AnimatableField creditsField; + private AnimatableField metalsField; + + private void Awake() { + creditsField = new AnimatableField(view.credits, view.creditsBackground); + metalsField = new AnimatableField(view.metals, view.metalsBackground); + } + + public void SetBudget(BlockCosts budget) { + view.Refresh(budget); + + creditsField.SetActiveColor(budget.creditCost >= 0); + metalsField.SetActiveColor(budget.metalsCost >= 0); + } + } + + public class AnimatableField { + private readonly Graphic image; + private readonly Color initialImageColor; + + private readonly Color initialTextColor; + private readonly Graphic text; + private bool active; + private Tween imageTween; + + private Tween textTween; + + public AnimatableField(Graphic text, Graphic image) { + this.text = text; + this.image = image; + + initialTextColor = text.color; + initialImageColor = image.color; + + active = true; + } + + public void SetActiveColor(bool active) { + if (active != this.active) { + if (active) { + Reset(); + } else { + Animate(Colors.RoseVale, Colors.RoseVale.SetAlpha(100f / 256f), 0.5f); + } + } + + this.active = active; + } + + private void Reset() { + Animate(initialTextColor, initialImageColor, 0.2f); + } + + private void Animate(Color textColor, Color imageColor, float duration) { + text.DOColor(textColor, duration).Replace(ref textTween); + image.DOColor(imageColor, duration).Replace(ref imageTween); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/BlueprintEditor/EditorOverlay/BudgetView.cs.meta b/Assets/Project/Source/BlueprintEditor/EditorOverlay/BudgetView.cs.meta new file mode 100644 index 00000000..031a1c75 --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/EditorOverlay/BudgetView.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: ce148ad954754103aa0a9413c8e45f60 +timeCreated: 1618778096 \ No newline at end of file diff --git a/Assets/Project/Source/BlueprintEditor/EditorOverlay/GridTotalsView.cs b/Assets/Project/Source/BlueprintEditor/EditorOverlay/GridTotalsView.cs new file mode 100644 index 00000000..8da84bf5 --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/EditorOverlay/GridTotalsView.cs @@ -0,0 +1,34 @@ +using Exa.Grids; +using Exa.UI.Tooltips; +using UnityEngine; +using UnityEngine.Serialization; + +#pragma warning disable CS0649 + +namespace Exa.ShipEditor { + public class GridTotalsView : MonoBehaviour { + [FormerlySerializedAs("metadataView")] + [Header("References")] + [SerializeField] private BlockCostsView blockCostsView; + [SerializeField] private PropertyView massView; + [SerializeField] private PropertyView hullView; + [SerializeField] private PropertyView energyView; + [SerializeField] private PropertyView torque; + + public void Update() { + var totals = S.Editor.ActiveBlueprintTotals; + + if (totals != null) { + Render(totals); + } + } + + private void Render(GridTotals totals) { + blockCostsView.Refresh(totals.Metadata.blockCosts); + massView.SetValue($"{totals.Mass:0} Tonne"); + hullView.SetValue($"{totals.Hull:0}"); + energyView.SetValue($"{totals.UnscaledPowerGeneration:0}"); + torque.SetValue($"{totals.UnscaledTorque:0}"); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/ShipEditorOverlay/GridTotalsView.cs.meta b/Assets/Project/Source/BlueprintEditor/EditorOverlay/GridTotalsView.cs.meta similarity index 100% rename from Assets/Project/Source/ShipEditor/ShipEditorOverlay/GridTotalsView.cs.meta rename to Assets/Project/Source/BlueprintEditor/EditorOverlay/GridTotalsView.cs.meta diff --git a/Assets/Project/Source/ShipEditor/ShipEditorOverlay/MirrorView.cs b/Assets/Project/Source/BlueprintEditor/EditorOverlay/MirrorView.cs similarity index 85% rename from Assets/Project/Source/ShipEditor/ShipEditorOverlay/MirrorView.cs rename to Assets/Project/Source/BlueprintEditor/EditorOverlay/MirrorView.cs index a597445e..db3db138 100644 --- a/Assets/Project/Source/ShipEditor/ShipEditorOverlay/MirrorView.cs +++ b/Assets/Project/Source/BlueprintEditor/EditorOverlay/MirrorView.cs @@ -4,10 +4,8 @@ #pragma warning disable CS0649 -namespace Exa.ShipEditor -{ - public class MirrorView : MonoBehaviour - { +namespace Exa.ShipEditor { + public class MirrorView : MonoBehaviour { [SerializeField] private KeybindingView keybindingView; [SerializeField] private Image mirrorImage; [SerializeField] private Color activeColor; diff --git a/Assets/Project/Source/ShipEditor/ShipEditorOverlay/MirrorView.cs.meta b/Assets/Project/Source/BlueprintEditor/EditorOverlay/MirrorView.cs.meta similarity index 100% rename from Assets/Project/Source/ShipEditor/ShipEditorOverlay/MirrorView.cs.meta rename to Assets/Project/Source/BlueprintEditor/EditorOverlay/MirrorView.cs.meta diff --git a/Assets/Project/Source/ShipEditor/ShipEditorOverlay/ShipEditorOverlay.cs b/Assets/Project/Source/BlueprintEditor/EditorOverlay/ShipEditorOverlay.cs similarity index 75% rename from Assets/Project/Source/ShipEditor/ShipEditorOverlay/ShipEditorOverlay.cs rename to Assets/Project/Source/BlueprintEditor/EditorOverlay/ShipEditorOverlay.cs index eca19549..1c27db7c 100644 --- a/Assets/Project/Source/ShipEditor/ShipEditorOverlay/ShipEditorOverlay.cs +++ b/Assets/Project/Source/BlueprintEditor/EditorOverlay/ShipEditorOverlay.cs @@ -5,13 +5,12 @@ #pragma warning disable CS0649 -namespace Exa.ShipEditor -{ - public class ShipEditorOverlay : MonoBehaviour - { +namespace Exa.ShipEditor { + public class ShipEditorOverlay : MonoBehaviour { [SerializeField] private Hoverable blueprintInventoryHoverable; [SerializeField] private Hoverable blueprintInfoPanelHoverable; [SerializeField] private Hoverable editorStatePanelHoverable; + [SerializeField] private BudgetView budgetView; public InteractableAdapter editorOverlay; @@ -19,7 +18,8 @@ public class ShipEditorOverlay : MonoBehaviour public ShipEditorOverlayInfoPanel infoPanel; public ShipEditorOverlayInventory inventory; - public MirrorView mirrorView; + [FormerlySerializedAs("mirrorView")] + public MirrorView verticalMirrorView; public UnityEvent onPointerEnter; public UnityEvent onPointerExit; @@ -29,6 +29,16 @@ private void Awake() { AddListenerToGroupOnPointerExit(onPointerExit.Invoke); } + private void OnDisable() { + budgetView.gameObject.SetActive(false); + } + + public BudgetView EnableBudgetView() { + budgetView.gameObject.SetActive(true); + + return budgetView; + } + private void AddListenerToGroupOnPointerEnter(UnityAction action) { blueprintInventoryHoverable.onPointerEnter.AddListener(action); blueprintInfoPanelHoverable.onPointerEnter.AddListener(action); diff --git a/Assets/Project/Source/ShipEditor/ShipEditorOverlay/ShipEditorOverlay.cs.meta b/Assets/Project/Source/BlueprintEditor/EditorOverlay/ShipEditorOverlay.cs.meta similarity index 100% rename from Assets/Project/Source/ShipEditor/ShipEditorOverlay/ShipEditorOverlay.cs.meta rename to Assets/Project/Source/BlueprintEditor/EditorOverlay/ShipEditorOverlay.cs.meta diff --git a/Assets/Project/Source/BlueprintEditor/EditorOverlay/ShipEditorOverlayInfoPanel.cs b/Assets/Project/Source/BlueprintEditor/EditorOverlay/ShipEditorOverlayInfoPanel.cs new file mode 100644 index 00000000..abc63213 --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/EditorOverlay/ShipEditorOverlayInfoPanel.cs @@ -0,0 +1,22 @@ +using Exa.UI.Controls; +using Exa.UI.Tooltips; +using UnityEngine; +using UnityEngine.UI; + +namespace Exa.ShipEditor { + public class ShipEditorOverlayInfoPanel : MonoBehaviour { + public Button clearButton; + public TextTooltipTrigger saveButtonTooltipTrigger; + public Button saveButton; + public Button exportButton; + public InputFieldControl blueprintNameInput; + public BlueprintErrorListController errorListController; + public CanvasGroup saveButtonCanvasGroup; + public GridTotalsView gridTotalsView; + public Transform controlsContainer; + + public void SetNameEditingActive(bool active) { + blueprintNameInput.gameObject.SetActive(active); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/ShipEditorOverlay/ShipEditorOverlayInfoPanel.cs.meta b/Assets/Project/Source/BlueprintEditor/EditorOverlay/ShipEditorOverlayInfoPanel.cs.meta similarity index 100% rename from Assets/Project/Source/ShipEditor/ShipEditorOverlay/ShipEditorOverlayInfoPanel.cs.meta rename to Assets/Project/Source/BlueprintEditor/EditorOverlay/ShipEditorOverlayInfoPanel.cs.meta diff --git a/Assets/Project/Source/BlueprintEditor/EditorOverlay/ShipEditorOverlayInventory.cs b/Assets/Project/Source/BlueprintEditor/EditorOverlay/ShipEditorOverlayInventory.cs new file mode 100644 index 00000000..9cc8729e --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/EditorOverlay/ShipEditorOverlayInventory.cs @@ -0,0 +1,83 @@ +using System.Collections.Generic; +using System.Linq; +using Exa.Grids.Blocks; +using Exa.Types.Binding; +using Exa.UI.Components; +using Exa.Utils; +using UnityEngine; +using UnityEngine.Events; + +#pragma warning disable CS0649 + +namespace Exa.ShipEditor { + public class BlockSelectedEvent : UnityEvent { } + + public class ShipEditorOverlayInventory : ViewBinder { + [SerializeField] private GameObject expandableItemPrefab; + + private readonly Dictionary tabs = + new Dictionary(); + + private BlockTemplateView activeView; + public BlockSelectedEvent blockSelected = new BlockSelectedEvent(); + private BlockCategory filter = BlockCategory.All; + + public void Init() { + Source = S.Blocks.blockTemplates; + } + + public void SelectFirst() { + var selectedBlock = Source.First(value => filter.HasValue(value.Data.category)); + SetSelected(selectedBlock); + tabs[selectedBlock.Data.category].Expanded = true; + } + + public void SetFilter(BlockCategory blockCategoryFilter) { + filter = blockCategoryFilter; + + foreach (var (category, item) in tabs.Unpack()) { + item.gameObject.SetActive(blockCategoryFilter.HasValue(category)); + } + } + + public override void OnAdd(BlockTemplateContainer value) { + var category = value.Data.category; + var categoryString = category.ToFriendlyString(); + + if (!tabs.ContainsKey(category)) { + var newExpandableItemObject = Instantiate(expandableItemPrefab, viewContainer); + var newExpandableItem = newExpandableItemObject.GetComponent(); + newExpandableItem.HeaderText = categoryString; + tabs[category] = newExpandableItem; + newExpandableItem.gameObject.SetActive(filter.HasValue(category)); + } + + var categoryItem = tabs[category]; + var view = base.CreateView(value, categoryItem.Content); + + view.button.onClick.AddListener(() => SetSelected(value)); + } + + public void SetSelected(BlockTemplateContainer value) { + if (activeView != null) { + activeView.Selected = false; + } + + if (value == null) { + activeView = null; + blockSelected?.Invoke(null); + + return; + } + + activeView = GetView(value); + activeView.Selected = true; + + blockSelected?.Invoke(value.Data); + } + + public void CloseTabs() { + tabs.Values.ForEach(expandableItem => expandableItem.Expanded = false); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/ShipEditorOverlay/ShipEditorOverlayInventory.cs.meta b/Assets/Project/Source/BlueprintEditor/EditorOverlay/ShipEditorOverlayInventory.cs.meta similarity index 100% rename from Assets/Project/Source/ShipEditor/ShipEditorOverlay/ShipEditorOverlayInventory.cs.meta rename to Assets/Project/Source/BlueprintEditor/EditorOverlay/ShipEditorOverlayInventory.cs.meta diff --git a/Assets/Project/Source/BlueprintEditor/GridEditor.Events.cs b/Assets/Project/Source/BlueprintEditor/GridEditor.Events.cs new file mode 100644 index 00000000..adde5684 --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/GridEditor.Events.cs @@ -0,0 +1,67 @@ +using System; +using UnityEngine; + +namespace Exa.ShipEditor { + public partial class GridEditor { + public event Action BlueprintChangedEvent; + + public void OnBlueprintClear() { + // Hide block ghost and ask user for blueprint clear confirmation + S.UI.Prompts.PromptYesNo( + "Are you sure you want to clear the blueprint?", + this, + yes => { + if (yes) { + IsSaved = false; + editorGrid.ClearBlueprint(); + } + } + ); + } + + public void OnOverlayPointerEnter() { + MouseOverUI = true; + } + + public void OnOverlayPointerExit() { + MouseOverUI = false; + } + + public void OnBlueprintChanged() { + BlueprintChangedEvent?.Invoke(); + IsSaved = false; + UpdateSaveButton(); + } + + public void OnBlueprintNameInputChanged(string value) { + IsSaved = false; + ValidateName(value); + UpdateSaveButton(); + } + + public void OnBlueprintGridValidationRequested() { + ValidateGrid(); + UpdateSaveButton(); + } + + public void OnBlueprintSave() { + // Don't to save twice + if (IsSaved) { + return; + } + + // Make sure the grid is validated before saving + ValidateGrid(); + UpdateSaveButton(); + + if (!ShouldSave) { + return; + } + + IsSaved = true; + UpdateSaveButton(); + + ImportArgs.Save(ActiveBlueprint); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/ShipEditor.Events.cs.meta b/Assets/Project/Source/BlueprintEditor/GridEditor.Events.cs.meta similarity index 100% rename from Assets/Project/Source/ShipEditor/ShipEditor.Events.cs.meta rename to Assets/Project/Source/BlueprintEditor/GridEditor.Events.cs.meta diff --git a/Assets/Project/Source/BlueprintEditor/GridEditor.Input.cs b/Assets/Project/Source/BlueprintEditor/GridEditor.Input.cs new file mode 100644 index 00000000..2ddb29ba --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/GridEditor.Input.cs @@ -0,0 +1,112 @@ +using UnityEngine; +using UnityEngine.InputSystem; + +namespace Exa.ShipEditor { + public partial class GridEditor { + public EditorCameraTarget EditorCameraTarget { get; private set; } + + public void OnMovement(InputAction.CallbackContext context) { + if (S.Input.inputIsCaptured) { + editorGrid.MovementVector = Vector2.zero; + + return; + } + + switch (context.phase) { + case InputActionPhase.Performed: + editorGrid.MovementVector = context.ReadValue(); + + break; + + case InputActionPhase.Canceled: + editorGrid.MovementVector = Vector2.zero; + + break; + + default: + return; + } + } + + public void OnLeftClick(InputAction.CallbackContext context) { + switch (context.phase) { + case InputActionPhase.Started: + leftButtonPressed = true; + + break; + + case InputActionPhase.Canceled: + leftButtonPressed = false; + + break; + + default: + return; + } + } + + public void OnRightClick(InputAction.CallbackContext context) { + switch (context.phase) { + case InputActionPhase.Started: + rightButtonPressed = true; + + break; + + case InputActionPhase.Canceled: + rightButtonPressed = false; + + break; + + default: + return; + } + } + + public void OnRotateLeft(InputAction.CallbackContext context) { + switch (context.phase) { + case InputActionPhase.Started: + editorGrid.OnRotateLeft(); + + break; + + default: + return; + } + } + + public void OnRotateRight(InputAction.CallbackContext context) { + switch (context.phase) { + case InputActionPhase.Started: + editorGrid.OnRotateRight(); + + break; + + default: + return; + } + } + + public void OnToggleVerticalMirror(InputAction.CallbackContext context) { + switch (context.phase) { + case InputActionPhase.Started: + FlipState ^= BlockFlip.FlipY; + + break; + + default: + return; + } + } + + public void OnZoom(InputAction.CallbackContext context) { + if (MouseOverUI) { + return; + } + + if (context.phase == InputActionPhase.Performed) { + var delta = context.ReadValue(); + EditorCameraTarget.OnScroll(delta.y); + } + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/ShipEditor.Input.cs.meta b/Assets/Project/Source/BlueprintEditor/GridEditor.Input.cs.meta similarity index 100% rename from Assets/Project/Source/ShipEditor/ShipEditor.Input.cs.meta rename to Assets/Project/Source/BlueprintEditor/GridEditor.Input.cs.meta diff --git a/Assets/Project/Source/BlueprintEditor/GridEditor.State.cs b/Assets/Project/Source/BlueprintEditor/GridEditor.State.cs new file mode 100644 index 00000000..e04d5f9b --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/GridEditor.State.cs @@ -0,0 +1,70 @@ +using Exa.Utils; +using Exa.Validation; +using UnityEngine; + +namespace Exa.ShipEditor { + public partial class GridEditor { + private BlockFlip flipState; + private bool interactible = true; + private bool leftButtonPressed; + private bool mouseOverUI; + private bool rightButtonPressed; + + public bool IsSaved { get; private set; } + public ValidationResult NameValidationResult { get; private set; } + public ValidationResult GridValidationResult { get; private set; } + public GridEditorImportArgs ImportArgs { get; set; } + + private BlockFlip FlipState { + get => flipState; + set { + flipState = value; + + overlay.verticalMirrorView.SetState(value.HasValue(BlockFlip.FlipY)); + editorGrid.ghostLayer.SetFlip(value); + } + } + + public bool MouseOverUI { + get => mouseOverUI; + set { + mouseOverUI = value; + + editorGrid.MouseOverUI = value; + } + } + + private bool ShouldSave { get; set; } + + public bool Interactable { + get => interactible; + set { + interactible = value; + + editorGrid.Interactable = value; + navigateable.Interactable = value; + + if (value) { + gameControls.Enable(); + } else { + gameControls.Disable(); + editorGrid.MovementVector = Vector2.zero; + } + } + } + + private void ResetState() { + IsSaved = true; + NameValidationResult = null; + GridValidationResult = null; + } + + private void UpdateSaveButton() { + ShouldSave = GetShouldSave(out var message); + + overlay.infoPanel.saveButtonTooltipTrigger.SetText(message); + overlay.infoPanel.saveButtonCanvasGroup.interactable = ShouldSave; + overlay.infoPanel.saveButtonCanvasGroup.alpha = ShouldSave ? 1f : 0.5f; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/ShipEditor.State.cs.meta b/Assets/Project/Source/BlueprintEditor/GridEditor.State.cs.meta similarity index 100% rename from Assets/Project/Source/ShipEditor/ShipEditor.State.cs.meta rename to Assets/Project/Source/BlueprintEditor/GridEditor.State.cs.meta diff --git a/Assets/Project/Source/BlueprintEditor/GridEditor.Validation.cs b/Assets/Project/Source/BlueprintEditor/GridEditor.Validation.cs new file mode 100644 index 00000000..ea7b27da --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/GridEditor.Validation.cs @@ -0,0 +1,75 @@ +using System.Collections.Generic; +using Exa.Validation; +using UnityEngine; + +namespace Exa.ShipEditor { + public partial class GridEditor { + private List customValidators; + private BlueprintGridValidator gridValidator; + private BlueprintNameValidator nameValidator; + + public void ValidateGrid() { + var args = new BlueprintGridValidationArgs { + blueprintGrid = editorGrid.blueprintLayer.ActiveBlueprint.Grid + }; + + GridValidationResult = Validate(gridValidator, args); + } + + public void ValidateName(string name) { + if (ImportArgs is ContainerImportArgs containerImportArgs) { + var args = new BlueprintNameValidationArgs { + collectionContext = S.Blueprints.userBlueprints, + requestedName = name, + blueprintContainer = containerImportArgs.Container + }; + + NameValidationResult = Validate(nameValidator, args); + + if (NameValidationResult) { + editorGrid.blueprintLayer.ActiveBlueprint.name = name; + } + } else { + Debug.LogError("Attempted to validate name on unsupported import arguments"); + } + } + + public ValidationResult Validate(IValidator validator, T args) { + return overlay.infoPanel.errorListController.Validate(validator, args); + } + + private bool GetShouldSave(out string message) { + if (IsSaved) { + message = "Blueprint is already saved"; + + return false; + } + + if (NameValidationResult != null && !NameValidationResult) { + message = NameValidationResult.GetFirstBySeverity().Message; + + return false; + } + + if (GridValidationResult != null && !GridValidationResult) { + message = GridValidationResult.GetFirstBySeverity().Message; + + return false; + } + + foreach (var validator in customValidators) { + if (validator.Result == null || validator.Result) { + continue; + } + + message = validator.Result.GetFirstBySeverity().Message; + + return false; + } + + message = null; + + return true; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/ShipEditor.Validation.cs.meta b/Assets/Project/Source/BlueprintEditor/GridEditor.Validation.cs.meta similarity index 100% rename from Assets/Project/Source/ShipEditor/ShipEditor.Validation.cs.meta rename to Assets/Project/Source/BlueprintEditor/GridEditor.Validation.cs.meta diff --git a/Assets/Project/Source/BlueprintEditor/GridEditor.cs b/Assets/Project/Source/BlueprintEditor/GridEditor.cs new file mode 100644 index 00000000..e7f7ad5f --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/GridEditor.cs @@ -0,0 +1,137 @@ +using System.Collections.Generic; +using Exa.Camera; +using Exa.Grids; +using Exa.Grids.Blueprints; +using Exa.Input; +using Exa.IO; +using Exa.UI; +using Exa.UI.Controls; +using Exa.Validation; +using UnityEngine; +using static Exa.Input.GameControls; + +#pragma warning disable CS0649 + +namespace Exa.ShipEditor { + [RequireComponent(typeof(GridEditorNavigateable))] + public partial class GridEditor : MonoBehaviour, IEditorActions, IUIGroup { + [SerializeField] private EditorGrid editorGrid; + public GridEditorNavigateable navigateable; + + [SerializeField] private GridEditorStopwatch stopwatch; + [SerializeField] private CameraTargetSettings cameraSettings; + private GameControls gameControls; + private ShipEditorOverlay overlay; + + public Blueprint ActiveBlueprint { + get => editorGrid.blueprintLayer.ActiveBlueprint; + } + + public GridTotals ActiveBlueprintTotals { + get => ActiveBlueprint.Grid.GetTotals(ImportArgs.BlockContext); + } + + private void Awake() { + overlay = S.UI.EditorOverlay; + EditorCameraTarget = new EditorCameraTarget(cameraSettings); + + gameControls = new GameControls(); + gameControls.Editor.SetCallbacks(this); + + overlay.infoPanel.clearButton.onClick.AddListener(OnBlueprintClear); + overlay.inventory.blockSelected.AddListener(editorGrid.OnBlockSelected); + overlay.inventory.Init(); + overlay.onPointerEnter.AddListener(OnOverlayPointerEnter); + overlay.onPointerExit.AddListener(OnOverlayPointerExit); + overlay.infoPanel.blueprintNameInput.inputField.onValueChanged.AddListener(OnBlueprintNameInputChanged); + overlay.infoPanel.saveButton.onClick.AddListener(OnBlueprintSave); + + editorGrid.blueprintLayer.onBlueprintChanged.AddListener(OnBlueprintChanged); + + stopwatch.onTime.AddListener(OnBlueprintGridValidationRequested); + + #if UNITY_EDITOR + var button = ButtonControl.Create(overlay.infoPanel.controlsContainer, "Save as asset"); + + button.OnClick.AddListener( + () => { + var blueprint = editorGrid.blueprintLayer.ActiveBlueprint; + var staticBlueprint = ScriptableObject.CreateInstance(); + staticBlueprint.Save(blueprint); + } + ); + + button.LayoutElement.preferredHeight = 32; + #endif + } + + private void Update() { + if (leftButtonPressed) { + editorGrid.OnLeftClickPressed(); + + return; + } + + if (rightButtonPressed) { + editorGrid.OnRightClickPressed(); + } + } + + private void OnEnable() { + overlay.gameObject.SetActive(true); + gameControls.Enable(); + + S.CameraController.SetTarget(EditorCameraTarget, true); + } + + private void OnDisable() { + overlay.gameObject.SetActive(false); + gameControls.Disable(); + + foreach (var validator in customValidators) { + validator.Remove(); + } + } + + public void Import(GridEditorImportArgs importArgs) { + ImportArgs = importArgs; + customValidators = new List(); + customValidators.AddRange(importArgs.Validators); + + ImportImpl(importArgs.GetBlueprint(), importArgs.ValidateName); + } + + private void ImportImpl(Blueprint blueprint, bool enableNameChanging) { + ResetState(); + + editorGrid.turretLayer.Init(); + + gridValidator = new BlueprintGridValidator(); + nameValidator = enableNameChanging ? new BlueprintNameValidator() : null; + overlay.infoPanel.SetNameEditingActive(enableNameChanging); + + var newBlueprint = blueprint.Clone(); + editorGrid.Import(newBlueprint); + + if (enableNameChanging) { + ValidateName(newBlueprint.name); + } + + foreach (var validator in customValidators) { + validator.Add(); + } + + overlay.infoPanel.blueprintNameInput.SetValue(newBlueprint.name, false); + overlay.inventory.SetFilter(blueprint.BlueprintType.allowedBlockCategory); + overlay.inventory.SetSelected(null); + overlay.inventory.CloseTabs(); + + FlipState = BlockFlip.None; + } + + public void ExportToClipboard() { + var json = IOUtils.ToJson(editorGrid.blueprintLayer.ActiveBlueprint); + GUIUtility.systemCopyBuffer = json; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/ShipEditor.cs.meta b/Assets/Project/Source/BlueprintEditor/GridEditor.cs.meta similarity index 100% rename from Assets/Project/Source/ShipEditor/ShipEditor.cs.meta rename to Assets/Project/Source/BlueprintEditor/GridEditor.cs.meta diff --git a/Assets/Project/Source/BlueprintEditor/GridEditorNavigateable.cs b/Assets/Project/Source/BlueprintEditor/GridEditorNavigateable.cs new file mode 100644 index 00000000..542aef6b --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/GridEditorNavigateable.cs @@ -0,0 +1,36 @@ +using Exa.UI.Components; +using UnityEngine; + +#pragma warning disable CS0649 + +namespace Exa.ShipEditor { + [RequireComponent(typeof(GridEditor))] + public class GridEditorNavigateable : ReturnNavigateable { + [SerializeField] private GridEditor gridEditor; + + public override void Return(bool force = false) { + if (!Interactable) { + return; + } + + var confirmationString = "Are you sure you want to exit without saving?"; + + if (!gridEditor.IsSaved) { + S.UI.Prompts.PromptYesNo(confirmationString, gridEditor, OnClosePrompt); + } else { + DoReturn(force); + } + } + + private void OnClosePrompt(bool confirm) { + if (confirm) { + DoReturn(true); + } + } + + private void DoReturn(bool force) { + gridEditor.ImportArgs.OnExit?.Invoke(); + base.Return(force); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/ShipEditorNavigateable.cs.meta b/Assets/Project/Source/BlueprintEditor/GridEditorNavigateable.cs.meta similarity index 100% rename from Assets/Project/Source/ShipEditor/ShipEditorNavigateable.cs.meta rename to Assets/Project/Source/BlueprintEditor/GridEditorNavigateable.cs.meta diff --git a/Assets/Project/Source/BlueprintEditor/GridEditorStopwatch.cs b/Assets/Project/Source/BlueprintEditor/GridEditorStopwatch.cs new file mode 100644 index 00000000..257a5e90 --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/GridEditorStopwatch.cs @@ -0,0 +1,38 @@ +using UnityEngine; +using UnityEngine.Events; + +#pragma warning disable CS0649 + +namespace Exa.ShipEditor { + public class GridEditorStopwatch : MonoBehaviour { + public UnityEvent onTime; + + [SerializeField] private float invokeOnTime; + private bool invokedOnTime; + private float timeElapsedFromLastEdit; + + public void Reset() { + timeElapsedFromLastEdit = 0f; + invokedOnTime = false; + } + + public void Update() { + if (timeElapsedFromLastEdit > invokeOnTime && !invokedOnTime) { + invokedOnTime = true; + onTime?.Invoke(); + } + + timeElapsedFromLastEdit += Time.deltaTime; + } + + public void OnEnable() { + timeElapsedFromLastEdit = 0f; + invokedOnTime = false; + } + + public void EmulateInvoke() { + invokedOnTime = true; + onTime?.Invoke(); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/ShipEditorStopwatch.cs.meta b/Assets/Project/Source/BlueprintEditor/GridEditorStopwatch.cs.meta similarity index 100% rename from Assets/Project/Source/ShipEditor/ShipEditorStopwatch.cs.meta rename to Assets/Project/Source/BlueprintEditor/GridEditorStopwatch.cs.meta diff --git a/Assets/Project/Source/BlueprintEditor/GridEditorUtils.cs b/Assets/Project/Source/BlueprintEditor/GridEditorUtils.cs new file mode 100644 index 00000000..29b31ceb --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/GridEditorUtils.cs @@ -0,0 +1,36 @@ +using System.Collections.Generic; +using Exa.Grids.Blueprints; +using Exa.Math; +using UnityEngine; + +namespace Exa.ShipEditor { + public static class GridEditorUtils { + public static IEnumerable GetOccupiedTilesByAnchor(ABpBlock aBpBlock) { + var block = aBpBlock.BlueprintBlock; + var gridAnchor = aBpBlock.GridAnchor; + + return GetOccupiedTilesByAnchor(block, gridAnchor); + } + + public static IEnumerable GetOccupiedTilesByAnchor(BlueprintBlock block, Vector2Int gridAnchor) { + var area = block.Template.size.Rotate(block.Rotation); + + if (block.flippedX) { + area.x = -area.x; + } + + if (block.flippedY) { + area.y = -area.y; + } + + return MathUtils.EnumerateVectors(area, gridAnchor); + } + + public static Vector2Int GetMirroredGridPos(Vector2Int size, Vector2Int gridPos) { + return new Vector2Int { + x = gridPos.x, + y = size.y - 1 - gridPos.y + }; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/BlueprintEditor/GridEditorUtils.cs.meta b/Assets/Project/Source/BlueprintEditor/GridEditorUtils.cs.meta new file mode 100644 index 00000000..606c9d9f --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/GridEditorUtils.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a02d282cc57b50f43ae1bc31b8556dd3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/BlueprintEditor/Imports.meta b/Assets/Project/Source/BlueprintEditor/Imports.meta new file mode 100644 index 00000000..f63d1084 --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/Imports.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 4245973ba7904ba1b646596bc0749b30 +timeCreated: 1614529658 \ No newline at end of file diff --git a/Assets/Project/Source/BlueprintEditor/Imports/BlueprintImportArgs.cs b/Assets/Project/Source/BlueprintEditor/Imports/BlueprintImportArgs.cs new file mode 100644 index 00000000..37891e99 --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/Imports/BlueprintImportArgs.cs @@ -0,0 +1,23 @@ +using System; +using Exa.Grids.Blueprints; + +namespace Exa.ShipEditor { + public class BlueprintImportArgs : GridEditorImportArgs { + private readonly Action save; + private Blueprint blueprint; + + public BlueprintImportArgs(Blueprint blueprint, Action save) { + this.blueprint = blueprint; + this.save = save; + } + + public override void Save(Blueprint blueprint) { + this.blueprint = blueprint; + save(blueprint); + } + + public override Blueprint GetBlueprint() { + return blueprint; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/BlueprintEditor/Imports/BlueprintImportArgs.cs.meta b/Assets/Project/Source/BlueprintEditor/Imports/BlueprintImportArgs.cs.meta new file mode 100644 index 00000000..804f991b --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/Imports/BlueprintImportArgs.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 1e1fb868c6b843eeb85b7dff80d29fd4 +timeCreated: 1614529769 \ No newline at end of file diff --git a/Assets/Project/Source/BlueprintEditor/Imports/ContainerImportArgs.cs b/Assets/Project/Source/BlueprintEditor/Imports/ContainerImportArgs.cs new file mode 100644 index 00000000..1b44529b --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/Imports/ContainerImportArgs.cs @@ -0,0 +1,27 @@ +using System; +using Exa.Grids.Blueprints; + +namespace Exa.ShipEditor { + public class ContainerImportArgs : GridEditorImportArgs { + private readonly Action save; + + public ContainerImportArgs(BlueprintContainer container, Action save) { + Container = container; + ValidateName = true; + this.save = save; + } + + public BlueprintContainer Container { get; } + + public override void Save(Blueprint blueprint) { + // Set the value of the observable + Container.SetData(blueprint); + // Save the blueprint + save(Container); + } + + public override Blueprint GetBlueprint() { + return Container.Data; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/BlueprintEditor/Imports/ContainerImportArgs.cs.meta b/Assets/Project/Source/BlueprintEditor/Imports/ContainerImportArgs.cs.meta new file mode 100644 index 00000000..e2910cac --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/Imports/ContainerImportArgs.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 6a648000e304438e98dd2cbc85741b75 +timeCreated: 1614530078 \ No newline at end of file diff --git a/Assets/Project/Source/BlueprintEditor/Imports/GridEditorImportArgs.cs b/Assets/Project/Source/BlueprintEditor/Imports/GridEditorImportArgs.cs new file mode 100644 index 00000000..556dc1ce --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/Imports/GridEditorImportArgs.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using Exa.Grids.Blocks; +using Exa.Grids.Blueprints; +using Exa.Validation; + +namespace Exa.ShipEditor { + public abstract class GridEditorImportArgs { + private readonly List validators; + + public GridEditorImportArgs() { + validators = new List(); + } + + public BlockContext BlockContext { get; } = BlockContext.UserGroup; + public Action OnExit { get; set; } + + public IEnumerable Validators { + get => validators; + } + + public bool ValidateName { get; protected set; } + + public abstract void Save(Blueprint blueprint); + + public abstract Blueprint GetBlueprint(); + + public void AddValidator(IPlugableValidator validator) { + validators.Add(validator); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/BlueprintEditor/Imports/GridEditorImportArgs.cs.meta b/Assets/Project/Source/BlueprintEditor/Imports/GridEditorImportArgs.cs.meta new file mode 100644 index 00000000..bbc02ecc --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/Imports/GridEditorImportArgs.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: a36b0d7d94434a148574449d67041677 +timeCreated: 1614529311 \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/Validation.meta b/Assets/Project/Source/BlueprintEditor/Validation.meta similarity index 100% rename from Assets/Project/Source/ShipEditor/Validation.meta rename to Assets/Project/Source/BlueprintEditor/Validation.meta diff --git a/Assets/Project/Source/ShipEditor/Validation/BlueprintErrorListController.cs b/Assets/Project/Source/BlueprintEditor/Validation/BlueprintErrorListController.cs similarity index 82% rename from Assets/Project/Source/ShipEditor/Validation/BlueprintErrorListController.cs rename to Assets/Project/Source/BlueprintEditor/Validation/BlueprintErrorListController.cs index 54c2ece9..866e6290 100644 --- a/Assets/Project/Source/ShipEditor/Validation/BlueprintErrorListController.cs +++ b/Assets/Project/Source/BlueprintEditor/Validation/BlueprintErrorListController.cs @@ -1,20 +1,19 @@ -using Exa.UI.Controls; +using System.Linq; +using Exa.UI.Controls; using Exa.Validation; using UnityEngine; using UnityEngine.UI; #pragma warning disable CS0649 -namespace Exa.ShipEditor -{ - public class BlueprintErrorListController : ErrorListController - { +namespace Exa.ShipEditor { + public class BlueprintErrorListController : ErrorListController { [SerializeField] private LayoutElement layoutElement; [SerializeField] private CanvasGroup canvasGroup; public override ValidationResult Validate(IValidator validator, T args) { var result = base.Validate(validator, args); - var visible = !result; + var visible = state.GetActiveErrors().Any(); canvasGroup.interactable = visible; canvasGroup.alpha = visible ? 1 : 0; diff --git a/Assets/Project/Source/ShipEditor/Validation/BlueprintErrorListController.cs.meta b/Assets/Project/Source/BlueprintEditor/Validation/BlueprintErrorListController.cs.meta similarity index 100% rename from Assets/Project/Source/ShipEditor/Validation/BlueprintErrorListController.cs.meta rename to Assets/Project/Source/BlueprintEditor/Validation/BlueprintErrorListController.cs.meta diff --git a/Assets/Project/Source/BlueprintEditor/Validation/BlueprintGridValidationArgs.cs b/Assets/Project/Source/BlueprintEditor/Validation/BlueprintGridValidationArgs.cs new file mode 100644 index 00000000..e44266f5 --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/Validation/BlueprintGridValidationArgs.cs @@ -0,0 +1,7 @@ +using Exa.Grids.Blueprints; + +namespace Exa.ShipEditor { + public class BlueprintGridValidationArgs { + public BlueprintGrid blueprintGrid; + } +} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/Validation/BlueprintGridValidationArgs.cs.meta b/Assets/Project/Source/BlueprintEditor/Validation/BlueprintGridValidationArgs.cs.meta similarity index 100% rename from Assets/Project/Source/ShipEditor/Validation/BlueprintGridValidationArgs.cs.meta rename to Assets/Project/Source/BlueprintEditor/Validation/BlueprintGridValidationArgs.cs.meta diff --git a/Assets/Project/Source/BlueprintEditor/Validation/BlueprintGridValidator.cs b/Assets/Project/Source/BlueprintEditor/Validation/BlueprintGridValidator.cs new file mode 100644 index 00000000..3ed94a09 --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/Validation/BlueprintGridValidator.cs @@ -0,0 +1,28 @@ +using System.Linq; +using Exa.Grids; +using Exa.Grids.Blueprints; +using Exa.Validation; + +namespace Exa.ShipEditor { + public class BlueprintGridValidator : Validator { + protected override void AddErrors(ValidationResult errors, BlueprintGridValidationArgs args) { + var blocks = args.blueprintGrid; + + var controllerCount = blocks.Count(block => block.GetIsController()); + + if (controllerCount > 1) { + errors.Throw("Cannot have multiple controllers"); + } else if (controllerCount == 0) { + errors.Throw("Must have at least one controller"); + } + + if (blocks.Count() > 1 && BlocksAreDisconnected(blocks)) { + errors.Throw("Blueprint has disconnected blocks"); + } + } + + private bool BlocksAreDisconnected(BlueprintGrid grid) { + return grid.Any(block => grid.GetNeighbourCount(block) == 0); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/Validation/BlueprintGridValidator.cs.meta b/Assets/Project/Source/BlueprintEditor/Validation/BlueprintGridValidator.cs.meta similarity index 100% rename from Assets/Project/Source/ShipEditor/Validation/BlueprintGridValidator.cs.meta rename to Assets/Project/Source/BlueprintEditor/Validation/BlueprintGridValidator.cs.meta diff --git a/Assets/Project/Source/BlueprintEditor/Validation/BlueprintNameValidationArgs.cs b/Assets/Project/Source/BlueprintEditor/Validation/BlueprintNameValidationArgs.cs new file mode 100644 index 00000000..3bd4fcaf --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/Validation/BlueprintNameValidationArgs.cs @@ -0,0 +1,9 @@ +using Exa.Grids.Blueprints; + +namespace Exa.ShipEditor { + public class BlueprintNameValidationArgs { + public BlueprintContainer blueprintContainer; + public BlueprintContainerCollection collectionContext; + public string requestedName; + } +} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/Validation/BlueprintNameValidationArgs.cs.meta b/Assets/Project/Source/BlueprintEditor/Validation/BlueprintNameValidationArgs.cs.meta similarity index 100% rename from Assets/Project/Source/ShipEditor/Validation/BlueprintNameValidationArgs.cs.meta rename to Assets/Project/Source/BlueprintEditor/Validation/BlueprintNameValidationArgs.cs.meta diff --git a/Assets/Project/Source/BlueprintEditor/Validation/BlueprintNameValidator.cs b/Assets/Project/Source/BlueprintEditor/Validation/BlueprintNameValidator.cs new file mode 100644 index 00000000..64da6afd --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/Validation/BlueprintNameValidator.cs @@ -0,0 +1,31 @@ +using System.Linq; +using Exa.Grids.Blueprints; +using Exa.Validation; + +namespace Exa.ShipEditor { + public class BlueprintNameValidator : Validator { + protected override void AddErrors(ValidationResult errors, BlueprintNameValidationArgs args) { + // Check if there is any blueprint in the collection that contains the same name as the requested name + errors.Assert( + "Blueprint name is already used", + !args.collectionContext.Any( + blueprintContainer => + blueprintContainer.Data.name == args.requestedName && + blueprintContainer != args.blueprintContainer + ) + ); + + // Check if the name isn't empty + errors.Assert( + "Blueprint name is empty", + args.requestedName != "" + ); + + // Check if the requested name is the default name + errors.Assert( + "Blueprint name cannot be default", + args.requestedName != Blueprint.DEFAULT_BLUEPRINT_NAME + ); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/Validation/BlueprintNameValidator.cs.meta b/Assets/Project/Source/BlueprintEditor/Validation/BlueprintNameValidator.cs.meta similarity index 100% rename from Assets/Project/Source/ShipEditor/Validation/BlueprintNameValidator.cs.meta rename to Assets/Project/Source/BlueprintEditor/Validation/BlueprintNameValidator.cs.meta diff --git a/Assets/Project/Source/ShipEditor/Validation/Errors.meta b/Assets/Project/Source/BlueprintEditor/Validation/Errors.meta similarity index 100% rename from Assets/Project/Source/ShipEditor/Validation/Errors.meta rename to Assets/Project/Source/BlueprintEditor/Validation/Errors.meta diff --git a/Assets/Project/Source/BlueprintEditor/Validation/Errors/BlueprintNameDefaultError.cs b/Assets/Project/Source/BlueprintEditor/Validation/Errors/BlueprintNameDefaultError.cs new file mode 100644 index 00000000..ea70c35a --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/Validation/Errors/BlueprintNameDefaultError.cs @@ -0,0 +1,5 @@ +using Exa.Validation; + +namespace Exa.ShipEditor { + public class BlueprintNameDefaultError : ValidationError { } +} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/Validation/Errors/BlueprintNameDefaultError.cs.meta b/Assets/Project/Source/BlueprintEditor/Validation/Errors/BlueprintNameDefaultError.cs.meta similarity index 100% rename from Assets/Project/Source/ShipEditor/Validation/Errors/BlueprintNameDefaultError.cs.meta rename to Assets/Project/Source/BlueprintEditor/Validation/Errors/BlueprintNameDefaultError.cs.meta diff --git a/Assets/Project/Source/BlueprintEditor/Validation/Errors/BlueprintNameDuplicateError.cs b/Assets/Project/Source/BlueprintEditor/Validation/Errors/BlueprintNameDuplicateError.cs new file mode 100644 index 00000000..380b5b64 --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/Validation/Errors/BlueprintNameDuplicateError.cs @@ -0,0 +1,5 @@ +using Exa.Validation; + +namespace Exa.ShipEditor { + public class BlueprintNameDuplicateError : ValidationError { } +} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/Validation/Errors/BlueprintNameDuplicateError.cs.meta b/Assets/Project/Source/BlueprintEditor/Validation/Errors/BlueprintNameDuplicateError.cs.meta similarity index 100% rename from Assets/Project/Source/ShipEditor/Validation/Errors/BlueprintNameDuplicateError.cs.meta rename to Assets/Project/Source/BlueprintEditor/Validation/Errors/BlueprintNameDuplicateError.cs.meta diff --git a/Assets/Project/Source/BlueprintEditor/Validation/Errors/BlueprintNameEmptyError.cs b/Assets/Project/Source/BlueprintEditor/Validation/Errors/BlueprintNameEmptyError.cs new file mode 100644 index 00000000..9e9f1f4a --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/Validation/Errors/BlueprintNameEmptyError.cs @@ -0,0 +1,5 @@ +using Exa.Validation; + +namespace Exa.ShipEditor { + public class BlueprintNameEmptyError : ValidationError { } +} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/Validation/Errors/BlueprintNameEmptyError.cs.meta b/Assets/Project/Source/BlueprintEditor/Validation/Errors/BlueprintNameEmptyError.cs.meta similarity index 100% rename from Assets/Project/Source/ShipEditor/Validation/Errors/BlueprintNameEmptyError.cs.meta rename to Assets/Project/Source/BlueprintEditor/Validation/Errors/BlueprintNameEmptyError.cs.meta diff --git a/Assets/Project/Source/BlueprintEditor/Validation/Errors/ControllerError.cs b/Assets/Project/Source/BlueprintEditor/Validation/Errors/ControllerError.cs new file mode 100644 index 00000000..ef0463f4 --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/Validation/Errors/ControllerError.cs @@ -0,0 +1,5 @@ +using Exa.Validation; + +namespace Exa.ShipEditor { + public class ControllerError : ValidationError { } +} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/Validation/Errors/ControllerError.cs.meta b/Assets/Project/Source/BlueprintEditor/Validation/Errors/ControllerError.cs.meta similarity index 100% rename from Assets/Project/Source/ShipEditor/Validation/Errors/ControllerError.cs.meta rename to Assets/Project/Source/BlueprintEditor/Validation/Errors/ControllerError.cs.meta diff --git a/Assets/Project/Source/BlueprintEditor/Validation/Errors/DisconnectedBlocksError.cs b/Assets/Project/Source/BlueprintEditor/Validation/Errors/DisconnectedBlocksError.cs new file mode 100644 index 00000000..1cfff9ea --- /dev/null +++ b/Assets/Project/Source/BlueprintEditor/Validation/Errors/DisconnectedBlocksError.cs @@ -0,0 +1,5 @@ +using Exa.Validation; + +namespace Exa.ShipEditor { + public class DisconnectedBlocksError : ValidationError { } +} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/Validation/Errors/DisconnectedBlocksError.cs.meta b/Assets/Project/Source/BlueprintEditor/Validation/Errors/DisconnectedBlocksError.cs.meta similarity index 100% rename from Assets/Project/Source/ShipEditor/Validation/Errors/DisconnectedBlocksError.cs.meta rename to Assets/Project/Source/BlueprintEditor/Validation/Errors/DisconnectedBlocksError.cs.meta diff --git a/Assets/Project/Source/Camera.meta b/Assets/Project/Source/Camera.meta new file mode 100644 index 00000000..1cc1d32e --- /dev/null +++ b/Assets/Project/Source/Camera.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 35865bae5180470ea72bd0b0b0f4ffa9 +timeCreated: 1615722293 \ No newline at end of file diff --git a/Assets/Project/Source/Camera/CameraController.cs b/Assets/Project/Source/Camera/CameraController.cs new file mode 100644 index 00000000..6118a795 --- /dev/null +++ b/Assets/Project/Source/Camera/CameraController.cs @@ -0,0 +1,85 @@ +using System; +using DG.Tweening; +using Exa.Gameplay; +using Exa.Math; +using Exa.Utils; +using UnityEngine; + +#pragma warning disable CS0649 + +namespace Exa.Camera { + public class CameraController : MonoBehaviour { + [SerializeField] private CameraTargetSettings defaultSettings; + [SerializeField] private UnityEngine.Camera targetCamera; + + private Tween cameraMoveTween; + private Tween cameraZoomTween; + + public ICameraTarget CurrentTarget { get; private set; } + public UserTarget UserTarget { get; private set; } + + public CameraTargetSettings DefaultSettings { + get => defaultSettings; + } + + public UnityEngine.Camera Camera { + get => targetCamera; + } + + public Vector2 CurrentPosition { + get => targetCamera.transform.position; + } + + private void Awake() { + UserTarget = new UserTarget(defaultSettings); + } + + private void Update() { + if (CurrentTarget != null && !CurrentTarget.TargetValid) { + EscapeTarget(); + } + + if (CurrentTarget != null) { + UserTarget.ImportValues(CurrentTarget); + } + + UserTarget.Tick(); + + var target = GetTarget(); + var cameraOrthoSize = target.GetCalculatedOrthoSize(); + var cameraPosition = target.GetWorldPosition().ToVector3(-10); + + targetCamera.DOOrthoSize(cameraOrthoSize, 0.2f) + .Replace(ref cameraZoomTween); + + targetCamera.transform.DOMove(cameraPosition, 0.2f) + .Replace(ref cameraMoveTween); + } + + public void SetSelectionTarget(ShipSelection selection, bool teleport = false) { + if (selection.Count <= 0) { + throw new ArgumentException("Cannot set an empty selection as target", nameof(selection)); + } + + var target = new SelectionTarget(selection, defaultSettings); + SetTarget(target, teleport); + } + + public void SetTarget(ICameraTarget newTarget, bool teleport = false) { + if (teleport) { + targetCamera.transform.position = newTarget.GetWorldPosition().ToVector3(-10); + targetCamera.orthographicSize = newTarget.GetCalculatedOrthoSize(); + } + + CurrentTarget = newTarget; + } + + public void EscapeTarget() { + CurrentTarget = null; + } + + public ICameraTarget GetTarget() { + return CurrentTarget ?? UserTarget; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Camera/CameraController.cs.meta b/Assets/Project/Source/Camera/CameraController.cs.meta similarity index 100% rename from Assets/Project/Source/Gameplay/Camera/CameraController.cs.meta rename to Assets/Project/Source/Camera/CameraController.cs.meta diff --git a/Assets/Project/Source/Camera/CameraTarget.cs b/Assets/Project/Source/Camera/CameraTarget.cs new file mode 100644 index 00000000..28de71b0 --- /dev/null +++ b/Assets/Project/Source/Camera/CameraTarget.cs @@ -0,0 +1,40 @@ +using Exa.Types.Generics; +using UnityEngine; + +namespace Exa.Camera { + public abstract class CameraTarget : ICameraTarget { + private readonly CameraTargetSettings settings; + private float zoomScale; + + protected CameraTarget(CameraTargetSettings settings) { + this.settings = settings; + ZoomScale = 0.5f; + } + + public float ZoomScale { + get => zoomScale; + set => zoomScale = Mathf.Clamp01(value); + } + + public virtual bool TargetValid { + get => true; + } + + public virtual float GetCalculatedOrthoSize() { + var easedZoomScale = settings.ZoomEase.Evaluate(ZoomScale); + var multiplier = settings.zoomMinMax.Evaluate(easedZoomScale); + + return settings.orthoMultiplier * multiplier; + } + + public abstract Vector2 GetWorldPosition(); + + public void OnScroll(float yScroll) { + ZoomScale -= yScroll / 1000f * settings.zoomSpeed; + } + + protected void SetZoomFromOrtho(float orthoSize) { + ZoomScale = orthoSize / settings.orthoMultiplier; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Camera/CameraTarget.cs.meta b/Assets/Project/Source/Camera/CameraTarget.cs.meta similarity index 100% rename from Assets/Project/Source/Gameplay/Camera/CameraTarget.cs.meta rename to Assets/Project/Source/Camera/CameraTarget.cs.meta diff --git a/Assets/Project/Source/Camera/CameraTargetSettings.cs b/Assets/Project/Source/Camera/CameraTargetSettings.cs new file mode 100644 index 00000000..dc382789 --- /dev/null +++ b/Assets/Project/Source/Camera/CameraTargetSettings.cs @@ -0,0 +1,14 @@ +using System; +using DG.Tweening; +using Exa.Types.Generics; +using Exa.UI.Tweening; + +namespace Exa.Camera { + [Serializable] + public class CameraTargetSettings { + public ExaEase ZoomEase = new ExaEase(Ease.InOutSine); + public MinMax zoomMinMax = new MinMax(0.1f, 2.5f); + public float zoomSpeed = 1f; + public float orthoMultiplier = 30f; + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Camera/CameraTargetSettings.cs.meta b/Assets/Project/Source/Camera/CameraTargetSettings.cs.meta similarity index 100% rename from Assets/Project/Source/Gameplay/Camera/CameraTargetSettings.cs.meta rename to Assets/Project/Source/Camera/CameraTargetSettings.cs.meta diff --git a/Assets/Project/Source/Camera/ICameraTarget.cs b/Assets/Project/Source/Camera/ICameraTarget.cs new file mode 100644 index 00000000..bfda1e9d --- /dev/null +++ b/Assets/Project/Source/Camera/ICameraTarget.cs @@ -0,0 +1,15 @@ +using UnityEngine; + +namespace Exa.Camera { + public interface ICameraTarget { + float ZoomScale { get; } + + bool TargetValid { get; } + + Vector2 GetWorldPosition(); + + float GetCalculatedOrthoSize(); + + void OnScroll(float yScroll); + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Camera/ICameraTarget.cs.meta b/Assets/Project/Source/Camera/ICameraTarget.cs.meta similarity index 100% rename from Assets/Project/Source/Gameplay/Camera/ICameraTarget.cs.meta rename to Assets/Project/Source/Camera/ICameraTarget.cs.meta diff --git a/Assets/Project/Source/Camera/SelectionTarget.cs b/Assets/Project/Source/Camera/SelectionTarget.cs new file mode 100644 index 00000000..888ada98 --- /dev/null +++ b/Assets/Project/Source/Camera/SelectionTarget.cs @@ -0,0 +1,23 @@ +using System.Linq; +using Exa.Gameplay; +using UnityEngine; + +namespace Exa.Camera { + public class SelectionTarget : CameraTarget { + private readonly ShipSelection selection; + + public SelectionTarget(ShipSelection selection, CameraTargetSettings settings) + : base(settings) { + this.selection = selection; + SetZoomFromOrtho(selection.Max(ship => ship.BlockGrid.MaxSize) * 0.75f); + } + + public override bool TargetValid { + get => selection.Any(); + } + + public override Vector2 GetWorldPosition() { + return selection.AveragePosition; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Camera/SelectionTarget.cs.meta b/Assets/Project/Source/Camera/SelectionTarget.cs.meta similarity index 100% rename from Assets/Project/Source/Gameplay/Camera/SelectionTarget.cs.meta rename to Assets/Project/Source/Camera/SelectionTarget.cs.meta diff --git a/Assets/Project/Source/Camera/UserTarget.cs b/Assets/Project/Source/Camera/UserTarget.cs new file mode 100644 index 00000000..538b329c --- /dev/null +++ b/Assets/Project/Source/Camera/UserTarget.cs @@ -0,0 +1,38 @@ +using UnityEngine; + +namespace Exa.Camera { + /// + /// Represents a camera target the user may move + /// + public class UserTarget : CameraTarget { + private readonly float movementSpeedMultiplier = 1.5f; + public Vector2 movementDelta; + public Vector2 worldPosition; + + public UserTarget(CameraTargetSettings settings) + : base(settings) { } + + public void Tick() { + worldPosition += movementDelta * GetMovementSpeed(); + } + + public override Vector2 GetWorldPosition() { + var mouseOffset = S.Input.MouseOffsetFromCentre * GetCalculatedOrthoSize() * 0.1f; + + return worldPosition + mouseOffset; + } + + public override float GetCalculatedOrthoSize() { + return base.GetCalculatedOrthoSize() * 0.9f; + } + + public void ImportValues(ICameraTarget otherTarget) { + worldPosition = otherTarget.GetWorldPosition(); + ZoomScale = otherTarget.ZoomScale; + } + + private float GetMovementSpeed() { + return movementSpeedMultiplier * GetCalculatedOrthoSize() * Time.deltaTime; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Camera/UserTarget.cs.meta b/Assets/Project/Source/Camera/UserTarget.cs.meta similarity index 100% rename from Assets/Project/Source/Gameplay/Camera/UserTarget.cs.meta rename to Assets/Project/Source/Camera/UserTarget.cs.meta diff --git a/Assets/Project/Source/Data/ActivePair.cs b/Assets/Project/Source/Data/ActivePair.cs deleted file mode 100644 index 0298885a..00000000 --- a/Assets/Project/Source/Data/ActivePair.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; - -namespace Exa.Data -{ - [Serializable] - public class ActivePair - { - public T active; - public T inactive; - - public ActivePair(T active, T inactive) { - this.active = active; - this.inactive = inactive; - } - - public T GetValue(bool active) { - return active ? this.active : this.inactive; - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Data/Bindings/ICollectionObserver.cs b/Assets/Project/Source/Data/Bindings/ICollectionObserver.cs deleted file mode 100644 index 10af914c..00000000 --- a/Assets/Project/Source/Data/Bindings/ICollectionObserver.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Exa.Bindings -{ - /// - /// Interface to support sending push-based notification of changes in a collection - /// - /// Model type - public interface ICollectionObserver - { - void OnAdd(T value); - void OnRemove(T value); - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Data/Bindings/IObservableEnumerable.cs b/Assets/Project/Source/Data/Bindings/IObservableEnumerable.cs deleted file mode 100644 index 2672fa29..00000000 --- a/Assets/Project/Source/Data/Bindings/IObservableEnumerable.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System.Collections.Generic; - -namespace Exa.Bindings -{ - /// - /// Provides - /// - /// - public interface IObservableEnumerable : IEnumerable - { - List> Observers { get; } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Data/Bindings/IObverser.cs b/Assets/Project/Source/Data/Bindings/IObverser.cs deleted file mode 100644 index 15b6c995..00000000 --- a/Assets/Project/Source/Data/Bindings/IObverser.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Exa.Bindings -{ - public interface IObserver - { - void OnUpdate(T data); - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Data/Bindings/Observable.cs b/Assets/Project/Source/Data/Bindings/Observable.cs deleted file mode 100644 index 5295bff8..00000000 --- a/Assets/Project/Source/Data/Bindings/Observable.cs +++ /dev/null @@ -1,76 +0,0 @@ -using Newtonsoft.Json; -using System; -using System.Collections.Generic; - -namespace Exa.Bindings -{ - /// - /// Wrapper that provides a model a way to notify views of changes - /// - /// - public class Observable : IEquatable> - where T : class - { - public T Data { get; private set; } - - [JsonIgnore] protected List> observers = new List>(); - - public Observable(T data) { - this.Data = data; - } - - public void SetData(T data, bool notify = true) { - this.Data = data; - if (notify) Notify(); - } - - public virtual void Notify() { - foreach (var observer in observers) - observer.OnUpdate(Data); - } - - public virtual void Register(IObserver observer) { - if (observers.Contains(observer)) return; - - observers.Add(observer); - } - - public virtual void Unregister(IObserver observer) { - if (!observers.Contains(observer)) return; - - observers.Remove(observer); - } - - public bool Equals(Observable other) { - if (other == null) return false; - - return Data.Equals(other.Data); - } - - public override bool Equals(object obj) { - if (obj is Observable other) - return Data.Equals(other.Data); - - return false; - } - - public static bool operator ==(Observable a, Observable b) { - if (ReferenceEquals(a, b)) return true; - if (a is null) return false; - if (b is null) return false; - return a.Data.Equals(b.Data); - } - - public static bool operator !=(Observable a, Observable b) { - return !(a == b); - } - - public override int GetHashCode() { - return Data.GetHashCode(); - } - - public override string ToString() { - return Data.ToString(); - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Data/Bindings/ObservableCollection.cs b/Assets/Project/Source/Data/Bindings/ObservableCollection.cs deleted file mode 100644 index 821e6330..00000000 --- a/Assets/Project/Source/Data/Bindings/ObservableCollection.cs +++ /dev/null @@ -1,92 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; - -namespace Exa.Bindings -{ - /// - /// Base class for virtual collection that notifies observers of model changes - /// - /// This is preferable to just an observable> because it only needs to refresh views that are changed - /// - /// - /// - [Serializable] - public class ObservableCollection : IObservableEnumerable, ICollection - { - private List collection; - - public List> Observers { get; } = new List>(); - public int Count => collection.Count; - public bool IsReadOnly => false; - - public ObservableCollection() { - this.collection = new List(); - } - - public ObservableCollection(List collection) { - this.collection = collection; - } - - public virtual void Add(T item) { - collection.Add(item); - - foreach (var observer in Observers) - observer.OnAdd(item); - } - - public virtual void Clear() { - collection.Clear(); - - foreach (var observer in Observers) - foreach (var item in this) - observer.OnRemove(item); - } - - public virtual bool Contains(T item) { - return collection.Contains(item); - } - - public virtual void CopyTo(T[] array, int arrayIndex) { - collection.CopyTo(array, arrayIndex); - } - - public virtual bool Remove(T item) { - var removed = collection.Remove(item); - - if (removed) - foreach (var observer in Observers) - observer.OnRemove(item); - - return removed; - } - - public virtual IEnumerator GetEnumerator() { - return collection.GetEnumerator(); - } - - IEnumerator IEnumerable.GetEnumerator() { - return collection.GetEnumerator(); - } - - /// - /// Add an observer to the observer collection - /// - /// - public virtual void Register(ICollectionObserver observer) { - if (Observers.Contains(observer)) return; - - Observers.Add(observer); - } - - /// - /// Remove an observer from the observer collection - /// - /// - public virtual void Unregister(ICollectionObserver observer) { - if (!Observers.Contains(observer)) return; - - Observers.Remove(observer); - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Data/Bindings/ViewController.cs b/Assets/Project/Source/Data/Bindings/ViewController.cs deleted file mode 100644 index 19c088cb..00000000 --- a/Assets/Project/Source/Data/Bindings/ViewController.cs +++ /dev/null @@ -1,72 +0,0 @@ -using System.Collections.Generic; -using UnityEngine; - -namespace Exa.Bindings -{ - /// - /// Controls views for a collection of models - /// - /// Handles instantiating views, binding model observables to their corresponding views, and deleting views - /// - /// - /// View type, must be an observer of - /// Model observable type - /// Model type - public class ViewController : AbstractCollectionObserver - where TView : MonoBehaviour, IObserver - where TContainer : Observable - where TModel : class - { - [SerializeField] protected Transform viewContainer; - [SerializeField] protected GameObject viewPrefab; - - protected Dictionary views = new Dictionary(); - - /// - /// Add observable - /// - /// - public override void OnAdd(TContainer value) { - OnAdd(value, viewContainer); - } - - /// - /// Add Observable with specified view container - /// - /// - /// - protected virtual TView OnAdd(TContainer value, Transform container) { - var blockObject = Instantiate(viewPrefab, container); - var view = blockObject.GetComponent(); - view.OnUpdate(value.Data); - value.Register(view); - views.Add(value, view); - return view; - } - - /// - /// Clear views - /// - public override void OnClear() { - foreach (var key in views.Keys) { - OnRemove(key); - } - - views = new Dictionary(); - } - - /// - /// Remove view - /// - /// - public override void OnRemove(TContainer value) { - var view = views[value]; - value.Unregister(view); - Destroy(view.gameObject); - } - - public TView GetView(TContainer container) { - return views[container]; - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Data/Bindings/ViewController.cs.meta b/Assets/Project/Source/Data/Bindings/ViewController.cs.meta deleted file mode 100644 index d66a31dc..00000000 --- a/Assets/Project/Source/Data/Bindings/ViewController.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 1f6a0ad2b269a6244a4e0fc06bb9f8d7 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/Data/ISettings.cs b/Assets/Project/Source/Data/ISettings.cs deleted file mode 100644 index a21ff1f3..00000000 --- a/Assets/Project/Source/Data/ISettings.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace Exa.Data -{ - public interface ISettings - { - void Load(); - - void Save(); - - void Apply(); - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Data/SaveableSettings.cs b/Assets/Project/Source/Data/SaveableSettings.cs deleted file mode 100644 index 99393f62..00000000 --- a/Assets/Project/Source/Data/SaveableSettings.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System; -using Exa.IO; -using System.IO; - -namespace Exa.Data -{ - /// - /// Provides base functionality for a settings object that is serialized and stored in the data directory - /// - /// - public abstract class SaveableSettings : ISettings - where T : class, IEquatable - { - /// - /// Default setting values - /// - public abstract T DefaultValues { get; } - - /// - /// Current setting values - /// - public T Values { get; set; } - - protected abstract string Key { get; } - - /// - /// Applies the current values to the client - /// - public abstract void Apply(); - - public abstract T Clone(); - - public virtual void Save() { - var path = DirectoryTree.Settings.CombineWith($"{Key}.json"); - IOUtils.JsonSerializeToPath(Values, path, SerializationMode.Settings); - } - - public virtual void Load() { - var path = DirectoryTree.Settings.CombineWith($"{Key}.json"); - Values = File.Exists(path) - ? IOUtils.JsonDeserializeFromPath(path, SerializationMode.Settings) ?? DefaultValues - : DefaultValues; - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Data/Scalar.cs b/Assets/Project/Source/Data/Scalar.cs deleted file mode 100644 index 4f09e65d..00000000 --- a/Assets/Project/Source/Data/Scalar.cs +++ /dev/null @@ -1,51 +0,0 @@ -using System; -using UnityEngine; - -namespace Exa.Data -{ - [Serializable] - public struct Scalar : IFormattable - { - [SerializeField] private float scalar; - - public Scalar(float value) { - this.scalar = value; - } - - public float GetValue(float real) { - return real * scalar; - } - - public Vector2 GetValue(Vector2 real) { - return real * scalar; - } - - public static bool operator >(Scalar a, Scalar b) { - return a.scalar > b.scalar; - } - - public static bool operator <(Scalar a, Scalar b) { - return a.scalar < b.scalar; - } - - public static Scalar operator -(Scalar a, Scalar b) { - return new Scalar(a.scalar - b.scalar); - } - - public static Scalar operator +(Scalar a, Scalar b) { - return new Scalar(a.scalar + b.scalar); - } - - public string ToPercentageString() { - return $"{scalar * 100f}%"; - } - - public override string ToString() { - return scalar.ToString(); - } - - public string ToString(string format, IFormatProvider formatProvider) { - return scalar.ToString(format, formatProvider); - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Data/SettingsManager.cs b/Assets/Project/Source/Data/SettingsManager.cs deleted file mode 100644 index cce38974..00000000 --- a/Assets/Project/Source/Data/SettingsManager.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Exa.UI.Settings; -using UnityEngine; - -namespace Exa.Data -{ - public class SettingsManager : MonoBehaviour - { - public VideoSettingsPanel videoSettings; - public AudioSettingsPanel audioSettings; - - public void Load() { - videoSettings.Init(); - audioSettings.Init(); - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Debugging/Commands/ClsCommand.cs b/Assets/Project/Source/Debugging/Commands/ClsCommand.cs index a69c063a..73db7bb6 100644 --- a/Assets/Project/Source/Debugging/Commands/ClsCommand.cs +++ b/Assets/Project/Source/Debugging/Commands/ClsCommand.cs @@ -1,10 +1,10 @@ using UCommandConsole; -namespace Exa.Debugging.Commands -{ - public class ClsCommand : Command - { - public override string GetName() => "cls"; +namespace Exa.Debugging.Commands { + public class ClsCommand : Command { + public override string GetName() { + return "cls"; + } public override void Execute(Console host) { host.output.Clear(); diff --git a/Assets/Project/Source/Debugging/Commands/SpawnCommand.cs b/Assets/Project/Source/Debugging/Commands/SpawnCommand.cs index b10b9713..cae9d8b1 100644 --- a/Assets/Project/Source/Debugging/Commands/SpawnCommand.cs +++ b/Assets/Project/Source/Debugging/Commands/SpawnCommand.cs @@ -1,13 +1,14 @@ -using UCommandConsole; -using System; +using System; +using UCommandConsole; +using Console = UCommandConsole.Console; -namespace Exa.Debugging.Commands -{ - public class SpawnCommand : Command - { - public override string GetName() => "spawn-Ship"; +namespace Exa.Debugging.Commands { + public class SpawnCommand : Command { + public override string GetName() { + return "spawn-Ship"; + } - public override void Execute(UCommandConsole.Console host) { + public override void Execute(Console host) { throw new NotImplementedException(); } } diff --git a/Assets/Project/Source/Debugging/Commands/ToggleDiagnosticsCommand.cs b/Assets/Project/Source/Debugging/Commands/ToggleDiagnosticsCommand.cs index 537db6eb..66e914c9 100644 --- a/Assets/Project/Source/Debugging/Commands/ToggleDiagnosticsCommand.cs +++ b/Assets/Project/Source/Debugging/Commands/ToggleDiagnosticsCommand.cs @@ -1,13 +1,13 @@ using UCommandConsole; -namespace Exa.Debugging.Commands -{ - public class ToggleDiagnosticsCommand : Command - { - public override string GetName() => "tgl-diag"; +namespace Exa.Debugging.Commands { + public class ToggleDiagnosticsCommand : Command { + public override string GetName() { + return "tgl-diag"; + } public override void Execute(Console host) { - var dp = Systems.UI.diagnostics.gameObject; + var dp = S.UI.Diagnostics.gameObject; dp.SetActive(!dp.activeSelf); } } diff --git a/Assets/Project/Source/Debugging/DebugBehaviour.cs b/Assets/Project/Source/Debugging/DebugBehaviour.cs index df374a44..9e6a5f52 100644 --- a/Assets/Project/Source/Debugging/DebugBehaviour.cs +++ b/Assets/Project/Source/Debugging/DebugBehaviour.cs @@ -1,13 +1,11 @@ using UnityEngine; -namespace Exa.Debugging -{ - public abstract class DebugBehaviour : MonoBehaviour - { - public abstract void OnDebugStateChange(DebugMode mode); - +namespace Exa.Debugging { + public abstract class DebugBehaviour : MonoBehaviour { protected virtual void Awake() { DebugManager.DebugChange += OnDebugStateChange; } + + public abstract void OnDebugStateChange(DebugMode mode); } } \ No newline at end of file diff --git a/Assets/Project/Source/Debugging/DebugDragger.cs b/Assets/Project/Source/Debugging/DebugDragger.cs index 8860219e..927d8460 100644 --- a/Assets/Project/Source/Debugging/DebugDragger.cs +++ b/Assets/Project/Source/Debugging/DebugDragger.cs @@ -1,20 +1,19 @@ -using System.Linq; -using UnityEngine; +using UnityEngine; -namespace Exa.Debugging -{ - public class DebugDragger : MonoBehaviour - { +namespace Exa.Debugging { + public class DebugDragger : MonoBehaviour { + private readonly float sampleTime = 0.2f; + private Vector2 averagedVelocity; private IDebugDragable currentDragable; private Vector2 offset; - private Vector2 averagedVelocity; - private float sampleTime = 0.2f; public void Update() { - if (currentDragable == null) return; + if (currentDragable == null) { + return; + } // Set the velocity - var mouseWorldPoint = Systems.Input.MouseWorldPoint; + var mouseWorldPoint = S.Input.MouseWorldPoint; var velocity = currentDragable.GetDebugDraggerPosition() - offset - mouseWorldPoint; AverageVelocity(-velocity, sampleTime); @@ -23,12 +22,14 @@ public void Update() { } public void OnPress() { - if (!TryGetDebugDragable(out var dragable)) return; + if (!TryGetDebugDragable(out var dragable)) { + return; + } currentDragable = dragable; averagedVelocity = Vector2.zero; - var mouseWorldPoint = Systems.Input.MouseWorldPoint; + var mouseWorldPoint = S.Input.MouseWorldPoint; var currentPoint = currentDragable.GetDebugDraggerPosition(); offset = currentPoint - mouseWorldPoint; @@ -36,9 +37,11 @@ public void OnPress() { } public void OnRelease() { - if (currentDragable == null) return; + if (currentDragable == null) { + return; + } - var mouseWorldPoint = Systems.Input.MouseWorldPoint; + var mouseWorldPoint = S.Input.MouseWorldPoint; var targetPoint = mouseWorldPoint + offset; currentDragable.SetDebugDraggerGlobals(targetPoint, averagedVelocity); currentDragable = null; @@ -50,17 +53,18 @@ public void OnRotate(float degrees) { private void AverageVelocity(Vector2 newVelocity, float sampleTime) { var deltaTime = Time.deltaTime; - var total = averagedVelocity * deltaTime * (sampleTime - deltaTime) + newVelocity; + var total = averagedVelocity * (deltaTime * (sampleTime - deltaTime)) + newVelocity; averagedVelocity = total * sampleTime / deltaTime; } private static bool TryGetDebugDragable(out IDebugDragable dragable) { try { - return GameSystems.Raycaster.TryGetTarget(out dragable); + return GS.Raycaster.TryGetTarget(out dragable); } // ReSharper disable once EmptyGeneralCatchClause catch { dragable = null; + return false; } } diff --git a/Assets/Project/Source/Debugging/DebugManager.cs b/Assets/Project/Source/Debugging/DebugManager.cs index 725515cd..7db499ff 100644 --- a/Assets/Project/Source/Debugging/DebugManager.cs +++ b/Assets/Project/Source/Debugging/DebugManager.cs @@ -1,7 +1,6 @@ -using System; +using System.Reflection; using Exa.Input; -using System.Reflection; -using Exa.Utils; +using UCommandConsole; using UnityEditor; using UnityEngine; using UnityEngine.InputSystem; @@ -9,23 +8,20 @@ #pragma warning disable CS0649 -namespace Exa.Debugging -{ - public class DebugManager : MonoBehaviour, IDebugActions - { - public static event DebugChangeDelegate DebugChange; - +namespace Exa.Debugging { + public class DebugManager : MonoBehaviour, IDebugActions { [SerializeField] private DebugMode debugMode; [SerializeField] private DebugMode buildDebugMode; [SerializeField] private DebugDragger debugDragger; + private Console console; private GameControls gameControls; - private UCommandConsole.Console console; - public DebugMode DebugMode => Application.isEditor ? debugMode : buildDebugMode; - + public DebugMode DebugMode { + get => Application.isEditor ? debugMode : buildDebugMode; + } public void Awake() { - console = Systems.UI.console; + console = S.UI.Console; gameControls = new GameControls(); gameControls.Debug.SetCallbacks(this); } @@ -38,59 +34,69 @@ public void OnDisable() { gameControls.Disable(); } - public void InvokeChange() { - DebugChange?.Invoke(DebugMode); - } - public void OnToggleConsole(InputAction.CallbackContext context) { - if (!context.performed) return; + if (!context.performed) { + return; + } var consoleGO = console.gameObject; consoleGO.SetActive(!consoleGO.activeSelf); } public void OnDrag(InputAction.CallbackContext context) { - if (!DebugMode.Dragging.IsEnabled()) return; + if (!DebugMode.Dragging.IsEnabled()) { + return; + } switch (context.phase) { case InputActionPhase.Started: debugDragger.OnPress(); + break; case InputActionPhase.Canceled: debugDragger.OnRelease(); + break; } } public void OnRotate(InputAction.CallbackContext context) { - if (!DebugMode.Dragging.IsEnabled()) return; + if (!DebugMode.Dragging.IsEnabled()) { + return; + } switch (context.phase) { case InputActionPhase.Started: debugDragger.OnRotate(context.ReadValue() * 25); + break; } } + public static event DebugChangeDelegate DebugChange; + + public void InvokeChange() { + DebugChange?.Invoke(DebugMode); + } + public static void ClearLog() { -#if UNITY_EDITOR + #if UNITY_EDITOR var assembly = Assembly.GetAssembly(typeof(SceneView)); var type = assembly.GetType("UnityEditor.LogEntries"); var method = type.GetMethod("Clear"); method.Invoke(new object(), null); -#endif + #endif } } - public static class DebugExtensions - { + public static class DebugExtensions { /// - /// Evaluates whether a debug mode is globally enabled + /// Evaluates whether a debug mode is globally enabled /// /// /// public static bool IsEnabled(this DebugMode debugMode) { - return (Systems.Debug.DebugMode & debugMode) == debugMode; + return (S.Debug.DebugMode & debugMode) == debugMode; } } } \ No newline at end of file diff --git a/Assets/Project/Source/Debugging/DebugMode.cs b/Assets/Project/Source/Debugging/DebugMode.cs index eb9876e6..4f990212 100644 --- a/Assets/Project/Source/Debugging/DebugMode.cs +++ b/Assets/Project/Source/Debugging/DebugMode.cs @@ -1,34 +1,32 @@ using System; -namespace Exa.Debugging -{ +namespace Exa.Debugging { [Flags] [Serializable] - public enum DebugMode - { + public enum DebugMode { /// - /// Describes general debugging + /// Describes general debugging /// Global = 1 << 0, /// - /// Describes general ship debugging, like viewing ship state as a tooltip when hovering around it + /// Describes general ship debugging, like viewing ship state as a tooltip when hovering around it /// Ships = 1 << 1, /// - /// Describes ship navigation visual debugging + /// Describes ship navigation visual debugging /// Navigation = 1 << 2, /// - /// Enables the debug dragger + /// Enables the debug dragger /// Dragging = 1 << 3, /// - /// Enables dumping exceptions to the console + /// Enables dumping exceptions to the console /// - ConsoleDump = 1 << 4, + ConsoleDump = 1 << 4 } } \ No newline at end of file diff --git a/Assets/Project/Source/Debugging/DebugPrinter.cs b/Assets/Project/Source/Debugging/DebugPrinter.cs index 9d9e8030..7f512465 100644 --- a/Assets/Project/Source/Debugging/DebugPrinter.cs +++ b/Assets/Project/Source/Debugging/DebugPrinter.cs @@ -1,9 +1,7 @@ using UnityEngine; -namespace Exa.Debugging -{ - public class DebugPrinter : MonoBehaviour - { +namespace Exa.Debugging { + public class DebugPrinter : MonoBehaviour { public void Print(string value) { print(value); } diff --git a/Assets/Project/Source/Debugging/ExaConsole.cs b/Assets/Project/Source/Debugging/ExaConsole.cs index 2a7dc824..462c8471 100644 --- a/Assets/Project/Source/Debugging/ExaConsole.cs +++ b/Assets/Project/Source/Debugging/ExaConsole.cs @@ -2,14 +2,12 @@ using UCommandConsole; using UnityEngine; -namespace Exa.Debugging -{ - public class ExaConsole : MonoBehaviour - { +namespace Exa.Debugging { + public class ExaConsole : MonoBehaviour { private Console console; private void Start() { - console = Systems.UI.console; + console = S.UI.Console; console.Container.AddGetter(() => new ClsCommand()); console.Container.AddGetter(() => new SpawnCommand()); diff --git a/Assets/Project/Source/Debugging/IDebugDragable.cs b/Assets/Project/Source/Debugging/IDebugDragable.cs index 8f1b60d4..fc4d89e1 100644 --- a/Assets/Project/Source/Debugging/IDebugDragable.cs +++ b/Assets/Project/Source/Debugging/IDebugDragable.cs @@ -1,11 +1,11 @@ using UnityEngine; -namespace Exa.Debugging -{ - public interface IDebugDragable - { +namespace Exa.Debugging { + public interface IDebugDragable { Vector2 GetDebugDraggerPosition(); + void SetDebugDraggerGlobals(Vector2 position, Vector2 velocity); + void Rotate(float degrees); } } \ No newline at end of file diff --git a/Assets/Project/Source/Debugging/LoggerInterceptor.cs b/Assets/Project/Source/Debugging/LoggerInterceptor.cs index 48cc8919..bf8c1193 100644 --- a/Assets/Project/Source/Debugging/LoggerInterceptor.cs +++ b/Assets/Project/Source/Debugging/LoggerInterceptor.cs @@ -1,43 +1,48 @@ -using Exa.UI; -using System; -using UnityEngine; +using System; +using System.Diagnostics; using Exa.Misc; +using Exa.UI; using Exa.Utils; +using UnityEngine; +using Debug = UnityEngine.Debug; +using Object = UnityEngine.Object; -namespace Exa.Debugging -{ - public class LoggerInterceptor : MonoBehaviour, ILogHandler - { +namespace Exa.Debugging { + public class LoggerInterceptor : MonoBehaviour, ILogHandler { private ILogHandler defaultLogHandler; - private UserExceptionLogger userExceptionLogger; + private NotificationLogger notificationLogger; private void Awake() { - userExceptionLogger = Systems.UI.logger; + notificationLogger = S.UI.Logger; defaultLogHandler = Debug.unityLogger.logHandler; Debug.unityLogger.logHandler = this; } - public void LogException(Exception exception, UnityEngine.Object context) { + public void LogException(Exception exception, Object context) { // Missing reference exceptions when the application is quitting should be ignored - if (exception is MissingReferenceException && Systems.IsQuitting) + if (exception is MissingReferenceException && S.IsQuitting) { return; + } - if (DebugMode.ConsoleDump.IsEnabled()) + if (DebugMode.ConsoleDump.IsEnabled()) { exception.LogToConsole(); + } defaultLogHandler.LogException(exception, context); - if (exception is UserException userException) + + if (exception is UserException userException) { LogUserException(userException); + } } - [System.Diagnostics.DebuggerHidden] - public void LogUserException(UserException exception) { - userExceptionLogger.Log(exception); + [DebuggerHidden] + public void LogFormat(LogType logType, Object context, string format, params object[] args) { + defaultLogHandler.LogFormat(logType, context, format, args); } - [System.Diagnostics.DebuggerHidden] - public void LogFormat(LogType logType, UnityEngine.Object context, string format, params object[] args) { - defaultLogHandler.LogFormat(logType, context, format, args); + [DebuggerHidden] + public void LogUserException(UserException exception) { + notificationLogger.LogException(exception); } } } \ No newline at end of file diff --git a/Assets/Project/Source/Drawing.meta b/Assets/Project/Source/Drawing.meta new file mode 100644 index 00000000..09ec22e5 --- /dev/null +++ b/Assets/Project/Source/Drawing.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4da1eb35f1a33d7409ef7c67376647e8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Drawing/SuperSamplingArgs.cs b/Assets/Project/Source/Drawing/SuperSamplingArgs.cs new file mode 100644 index 00000000..afffd577 --- /dev/null +++ b/Assets/Project/Source/Drawing/SuperSamplingArgs.cs @@ -0,0 +1,35 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace Exa.Drawing { + public class SuperSamplingArgs { + public delegate void Applier(Vector2Int pixel, TSample averagedValue); + public delegate TSample Sampler(Vector2 point, Vector2 localPoint); + public delegate TSample SamplesAverageFactory(IEnumerable values); + public Applier applier; + public Sampler sampler; + public SamplesAverageFactory samplesAverageFactory; + + public int sampleSize; + + public SuperSamplingArgs Override(SuperSamplingArgs original) { + if (sampleSize != 0) { + original.sampleSize = sampleSize; + } + + if (sampler != null) { + original.sampler = sampler; + } + + if (samplesAverageFactory != null) { + original.samplesAverageFactory = samplesAverageFactory; + } + + if (applier != null) { + original.applier = applier; + } + + return original; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Drawing/SuperSamplingArgs.cs.meta b/Assets/Project/Source/Drawing/SuperSamplingArgs.cs.meta new file mode 100644 index 00000000..876cbb65 --- /dev/null +++ b/Assets/Project/Source/Drawing/SuperSamplingArgs.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f7523e40d2d0028469fd56b22a14b287 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Drawing/Texture2DExtensions.Cone.cs b/Assets/Project/Source/Drawing/Texture2DExtensions.Cone.cs new file mode 100644 index 00000000..4225866e --- /dev/null +++ b/Assets/Project/Source/Drawing/Texture2DExtensions.Cone.cs @@ -0,0 +1,92 @@ +using System; +using System.Linq; +using Exa.Math; +using Exa.Utils; +using UnityEngine; + +namespace Exa.Drawing { + public static partial class Texture2DExtensions { + public static Texture2D DrawCone(this Texture2D tex, Color color, Vector2 centre, float radius, float arc) { + var halfArc = arc / 2f; + + return tex.CallbackCircularDraw( + centre, + radius, + (localPoint, point) => { + if (localPoint.GetAngle().Between(180 - halfArc, 180 + halfArc)) { + tex.SetPixel(point, color); + } + } + ); + } + + public static Texture2D DrawFadingCone( + this Texture2D tex, + Color color, + Vector2 centre, + float radius, + float arc, + Func easingFunc + ) { + var halfArc = arc / 2f; + + return tex.CallbackCircularDraw( + centre, + radius, + (localPoint, point) => { + if (localPoint.GetAngle().Between(180 - halfArc, 180 + halfArc)) { + tex.SetPixel(point, color.SetAlpha(color.a * easingFunc(localPoint.magnitude / radius))); + } + } + ); + } + + public static Texture2D CallbackCircularDraw(this Texture2D tex, Vector2 centre, float radius, Action pixelCallback) { + foreach (var point in tex.EnumeratePixels()) { + var localPoint = centre - point; + + if (localPoint.magnitude < radius) { + pixelCallback(localPoint, point); + } + } + + tex.Apply(); + + return tex; + } + + public static Texture2D DrawSuperSampledCone(this Texture2D tex, ConeArgs coneArgs, SuperSamplingArgs @override = null) { + var useEasing = coneArgs.easingFunc != null; + + var args = new SuperSamplingArgs { + sampleSize = 4, + applier = (pixel, value) => { tex.SetPixel(pixel, coneArgs.color.SetAlpha(value)); }, + samplesAverageFactory = values => values.Average(), + sampler = (point, localPoint) => ConeSampler(localPoint, coneArgs, useEasing) + }; + + return tex.CallbackCircularSuperSampledDraw(coneArgs.centre, @override?.Override(args) ?? args); + } + + public static float ConeSampler(Vector2 localPoint, ConeArgs args, bool ease) { + var magnitude = localPoint.magnitude; + var halfArc = args.arc / 2f; + + return magnitude < args.radius + ? localPoint.GetAngle().Between(180 - halfArc, 180 + halfArc) + ? ease + ? args.easingFunc(magnitude / args.radius) + : 1f + : 0f + : 0f; + } + } + + public struct ConeArgs { + public Color color; + public Vector2 centre; + public float radius; + public float arc; + public Func easingFunc; + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Drawing/Texture2DExtensions.Cone.cs.meta b/Assets/Project/Source/Drawing/Texture2DExtensions.Cone.cs.meta new file mode 100644 index 00000000..2ba40db4 --- /dev/null +++ b/Assets/Project/Source/Drawing/Texture2DExtensions.Cone.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8bf7ec7208933fd448749bd4ec272e75 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Drawing/Texture2DExtensions.cs b/Assets/Project/Source/Drawing/Texture2DExtensions.cs new file mode 100644 index 00000000..946d7257 --- /dev/null +++ b/Assets/Project/Source/Drawing/Texture2DExtensions.cs @@ -0,0 +1,35 @@ +using System.Collections.Generic; +using System.Linq; +using Exa.Utils; +using UnityEngine; + +namespace Exa.Drawing { + public static partial class Texture2DExtensions { + public static Texture2D CallbackCircularSuperSampledDraw(this Texture2D tex, Vector2 centre, SuperSamplingArgs samplingArgs) { + foreach (var pixel in tex.EnumeratePixels()) { + var samples = GetSamples(pixel, samplingArgs.sampleSize) + .Select(point => samplingArgs.sampler(point, centre - point)) + .ToList(); + + samplingArgs.applier(pixel, samplingArgs.samplesAverageFactory(samples)); + } + + tex.Apply(); + + return tex; + } + + public static IEnumerable GetSamples(Vector2Int origin, int count) { + var size = 1f / count; + var halfSize = size / 2f; + + for (var x = 0; x < count; x++) + for (var y = 0; y < count; y++) { + yield return new Vector2 { + x = origin.x + halfSize + x * size, + y = origin.y + halfSize + y * size + }; + } + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Drawing/Texture2DExtensions.cs.meta b/Assets/Project/Source/Drawing/Texture2DExtensions.cs.meta new file mode 100644 index 00000000..8afb2b48 --- /dev/null +++ b/Assets/Project/Source/Drawing/Texture2DExtensions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d5b5409d2658a9a4a9601b9ad33ac923 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Editor/AsepriteTools.meta b/Assets/Project/Source/Editor/AsepriteTools.meta new file mode 100644 index 00000000..b3f80fcf --- /dev/null +++ b/Assets/Project/Source/Editor/AsepriteTools.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 00575e8da6bd4a5492e02527a78db719 +timeCreated: 1625174893 \ No newline at end of file diff --git a/Assets/Project/Source/Editor/AsepriteTools/AseEditor.cs b/Assets/Project/Source/Editor/AsepriteTools/AseEditor.cs new file mode 100644 index 00000000..df755f4d --- /dev/null +++ b/Assets/Project/Source/Editor/AsepriteTools/AseEditor.cs @@ -0,0 +1,283 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Text; +using Exa.IO; +using Exa.Utils; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEngine; +using Debug = UnityEngine.Debug; +using SerializationMode = Exa.IO.SerializationMode; + +namespace Exa.CustomEditors { + public class AseEditor : FileTypeEditor { + private string asepritePath; + private AseExportConfiguration configuration; + + public override void OnEnable() { + base.OnEnable(); + asepritePath = EditorPrefs.GetString("AsepriteTools_AsepritePath", null); + configuration = GetConfiguration(); + } + + public override IEnumerable GetAcceptedFileTypes() { + yield return ".ase"; + yield return ".aseprite"; + } + + public override void OnInspectorGUI() { + GUILayout.Space(8); + + if (GUILayout.Button("Locate aseprite executable")) { + LocateAseprite(); + } + + EditorGUI.BeginDisabledGroup(string.IsNullOrEmpty(asepritePath)); + + if (GUILayout.Button("Start aseprite")) { + Process.Start(asepritePath, Context.AssetPath); + } + + if (GUILayout.Button("Save configuration")) { + SaveConfiguration(); + } + + if (GUILayout.Button("Export as sprite sheet")) { + ExportAsSpritesheet(); + } + + DrawLayers(); + + EditorGUI.EndDisabledGroup(); + } + + private void DrawLayers() { + if (string.IsNullOrEmpty(asepritePath)) { + EditorGUILayout.HelpBox("Path to aseprite.exe not set", MessageType.Warning); + + return; + } + + GUILayout.Space(8); + EditorGUI.indentLevel++; + + var isFirstLayer = true; + + foreach (var (layer, layerConfig) in configuration.GetSortedLayers()) { + EditorGUILayout.LabelField($"Ase Layer: {layer}"); + EditorGUI.indentLevel++; + + if (isFirstLayer) { + layerConfig.mergeUp = false; + GUI.enabled = false; + } + + layerConfig.mergeUp = EditorGUILayout.Toggle("Merge up", layerConfig.mergeUp); + + if (isFirstLayer) { + isFirstLayer = false; + GUI.enabled = true; + } + + if (!layerConfig.mergeUp) { + layerConfig.name = EditorGUILayout.TextField("Export name", layerConfig.name); + layerConfig.exportOnlyFirstFrame = EditorGUILayout.Toggle("Export only first frame", layerConfig.exportOnlyFirstFrame); + } + + EditorGUI.indentLevel--; + } + + EditorGUI.indentLevel--; + GUILayout.Space(8); + } + + private void SaveConfiguration() { + if (!string.IsNullOrEmpty(asepritePath)) { + configuration.NormalizeWithAseLayers(GetLayers()); + } + + Context.Importer.userData = IOUtils.ToJson(configuration, SerializationMode.Settings); + Context.Importer.SaveAndReimport(); + } + + private AseExportConfiguration GetConfiguration() { + var output = IOUtils.FromJsonSafe(Context.Importer.userData) ?? new AseExportConfiguration(); + + if (!string.IsNullOrEmpty(asepritePath)) { + output.NormalizeWithAseLayers(GetLayers()); + } + + return output; + } + + private void LocateAseprite() { + asepritePath = EditorUtility.OpenFilePanelWithFilters( + "Locate aseprite", + "", + new[] { + "Executable", + "exe" + } + ); + + EditorPrefs.SetString("AsepriteTools_AsepritePath", asepritePath); + } + + private void ExportAsSpritesheet() { + var progress = 0f; + + // Output folder + var fileName = Path.GetFileNameWithoutExtension(Context.AssetPath); + var outputAssetPath = Path.Combine(Path.GetDirectoryName(Context.AssetPath), $"{fileName}-output"); + IOUtils.EnsureAssetPathCreated(outputAssetPath); + + try { + var layerGroups = configuration.GetLayerGroups().ToList(); + + foreach (var layerGroup in layerGroups) { + if (string.IsNullOrEmpty(layerGroup.configuration.name)) { + throw new InvalidOperationException("Layer configuration must not have an empty name"); + } + + // Keep track of export progress + progress += 1f / layerGroups.Count; + EditorUtility.DisplayProgressBar("Exporting layers ...", $"exporting {layerGroup.aseLayers.Join(", ")}", progress); + + // Save layer output + var bytes = GetLayerOutput(layerGroup, out var output); + var width = (int) output.meta.size.w; + var height = (int) output.meta.size.h; + + try { + SaveLayer( + outputAssetPath, + fileName, + layerGroup.configuration.name.Replace(" ", "_"), + bytes, + width, + height + ); + } catch (Exception e) { + throw new Exception("Failed to save layer", e); + } + } + } catch (Exception e) { + Debug.LogException(e, Context); + } finally { + EditorUtility.ClearProgressBar(); + } + } + + private byte[] GetLayerOutput(GroupedLayerOutput layerGroup, out dynamic output) { + using var fileDisposer = IOUtils.TempFile("png", out var file); + + string GetArgumentString() { + var builder = new StringBuilder(); + builder.Append(" -b"); + + foreach (var layer in layerGroup.aseLayers) { + builder.Append($" --layer \"{layer}\""); + } + + builder.Append($" --sheet \"{file}\""); + + if (layerGroup.configuration.exportOnlyFirstFrame) { + builder.Append(" --frame-range 0,0"); + } + + builder.Append($" \"{Context.AssetPath}\""); + + return builder.ToString(); + } + + var argumentString = GetArgumentString(); + + if (Context.EnableLogging) { + Debug.Log($"exporting with argument string ${argumentString}"); + } + + using var process = GetProcess(argumentString); + + if (process.StartRedirected(out var stdOut, out var errOut) != 0) { + throw new Exception($"Non 0 exit code when exporting layer {layerGroup.configuration.name}"); + } + + if (Context.EnableLogging) { + stdOut.Log("std out: "); + errOut.Log("err out: "); + } + + try { + output = JObject.Parse(stdOut.Join()); + } catch (JsonReaderException e) { + throw new Exception($"Failed to parse JSON output, probably due to export failure, output: {stdOut.Join("\n")}", e); + } + + return File.ReadAllBytes(file); + } + + private void SaveLayer(string assetFolder, string fileName, string layer, byte[] sheet, int width, int height) { + var texture = new Texture2D(width, height) { + name = $"{fileName}-{layer}" + }; + + texture.LoadImage(sheet); + var sprite = texture.CreateSprite(); + + IOUtils.SaveSpriteToEditorPath( + sprite, + IOUtils.CombineAssetsPath(assetFolder, $"{texture.name}.png"), + importer => { + importer.ApplyDefaultBlockImportSettings(); + + var sizeY = height; + var sizeX = height; + + var spriteMetaData = new List(); + var frameNumber = 0; + + for (var j = height; j > 0; j -= sizeY) { + for (var i = 0; i < width; i += sizeX) { + spriteMetaData.Add( + new SpriteMetaData { + name = $"{texture.name}-{frameNumber}", + rect = new Rect(i, j - sizeY, sizeX, sizeY), + alignment = 0, + pivot = new Vector2(0f, 0f) + } + ); + + frameNumber++; + } + } + + importer.spritesheet = spriteMetaData.ToArray(); + } + ); + } + + private Process GetProcess(string parameters) { + return new Process { + StartInfo = new ProcessStartInfo { + FileName = asepritePath, + Arguments = parameters, + UseShellExecute = false, + RedirectStandardOutput = true, + RedirectStandardError = true + } + }; + } + + private IEnumerable GetLayers() { + GetProcess($"-b -list-layers --all-layers \"{Context.AssetPath}\"").StartRedirected(out var layers, out _); + + layers.Reverse(); + + return layers; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Editor/AsepriteTools/AseEditor.cs.meta b/Assets/Project/Source/Editor/AsepriteTools/AseEditor.cs.meta new file mode 100644 index 00000000..5933f644 --- /dev/null +++ b/Assets/Project/Source/Editor/AsepriteTools/AseEditor.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 29015932296d420f9fc7a5f36872a35c +timeCreated: 1625583438 \ No newline at end of file diff --git a/Assets/Project/Source/Editor/AsepriteTools/AseExportConfiguration.cs b/Assets/Project/Source/Editor/AsepriteTools/AseExportConfiguration.cs new file mode 100644 index 00000000..77a0a0e2 --- /dev/null +++ b/Assets/Project/Source/Editor/AsepriteTools/AseExportConfiguration.cs @@ -0,0 +1,94 @@ +using System.Collections.Generic; +using System.Linq; +using Exa.Utils; +using Newtonsoft.Json; + +namespace Exa.CustomEditors { + [JsonObject] + public class AseExportConfiguration { + private string[] aseLayers; + [JsonProperty] private Dictionary layers; + + public AseExportConfiguration() { + layers = new Dictionary(); + } + + public IEnumerable<(string, LayerConfigurationEntry)> GetSortedLayers() { + return from entry + in layers + orderby entry.Value.index + select (entry.Key, entry.Value); + } + + public void NormalizeWithAseLayers(IEnumerable currentLayers) { + aseLayers = currentLayers as string[] ?? currentLayers.ToArray(); + + foreach (var (layer, layerConfig) in layers.Unpack().ToList()) { + if (!aseLayers.Contains(layer)) { + layers.Remove(layer); + } + + if (string.IsNullOrEmpty(layerConfig.name)) { + layerConfig.name = layer; + } + } + + for (var i = 0; i < aseLayers.Length; i++) { + var currentLayer = aseLayers[i]; + + if (!layers.ContainsKey(currentLayer)) { + layers.Add( + currentLayer, + new LayerConfigurationEntry { + mergeUp = false, + exportOnlyFirstFrame = false, + name = currentLayer + } + ); + } + + layers[currentLayer].index = i; + } + } + + /// + /// Gets a list of layer groups, by grouping ase layers that are configured to merge up. + /// + /// + public IEnumerable GetLayerGroups() { + var temp = null as GroupedLayerOutput; + + foreach (var (layer, layerConfig) in GetSortedLayers()) { + if (!layerConfig.mergeUp && temp != null) { + yield return temp; + + temp = null; + } + + temp ??= new GroupedLayerOutput { + aseLayers = new List(), + configuration = layerConfig + }; + + temp.aseLayers.Add(layer); + } + + if (temp != null) { + yield return temp; + } + } + } + + public class GroupedLayerOutput { + public List aseLayers; + public LayerConfigurationEntry configuration; + } + + public class LayerConfigurationEntry { + // Whether or not to merge the aseprite layer with the layer above + public bool mergeUp; + public bool exportOnlyFirstFrame; + public string name; + public int index; + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Editor/AsepriteTools/AseExportConfiguration.cs.meta b/Assets/Project/Source/Editor/AsepriteTools/AseExportConfiguration.cs.meta new file mode 100644 index 00000000..9da0d359 --- /dev/null +++ b/Assets/Project/Source/Editor/AsepriteTools/AseExportConfiguration.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 4ffe4c459ca0402aad85bbfba20072aa +timeCreated: 1625610748 \ No newline at end of file diff --git a/Assets/Project/Source/Editor/AsepriteTools/AsepriteTools.cs b/Assets/Project/Source/Editor/AsepriteTools/AsepriteTools.cs new file mode 100644 index 00000000..6a68540c --- /dev/null +++ b/Assets/Project/Source/Editor/AsepriteTools/AsepriteTools.cs @@ -0,0 +1,137 @@ +using System; +using System.Diagnostics; +using System.IO; +using System.Linq; +using Exa.IO; +using UnityEditor; +using UnityEngine; +using Debug = UnityEngine.Debug; + +namespace Exa.CustomEditors { + [Serializable] + public class AsepriteTools : EditorWindow { + internal bool EnableLogging { + get => true; + } + + [MenuItem("Window/AsepriteTools")] + public static void ShowWindow() { + GetWindow(); + } + + private void OnEnable() { + actions = new EditorAction[] { + new ExportInPlaceAction(this) + }; + + displayActions = actions.Select(x => x.GetType().Name).ToArray(); + + asepritePath = EditorPrefs.GetString("AsepriteTools_AsepritePath", ""); + + GetPaths(); + } + + [SerializeField] private string asepritePath; + private EditorAction[] actions; + private string[] displayActions; + + [SerializeField] private string renderError; + [SerializeField] private string executionError; + + [SerializeField] private int selectedPath; + [SerializeField] private int selectedAction; + + private string[] paths; + private string[] displayPaths; + + internal string FilePath { + get => paths[selectedPath]; + } + + internal string AsepritePath { + get => asepritePath; + } + + private void GetPaths() { + var path = IOUtils.CombinePath(Application.dataPath, "Project", "Graphics"); + + paths = Directory.EnumerateFiles(path, "*.ase", SearchOption.AllDirectories).ToArray(); + + displayPaths = paths.Select( + x => x + .Replace(path + "\\", String.Empty) + .Replace(".aseprite", String.Empty) + .Replace(".ase", String.Empty) + ) + .ToArray(); + } + + void OnGUI() { + GUILayout.BeginHorizontal(); + + { + if (GUILayout.Button("Locate aseprite executeable")) { + LocateAseprite(); + } + + if (GUILayout.Button("Start aseprite")) { + Process.Start(asepritePath); + } + } + + GUILayout.EndHorizontal(); + GUILayout.Space(16); + + selectedPath = EditorGUILayout.Popup("Select file ...", selectedPath, displayPaths); + selectedAction = EditorGUILayout.Popup("Select action ...", selectedAction, displayActions); + + GUILayout.Space(8); + RenderAction(); + GUILayout.Space(8); + + if (!string.IsNullOrEmpty(asepritePath)) { + if (GUILayout.Button("Execute action")) { + try { + actions[selectedAction].Execute(); + executionError = null; + } catch (Exception e) { + executionError = e.Message; + } + } + } else { + EditorGUILayout.HelpBox("Aseprite path not set", MessageType.Warning); + } + + if (executionError != null) { + GUILayout.Space(8); + EditorGUILayout.HelpBox("Unhandled execution error: " + executionError, MessageType.Error); + } + } + + private void LocateAseprite() { + asepritePath = EditorUtility.OpenFilePanelWithFilters( + "Locate aseprite", + "", + new[] { + "Executable", + "exe" + } + ); + + EditorPrefs.SetString("AsepriteTools_AsepritePath", asepritePath); + } + + private void RenderAction() { + try { + actions[selectedAction].Render(); + renderError = null; + } catch (Exception e) { + renderError = e.Message; + } + + if (renderError != null) { + EditorGUILayout.HelpBox("Render error: " + renderError, MessageType.Error); + } + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Editor/AsepriteTools/AsepriteTools.cs.meta b/Assets/Project/Source/Editor/AsepriteTools/AsepriteTools.cs.meta new file mode 100644 index 00000000..7788f4cb --- /dev/null +++ b/Assets/Project/Source/Editor/AsepriteTools/AsepriteTools.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e23e6a71a5342cc4a928ffbfc6545c3b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Editor/AsepriteTools/EditorAction.cs b/Assets/Project/Source/Editor/AsepriteTools/EditorAction.cs new file mode 100644 index 00000000..b81da1e4 --- /dev/null +++ b/Assets/Project/Source/Editor/AsepriteTools/EditorAction.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using Exa.IO; +using UnityEngine; +using Debug = UnityEngine.Debug; + +namespace Exa.CustomEditors { + public abstract class EditorAction { + protected readonly AsepriteTools context; + + protected EditorAction(AsepriteTools context) { + this.context = context; + } + + public abstract void Render(); + + public abstract void Execute(); + + protected Process GetProcess(string parameters) { + return new Process { + StartInfo = new ProcessStartInfo { + FileName = context.AsepritePath, + Arguments = parameters, + UseShellExecute = false, + RedirectStandardOutput = true, + RedirectStandardError = true + } + }; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Editor/AsepriteTools/EditorAction.cs.meta b/Assets/Project/Source/Editor/AsepriteTools/EditorAction.cs.meta new file mode 100644 index 00000000..395e5575 --- /dev/null +++ b/Assets/Project/Source/Editor/AsepriteTools/EditorAction.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: cfeabe5adbf74bef8da8416210f15e6f +timeCreated: 1625219293 \ No newline at end of file diff --git a/Assets/Project/Source/Editor/AsepriteTools/ExportInPlaceAction.cs b/Assets/Project/Source/Editor/AsepriteTools/ExportInPlaceAction.cs new file mode 100644 index 00000000..0cd69487 --- /dev/null +++ b/Assets/Project/Source/Editor/AsepriteTools/ExportInPlaceAction.cs @@ -0,0 +1,145 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using Exa.IO; +using Exa.Utils; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using UnityEditor; +using UnityEngine; + +namespace Exa.CustomEditors { + [Serializable] + public class ExportInPlaceAction : EditorAction { + private MessageType messageType = MessageType.Info; + private string output; + + public ExportInPlaceAction(AsepriteTools context) : base(context) { } + + public override void Render() { + EditorGUILayout.HelpBox($"Execution output: {output}", messageType); + } + + public override void Execute() { + GetProcess($"-b -list-layers --all-layers \"{context.FilePath}\"").StartRedirected(out var layers, out _); + var progress = 0f; + + // Output folder + var parentSystemFolder = Path.GetDirectoryName(context.FilePath); + var outputSystemPath = IOUtils.CombinePath(parentSystemFolder, "Output"); + var outputAssetPath = IOUtils.SystemPathToAssetPath(outputSystemPath); + IOUtils.EnsureAssetPathCreated(outputAssetPath); + + if (context.EnableLogging) { + Debug.Log($"File path {context.FilePath}"); + Debug.Log($"Parent system folder {parentSystemFolder}"); + Debug.Log($"Output system path {outputSystemPath}"); + Debug.Log($"Output asset path {outputAssetPath}"); + } + + var fileName = Path.GetFileNameWithoutExtension(context.FilePath); + + try { + foreach (var layer in layers) { + // Keep track of export progress + progress += 1f / layers.Count; + EditorUtility.DisplayProgressBar("Exporting layers ...", $"exporting {layer}", progress); + + // Save layer output + var bytes = GetLayerOutput(layer, out var output); + var width = (int) output.meta.size.w; + var height = (int) output.meta.size.h; + + try { + SaveLayer( + outputAssetPath, + fileName, + layer.Replace(" ", "_"), + bytes, + width, + height + ); + } catch (Exception e) { + throw new Exception("Failed to save layer", e); + } + } + + messageType = MessageType.Info; + } catch (Exception e) { + output = $"Failed to export layers: {e}"; + messageType = MessageType.Error; + Debug.LogException(e, context); + } finally { + EditorUtility.ClearProgressBar(); + } + } + + private byte[] GetLayerOutput(string layer, out dynamic output) { + using var fileDisposer = IOUtils.TempFile("png", out var file); + using var process = GetProcess($"-b --layer \"{layer}\" --sheet \"{file}\" \"{context.FilePath}\""); + + if (process.StartRedirected(out var stdOut, out var errOut) != 0) { + throw new Exception($"Non 0 exit code when exporting layer {layer}"); + } + + if (context.EnableLogging) { + stdOut.Log("std out: "); + errOut.Log("err out: "); + } + + output = JObject.Parse(stdOut.Join()); + + return File.ReadAllBytes(file); + } + + private void SaveLayer(string assetFolder, string fileName, string layer, byte[] sheet, int width, int height) { + var texture = new Texture2D(width, height) { + name = $"{fileName}-{layer}" + }; + + texture.LoadImage(sheet); + var sprite = texture.CreateSprite(); + + IOUtils.SaveSpriteToEditorPath( + sprite, + IOUtils.CombineAssetsPath(assetFolder, $"{texture.name}.png"), + importer => { + importer.ApplyDefaultBlockImportSettings(); + + var sizeY = height; + var sizeX = height; + + importer.wrapMode = TextureWrapMode.Clamp; + importer.maxTextureSize = 2048; + importer.crunchedCompression = false; + importer.compressionQuality = 100; + importer.isReadable = true; + importer.textureShape = TextureImporterShape.Texture2D; + importer.npotScale = TextureImporterNPOTScale.None; + + var spriteMetaData = new List(); + var frameNumber = 0; + + for (var j = height; j > 0; j -= sizeY) { + for (var i = 0; i < width; i += sizeX) { + spriteMetaData.Add(new SpriteMetaData { + name = $"{texture.name}_{frameNumber}", + rect = new Rect(i, j - sizeY, sizeX, sizeY), + alignment = 0, + pivot = new Vector2(0f, 0f) + }); + + frameNumber++; + } + } + + importer.spritesheet = spriteMetaData.ToArray(); + } + ); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Editor/AsepriteTools/ExportInPlaceAction.cs.meta b/Assets/Project/Source/Editor/AsepriteTools/ExportInPlaceAction.cs.meta new file mode 100644 index 00000000..a30713bb --- /dev/null +++ b/Assets/Project/Source/Editor/AsepriteTools/ExportInPlaceAction.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: dc5e65cc8ba243ec850e33e8b9328743 +timeCreated: 1625174908 \ No newline at end of file diff --git a/Assets/Project/Source/Editor/Block.Editor.cs b/Assets/Project/Source/Editor/Block.Editor.cs new file mode 100644 index 00000000..b9ba0f59 --- /dev/null +++ b/Assets/Project/Source/Editor/Block.Editor.cs @@ -0,0 +1,109 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using Exa.Grids.Blocks.BlockTypes; +using Exa.Grids.Blocks.Components; +using Exa.Types; +using Exa.Utils; +using UnityEditor; + +namespace Exa.CustomEditors { + [CustomEditor(typeof(Block), true)] + public class BlockEditor : Editor { + private DefaultDict typeCache; + + #if ENABLE_BLOCK_LOGS + private bool foldoutLogs = true; + #endif + + private void OnEnable() { + typeCache = new DefaultDict(type => new BlockDataInfo(type)); + } + + public override void OnInspectorGUI() { + serializedObject.Update(); + + base.OnInspectorGUI(); + + var block = (Block) target; + + foreach (var behaviour in block.GetBehaviours()) { + var data = behaviour.BlockComponentData; + data = typeCache[data.GetType()].Draw(data); + + try { + behaviour.BlockComponentData = data; + } catch { } + } + + EditorGUILayout.Space(8); + + block.DebugFocused = EditorGUILayout.Toggle("Focus on block", block.DebugFocused); + + #if ENABLE_BLOCK_LOGS + EditorGUILayout.Space(8); + + foldoutLogs = EditorGUILayout.BeginFoldoutHeaderGroup(foldoutLogs, "Show block logs"); + + if (foldoutLogs) { + EditorGUI.indentLevel++; + + foreach (var log in block.Logs) { + EditorGUILayout.LabelField(log); + } + + EditorGUI.indentLevel--; + } + #endif + } + + private class BlockDataInfo { + private bool foldout = true; + private readonly string name; + private readonly IEnumerable properties; + + public BlockDataInfo(Type dataType) { + name = dataType.Name; + properties = dataType.GetFields().ToList(); + } + + public IBlockComponentValues Draw(IBlockComponentValues values) { + EditorGUILayout.Space(); + + foldout = EditorGUILayout.BeginFoldoutHeaderGroup(foldout, name); + + if (foldout) { + EditorGUI.indentLevel += 1; + + foreach (var prop in properties) { + var currentValue = prop.GetValue(values); + var value = DrawField(prop.Name.ToProperCase(), currentValue, prop.FieldType); + + if (value != null && !currentValue.Equals(value)) { + prop.SetValue(values, value); + } + } + + EditorGUI.indentLevel -= 1; + } + + EditorGUILayout.EndFoldoutHeaderGroup(); + + return values; + } + + private object DrawField(string name, object c, Type cType) { + if (cType == typeof(bool)) { + return EditorGUILayout.Toggle(name, (bool) c); + } + + if (cType == typeof(float)) { + return EditorGUILayout.FloatField(name, (float) c); + } + + return null; + } + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Editor/Block.Editor.cs.meta b/Assets/Project/Source/Editor/Block.Editor.cs.meta new file mode 100644 index 00000000..51aa2d29 --- /dev/null +++ b/Assets/Project/Source/Editor/Block.Editor.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 439b25d64d7a4b6ba38deb55144803d8 +timeCreated: 1621887545 \ No newline at end of file diff --git a/Assets/Project/Source/Editor/CanvasGroupInteractibleAdapter.Editor.cs b/Assets/Project/Source/Editor/CanvasGroupInteractibleAdapter.Editor.cs index 532b2e27..0aebeead 100644 --- a/Assets/Project/Source/Editor/CanvasGroupInteractibleAdapter.Editor.cs +++ b/Assets/Project/Source/Editor/CanvasGroupInteractibleAdapter.Editor.cs @@ -1,16 +1,13 @@ using Exa.UI; using UnityEditor; -namespace Exa.CustomEditors -{ +namespace Exa.CustomEditors { [CustomEditor(typeof(InteractableAdapter))] - internal class InteractableAdapterEditor : Editor - { - public override void OnInspectorGUI() - { + internal class InteractableAdapterEditor : Editor { + public override void OnInspectorGUI() { base.OnInspectorGUI(); - ((InteractableAdapter)target).Interactable = ((InteractableAdapter)target).Interactable; + ((InteractableAdapter) target).Interactable = ((InteractableAdapter) target).Interactable; } } } \ No newline at end of file diff --git a/Assets/Project/Source/Editor/FileTypeEditor.cs b/Assets/Project/Source/Editor/FileTypeEditor.cs new file mode 100644 index 00000000..86f13678 --- /dev/null +++ b/Assets/Project/Source/Editor/FileTypeEditor.cs @@ -0,0 +1,21 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace Exa.CustomEditors { + public abstract class FileTypeEditor { + internal FileTypeEditorSwitch Context { get; set; } + + public virtual void OnEnable() { + GUI.enabled = true; + Context.hideFlags = HideFlags.None; + } + + public virtual void OnDisable() { + GUI.enabled = false; + } + + public abstract IEnumerable GetAcceptedFileTypes(); + + public abstract void OnInspectorGUI(); + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Editor/FileTypeEditor.cs.meta b/Assets/Project/Source/Editor/FileTypeEditor.cs.meta new file mode 100644 index 00000000..7eea183c --- /dev/null +++ b/Assets/Project/Source/Editor/FileTypeEditor.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: eeb3bf73ead84036bb8c97ee8221c0b5 +timeCreated: 1625583360 \ No newline at end of file diff --git a/Assets/Project/Source/Editor/FileTypeEditorSwitch.cs b/Assets/Project/Source/Editor/FileTypeEditorSwitch.cs new file mode 100644 index 00000000..31e7962f --- /dev/null +++ b/Assets/Project/Source/Editor/FileTypeEditorSwitch.cs @@ -0,0 +1,67 @@ +using System; +using System.Linq; +using Exa.Logging; +using Exa.Utils; +using UnityEditor; +using UnityEngine; + +namespace Exa.CustomEditors { + [CustomEditor(typeof(DefaultAsset))] + public class FileTypeEditorSwitch : Editor { + private readonly FileTypeEditor[] editors = { + new AseEditor() + }; + + private FileTypeEditor selectedEditor; + + public AssetImporter Importer { get; private set; } + + public string AssetPath { get; private set; } + + public bool EnableLogging { get; private set; } + + private void OnEnable() { + var path = AssetDatabase.GetAssetPath(target); + + EnableLogging = EditorPrefs.GetBool("AsepriteTools_EnableLogging", false); + + foreach (var editor in editors) { + editor.Context = this; + + if (editor.GetAcceptedFileTypes().Any(fileType => path.EndsWith(fileType))) { + Importer = AssetImporter.GetAtPath(path); + AssetPath = path; + editor.OnEnable(); + selectedEditor = editor; + + return; + } + } + } + + private void OnDisable() { + selectedEditor?.OnDisable(); + Importer = null; + selectedEditor = null; + + EditorPrefs.SetBool("AsepriteTools_EnableLogging", EnableLogging); + } + + public override void OnInspectorGUI() { + if (selectedEditor != null) { + GUI.enabled = true; + EditorGUILayout.Space(8); + + EnableLogging = EditorGUILayout.Toggle("Enabled logging", EnableLogging); + + try { + selectedEditor.OnInspectorGUI(); + } catch (Exception e) { + Debug.LogError(e); + } + } else { + base.OnInspectorGUI(); + } + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Editor/FileTypeEditorSwitch.cs.meta b/Assets/Project/Source/Editor/FileTypeEditorSwitch.cs.meta new file mode 100644 index 00000000..56389dc8 --- /dev/null +++ b/Assets/Project/Source/Editor/FileTypeEditorSwitch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7f8438f8766838e4fabcf4e503e6851c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Editor/Hoverable.Editor.cs b/Assets/Project/Source/Editor/Hoverable.Editor.cs index fd202cfd..88e97089 100644 --- a/Assets/Project/Source/Editor/Hoverable.Editor.cs +++ b/Assets/Project/Source/Editor/Hoverable.Editor.cs @@ -1,36 +1,31 @@ using Exa.UI; using UnityEditor; -namespace Exa.CustomEditors -{ +namespace Exa.CustomEditors { [CustomEditor(typeof(Hoverable))] [CanEditMultipleObjects] - public class HoverableEditor : Editor - { + public class HoverableEditor : Editor { + private SerializedProperty checkMouseInsideRectOnEnable; + private SerializedProperty cursorState; + private SerializedProperty invokeStateChangeOnHover; private SerializedProperty onPointerEnter; private SerializedProperty onPointerExit; - private SerializedProperty invokeStateChangeOnHover; - private SerializedProperty cursorState; - private SerializedProperty checkMouseInsideRectOnEnable; - protected void OnEnable() - { - onPointerEnter = serializedObject.FindProperty("onPointerEnter"); - onPointerExit = serializedObject.FindProperty("onPointerExit"); - invokeStateChangeOnHover = serializedObject.FindProperty("invokeStateChangeOnHover"); - cursorState = serializedObject.FindProperty("cursorOverride"); - checkMouseInsideRectOnEnable = serializedObject.FindProperty("checkMouseInsideRectOnEnable"); + protected void OnEnable() { + onPointerEnter = serializedObject.FindProperty(nameof(Hoverable.onPointerEnter)); + onPointerExit = serializedObject.FindProperty(nameof(Hoverable.onPointerExit)); + invokeStateChangeOnHover = serializedObject.FindProperty(nameof(Hoverable.invokeStateChangeOnHover)); + cursorState = serializedObject.FindProperty(nameof(Hoverable.cursorOverride)); + checkMouseInsideRectOnEnable = serializedObject.FindProperty(nameof(Hoverable.checkMouseInsideRectOnEnable)); } - public override void OnInspectorGUI() - { + public override void OnInspectorGUI() { serializedObject.Update(); EditorGUILayout.PropertyField(checkMouseInsideRectOnEnable); EditorGUILayout.PropertyField(invokeStateChangeOnHover); - if (invokeStateChangeOnHover.boolValue) - { + if (invokeStateChangeOnHover.boolValue) { EditorGUI.indentLevel = 1; EditorGUILayout.PropertyField(cursorState); EditorGUI.indentLevel = 0; diff --git a/Assets/Project/Source/Editor/ScriptableObjectBag.cs b/Assets/Project/Source/Editor/ScriptableObjectBag.cs index 91f871b9..88b2a5b8 100644 --- a/Assets/Project/Source/Editor/ScriptableObjectBag.cs +++ b/Assets/Project/Source/Editor/ScriptableObjectBag.cs @@ -1,17 +1,14 @@ -using Exa.Generics; +using Exa.Types; using UnityEditor; using UnityEngine; -namespace Exa.CustomEditors -{ +namespace Exa.CustomEditors { [CustomEditor(typeof(ScriptableObjectBagBase), true)] - public class ScriptableObjectBagEditor : Editor - { - public override void OnInspectorGUI() - { + public class ScriptableObjectBagEditor : Editor { + public override void OnInspectorGUI() { base.OnInspectorGUI(); - if (GUILayout.Button("Find objects")) - { + + if (GUILayout.Button("Find objects")) { var bag = target as ScriptableObjectBagBase; bag.FindObjects(); EditorUtility.SetDirty(bag); diff --git a/Assets/Project/Source/Editor/SerializableDictionary.Editor.cs b/Assets/Project/Source/Editor/SerializableDictionary.Editor.cs new file mode 100644 index 00000000..a7ad5c87 --- /dev/null +++ b/Assets/Project/Source/Editor/SerializableDictionary.Editor.cs @@ -0,0 +1,90 @@ +using Exa.Types.Generics; +using UnityEngine; +using UnityEditor; +using UnityEditorInternal; + +namespace Exa.CustomEditors { + [CustomPropertyDrawer(typeof(SerializableDictionary), true)] + public class SerializableDictionaryDrawer : PropertyDrawer { + private ReorderableList list; + + public override void OnGUI (Rect position, SerializedProperty property, GUIContent label) { + if (list == null) { + var listProp = property.FindPropertyRelative("list"); + list = new ReorderableList(property.serializedObject, listProp, true, false, true, true); + list.drawElementCallback = DrawListItems; + } + + var firstLine = position; + firstLine.height = EditorGUIUtility.singleLineHeight; + EditorGUI.PropertyField(firstLine, property, label); + + if (property.isExpanded) { + position.y += firstLine.height; + + if (_elementIndex == null) { + _elementIndex = new GUIContent(); + } + + list.DoList(position); + } + } + + private static GUIContent[] PairElementLabels { + get => _pairElementLabels ??= new[] { + new GUIContent("Key"), + new GUIContent("=>") + }; + } + + private static GUIContent[] _pairElementLabels; + private static GUIContent _elementIndex; + + private void DrawListItems(Rect rect, int index, bool isActive, bool isFocused) { + var element = list.serializedProperty.GetArrayElementAtIndex(index); // The element in the list + + var keyProp = element.FindPropertyRelative("key"); + var valueProp = element.FindPropertyRelative("value"); + + _elementIndex.text = $"Element {index}"; + /*var label =*/ EditorGUI.BeginProperty(rect, _elementIndex, element); + + var prevLabelWidth = EditorGUIUtility.labelWidth; + + EditorGUIUtility.labelWidth = 75; + + var rect0 = rect; //EditorGUI.PrefixLabel(rect, GUIUtility.GetControlID(FocusType.Passive), label); + + var halfWidth = rect0.width / 2f; + rect0.width = halfWidth; + rect0.y += 1f; + rect0.height -= 2f; + + + EditorGUIUtility.labelWidth = 40; + + EditorGUI.BeginChangeCheck(); + EditorGUI.PropertyField(rect0, keyProp); + + rect0.x += halfWidth + 4f; + + EditorGUI.PropertyField(rect0, valueProp); + + EditorGUIUtility.labelWidth = prevLabelWidth; + + EditorGUI.EndProperty(); + } + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) { + if (property.isExpanded) { + var listProp = property.FindPropertyRelative("list"); + + return listProp.arraySize < 2 + ? EditorGUIUtility.singleLineHeight + 52f + : EditorGUIUtility.singleLineHeight + 23f * listProp.arraySize + 29; + } + + return EditorGUIUtility.singleLineHeight; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Editor/SerializableDictionary.Editor.cs.meta b/Assets/Project/Source/Editor/SerializableDictionary.Editor.cs.meta new file mode 100644 index 00000000..d7e22b1e --- /dev/null +++ b/Assets/Project/Source/Editor/SerializableDictionary.Editor.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: ff29e9a78657446aaffb821490a2c205 +timeCreated: 1630494255 \ No newline at end of file diff --git a/Assets/Project/Source/Editor/SkewedImage.Editor.cs b/Assets/Project/Source/Editor/SkewedImage.Editor.cs index 2447cf7e..0ba107c4 100644 --- a/Assets/Project/Source/Editor/SkewedImage.Editor.cs +++ b/Assets/Project/Source/Editor/SkewedImage.Editor.cs @@ -1,36 +1,31 @@ using Exa.UI; using UnityEditor; using UnityEditor.UI; +using UnityEngine.UI; -namespace Exa.CustomEditors -{ - [CustomEditor(typeof(SkewedImage))] - public class SkewedImageEditor : ImageEditor - { - private SerializedProperty skewX; - private SerializedProperty skewY; +namespace Exa.CustomEditors { + [CustomEditor(typeof(PixelSkewedImage), true)] + public class SkewedImageEditor : ImageEditor { + private SerializedProperty skew; - protected override void OnEnable() - { + protected override void OnEnable() { base.OnEnable(); - skewX = serializedObject.FindProperty(nameof(SkewedImage.skewX)); - skewY = serializedObject.FindProperty(nameof(SkewedImage.skewY)); + skew = serializedObject.FindProperty(nameof(PixelSkewedImage.skew)); } - public override void OnInspectorGUI() - { + public override void OnInspectorGUI() { base.OnInspectorGUI(); serializedObject.Update(); + (target as AngleSkewedImage)?.InvalidatePixels(); // ReSharper disable once PossibleNullReferenceException - (target as SkewedImage).SetAllDirty(); + (target as Graphic).SetAllDirty(); - EditorGUILayout.PropertyField(skewX); - EditorGUILayout.PropertyField(skewY); + EditorGUILayout.PropertyField(skew); serializedObject.ApplyModifiedProperties(); } } -} +} \ No newline at end of file diff --git a/Assets/Project/Source/Editor/UIAnimateable.Editor.cs b/Assets/Project/Source/Editor/UIAnimateable.Editor.cs index 75e3286e..aab897a1 100644 --- a/Assets/Project/Source/Editor/UIAnimateable.Editor.cs +++ b/Assets/Project/Source/Editor/UIAnimateable.Editor.cs @@ -1,21 +1,18 @@ using Exa.UI.Components; using UnityEditor; -namespace Exa.CustomEditors -{ +namespace Exa.CustomEditors { [CustomEditor(typeof(UIAnimateable))] [CanEditMultipleObjects] - public class UIAnimateableEditor : Editor - { - private SerializedProperty msLocalAnimationOffset; + public class UIAnimateableEditor : Editor { + private SerializedProperty alphaSpeed; + private SerializedProperty animateAlpha; private SerializedProperty movementDirection; - private SerializedProperty movementSmoothDamp; private SerializedProperty movementMagnitude; - private SerializedProperty animateAlpha; - private SerializedProperty alphaSpeed; + private SerializedProperty movementSmoothDamp; + private SerializedProperty msLocalAnimationOffset; - private void OnEnable() - { + private void OnEnable() { msLocalAnimationOffset = serializedObject.FindProperty("msLocalAnimationOffset"); movementDirection = serializedObject.FindProperty("movementDirection"); movementSmoothDamp = serializedObject.FindProperty("movementSmoothDamp"); @@ -24,15 +21,13 @@ private void OnEnable() alphaSpeed = serializedObject.FindProperty("alphaSpeed"); } - public override void OnInspectorGUI() - { + public override void OnInspectorGUI() { serializedObject.Update(); EditorGUILayout.PropertyField(msLocalAnimationOffset); EditorGUILayout.PropertyField(movementDirection); - if ((AnimationDirection)movementDirection.enumValueIndex != AnimationDirection.none) - { + if ((AnimationDirection) movementDirection.enumValueIndex != AnimationDirection.none) { EditorGUI.indentLevel = 1; EditorGUILayout.Slider(movementSmoothDamp, 0f, 1f); EditorGUILayout.PropertyField(movementMagnitude); @@ -41,8 +36,7 @@ public override void OnInspectorGUI() EditorGUILayout.PropertyField(animateAlpha); - if (animateAlpha.boolValue) - { + if (animateAlpha.boolValue) { EditorGUI.indentLevel = 1; EditorGUILayout.Slider(alphaSpeed, 0f, 10f); EditorGUI.indentLevel = 0; diff --git a/Assets/Project/Source/Editor/Wakatime/Plugin.cs b/Assets/Project/Source/Editor/Wakatime/Plugin.cs index 271d0598..c459ee09 100644 --- a/Assets/Project/Source/Editor/Wakatime/Plugin.cs +++ b/Assets/Project/Source/Editor/Wakatime/Plugin.cs @@ -2,261 +2,219 @@ using System; using System.IO; +using System.Text; using UnityEditor; using UnityEditor.Callbacks; using UnityEditor.SceneManagement; using UnityEngine; using UnityEngine.Networking; using UnityEngine.SceneManagement; + #pragma warning disable CS0649 // Heavily inspired by https://github.com/bengsfort/WakaTime-Unity -namespace WakaTime -{ +namespace WakaTime { [InitializeOnLoad] - public class Plugin - { + public class Plugin { public const string API_KEY_PREF = "WakaTime/APIKey"; public const string ENABLED_PREF = "WakaTime/Enabled"; public const string DEBUG_PREF = "WakaTime/Debug"; public const string WAKATIME_PROJECT_FILE = ".wakatime-project"; - public static string ProjectName { get; private set; } + private const string URL_PREFIX = "https://wakatime.com/api/v1/"; + private const int HEARTBEAT_COOLDOWN = 120; private static string _apiKey = ""; private static bool _enabled = true; private static bool _debug = true; - private const string URL_PREFIX = "https://wakatime.com/api/v1/"; - private const int HEARTBEAT_COOLDOWN = 120; - private static HeartbeatResponse _lastHeartbeat; - static Plugin() - { + static Plugin() { Initialize(); } - public static void Initialize() - { - if (EditorPrefs.HasKey(ENABLED_PREF)) + public static string ProjectName { get; private set; } + + public static void Initialize() { + if (EditorPrefs.HasKey(ENABLED_PREF)) { _enabled = EditorPrefs.GetBool(ENABLED_PREF); + } - if (EditorPrefs.HasKey(DEBUG_PREF)) + if (EditorPrefs.HasKey(DEBUG_PREF)) { _debug = EditorPrefs.GetBool(DEBUG_PREF); + } + + if (!_enabled) { + if (_debug) { + Debug.Log(" Explicitly disabled, skipping initialization..."); + } - if (!_enabled) - { - if (_debug) Debug.Log(" Explicitly disabled, skipping initialization..."); return; } - if (EditorPrefs.HasKey(API_KEY_PREF)) - { + if (EditorPrefs.HasKey(API_KEY_PREF)) { _apiKey = EditorPrefs.GetString(API_KEY_PREF); } - if (_apiKey == string.Empty) - { + if (_apiKey == string.Empty) { Debug.LogWarning(" API key is not set, skipping initialization..."); + return; } ProjectName = GetProjectName(); - if (_debug) Debug.Log(" Initializing..."); + if (_debug) { + Debug.Log(" Initializing..."); + } SendHeartbeat(); LinkCallbacks(); } /// - /// Reads .wakatime-project file - /// + /// Reads .wakatime-project file + /// /// /// Lines of .wakatime-project or null if file not found - public static string[] GetProjectFile() => - !File.Exists(WAKATIME_PROJECT_FILE) ? null : File.ReadAllLines(WAKATIME_PROJECT_FILE); + public static string[] GetProjectFile() { + return !File.Exists(WAKATIME_PROJECT_FILE) ? null : File.ReadAllLines(WAKATIME_PROJECT_FILE); + } /// - /// Rewrites o creates new .wakatime-project file with given lines - /// + /// Rewrites o creates new .wakatime-project file with given lines + /// /// /// - /// + /// /// project-override-name /// branch-override-name /// /// /// - public static void SetProjectFile(string[] content) - { + public static void SetProjectFile(string[] content) { File.WriteAllLines(WAKATIME_PROJECT_FILE, content); } - private struct Response - { - public string error; - public T data; - } - - private struct HeartbeatResponse - { - public string id; - public string entity; - public string type; - public float time; - } - - private struct Heartbeat - { - public string entity; - public string type; - public float time; - public string project; - public string branch; - public string plugin; - public string language; - public bool is_write; - public bool is_debugging; - - public Heartbeat(string file, bool save = false) - { - entity = file == string.Empty ? "Unsaved Scene" : file; - type = "file"; - time = (float)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds; - project = ProjectName; - plugin = "unity-wakatime"; - branch = "master"; - language = "unity"; - is_write = save; - is_debugging = _debug; + private static void SendHeartbeat(bool fromSave = false) { + if (_debug) { + Debug.Log(" Sending heartbeat..."); } - } - private static void SendHeartbeat(bool fromSave = false) - { - if (_debug) Debug.Log(" Sending heartbeat..."); + var currentScene = SceneManager.GetActiveScene().path; - var currentScene = EditorSceneManager.GetActiveScene().path; var file = currentScene != string.Empty - ? Path.Combine(Application.dataPath, currentScene.Substring("Assets/".Length)) - : string.Empty; + ? Path.Combine(Application.dataPath, currentScene.Substring("Assets/".Length)) + : string.Empty; var heartbeat = new Heartbeat(file, fromSave); - if ((heartbeat.time - _lastHeartbeat.time < HEARTBEAT_COOLDOWN) && !fromSave && - (heartbeat.entity == _lastHeartbeat.entity)) - { - if (_debug) Debug.Log(" Skip this heartbeat"); + + if (heartbeat.time - _lastHeartbeat.time < HEARTBEAT_COOLDOWN && + !fromSave && + heartbeat.entity == _lastHeartbeat.entity) { + if (_debug) { + Debug.Log(" Skip this heartbeat"); + } + return; } - var heartbeatJSON = JsonUtility.ToJson(heartbeat); + var heartbeatJson = JsonUtility.ToJson(heartbeat); var request = UnityWebRequest.Post(URL_PREFIX + "users/current/heartbeats?api_key=" + _apiKey, string.Empty); - request.uploadHandler = new UploadHandlerRaw(System.Text.Encoding.UTF8.GetBytes(heartbeatJSON)); + request.uploadHandler = new UploadHandlerRaw(Encoding.UTF8.GetBytes(heartbeatJson)); request.SetRequestHeader("Content-Type", "application/json"); - request.SendWebRequest().completed += - operation => - { - if (request.downloadHandler.text == string.Empty) - { + request.SendWebRequest().completed += operation => { + if (request.downloadHandler.text == string.Empty) { //Debug.LogWarning( // " Network is unreachable. Consider disabling completely if you're working offline"); + request.Dispose(); + return; } - if (_debug) + if (_debug) { Debug.Log(" Got response\n" + request.downloadHandler.text); + } Response response; - try - { - response = - JsonUtility.FromJson>( - request.downloadHandler.text); - } - catch (ArgumentException) - { + try { + response = JsonUtility.FromJson>(request.downloadHandler.text); + } catch (ArgumentException) { + request.Dispose(); + return; } - if (response.error != null) - { - if (response.error == "Duplicate") - { - if (_debug) Debug.LogWarning(" Duplicate heartbeat"); - } - else - { + if (response.error != null) { + if (response.error == "Duplicate") { + if (_debug) { + Debug.LogWarning(" Duplicate heartbeat"); + } + } else { Debug.LogError( - " Failed to send heartbeat to WakaTime!\n" + - response.error); + " Failed to send heartbeat to WakaTime!\n" + + response.error + ); } - } - else - { - if (_debug) Debug.Log(" Sent heartbeat!"); + } else { + if (_debug) { + Debug.Log(" Sent heartbeat!"); + } + _lastHeartbeat = response.data; } + + request.Dispose(); }; } [DidReloadScripts] - private static void OnScriptReload() - { + private static void OnScriptReload() { Initialize(); } - private static void OnPlaymodeStateChanged(PlayModeStateChange change) - { + private static void OnPlaymodeStateChanged(PlayModeStateChange change) { SendHeartbeat(); } - private static void OnPropertyContextMenu(GenericMenu menu, SerializedProperty property) - { + private static void OnPropertyContextMenu(GenericMenu menu, SerializedProperty property) { SendHeartbeat(); } - private static void OnHierarchyWindowChanged() - { + private static void OnHierarchyWindowChanged() { SendHeartbeat(); } - private static void OnSceneSaved(Scene scene) - { + private static void OnSceneSaved(Scene scene) { SendHeartbeat(true); } - private static void OnSceneOpened(Scene scene, OpenSceneMode mode) - { + private static void OnSceneOpened(Scene scene, OpenSceneMode mode) { SendHeartbeat(); } - private static void OnSceneClosing(Scene scene, bool removingScene) - { + private static void OnSceneClosing(Scene scene, bool removingScene) { SendHeartbeat(); } - private static void OnSceneCreated(Scene scene, NewSceneSetup setup, NewSceneMode mode) - { + private static void OnSceneCreated(Scene scene, NewSceneSetup setup, NewSceneMode mode) { SendHeartbeat(); } - private static void LinkCallbacks(bool clean = false) - { - if (clean) - { + private static void LinkCallbacks(bool clean = false) { + if (clean) { EditorApplication.playModeStateChanged -= OnPlaymodeStateChanged; EditorApplication.contextualPropertyMenu -= OnPropertyContextMenu; -#if UNITY_2018_1_OR_NEWER + #if UNITY_2018_1_OR_NEWER EditorApplication.hierarchyChanged -= OnHierarchyWindowChanged; -#else - EditorApplication.hierarchyWindowChanged -= OnHierarchyWindowChanged; -#endif + #else + EditorApplication.hierarchyWindowChanged -= OnHierarchyWindowChanged; + #endif EditorSceneManager.sceneSaved -= OnSceneSaved; EditorSceneManager.sceneOpened -= OnSceneOpened; EditorSceneManager.sceneClosing -= OnSceneClosing; @@ -265,11 +223,11 @@ private static void LinkCallbacks(bool clean = false) EditorApplication.playModeStateChanged += OnPlaymodeStateChanged; EditorApplication.contextualPropertyMenu += OnPropertyContextMenu; -#if UNITY_2018_1_OR_NEWER + #if UNITY_2018_1_OR_NEWER EditorApplication.hierarchyChanged += OnHierarchyWindowChanged; -#else + #else EditorApplication.hierarchyWindowChanged += OnHierarchyWindowChanged; -#endif + #endif EditorSceneManager.sceneSaved += OnSceneSaved; EditorSceneManager.sceneOpened += OnSceneOpened; EditorSceneManager.sceneClosing += OnSceneClosing; @@ -277,13 +235,50 @@ private static void LinkCallbacks(bool clean = false) } /// - /// Project name for sending + /// Project name for sending /// - /// or first line of .wakatime-project - private static string GetProjectName() => - File.Exists(WAKATIME_PROJECT_FILE) - ? File.ReadAllLines(WAKATIME_PROJECT_FILE)[0] - : Application.productName; + /// or first line of .wakatime-project + private static string GetProjectName() { + return File.Exists(WAKATIME_PROJECT_FILE) + ? File.ReadAllLines(WAKATIME_PROJECT_FILE)[0] + : Application.productName; + } + + private struct Response { + public string error; + public T data; + } + + private struct HeartbeatResponse { + public string id; + public string entity; + public string type; + public float time; + } + + private struct Heartbeat { + public readonly string entity; + public string type; + public readonly float time; + public string project; + public string branch; + public string plugin; + public string language; + public bool is_write; + public bool is_debugging; + + public Heartbeat(string file, bool save = false) { + entity = file == string.Empty ? "Unsaved Scene" : file; + type = "file"; + time = (float) DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds; + project = ProjectName; + plugin = "unity-wakatime"; + branch = "master"; + language = "unity"; + is_write = save; + is_debugging = _debug; + } + } } } diff --git a/Assets/Project/Source/Editor/Wakatime/ProjectEditWindow.cs b/Assets/Project/Source/Editor/Wakatime/ProjectEditWindow.cs index db3aa66e..402a5f66 100644 --- a/Assets/Project/Source/Editor/Wakatime/ProjectEditWindow.cs +++ b/Assets/Project/Source/Editor/Wakatime/ProjectEditWindow.cs @@ -4,8 +4,8 @@ namespace WakaTime { /// - /// Popup window for editing .wakatime-project file - /// + /// Popup window for editing .wakatime-project file + /// /// public class ProjectEditWindow : EditorWindow { private static ProjectEditWindow _window; @@ -15,67 +15,56 @@ public class ProjectEditWindow : EditorWindow { private static string _branch; private static readonly GUIStyle RichHelpBoxStyle - = new GUIStyle(EditorStyles.helpBox) {richText = true}; + = new GUIStyle(EditorStyles.helpBox) { + richText = true + }; private static bool _isProjectFileMissed; - public static void Display() { - if (_window) { - FocusWindowIfItsOpen(); - } - else { - _window = CreateInstance(); - _window.ShowPopup(); - } + private void OnGUI() { + EditorGUILayout.BeginHorizontal(); - // We need only first 2 lines from .wakatime-project - _projectSettings = new[] {"", ""}; - var projectFile = Plugin.GetProjectFile(); - - if (projectFile == null) - _isProjectFileMissed = true; - else { - _isProjectFileMissed = false; - projectFile.CopyTo(_projectSettings, 0); - } - - _branch = string.IsNullOrEmpty(_projectSettings[1]) - ? "" // TODO: Read current git branch - : _projectSettings[1]; - - // If we need to display "project file missing" line, we are making different height - // TODO: calculate height dynamically, if path is too long buttons may not fit - _size.y = _isProjectFileMissed ? 170 : 138; - - // Display at screen center - var pos = new Vector2(Screen.currentResolution.width, Screen.currentResolution.height) - _size; - _window.position = new Rect(pos / 2, _size); - _window.titleContent = new GUIContent("Change project name"); - } - - void OnGUI() { - EditorGUILayout.BeginHorizontal(); { + { EditorGUILayout.PrefixLabel("Project name"); _projectSettings[0] = EditorGUILayout.TextField(_projectSettings[0]); } + EditorGUILayout.EndHorizontal(); + EditorGUILayout.LabelField( - "A project name to send to WakaTime (Product Name from Player Settings by default)", RichHelpBoxStyle); + "A project name to send to WakaTime (Product Name from Player Settings by default)", + RichHelpBoxStyle + ); + + EditorGUILayout.BeginHorizontal(); - EditorGUILayout.BeginHorizontal(); { + { EditorGUILayout.PrefixLabel("Branch"); - EditorGUILayout.SelectableLabel(_branch, RichHelpBoxStyle, - GUILayout.Height(EditorGUIUtility.singleLineHeight)); + + EditorGUILayout.SelectableLabel( + _branch, + RichHelpBoxStyle, + GUILayout.Height(EditorGUIUtility.singleLineHeight) + ); } + EditorGUILayout.EndHorizontal(); + EditorGUILayout.LabelField( "A branch name to send to WakaTime (current git branch by default) (not implemented in this plugin yet)", - RichHelpBoxStyle); + RichHelpBoxStyle + ); + + if (_isProjectFileMissed) { + GUILayout.Label( + $"{Path.GetFullPath(".wakatime_project")} will be created on save", + RichHelpBoxStyle + ); + } + + EditorGUILayout.BeginHorizontal(); - if (_isProjectFileMissed) - GUILayout.Label($"{Path.GetFullPath(".wakatime_project")} will be created on save", - RichHelpBoxStyle); - EditorGUILayout.BeginHorizontal(); { + { if (GUILayout.Button("Save")) { Plugin.SetProjectFile(_projectSettings); Plugin.Initialize(); @@ -87,6 +76,7 @@ void OnGUI() { CloseAndNull(); } } + EditorGUILayout.EndHorizontal(); } @@ -94,8 +84,45 @@ private void OnLostFocus() { CloseAndNull(); } + public static void Display() { + if (_window) { + FocusWindowIfItsOpen(); + } else { + _window = CreateInstance(); + _window.ShowPopup(); + } + + // We need only first 2 lines from .wakatime-project + _projectSettings = new[] { + "", + "" + }; + + var projectFile = Plugin.GetProjectFile(); + + if (projectFile == null) { + _isProjectFileMissed = true; + } else { + _isProjectFileMissed = false; + projectFile.CopyTo(_projectSettings, 0); + } + + _branch = string.IsNullOrEmpty(_projectSettings[1]) + ? "" // TODO: Read current git branch + : _projectSettings[1]; + + // If we need to display "project file missing" line, we are making different height + // TODO: calculate height dynamically, if path is too long buttons may not fit + _size.y = _isProjectFileMissed ? 170 : 138; + + // Display at screen center + var pos = new Vector2(Screen.currentResolution.width, Screen.currentResolution.height) - _size; + _window.position = new Rect(pos / 2, _size); + _window.titleContent = new GUIContent("Change project name"); + } + /// - /// Closes this window and erases instance + /// Closes this window and erases instance /// private void CloseAndNull() { Close(); diff --git a/Assets/Project/Source/Editor/Wakatime/Window.cs b/Assets/Project/Source/Editor/Wakatime/Window.cs index 8869040c..3428c212 100644 --- a/Assets/Project/Source/Editor/Wakatime/Window.cs +++ b/Assets/Project/Source/Editor/Wakatime/Window.cs @@ -1,64 +1,69 @@ -using UnityEngine; using UnityEditor; +using UnityEngine; namespace WakaTime { - public class Window : EditorWindow { - private string _apiKey = ""; - private string _projectName = ""; - private bool _enabled = true; - private bool _debug = true; + public class Window : EditorWindow { + private const string DASHBOARD_URL = "https://wakatime.com/dashboard/"; + private string _apiKey = ""; + private bool _debug = true; + private bool _enabled = true; - private bool _needToReload; + private bool _needToReload; + private string _projectName = ""; - const string DASHBOARD_URL = "https://wakatime.com/dashboard/"; + private void OnGUI() { + _enabled = EditorGUILayout.Toggle("Enable WakaTime", _enabled); + _apiKey = EditorGUILayout.TextField("API key", _apiKey); + EditorGUILayout.LabelField("Project name", _projectName); - [MenuItem("Window/WakaTime")] - static void Init() { - Window window = (Window) GetWindow(typeof(Window), false, "WakaTime"); - window.Show(); - } + if (GUILayout.Button("Change project name")) { + ProjectEditWindow.Display(); + _needToReload = true; + } - void OnGUI() { - _enabled = EditorGUILayout.Toggle("Enable WakaTime", _enabled); - _apiKey = EditorGUILayout.TextField("API key", _apiKey); - EditorGUILayout.LabelField("Project name", _projectName); + _debug = EditorGUILayout.Toggle("Debug", _debug); - if (GUILayout.Button("Change project name")) { - ProjectEditWindow.Display(); - _needToReload = true; - } + EditorGUILayout.BeginHorizontal(); - _debug = EditorGUILayout.Toggle("Debug", _debug); + if (GUILayout.Button("Save Preferences")) { + EditorPrefs.SetString(Plugin.API_KEY_PREF, _apiKey); + EditorPrefs.SetBool(Plugin.ENABLED_PREF, _enabled); + EditorPrefs.SetBool(Plugin.DEBUG_PREF, _debug); + Plugin.Initialize(); + } - EditorGUILayout.BeginHorizontal(); + if (GUILayout.Button("Open Dashboard")) { + Application.OpenURL(DASHBOARD_URL); + } - if (GUILayout.Button("Save Preferences")) { - EditorPrefs.SetString(Plugin.API_KEY_PREF, _apiKey); - EditorPrefs.SetBool(Plugin.ENABLED_PREF, _enabled); - EditorPrefs.SetBool(Plugin.DEBUG_PREF, _debug); - Plugin.Initialize(); - } + EditorGUILayout.EndHorizontal(); + } - if (GUILayout.Button("Open Dashboard")) - Application.OpenURL(DASHBOARD_URL); + private void OnFocus() { + if (_needToReload) { + Plugin.Initialize(); + _needToReload = false; + } - EditorGUILayout.EndHorizontal(); - } + if (EditorPrefs.HasKey(Plugin.API_KEY_PREF)) { + _apiKey = EditorPrefs.GetString(Plugin.API_KEY_PREF); + } + + if (EditorPrefs.HasKey(Plugin.ENABLED_PREF)) { + _enabled = EditorPrefs.GetBool(Plugin.ENABLED_PREF); + } - void OnFocus() { - if (_needToReload) { - Plugin.Initialize(); - _needToReload = false; - } + if (EditorPrefs.HasKey(Plugin.DEBUG_PREF)) { + _debug = EditorPrefs.GetBool(Plugin.DEBUG_PREF); + } - if (EditorPrefs.HasKey(Plugin.API_KEY_PREF)) - _apiKey = EditorPrefs.GetString(Plugin.API_KEY_PREF); - if (EditorPrefs.HasKey(Plugin.ENABLED_PREF)) - _enabled = EditorPrefs.GetBool(Plugin.ENABLED_PREF); - if (EditorPrefs.HasKey(Plugin.DEBUG_PREF)) - _debug = EditorPrefs.GetBool(Plugin.DEBUG_PREF); + _projectName = Plugin.ProjectName; + } - _projectName = Plugin.ProjectName; + [MenuItem("Window/WakaTime")] + private static void Init() { + var window = (Window) GetWindow(typeof(Window), false, "WakaTime"); + window.Show(); + } } - } } \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/BlockGridManager.cs b/Assets/Project/Source/Gameplay/BlockGridManager.cs index 18a889b9..6a1c4e50 100644 --- a/Assets/Project/Source/Gameplay/BlockGridManager.cs +++ b/Assets/Project/Source/Gameplay/BlockGridManager.cs @@ -1,36 +1,79 @@ -using System.Collections; -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; -using UnityEngine; using Exa.Grids; -using Exa.Grids.Blocks; using Exa.Grids.Blocks.BlockTypes; using Exa.Ships; using Exa.Utils; +using UnityEngine; -namespace Exa.Gameplay -{ - public class BlockGridManager : MonoBehaviour - { +namespace Exa.Gameplay { + public class BlockGridManager : MonoBehaviour { [SerializeField] private GameObject debrisGridPrefab; + private List gridInstancesToRebuild = new List(); + private List gridInstancesToDestroy = new List(); + + /// + /// Schedules a grid to be rebuilt the next frame. This batches multiple rebuild requests + /// + /// + public void ScheduleRebuild(IGridInstance gridInstance) { + if (!gridInstancesToRebuild.Contains(gridInstance)) { + gridInstancesToRebuild.Add(gridInstance); + } + } + + public void ScheduleDestruction(IGridInstance gridInstance) { + if (!gridInstancesToDestroy.Contains(gridInstance)) { + gridInstancesToDestroy.Add(gridInstance); + } + } + + private void LateUpdate() { + foreach (var instance in gridInstancesToDestroy) { + instance.Destroy(); + } + + foreach (var instance in gridInstancesToRebuild.Except(gridInstancesToDestroy)) { + AttemptRebuild(instance); + } + + gridInstancesToDestroy.Clear(); + gridInstancesToRebuild.Clear(); + } - public void AttemptRebuild(IGridInstance gridInstance) { + private void AttemptRebuild(IGridInstance gridInstance) { var blockGrid = gridInstance.BlockGrid; - if (!blockGrid.Any()) + + if (!blockGrid.Any()) { + Debug.LogWarning("Grid found with no block ?"); + return; + } - var clusters = GetClusters(gridInstance.BlockGrid); - if (clusters.Count() > 1) + // Get the clusters associated + var clusters = GetClusters(blockGrid).ToArray(); + + // Rebuild the grid, if multiple clusters were found; + if (clusters.Length > 1) { Rebuild(gridInstance, clusters); + } } + /// + /// Split a grid instance into multiple grid instances + /// + /// Initial grid instance + /// Clusters of the grid instance that need to be separated from the grid instance private void Rebuild(IGridInstance gridInstance, IEnumerable clusters) { var blockGrid = gridInstance.BlockGrid; + + // Set a flag that lets the block grid know it's being rebuilt + // This prevents the block grid from scheduling a rebuild when blocks are removed blockGrid.Rebuilding = true; var clustersScheduledForRebuild = clusters.Where(cluster => !cluster.containsController); foreach (var cluster in clustersScheduledForRebuild) { - var debris = this.InstantiateAndGet(debrisGridPrefab, transform); + var debris = debrisGridPrefab.Create(transform); debris.FromCluster(cluster); debris.Rigidbody2D.velocity = gridInstance.Rigidbody2D.velocity; } @@ -39,35 +82,54 @@ private void Rebuild(IGridInstance gridInstance, IEnumerable clusters) blockGrid.DestroyIfEmpty(); } + /// + /// Generates the clusters of a grid + /// + /// Block grid + /// private IEnumerable GetClusters(BlockGrid blockGrid) { var vacantBlocks = new List(blockGrid); while (vacantBlocks.Count > 0) { var firstBlock = vacantBlocks.First(); + yield return GetCluster(firstBlock.GridAnchor, vacantBlocks, blockGrid); } } + // ReSharper disable Unity.PerformanceAnalysis + /// + /// Floodfills a grid to get a single cluster of blocks + /// + /// Point in grid to start floodfilling + /// Collection of blocks that are yet to be added to any cluster + /// Block grid + /// private Cluster GetCluster(Vector2Int startPoint, ICollection vacantBlocks, BlockGrid blockGrid) { var cluster = new Cluster(); var visitedGridPos = new HashSet(); + // Flood fill using loop instead of tail recursion void FloodFill(int x, int y) { - var gridPos = new Vector2Int(x, y); - if (visitedGridPos.Contains(gridPos)) { - return; - } + while (true) { + var gridPos = new Vector2Int(x, y); - visitedGridPos.Add(gridPos); + if (!visitedGridPos.Add(gridPos)) { + return; + } + + if (!blockGrid.TryGetMember(gridPos, out var member)) { + return; + } - if (blockGrid.TryGetMember(gridPos, out var member)) { if (vacantBlocks.Contains(member)) { vacantBlocks.Remove(member); cluster.Add(member); if (member.GetIsController()) { - if (cluster.containsController) + if (cluster.containsController) { Debug.LogWarning($"Cluster {cluster} contains multiple controllers, this shouldn't happen"); + } cluster.containsController = true; } @@ -76,7 +138,7 @@ void FloodFill(int x, int y) { FloodFill(x - 1, y); FloodFill(x + 1, y); FloodFill(x, y - 1); - FloodFill(x, y + 1); + y++; } } @@ -85,4 +147,4 @@ void FloodFill(int x, int y) { return cluster; } } -} +} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Camera.meta b/Assets/Project/Source/Gameplay/Camera.meta deleted file mode 100644 index 42136f13..00000000 --- a/Assets/Project/Source/Gameplay/Camera.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 209cb6c36042e6341b2ab8bc92111887 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/Gameplay/Camera/CameraController.cs b/Assets/Project/Source/Gameplay/Camera/CameraController.cs deleted file mode 100644 index 47a20f1b..00000000 --- a/Assets/Project/Source/Gameplay/Camera/CameraController.cs +++ /dev/null @@ -1,73 +0,0 @@ -using System; -using DG.Tweening; -using Exa.Math; -using Exa.Utils; -using UnityEditor; -using UnityEngine; - -#pragma warning disable CS0649 - -namespace Exa.Gameplay -{ - public class CameraController : MonoBehaviour - { - [SerializeField] private CameraTargetSettings defaultSettings; - private Camera targetCamera; - - private Tween cameraMoveTween; - private Tween cameraZoomTween; - - public CameraTarget CurrentTarget { get; private set; } - public UserTarget UserTarget { get; private set; } - public CameraTargetSettings DefaultSettings => defaultSettings; - - private void Awake() { - targetCamera = Camera.main; - UserTarget = new UserTarget(defaultSettings); - } - - private void Update() { - if (CurrentTarget != null && !CurrentTarget.TargetValid) - EscapeTarget(); - - if (CurrentTarget != null) - UserTarget.ImportValues(CurrentTarget); - else - UserTarget.Tick(); - - var target = GetTarget(); - var cameraOrthoSize = target.GetCalculatedOrthoSize(); - var cameraPosition = target.GetWorldPosition().ToVector3(-10); - - targetCamera.DOOrthoSize(cameraOrthoSize, 0.2f) - .Replace(ref cameraZoomTween); - targetCamera.transform.DOMove(cameraPosition, 0.2f) - .Replace(ref cameraMoveTween); - } - - public void SetSelectionTarget(ShipSelection selection, bool teleport = false) { - if (selection.Count <= 0) - throw new ArgumentException("Cannot set an empty selection as target", nameof(selection)); - - var target = new SelectionTarget(selection, defaultSettings); - SetTarget(target, teleport); - } - - public void SetTarget(CameraTarget newTarget, bool teleport = false) { - if (teleport) { - targetCamera.transform.position = newTarget.GetWorldPosition().ToVector3(-10); - targetCamera.orthographicSize = newTarget.GetCalculatedOrthoSize(); - } - - CurrentTarget = newTarget; - } - - public void EscapeTarget() { - CurrentTarget = null; - } - - public ICameraTarget GetTarget() { - return CurrentTarget ?? UserTarget; - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Camera/CameraTarget.cs b/Assets/Project/Source/Gameplay/Camera/CameraTarget.cs deleted file mode 100644 index 05970330..00000000 --- a/Assets/Project/Source/Gameplay/Camera/CameraTarget.cs +++ /dev/null @@ -1,42 +0,0 @@ -using Exa.Generics; -using Exa.Math; -using UnityEngine; - -namespace Exa.Gameplay -{ - public abstract class CameraTarget : ICameraTarget - { - private CameraTargetSettings settings; - private BezierCurve zoomCurve; - private float zoomScale; - - public float ZoomScale { - get => zoomScale; - set => zoomScale = Mathf.Clamp01(value); - } - - public virtual bool TargetValid => true; - - protected CameraTarget(CameraTargetSettings settings) - { - this.settings = settings; - zoomCurve = new BezierCurve(settings.bezierCurveSettings); - ZoomScale = 0.5f; - } - - public virtual float GetCalculatedOrthoSize() { - var multiplier = settings.zoomMinMax.Evaluate(zoomCurve.GetY(ZoomScale)); - return settings.orthoMultiplier * multiplier; - } - - public abstract Vector2 GetWorldPosition(); - - public void OnScroll(float yScroll) { - ZoomScale -= yScroll / 1000f * settings.zoomSpeed; - } - - protected void SetZoomFromOrtho(float orthoSize) { - ZoomScale = orthoSize / settings.orthoMultiplier; - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Camera/CameraTargetSettings.cs b/Assets/Project/Source/Gameplay/Camera/CameraTargetSettings.cs deleted file mode 100644 index 67a3735e..00000000 --- a/Assets/Project/Source/Gameplay/Camera/CameraTargetSettings.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using Exa.Generics; -using Exa.Math; -using UnityEngine; - -namespace Exa.Gameplay -{ - [Serializable] - public class CameraTargetSettings - { - public BezierCurveSettings bezierCurveSettings = new BezierCurveSettings( - p0: Vector2.zero, - p1: new Vector2(0.5f, 0.5f), - p2: new Vector2(0.5f, 0.5f), - p3: new Vector2(1f, 0f)); - - public MinMax zoomMinMax = new MinMax(0.1f, 2.5f); - public float zoomSpeed = 1f; - public float orthoMultiplier = 30f; - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Camera/ICameraTarget.cs b/Assets/Project/Source/Gameplay/Camera/ICameraTarget.cs deleted file mode 100644 index 539e2d36..00000000 --- a/Assets/Project/Source/Gameplay/Camera/ICameraTarget.cs +++ /dev/null @@ -1,17 +0,0 @@ -using UnityEngine; - -namespace Exa.Gameplay -{ - public interface ICameraTarget - { - float ZoomScale { get; } - - bool TargetValid { get; } - - Vector2 GetWorldPosition(); - - float GetCalculatedOrthoSize(); - - void OnScroll(float yScroll); - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Camera/SelectionTarget.cs b/Assets/Project/Source/Gameplay/Camera/SelectionTarget.cs deleted file mode 100644 index 162381da..00000000 --- a/Assets/Project/Source/Gameplay/Camera/SelectionTarget.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System.Linq; -using UnityEditor; -using UnityEngine; - -namespace Exa.Gameplay -{ - public class SelectionTarget : CameraTarget - { - private ShipSelection selection; - - public override bool TargetValid => selection.Any(); - - public SelectionTarget(ShipSelection selection, CameraTargetSettings settings) - : base(settings) { - this.selection = selection; - SetZoomFromOrtho(selection.Max(ship => ship.BlockGrid.MaxSize) * 0.75f); - } - - public override Vector2 GetWorldPosition() { - return selection.AveragePosition; - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Camera/UserTarget.cs b/Assets/Project/Source/Gameplay/Camera/UserTarget.cs deleted file mode 100644 index f4f7aa50..00000000 --- a/Assets/Project/Source/Gameplay/Camera/UserTarget.cs +++ /dev/null @@ -1,38 +0,0 @@ -using UnityEngine; - -namespace Exa.Gameplay -{ - /// - /// Represents a camera target the user may move - /// - public class UserTarget : CameraTarget - { - public Vector2 worldPosition; - public Vector2 movementDelta; - private float movementSpeedMultiplier = 1.5f; - - public UserTarget(CameraTargetSettings settings) - : base(settings) { } - - public void Tick() { - worldPosition += movementDelta * GetMovementSpeed(); - } - - public override Vector2 GetWorldPosition() { - return worldPosition; - } - - public override float GetCalculatedOrthoSize() { - return base.GetCalculatedOrthoSize() * 0.9f; - } - - public void ImportValues(CameraTarget otherTarget) { - this.worldPosition = otherTarget.GetWorldPosition(); - this.ZoomScale = otherTarget.ZoomScale; - } - - private float GetMovementSpeed() { - return movementSpeedMultiplier * GetCalculatedOrthoSize() * Time.deltaTime; - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Cluster.cs b/Assets/Project/Source/Gameplay/Cluster.cs index 560c8bb7..e32c5177 100644 --- a/Assets/Project/Source/Gameplay/Cluster.cs +++ b/Assets/Project/Source/Gameplay/Cluster.cs @@ -1,10 +1,12 @@ using System.Collections.Generic; using Exa.Grids.Blocks.BlockTypes; -namespace Exa.Gameplay -{ - public class Cluster : List - { +namespace Exa.Gameplay { + /// + /// A cluster represents a temporary collection of blocks, currently part of a grid. + /// Clusters that doesn't contain a controller will be split from the parent grid into a debris grid + /// + public class Cluster : List { public bool containsController = false; } } \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/DamagePopup.cs b/Assets/Project/Source/Gameplay/DamagePopup.cs index cd129b8f..e7caff57 100644 --- a/Assets/Project/Source/Gameplay/DamagePopup.cs +++ b/Assets/Project/Source/Gameplay/DamagePopup.cs @@ -1,13 +1,11 @@ -using TMPro; +using Exa.Math; +using TMPro; using UnityEngine; using UnityEngine.Events; -using Exa.Math; -namespace Exa.Gameplay -{ - public class DamagePopup : MonoBehaviour - { - [Header("References")] +namespace Exa.Gameplay { + public class DamagePopup : MonoBehaviour { + [Header("References")] [SerializeField] private MeshRenderer meshRenderer; [SerializeField] private TextMeshPro tmp; @@ -18,7 +16,7 @@ public class DamagePopup : MonoBehaviour [SerializeField] private float scaleMultiplier; [SerializeField] private float positionMultiplier; - [Header("Events")] + [Header("Events")] public UnityEvent DestroyEvent; private float currentLifetime; @@ -29,22 +27,13 @@ private void Awake() { DestroyEvent = new UnityEvent(); } - public void Setup(Vector2 worldPosition, float damage, int order) { - SetScale(scaleAnimationCurve.Evaluate(0f)); - transform.position = worldPosition.WithZ(-5f); - this.worldPosition = worldPosition; - meshRenderer.sortingOrder = order; - this.damage += damage; - tmp.SetText(this.damage.Round().ToString()); - currentLifetime = 0f; - } - - public void Update() { + private void Update() { currentLifetime += Time.deltaTime; if (currentLifetime > maxLifetime) { DestroyEvent.Invoke(); Destroy(gameObject); + return; } @@ -53,6 +42,16 @@ public void Update() { SetScale(scaleAnimationCurve.Evaluate(time)); } + public void Setup(Vector2 worldPosition, float damage, int order) { + SetScale(scaleAnimationCurve.Evaluate(0f)); + transform.position = worldPosition.WithZ(-5f); + this.worldPosition = worldPosition; + meshRenderer.sortingOrder = order; + this.damage += damage; + tmp.SetText(this.damage.Round().ToString()); + currentLifetime = 0f; + } + private void SetScale(float scale) { scale *= scaleMultiplier; transform.localScale = new Vector3(scale, scale); diff --git a/Assets/Project/Source/Gameplay/Debris.cs b/Assets/Project/Source/Gameplay/Debris.cs index c2d439b9..e018ace2 100644 --- a/Assets/Project/Source/Gameplay/Debris.cs +++ b/Assets/Project/Source/Gameplay/Debris.cs @@ -1,42 +1,50 @@ using Exa.Grids; using Exa.Grids.Blocks; -using Exa.Grids.Blocks.BlockTypes; +using Exa.Grids.Blocks.Components; using Exa.Ships; using UnityEngine; + #pragma warning disable CS0649 -namespace Exa.Gameplay -{ - public class Debris : MonoBehaviour, IGridInstance - { +namespace Exa.Gameplay { + public class Debris : MonoBehaviour, IGridInstance { [SerializeField] private Rigidbody2D rb; - public BlockGrid BlockGrid { get; set; } - public Rigidbody2D Rigidbody2D => rb; - public Transform Transform => transform; - public BlockContext BlockContext => BlockContext.Debris; + public BlockGrid BlockGrid { get; private set; } + + public Rigidbody2D Rigidbody2D { + get => rb; + } + + public Transform Transform { + get => transform; + } + + public BlockContext BlockContext { + get => BlockContext.Debris; + } + public GridInstanceConfiguration Configuration { get; private set; } + public SupportDroneOrchestrator SupportDroneOrchestrator { get; private set; } + public void FromCluster(Cluster cluster) { - BlockGrid = new BlockGrid(transform, OnGridEmpty, this); + BlockGrid = new BlockGrid(this); + Configuration = new GridInstanceConfiguration { Invulnerable = false }; + SupportDroneOrchestrator = null; + foreach (var block in cluster) { - block.transform.SetParent(transform); - block.Parent = this; - BlockGrid.Add(block); + block.Parent.RemoveBlock(block); + this.AddBlock(block, true); } - foreach (var thruster in BlockGrid.Metadata.ThrusterList) { + foreach (var thruster in BlockGrid.QueryLike()) { thruster.PowerDown(); } } - - private void OnGridEmpty() { - if (gameObject) - Destroy(gameObject); - } } } \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Formations/Formation.cs b/Assets/Project/Source/Gameplay/Formations/Formation.cs index a34c55a6..e9957a6a 100644 --- a/Assets/Project/Source/Gameplay/Formations/Formation.cs +++ b/Assets/Project/Source/Gameplay/Formations/Formation.cs @@ -1,27 +1,28 @@ -using Exa.Math; -using Exa.Ships; -using System; +using System; using System.Collections.Generic; using System.Linq; +using Exa.Grids.Blueprints; +using Exa.Math; using UnityEngine; -namespace Exa.Gameplay -{ - public abstract class Formation - { - protected abstract IEnumerable GetLocalLayout(IEnumerable ships); +namespace Exa.Gameplay { + public abstract class Formation { + protected abstract IEnumerable GetLocalLayout(IEnumerable ships); public IEnumerable GetGlobalLayout(ShipSelection ships, Vector2 point) { - if (!ships.Any()) + if (!ships.Any()) { throw new ArgumentException("Cannot layout an empty collection", nameof(ships)); + } // Direction is right aligned, so we subtract 90 degrees to correct var direction = point - ships.AveragePosition; var angle = direction.GetAngle(); - foreach (var localShipPos in GetLocalLayout(ships)) { - yield return localShipPos.Rotate(angle) + point; - } + return GetGlobalLayout(ships.Select(x => x.Blueprint), point, angle); + } + + public IEnumerable GetGlobalLayout(IEnumerable blueprints, Vector2 point, float angle) { + return GetLocalLayout(blueprints).Select(localShipPos => localShipPos.Rotate(angle) + point); } } } \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Formations/VicFormation.cs b/Assets/Project/Source/Gameplay/Formations/VicFormation.cs index a633a48d..dc3e1ad8 100644 --- a/Assets/Project/Source/Gameplay/Formations/VicFormation.cs +++ b/Assets/Project/Source/Gameplay/Formations/VicFormation.cs @@ -1,24 +1,23 @@ -using Exa.Math; -using Exa.Ships; -using System.Collections.Generic; +using System.Collections.Generic; +using Exa.Grids.Blueprints; +using Exa.Math; using UnityEngine; -namespace Exa.Gameplay -{ - public class VicFormation : Formation - { +namespace Exa.Gameplay { + public class VicFormation : Formation { private readonly float echelonAngle; public VicFormation(float echelonAngle = -130f) { this.echelonAngle = echelonAngle; } - protected override IEnumerable GetLocalLayout(IEnumerable ships) { - var enumerator = ships.GetEnumerator(); + protected override IEnumerable GetLocalLayout(IEnumerable blueprints) { + using var enumerator = blueprints.GetEnumerator(); // Skip first element, as it always has a Vector2.zero position value enumerator.MoveNext(); var firstShip = enumerator.Current; + yield return Vector2.zero; var echelonSpread = CalculateEchelonSpread(firstShip); @@ -31,27 +30,42 @@ protected override IEnumerable GetLocalLayout(IEnumerable ships) while (enumerator.MoveNext()) { // Get right echelon position - yield return GetLocalPosition(enumerator.Current, ref rightEchelonSize, ref rightEchelonPivot, - echelonAngle); + yield return GetLocalPosition( + enumerator.Current, + ref rightEchelonSize, + ref rightEchelonPivot, + echelonAngle + ); - if (!enumerator.MoveNext()) break; + if (!enumerator.MoveNext()) { + break; + } // Get left echelon positon - yield return GetLocalPosition(enumerator.Current, ref leftEchelonSize, ref leftEchelonPivot, - -echelonAngle); + yield return GetLocalPosition( + enumerator.Current, + ref leftEchelonSize, + ref leftEchelonPivot, + -echelonAngle + ); } } - private Vector2 GetLocalPosition(Ship ship, ref float echelonMagnitude, ref Vector2 positionPivot, - float angle) { + private Vector2 GetLocalPosition( + Blueprint blueprint, + ref float echelonMagnitude, + ref Vector2 positionPivot, + float angle + ) { var positionOffset = MathUtils.FromAngledMagnitude(echelonMagnitude, angle); positionPivot += positionOffset; - echelonMagnitude = CalculateEchelonSpread(ship); + echelonMagnitude = CalculateEchelonSpread(blueprint); + return positionPivot; } - private float CalculateEchelonSpread(Ship ship) { - return ship.Blueprint.Blocks.MaxSize * 2f; + private float CalculateEchelonSpread(Blueprint blueprint) { + return blueprint.Grid.MaxSize * 2f; } } } \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/GameplayInputManager.Input.cs b/Assets/Project/Source/Gameplay/GameplayInputManager.Input.cs deleted file mode 100644 index f2b7728a..00000000 --- a/Assets/Project/Source/Gameplay/GameplayInputManager.Input.cs +++ /dev/null @@ -1,166 +0,0 @@ -using Exa.Math; -using Exa.Ships; -using UnityEngine; -using UnityEngine.InputSystem; - -namespace Exa.Gameplay -{ - public partial class GameplayInputManager - { - private SelectionBuilder selectionBuilder; - private bool shiftIsPressed; - - public void OnLeftClick(InputAction.CallbackContext context) { - switch (context.phase) { - case InputActionPhase.Started: - OnStartSelectionArea(); - break; - - case InputActionPhase.Canceled: - OnEndSelectionArea(); - break; - } - } - - public void OnMovement(InputAction.CallbackContext context) { - switch (context.phase) { - case InputActionPhase.Performed: - GameSystems.CameraController.EscapeTarget(); - GameSystems.CameraController.UserTarget.movementDelta = context.ReadValue(); - break; - - case InputActionPhase.Canceled: - GameSystems.CameraController.UserTarget.movementDelta = Vector2.zero; - break; - - default: - return; - } - } - - public void OnRightClick(InputAction.CallbackContext context) { - switch (context.phase) { - case InputActionPhase.Started: - if (HasSelection && CurrentSelection is FriendlyShipSelection selection) { - var point = Systems.Input.MouseWorldPoint; - selection.MoveLookAt(point); - return; - } - - if (Systems.GodModeIsEnabled && GameSystems.Raycaster.TryGetTarget(out var ship)) { - var worldPos = ship.transform.position.ToVector2(); - var direction = (worldPos - Systems.Input.MouseWorldPoint).normalized * ship.Totals.Mass; - ship.Rigidbody2D.AddForce(direction, ForceMode2D.Force); - } - - break; - } - } - - public void OnZoom(InputAction.CallbackContext context) { - switch (context.phase) { - case InputActionPhase.Performed: - var yScroll = context.ReadValue().y; - if (yScroll == 0f) return; - - var target = GameSystems.CameraController.GetTarget(); - target.OnScroll(yScroll); - break; - } - } - - public void OnEscape(InputAction.CallbackContext context) { - switch (context.phase) { - case InputActionPhase.Started: - if (HasSelection && !IsSelectingArea) { - RemoveSelectionArea(); - return; - } - - GameSystems.UI.TogglePause(); - break; - } - } - - public void OnSelectGroup(InputAction.CallbackContext context) { - if (shiftIsPressed) return; - - switch (context.phase) { - case InputActionPhase.Performed: - var index = context.ReadValue().Round(); - - CurrentSelection?.Clear(); - CurrentSelection = GameSystems.UI.gameplayLayer.selectionHotbar.Select(index); - break; - } - } - - public void OnSaveGroup(InputAction.CallbackContext context) { - switch (context.phase) { - case InputActionPhase.Performed: - var index = context.ReadValue().Round(); - GameSystems.UI.gameplayLayer.selectionHotbar.Save(CurrentSelection, index); - break; - } - } - - public void OnSaveGroupModifier(InputAction.CallbackContext context) { - switch (context.phase) { - case InputActionPhase.Started: - shiftIsPressed = true; - break; - case InputActionPhase.Canceled: - shiftIsPressed = false; - break; - } - } - - private void OnStartSelectionArea() { - var worldPoint = Systems.Input.MouseWorldPoint; - selectionBuilder = new SelectionBuilder(worldPoint); - GameSystems.UI.gameplayLayer.selectionArea.Show(worldPoint); - } - - private void OnUpdateSelectionArea() { - var worldPoint = Systems.Input.MouseWorldPoint; - GameSystems.UI.gameplayLayer.selectionArea.SetEnd(worldPoint); - } - - private void OnEndSelectionArea() { - if (IsSelectingArea) { - // Clear the current selection - CurrentSelection?.Clear(); - - // Update selection builder - var worldPoint = Systems.Input.MouseWorldPoint; - selectionBuilder.UpdateSelection(worldPoint); - - // Hide the selection area overlay - GameSystems.UI.gameplayLayer.selectionArea.Hide(); - - // Get the selection and save it in the hotbar if possible - var selection = selectionBuilder.Build(); - - CurrentSelection = selection; - selectionBuilder = null; - } - } - - private void RemoveSelectionArea() { - // Deselect current selection - var currentHotbarSelection = GameSystems.UI.gameplayLayer.selectionHotbar.CurrentSelection; - if (currentHotbarSelection != null) { - // Update the view - currentHotbarSelection.Selected = false; - } - - // Clear the selection - CurrentSelection.Clear(); - CurrentSelection = null; - } - - private void OnSelectGroup(int index) { - - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/GameplayInputManager.Selections.cs b/Assets/Project/Source/Gameplay/GameplayInputManager.Selections.cs deleted file mode 100644 index 64648442..00000000 --- a/Assets/Project/Source/Gameplay/GameplayInputManager.Selections.cs +++ /dev/null @@ -1,5 +0,0 @@ -namespace Exa.Gameplay -{ - public partial class GameplayInputManager - { } -} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/GameplayInputManager.State.cs b/Assets/Project/Source/Gameplay/GameplayInputManager.State.cs deleted file mode 100644 index 4b3235eb..00000000 --- a/Assets/Project/Source/Gameplay/GameplayInputManager.State.cs +++ /dev/null @@ -1,26 +0,0 @@ -namespace Exa.Gameplay -{ - public partial class GameplayInputManager - { - private ShipSelection currentSelection; - - private bool HasSelection { - get => currentSelection != null; - } - - private bool IsSelectingArea { - get => selectionBuilder != null; - } - - public ShipSelection CurrentSelection { - get => currentSelection; - set { - currentSelection = value; - GameSystems.UI.gameplayLayer.selectionOverlay.Reflect(value); - - if (value != null) - GameSystems.CameraController.SetSelectionTarget(value); - } - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/IRaycastTarget.cs b/Assets/Project/Source/Gameplay/IRaycastTarget.cs index 6e7aa695..3684662e 100644 --- a/Assets/Project/Source/Gameplay/IRaycastTarget.cs +++ b/Assets/Project/Source/Gameplay/IRaycastTarget.cs @@ -1,7 +1,5 @@ -namespace Exa.Gameplay -{ - public interface IRaycastTarget - { +namespace Exa.Gameplay { + public interface IRaycastTarget { void OnRaycastEnter(); void OnRaycastExit(); diff --git a/Assets/Project/Source/Gameplay/Input.meta b/Assets/Project/Source/Gameplay/Input.meta new file mode 100644 index 00000000..c956d6fc --- /dev/null +++ b/Assets/Project/Source/Gameplay/Input.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1d71fdfef4a83d74e85b025690af2988 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Gameplay/Input/GameplayInputManager.Input.cs b/Assets/Project/Source/Gameplay/Input/GameplayInputManager.Input.cs new file mode 100644 index 00000000..92f12aef --- /dev/null +++ b/Assets/Project/Source/Gameplay/Input/GameplayInputManager.Input.cs @@ -0,0 +1,180 @@ +using Exa.Math; +using Exa.Ships; +using UnityEngine; +using UnityEngine.InputSystem; + +namespace Exa.Gameplay { + public partial class GameplayInputManager { + private SelectionBuilder selectionBuilder; + private bool shiftIsPressed; + + public void OnLeftClick(InputAction.CallbackContext context) { + switch (context.phase) { + case InputActionPhase.Started: + OnStartSelectionArea(); + + break; + + case InputActionPhase.Canceled: + OnEndSelectionArea(); + + break; + } + } + + public void OnMovement(InputAction.CallbackContext context) { + switch (context.phase) { + case InputActionPhase.Performed: + S.CameraController.EscapeTarget(); + S.CameraController.UserTarget.movementDelta = context.ReadValue(); + + break; + + case InputActionPhase.Canceled: + S.CameraController.UserTarget.movementDelta = Vector2.zero; + + break; + + default: + return; + } + } + + public void OnRightClick(InputAction.CallbackContext context) { + switch (context.phase) { + case InputActionPhase.Started: + if (CurrentSelection is FriendlyShipSelection selection) { + var point = S.Input.MouseWorldPoint; + selection.MoveLookAt(point); + + return; + } + + if (S.GodModeIsEnabled && GS.Raycaster.TryGetTarget(out var ship)) { + var worldPos = ship.transform.position.ToVector2(); + var direction = (worldPos - S.Input.MouseWorldPoint).normalized * ship.BlockGrid.GetTotals().Mass; + ship.Rigidbody2D.AddForce(direction, ForceMode2D.Force); + } + + break; + } + } + + public void OnZoom(InputAction.CallbackContext context) { + switch (context.phase) { + case InputActionPhase.Performed: + var yScroll = context.ReadValue().y; + + if (yScroll == 0f) { + return; + } + + var target = S.CameraController.GetTarget(); + target.OnScroll(yScroll); + + break; + } + } + + public void OnEscape(InputAction.CallbackContext context) { + switch (context.phase) { + case InputActionPhase.Started: + if (HasSelection && !IsSelectingArea) { + RemoveSelectionArea(); + + return; + } + + GS.UI.gameplayLayer.NavigateTo(GS.UI.pauseMenu); + + break; + } + } + + public void OnSelectGroup(InputAction.CallbackContext context) { + if (shiftIsPressed) { + return; + } + + switch (context.phase) { + case InputActionPhase.Performed: + var index = context.ReadValue().Round(); + + CurrentSelection?.Clear(); + CurrentSelection = GS.UI.gameplayLayer.selectionHotbar.Select(index); + + break; + } + } + + public void OnSaveGroup(InputAction.CallbackContext context) { + switch (context.phase) { + case InputActionPhase.Performed: + var index = context.ReadValue().Round(); + GS.UI.gameplayLayer.selectionHotbar.Save(CurrentSelection, index); + + break; + } + } + + public void OnSaveGroupModifier(InputAction.CallbackContext context) { + switch (context.phase) { + case InputActionPhase.Started: + shiftIsPressed = true; + + break; + case InputActionPhase.Canceled: + shiftIsPressed = false; + + break; + } + } + + private void OnStartSelectionArea() { + var worldPoint = S.Input.MouseWorldPoint; + selectionBuilder = new SelectionBuilder(worldPoint); + GS.UI.gameplayLayer.selectionArea.Show(worldPoint); + } + + private void OnUpdateSelectionArea() { + var worldPoint = S.Input.MouseWorldPoint; + GS.UI.gameplayLayer.selectionArea.SetEnd(worldPoint); + } + + private void OnEndSelectionArea() { + if (IsSelectingArea) { + // Clear the current selection + CurrentSelection?.Clear(); + + // Update selection builder + var worldPoint = S.Input.MouseWorldPoint; + selectionBuilder.UpdateSelection(worldPoint); + + // Hide the selection area overlay + GS.UI.gameplayLayer.selectionArea.Hide(); + + // Get the selection and save it in the hotbar if possible + var selection = selectionBuilder.Build(); + + CurrentSelection = selection; + selectionBuilder = null; + } + } + + private void RemoveSelectionArea() { + // Deselect current selection + var currentHotbarSelection = GS.UI.gameplayLayer.selectionHotbar.CurrentSelection; + + if (currentHotbarSelection != null) // Update the view + { + currentHotbarSelection.Selected = false; + } + + // Clear the selection + CurrentSelection.Clear(); + CurrentSelection = null; + } + + private void OnSelectGroup(int index) { } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/GameplayInputManager.Input.cs.meta b/Assets/Project/Source/Gameplay/Input/GameplayInputManager.Input.cs.meta similarity index 83% rename from Assets/Project/Source/Gameplay/GameplayInputManager.Input.cs.meta rename to Assets/Project/Source/Gameplay/Input/GameplayInputManager.Input.cs.meta index 44dc677a..7752120d 100644 --- a/Assets/Project/Source/Gameplay/GameplayInputManager.Input.cs.meta +++ b/Assets/Project/Source/Gameplay/Input/GameplayInputManager.Input.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: f272d535df89e7047ab052951bb0633d +guid: f64e25216bbae5c47b9efcda87050c85 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Project/Source/Gameplay/Input/GameplayInputManager.Selections.cs b/Assets/Project/Source/Gameplay/Input/GameplayInputManager.Selections.cs new file mode 100644 index 00000000..981d1412 --- /dev/null +++ b/Assets/Project/Source/Gameplay/Input/GameplayInputManager.Selections.cs @@ -0,0 +1,3 @@ +namespace Exa.Gameplay { + public partial class GameplayInputManager { } +} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/GameplayInputManager.Selections.cs.meta b/Assets/Project/Source/Gameplay/Input/GameplayInputManager.Selections.cs.meta similarity index 83% rename from Assets/Project/Source/Gameplay/GameplayInputManager.Selections.cs.meta rename to Assets/Project/Source/Gameplay/Input/GameplayInputManager.Selections.cs.meta index 21e423d5..954a6ddc 100644 --- a/Assets/Project/Source/Gameplay/GameplayInputManager.Selections.cs.meta +++ b/Assets/Project/Source/Gameplay/Input/GameplayInputManager.Selections.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 52ef66947edf0ba4291b0073c40d53f6 +guid: 31a07a68ef7c0434997716bb254cf45c MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Project/Source/Gameplay/Input/GameplayInputManager.State.cs b/Assets/Project/Source/Gameplay/Input/GameplayInputManager.State.cs new file mode 100644 index 00000000..1b23c66d --- /dev/null +++ b/Assets/Project/Source/Gameplay/Input/GameplayInputManager.State.cs @@ -0,0 +1,25 @@ +namespace Exa.Gameplay { + public partial class GameplayInputManager { + private ShipSelection currentSelection; + + private bool HasSelection { + get => currentSelection != null; + } + + private bool IsSelectingArea { + get => selectionBuilder != null; + } + + public ShipSelection CurrentSelection { + get => currentSelection; + set { + currentSelection = value; + GS.UI.gameplayLayer.selectionOverlay.Reflect(value); + + if (value != null) { + S.CameraController.SetSelectionTarget(value); + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/GameplayInputManager.State.cs.meta b/Assets/Project/Source/Gameplay/Input/GameplayInputManager.State.cs.meta similarity index 83% rename from Assets/Project/Source/Gameplay/GameplayInputManager.State.cs.meta rename to Assets/Project/Source/Gameplay/Input/GameplayInputManager.State.cs.meta index 1accfe26..bc2657f5 100644 --- a/Assets/Project/Source/Gameplay/GameplayInputManager.State.cs.meta +++ b/Assets/Project/Source/Gameplay/Input/GameplayInputManager.State.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: b79bf00106c44b946944c72e2ae13637 +guid: 2463a8df4c148ce4ca0813bcdd41e651 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Project/Source/Gameplay/GameplayInputManager.cs b/Assets/Project/Source/Gameplay/Input/GameplayInputManager.cs similarity index 77% rename from Assets/Project/Source/Gameplay/GameplayInputManager.cs rename to Assets/Project/Source/Gameplay/Input/GameplayInputManager.cs index a1302dea..e7e4e515 100644 --- a/Assets/Project/Source/Gameplay/GameplayInputManager.cs +++ b/Assets/Project/Source/Gameplay/Input/GameplayInputManager.cs @@ -1,16 +1,11 @@ -using System.Collections.Generic; -using System.Linq; -using Exa.Input; -using Exa.Utils; +using Exa.Input; using UnityEngine; using static Exa.Input.GameControls; #pragma warning disable 649 -namespace Exa.Gameplay -{ - public partial class GameplayInputManager : MonoBehaviour, IGameplayActions - { +namespace Exa.Gameplay { + public partial class GameplayInputManager : MonoBehaviour, IGameplayActions { private GameControls gameControls; public void Awake() { @@ -19,8 +14,9 @@ public void Awake() { } public void Update() { - if (IsSelectingArea) + if (IsSelectingArea) { OnUpdateSelectionArea(); + } } public void OnEnable() { diff --git a/Assets/Project/Source/Gameplay/GameplayInputManager.cs.meta b/Assets/Project/Source/Gameplay/Input/GameplayInputManager.cs.meta similarity index 83% rename from Assets/Project/Source/Gameplay/GameplayInputManager.cs.meta rename to Assets/Project/Source/Gameplay/Input/GameplayInputManager.cs.meta index fc47295f..d1f2b938 100644 --- a/Assets/Project/Source/Gameplay/GameplayInputManager.cs.meta +++ b/Assets/Project/Source/Gameplay/Input/GameplayInputManager.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: b7f44cf94082cf041bfb5bb402f2d68c +guid: 5b0122423b776e94dae13c2a9b3b4da3 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Project/Source/Gameplay/Input/MouseCursorTarget.cs b/Assets/Project/Source/Gameplay/Input/MouseCursorTarget.cs new file mode 100644 index 00000000..ea0010a3 --- /dev/null +++ b/Assets/Project/Source/Gameplay/Input/MouseCursorTarget.cs @@ -0,0 +1,30 @@ +using Exa.Ships.Targeting; +using UnityEngine; +using UnityEngine.InputSystem; + +namespace Exa.Gameplay { + public class MouseCursorTarget : IWeaponTarget { + private readonly UnityEngine.Camera camera; + private readonly bool useDefault; + + public MouseCursorTarget() { + camera = null; + useDefault = true; + } + + public MouseCursorTarget(UnityEngine.Camera camera) { + this.camera = camera; + useDefault = false; + } + + public Vector2 GetPosition(Vector2 current) { + return useDefault + ? S.Input.MouseWorldPoint + : (Vector2) camera.ScreenToWorldPoint(Mouse.current.position.ReadValue()); + } + + public bool GetTargetValid() { + return true; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Input/MouseCursorTarget.cs.meta b/Assets/Project/Source/Gameplay/Input/MouseCursorTarget.cs.meta new file mode 100644 index 00000000..b7b9e7db --- /dev/null +++ b/Assets/Project/Source/Gameplay/Input/MouseCursorTarget.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1e08e30f524559f4b96a4cef1c9f1f32 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Gameplay/Missions/BlueprintCostValidator.cs b/Assets/Project/Source/Gameplay/Missions/BlueprintCostValidator.cs new file mode 100644 index 00000000..327532b9 --- /dev/null +++ b/Assets/Project/Source/Gameplay/Missions/BlueprintCostValidator.cs @@ -0,0 +1,48 @@ +using Exa.Grids.Blocks; +using Exa.ShipEditor; +using Exa.Validation; + +namespace Exa.Gameplay.Missions { + public class BlueprintCostValidator : PlugableValidator { + private readonly BlockCosts maxAllowedCosts; + private BudgetView view; + + public BlueprintCostValidator(BlockCosts budget, BlockCosts currentCosts) { + maxAllowedCosts = budget + currentCosts; + } + + protected override void AddErrors(ValidationResult errors, BlueprintCostValidatorArgs args) { + if (args.currentCosts.creditCost > maxAllowedCosts.creditCost || + args.currentCosts.metalsCost > maxAllowedCosts.metalsCost) { + errors.Throw("Costs exceed budget"); + } + } + + private void BlueprintChangedHandler() { + var currentCosts = S.Editor.ActiveBlueprintTotals.Metadata.blockCosts; + view.SetBudget(maxAllowedCosts - currentCosts); + + var args = new BlueprintCostValidatorArgs { + currentCosts = currentCosts + }; + + Result = S.Editor.Validate(this, args); + } + + public override void Add() { + view = S.UI.EditorOverlay.EnableBudgetView(); + S.Editor.BlueprintChangedEvent += BlueprintChangedHandler; + BlueprintChangedHandler(); + } + + public override void Remove() { + S.Editor.BlueprintChangedEvent -= BlueprintChangedHandler; + } + } + + public class BlueprintCostValidatorArgs { + public BlockCosts currentCosts; + } + + public class BlueprintCostError : ValidationError { } +} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Missions/BlueprintCostValidator.cs.meta b/Assets/Project/Source/Gameplay/Missions/BlueprintCostValidator.cs.meta new file mode 100644 index 00000000..79904268 --- /dev/null +++ b/Assets/Project/Source/Gameplay/Missions/BlueprintCostValidator.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: b1c534841bb4428c93f71095d4aa8e43 +timeCreated: 1617637923 \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Missions/EndlessMission.cs b/Assets/Project/Source/Gameplay/Missions/EndlessMission.cs deleted file mode 100644 index 5f4d1020..00000000 --- a/Assets/Project/Source/Gameplay/Missions/EndlessMission.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System.Collections; -using Exa.Grids; -using Exa.Ships; -using UnityEngine; - -namespace Exa.Gameplay.Missions -{ - [CreateAssetMenu(menuName = "Missions/Endless")] - public class EndlessMission : Mission - { - public override void Init(MissionArgs args) { - SpawnMothership(args.fleet.mothership.Data); - StartCoroutine(Spawn()); - - } - - private IEnumerator Spawn() { - yield return new WaitForSeconds(0.5f); - SpawnFriendly("defaultScout", 20, 20, new GridInstanceConfiguration { - Invulnerable = true - }); - - yield return new WaitForSeconds(0.5f); - SpawnEnemy("defaultScout", 30, 20, new GridInstanceConfiguration { - Invulnerable = true - }); - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Missions/FirstMission.cs b/Assets/Project/Source/Gameplay/Missions/FirstMission.cs new file mode 100644 index 00000000..1d8ed3d3 --- /dev/null +++ b/Assets/Project/Source/Gameplay/Missions/FirstMission.cs @@ -0,0 +1,94 @@ +using System.Collections.Generic; +using System.Linq; +using Exa.Grids.Blocks; +using Exa.Grids.Blocks.BlockTypes; +using Exa.Grids.Blocks.Components; +using Exa.Grids.Blueprints; +using Exa.Research; +using Exa.Types.Generics; +using Exa.UI; +using Exa.UI.Controls; +using Exa.Utils; +using UnityEngine; + +namespace Exa.Gameplay.Missions { + [CreateAssetMenu(menuName = "Missions/First")] + public class FirstMission : Mission { + [SerializeField] private BlockCosts initialResources; + [SerializeField] private float resourceMultiplier; + [SerializeField] private List waves; + + private Blueprint selectedBlueprint; + + public override void Init(MissionManager manager) { + base.Init(manager); + + var spawner = new Spawner(); + + manager.CurrentResources = initialResources; + manager.Station = spawner.SpawnPlayerStation(selectedBlueprint); + + manager.Station.ControllerDestroyed += () => { + GS.UI.gameOverMenu.scoreView.PresentStats(manager.Stats); + GS.UI.gameplayLayer.NavigateTo(GS.UI.gameOverMenu); + }; + + manager.Station.Controller.PhysicalBehaviour.OnDamage += damage => { GS.UI.gameplayLayer.damageOverlay.NotifyDamage(); }; + + foreach (var wave in waves) { + wave.Setup(GaugeCurrentStrength); + } + + var waveManager = GS.GameObject.AddComponent(); + waveManager.Setup(spawner, waves); + waveManager.StartPreparationPhase(true); + + waveManager.WaveStarted += () => { + GS.MissionManager.Station.Repair(); + GS.MissionManager.Station.ReconcileWithDiff(); + }; + + waveManager.EnemySpawned += grid => { GS.UI.gameplayLayer.warningCircleOverlay.Add(grid); }; + + waveManager.EnemyDestroyed += grid => { + var costs = grid.BlueprintTotals().Metadata.blockCosts * resourceMultiplier; + GS.UI.gameplayLayer.warningCircleOverlay.Remove(grid); + GS.MissionManager.AddResources(costs); + GS.MissionManager.Stats.CollectedResources += costs; + GS.MissionManager.Stats.DestroyedShips += 1; + }; + } + + public override void BuildStartOptions(MissionOptions options) { + var dropdown = DropdownControl.Create( + options.MissionStartOptionContainer, + label: "Blueprint", + possibleValues: S.Blueprints.useableBlueprints + .Where(container => container.Data.shipClass == BlueprintTypeGuid.station) + .Select>(container => new LabeledValue(container.Data.name, container.Data)), + setter: selection => selectedBlueprint = selection + ); + + selectedBlueprint = dropdown.Value as Blueprint; + } + + protected override void AddResearchModifiers(ResearchBuilder builder) { + builder + .Context(BlockContext.EnemyGroup) + .Add((ref AutocannonData curr) => curr.damage *= 0.5f) + .Context(BlockContext.UserGroup) + .Add((ref ShieldGeneratorData curr) => curr.health *= 10f) + .Add((ref PhysicalData curr) => curr.hull *= 10f); + } + + private float GaugeCurrentStrength() { + // Calculate station strength + var stationStrength = GS.MissionManager.Station.BlueprintTotals().Metadata.strength; + + // Somewhat punish hoarding resources by taking it into account + var resourcesStrength = GS.MissionManager.CurrentResources.GaugePotentialStrength() * 0.5f; + + return stationStrength + resourcesStrength; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Missions/FirstMission.cs.meta b/Assets/Project/Source/Gameplay/Missions/FirstMission.cs.meta new file mode 100644 index 00000000..bc4d81e5 --- /dev/null +++ b/Assets/Project/Source/Gameplay/Missions/FirstMission.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: ab99416c8455443cb579df784e7930cb +timeCreated: 1612787196 \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Missions/Mission.cs b/Assets/Project/Source/Gameplay/Missions/Mission.cs index 95ae84d2..2e67c87a 100644 --- a/Assets/Project/Source/Gameplay/Missions/Mission.cs +++ b/Assets/Project/Source/Gameplay/Missions/Mission.cs @@ -1,44 +1,36 @@ -using System; -using System.Collections; -using Exa.Generics; -using Exa.Grids; -using Exa.Grids.Blueprints; -using Exa.Ships; +using Exa.Research; +using Exa.Types.Generics; +using Exa.UI; using UnityEngine; -namespace Exa.Gameplay.Missions -{ - public abstract class Mission : ScriptableObject, ILabeledValue - { +namespace Exa.Gameplay.Missions { + public abstract class Mission : ScriptableObject, ILabeledValue { public string missionName; public string missionDescription; - public string Label => missionName; - public Mission Value => this; + protected ResearchBuilder researchBuilder; - public abstract void Init(MissionArgs args); - - protected void SpawnMothership(Blueprint mothership, GridInstanceConfiguration configuration = default) { - var ship = GameSystems.ShipFactory.CreateFriendly(mothership, Vector2.zero, configuration); - var selection = ship.GetAppropriateSelection(new VicFormation()); - selection.Add(ship); - GameSystems.GameplayInputManager.CurrentSelection = selection; + public string Label { + get => missionName; } - protected EnemyShip SpawnEnemy(string name, float xPos, float yPos, GridInstanceConfiguration configuration = default) { - var blueprint = Systems.Blueprints.GetBlueprint(name); - var pos = new Vector2(xPos, yPos); - return GameSystems.ShipFactory.CreateEnemy(blueprint, pos, configuration); + public Mission Value { + get => this; } - protected FriendlyShip SpawnFriendly(string name, float xPos, float yPos, GridInstanceConfiguration configuration = default) { - var blueprint = Systems.Blueprints.GetBlueprint(name); - var pos = new Vector2(xPos, yPos); - return GameSystems.ShipFactory.CreateFriendly(blueprint, pos, configuration); + public virtual void Init(MissionManager manager) { + researchBuilder = new ResearchBuilder(S.Research); + AddResearchModifiers(researchBuilder); } - protected Coroutine StartCoroutine(IEnumerator enumerator) { - return GameSystems.Instance.StartCoroutine(enumerator); + public virtual void Unload() { + researchBuilder.Clear(); } + + public virtual void BuildStartOptions(MissionOptions options) { } + + protected virtual void AddResearchModifiers(ResearchBuilder builder) { } + + public virtual void Update() { } } } \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Missions/MissionArgs.cs b/Assets/Project/Source/Gameplay/Missions/MissionArgs.cs index f75b6b53..bc62f1f0 100644 --- a/Assets/Project/Source/Gameplay/Missions/MissionArgs.cs +++ b/Assets/Project/Source/Gameplay/Missions/MissionArgs.cs @@ -1,10 +1,3 @@ -using Exa.Ships; -using UnityEngine; - -namespace Exa.Gameplay.Missions -{ - public class MissionArgs - { - public Fleet fleet; - } +namespace Exa.Gameplay.Missions { + public class MissionArgs { } } \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Missions/MissionBag.cs b/Assets/Project/Source/Gameplay/Missions/MissionBag.cs index 2faeec22..eb2b96a5 100644 --- a/Assets/Project/Source/Gameplay/Missions/MissionBag.cs +++ b/Assets/Project/Source/Gameplay/Missions/MissionBag.cs @@ -1,9 +1,7 @@ -using Exa.Generics; +using Exa.Types.Generics; using UnityEngine; -namespace Exa.Gameplay.Missions -{ +namespace Exa.Gameplay.Missions { [CreateAssetMenu(menuName = "Missions/MissionBag")] - public class MissionBag : ScriptableObjectBag - { } + public class MissionBag : ScriptableObjectBag { } } \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Missions/MissionManager.cs b/Assets/Project/Source/Gameplay/Missions/MissionManager.cs new file mode 100644 index 00000000..ec2b7d6e --- /dev/null +++ b/Assets/Project/Source/Gameplay/Missions/MissionManager.cs @@ -0,0 +1,103 @@ +using System; +using Exa.Camera; +using Exa.Grids.Blocks; +using Exa.Grids.Blueprints; +using Exa.IO; +using Exa.ShipEditor; +using Exa.Ships; +using Exa.Utils; +using UnityEngine; + +namespace Exa.Gameplay.Missions { + public struct EditResult { + public Blueprint blueprint; + // NOTE: This should be recalculated if the research context changes + public BlockCosts editCost; + } + + public class MissionManager : MonoBehaviour { + private EditResult? editResult; + public bool IsEditing { get; private set; } + public Mission Mission { get; private set; } + public BlockCosts CurrentResources { get; internal set; } + public PlayerStation Station { get; internal set; } + public MissionStats Stats { get; internal set; } + + public void Update() { + if (Mission != null) { + Mission.Update(); + } + + GS.UI.gameplayLayer.currentResources.Refresh(CurrentResources); + } + + public void LoadMission(Mission mission) { + if (Mission != null) { + throw new InvalidOperationException("Cannot load a mission without unloading previous one"); + } + + Mission = mission; + Stats = new MissionStats(); + mission.Init(manager: this); + } + + public void AddResources(BlockCosts resources) { + CurrentResources += resources; + } + + public void UnloadMission() { + Mission.Unload(); + Mission = null; + } + + public void StartEditing() { + IsEditing = true; + editResult = null; + + var currentTarget = S.CameraController.CurrentTarget; + GS.SpawnLayer.SetLayerActive(false); + GS.UI.gameplayLayer.NavigateTo(S.Editor.navigateable); + + var settings = new BlueprintImportArgs( + blueprint: Station.Blueprint, + save: blueprint => { + var newCosts = blueprint.Grid.GetTotals(BlockContext.UserGroup).Metadata.blockCosts; + var oldCosts = Station.BlueprintTotals().Metadata.blockCosts; + + editResult = new EditResult { + blueprint = blueprint, + editCost = newCosts - oldCosts + }; + } + ) { + OnExit = () => StopEditing(currentTarget) + }; + + settings.AddValidator( + validator: new BlueprintCostValidator( + CurrentResources, + Station.BlueprintTotals().Metadata.blockCosts + ) + ); + + S.Editor.Import(settings); + } + + private void StopEditing(ICameraTarget cameraTarget) { + IsEditing = false; + + S.CameraController.SetTarget(cameraTarget); + GS.SpawnLayer.SetLayerActive(true); + + if (editResult.GetHasValue(out var value)) { + Debug.Log(new { + HasValue = true, + editResult = IOUtils.ToJson(value), + }); + + Station.SetBlueprint(value.blueprint); + CurrentResources -= value.editCost; + } + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Missions/MissionManager.cs.meta b/Assets/Project/Source/Gameplay/Missions/MissionManager.cs.meta new file mode 100644 index 00000000..66b3db57 --- /dev/null +++ b/Assets/Project/Source/Gameplay/Missions/MissionManager.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 1af965eb9df5418c9acd8a39b28c963f +timeCreated: 1614524119 \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Missions/MissionStats.cs b/Assets/Project/Source/Gameplay/Missions/MissionStats.cs new file mode 100644 index 00000000..285de8d2 --- /dev/null +++ b/Assets/Project/Source/Gameplay/Missions/MissionStats.cs @@ -0,0 +1,20 @@ +using Exa.Grids.Blocks; + +namespace Exa.Gameplay.Missions { + public class MissionStats { + public BlockCosts CollectedResources { get; set; } + public int DestroyedShips { get; set; } + + public int CollectedResourcesScore { + get => CollectedResources.creditCost; + } + + public int DestroyedShipsScore { + get => DestroyedShips * 100; + } + + public int TotalScore { + get => CollectedResourcesScore + DestroyedShipsScore; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Missions/MissionStats.cs.meta b/Assets/Project/Source/Gameplay/Missions/MissionStats.cs.meta new file mode 100644 index 00000000..ad231c6e --- /dev/null +++ b/Assets/Project/Source/Gameplay/Missions/MissionStats.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 1c95d9d7e112404a8142d586fa1b76aa +timeCreated: 1624219863 \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Missions/Spawner.cs b/Assets/Project/Source/Gameplay/Missions/Spawner.cs new file mode 100644 index 00000000..091c1cff --- /dev/null +++ b/Assets/Project/Source/Gameplay/Missions/Spawner.cs @@ -0,0 +1,61 @@ +using System.Collections.Generic; +using Exa.Grids; +using Exa.Grids.Blocks.Components; +using Exa.Grids.Blueprints; +using Exa.Math; +using Exa.Ships; +using Exa.Utils; +using UnityEngine; + +namespace Exa.Gameplay.Missions { + public class Spawner { + private PlayerStation station; + + public IEnumerable SpawnFormationAtRandomPosition(IWave wave, Formation formation, float distance) { + var position = MathUtils.RandomFromAngledMagnitude(distance); + var angle = (station.GetPosition() - position).GetAngle(); + + return SpawnEnemyFormation( + wave, + formation, + position, + angle, + 100f + ); + } + + public IEnumerable SpawnEnemyFormation(IWave wave, Formation formation, Vector2 origin, float angle, float weight) { + var blueprints = wave.GetSpawnAbleBlueprints(); + var formationLayout = formation.GetGlobalLayout(blueprints, origin, angle); + + foreach (var (position, blueprint) in formationLayout.AsTupleEnumerable(blueprints)) { + var enemy = GS.ShipFactory.CreateEnemy(blueprint, position); + enemy.SetRotation(angle); + + yield return enemy; + } + } + + public void SpawnRandomEnemy(IWave wave, float distance) { + var blueprint = wave.GetSpawnAbleBlueprints().GetRandomElement(); + var position = MathUtils.RandomVector2(distance); + var enemy = GS.ShipFactory.CreateEnemy(blueprint, position); + enemy.SetLookAt(station.GetPosition()); + } + + public PlayerStation SpawnPlayerStation(Blueprint blueprint = null, GridInstanceConfiguration? configuration = null) { + blueprint ??= S.Blueprints.GetBlueprint("asd"); + station = GS.ShipFactory.CreateStation(blueprint, new Vector2(0, 0), configuration); + station.Controller.GetBehaviour().Target = new MouseCursorTarget(); + + return station; + } + + public EnemyGrid SpawnEnemy(string name, float xPos, float yPos, GridInstanceConfiguration? configuration = null) { + var blueprint = S.Blueprints.GetBlueprint(name); + var pos = new Vector2(xPos, yPos); + + return GS.ShipFactory.CreateEnemy(blueprint, pos, configuration); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Missions/Spawner.cs.meta b/Assets/Project/Source/Gameplay/Missions/Spawner.cs.meta new file mode 100644 index 00000000..ad98ae50 --- /dev/null +++ b/Assets/Project/Source/Gameplay/Missions/Spawner.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: b4c8a2a686f944eab34aa9830055ba73 +timeCreated: 1613314546 \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Missions/TestMission.cs b/Assets/Project/Source/Gameplay/Missions/TestMission.cs new file mode 100644 index 00000000..4205da67 --- /dev/null +++ b/Assets/Project/Source/Gameplay/Missions/TestMission.cs @@ -0,0 +1,24 @@ +using System.Collections; +using Exa.Grids; +using Exa.Utils; +using UnityEngine; + +namespace Exa.Gameplay.Missions { + [CreateAssetMenu(menuName = "Missions/Test")] + public class TestMission : Mission { + private Spawner spawner; + + public override void Init(MissionManager manager) { + base.Init(manager); + spawner = new Spawner(); + GS.MissionManager.Station = spawner.SpawnPlayerStation(configuration: GridInstanceConfiguration.InvulnerableConfig); + Spawn().Start(); + } + + private IEnumerator Spawn() { + yield return new WaitForSeconds(1f); + + spawner.SpawnEnemy("defaultScout", 10, 0); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Missions/EndlessMission.cs.meta b/Assets/Project/Source/Gameplay/Missions/TestMission.cs.meta similarity index 100% rename from Assets/Project/Source/Gameplay/Missions/EndlessMission.cs.meta rename to Assets/Project/Source/Gameplay/Missions/TestMission.cs.meta diff --git a/Assets/Project/Source/Gameplay/Missions/Waves.meta b/Assets/Project/Source/Gameplay/Missions/Waves.meta new file mode 100644 index 00000000..40653691 --- /dev/null +++ b/Assets/Project/Source/Gameplay/Missions/Waves.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 5e7f3e60efad4a73b595a395e9fc0922 +timeCreated: 1613593511 \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Missions/Waves/DynamicStrengthWave.cs b/Assets/Project/Source/Gameplay/Missions/Waves/DynamicStrengthWave.cs new file mode 100644 index 00000000..858d6862 --- /dev/null +++ b/Assets/Project/Source/Gameplay/Missions/Waves/DynamicStrengthWave.cs @@ -0,0 +1,62 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Exa.Grids.Blocks; +using Exa.Grids.Blueprints; +using Exa.Ships; +using UnityEngine; + +namespace Exa.Gameplay.Missions { + [Serializable] + public class DynamicStrengthWave : IWave { + [SerializeField] private float baseStrength; + [SerializeField] private List blueprints; + private Func getWaveStrength; + + public void Setup(Func getWaveStrength) { + this.getWaveStrength = getWaveStrength; + } + + public IEnumerable Blueprints { + get => blueprints.Select(b => b.GetBlueprint()); + } + + // TODO: Implement some kind of mechanism that distributes blueprints based on the blueprint and wave strength + public IEnumerable GetSpawnAbleBlueprints() { + var targetStrength = getWaveStrength() + baseStrength; + + var blueprintsByStrength = Blueprints.Select( + blueprint => (blueprint, blueprint.Grid.GetTotals(BlockContext.EnemyGroup).Metadata.strength) + ) + .OrderBy(tuple => tuple.strength); + + var currentStrength = 0f; + + foreach (var (blueprint, strength) in blueprintsByStrength) { + // Keep track of the amount of total strength used by this blueprint + var totalStrengthUsedByBlueprint = 0; + + bool Ok() { + // Make sure the blueprint doesn't exceed the strength budget + if (currentStrength + strength > targetStrength) { + return false; + } + + // Only OK if this blueprint hasn't used 50% of the 'strength budget' + return totalStrengthUsedByBlueprint < targetStrength / 2f; + } + + while (Ok()) { + totalStrengthUsedByBlueprint += strength; + currentStrength += strength; + + yield return blueprint; + } + } + } + + public IEnumerable Spawn(Spawner spawner) { + return spawner.SpawnFormationAtRandomPosition(this, new VicFormation(), 100f); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Missions/Waves/DynamicStrengthWave.cs.meta b/Assets/Project/Source/Gameplay/Missions/Waves/DynamicStrengthWave.cs.meta new file mode 100644 index 00000000..0c6f3224 --- /dev/null +++ b/Assets/Project/Source/Gameplay/Missions/Waves/DynamicStrengthWave.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 89014f6507ea4769906c182b50939ccc +timeCreated: 1613591976 \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Missions/Waves/IWave.cs b/Assets/Project/Source/Gameplay/Missions/Waves/IWave.cs new file mode 100644 index 00000000..39c39591 --- /dev/null +++ b/Assets/Project/Source/Gameplay/Missions/Waves/IWave.cs @@ -0,0 +1,8 @@ +using System.Collections.Generic; +using Exa.Grids.Blueprints; + +namespace Exa.Gameplay.Missions { + public interface IWave { + IEnumerable GetSpawnAbleBlueprints(); + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Missions/Waves/IWave.cs.meta b/Assets/Project/Source/Gameplay/Missions/Waves/IWave.cs.meta new file mode 100644 index 00000000..215f7e8d --- /dev/null +++ b/Assets/Project/Source/Gameplay/Missions/Waves/IWave.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 017983fa583f45369cca8986744dc8b9 +timeCreated: 1613593780 \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Missions/Waves/WaveManager.cs b/Assets/Project/Source/Gameplay/Missions/Waves/WaveManager.cs new file mode 100644 index 00000000..dbc146b7 --- /dev/null +++ b/Assets/Project/Source/Gameplay/Missions/Waves/WaveManager.cs @@ -0,0 +1,92 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using Exa.Ships; +using Exa.Utils; +using UnityEngine; + +namespace Exa.Gameplay.Missions { + public class WaveManager : MonoBehaviour { + private readonly int preparationPhaseLength = 5; + private int currentWaveIndex; + private WaveState currentWaveState; + private Spawner spawner; + private List waves; + + public event Action WaveStarted; + public event Action WaveEnded; + public event Action MissionEnded; + public event Action EnemySpawned; + public event Action EnemyDestroyed; + + public void Setup(Spawner spawner, List waves) { + this.spawner = spawner; + this.waves = waves; + + WaveStarted += () => Debug.Log("Wave Started"); + WaveEnded += () => Debug.Log("Wave Ended"); + MissionEnded += () => Debug.Log("Mission Ended"); + } + + private void NextWave() { + if (currentWaveIndex >= waves.Count) { + throw new InvalidOperationException("Cannot find wave"); + } + + WaveStarted?.Invoke(); + GS.UI.gameplayLayer.missionState.SetText("Combat phase", $"Wave {currentWaveIndex + 1}"); + + currentWaveState = new WaveState(); + + foreach (var enemy in waves[currentWaveIndex].Spawn(spawner)) { + currentWaveState.OnEnemySpawned(enemy); + EnemySpawned?.Invoke(enemy); + + enemy.ControllerDestroyed += () => EnemyDestroyed?.Invoke(enemy); + } + + currentWaveState.OnFinishSpawning(); + currentWaveState.OnWaveEnded += () => { + WaveEnded?.Invoke(); + + if (currentWaveIndex >= waves.Count) { + MissionEnded?.Invoke(); + } else { + StartPreparationPhase(); + } + }; + + currentWaveIndex++; + } + + public void StartPreparationPhase(bool firstWave = false) { + PreparationPhase(firstWave).Start(this); + } + + private IEnumerator PreparationPhase(bool firstWave) { + static void UpdateText(float time, bool animate) { + var phaseInfo = "{0} Second/s remaining".Format(Mathf.CeilToInt(time)); + GS.UI.gameplayLayer.missionState.SetText("Preparation phase", phaseInfo, animate); + } + + UpdateText(preparationPhaseLength, !firstWave); + + yield return null; + + GS.UI.gameplayLayer.missionState.ShowEditorButton(); + + var enumerator = EnumeratorUtils.OnceEverySecond( + preparationPhaseLength, + second => UpdateText(preparationPhaseLength - second, true), + () => !GS.IsPaused + ); + + while (enumerator.MoveNext(out var current)) { + yield return current; + } + + GS.UI.gameplayLayer.missionState.HideEditorButton(); + NextWave(); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Missions/Waves/WaveManager.cs.meta b/Assets/Project/Source/Gameplay/Missions/Waves/WaveManager.cs.meta new file mode 100644 index 00000000..25bb6f08 --- /dev/null +++ b/Assets/Project/Source/Gameplay/Missions/Waves/WaveManager.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: ae09fd568d554fe995e94fbe85e04093 +timeCreated: 1613320846 \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Missions/Waves/WaveState.cs b/Assets/Project/Source/Gameplay/Missions/Waves/WaveState.cs new file mode 100644 index 00000000..aec0942d --- /dev/null +++ b/Assets/Project/Source/Gameplay/Missions/Waves/WaveState.cs @@ -0,0 +1,31 @@ +using System; +using Exa.Ships; + +namespace Exa.Gameplay.Missions { + public class WaveState { + private bool finishedSpawning; + + private int totalCount; + private int totalDestroyed; + + public event Action OnWaveEnded; + + public void OnEnemySpawned(EnemyGrid grid) { + totalCount++; + + grid.ControllerDestroyed += OnEnemyDestroyed; + } + + public void OnFinishSpawning() { + finishedSpawning = true; + } + + private void OnEnemyDestroyed() { + totalDestroyed++; + + if (totalDestroyed == totalCount && finishedSpawning) { + OnWaveEnded?.Invoke(); + } + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Missions/Waves/WaveState.cs.meta b/Assets/Project/Source/Gameplay/Missions/Waves/WaveState.cs.meta new file mode 100644 index 00000000..f887877f --- /dev/null +++ b/Assets/Project/Source/Gameplay/Missions/Waves/WaveState.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 27536ea646f140c292e41c01d1ef3f9c +timeCreated: 1613592958 \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/PopupManager.cs b/Assets/Project/Source/Gameplay/PopupManager.cs index cca9cb2f..04131948 100644 --- a/Assets/Project/Source/Gameplay/PopupManager.cs +++ b/Assets/Project/Source/Gameplay/PopupManager.cs @@ -1,18 +1,14 @@ using System.Collections.Generic; -using System.Diagnostics; using Exa.Math; using UnityEngine; -using Debug = UnityEngine.Debug; #pragma warning disable CS0649 -namespace Exa.Gameplay -{ - public class PopupManager : MonoBehaviour - { +namespace Exa.Gameplay { + public class PopupManager : MonoBehaviour { [SerializeField] private GameObject damagePopupPrefab; + private int order; private Dictionary popupByDamageSource; - private int order = 0; private void Awake() { popupByDamageSource = new Dictionary(); @@ -23,13 +19,14 @@ public void CreateOrUpdateDamagePopup(Vector2 worldPosition, object damageSource if (damageSource != null && popupByDamageSource.ContainsKey(damageSource)) { SetupPopup(popupByDamageSource[damageSource], worldPosition, damage); + return; } var popup = CreateNewDamagePopup(worldPosition, damage); if (damageSource != null) { - popupByDamageSource.Add(damageSource, popup); + popupByDamageSource.Add(damageSource, popup); popup.DestroyEvent.AddListener(() => popupByDamageSource.Remove(damageSource)); } } @@ -38,6 +35,7 @@ private DamagePopup CreateNewDamagePopup(Vector2 worldPosition, float damage) { var popupGO = Instantiate(damagePopupPrefab, transform); var popup = popupGO.GetComponent(); SetupPopup(popup, worldPosition, damage); + return popup; } @@ -46,4 +44,4 @@ private void SetupPopup(DamagePopup popup, Vector2 worldPosition, float damage) popup.Setup(randomizedPosition, damage, order); } } -} +} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Raycaster.cs b/Assets/Project/Source/Gameplay/Raycaster.cs index 5fb01bf0..1238149f 100644 --- a/Assets/Project/Source/Gameplay/Raycaster.cs +++ b/Assets/Project/Source/Gameplay/Raycaster.cs @@ -3,10 +3,8 @@ using Exa.Utils; using UnityEngine; -namespace Exa.Gameplay -{ - public class Raycaster : MonoBehaviour - { +namespace Exa.Gameplay { + public class Raycaster : MonoBehaviour { private bool isRaycasting = true; public IEnumerable CurrentTargets { get; private set; } @@ -14,34 +12,39 @@ public bool IsRaycasting { private get => isRaycasting; set { isRaycasting = value; - if (!value) + + if (!value) { ClearTargets(); + } } } - public void OnDisable() { - ClearTargets(); - } - public void Update() { - if (IsRaycasting) + if (IsRaycasting) { UpdateRaycastTarget(); + } + } + + public void OnDisable() { + ClearTargets(); } public bool TryGetTarget(out T result) where T : class { if (CurrentTargets == null) { result = null; + return false; } - result = CurrentTargets.FirstOrDefault(target => target is T) as T; + result = CurrentTargets.FindFirst(); + return result != null; } - private void UpdateRaycastTarget() - { - var worldPoint = Systems.Input.MouseWorldPoint; + private void UpdateRaycastTarget() { + var worldPoint = S.Input.MouseWorldPoint; + var hits = Physics2D.RaycastAll(worldPoint, Vector2.zero) .Select(hit => hit.transform.gameObject.GetComponent()) .Where(hit => hit != null) @@ -51,22 +54,28 @@ private void UpdateRaycastTarget() var intersection = hits.Intersect(CurrentTargets) .ToList(); - foreach (var newTarget in hits.Except(intersection)) + foreach (var newTarget in hits.Except(intersection)) { newTarget.OnRaycastEnter(); + } - foreach (var oldTarget in CurrentTargets.Except(intersection)) + foreach (var oldTarget in CurrentTargets.Except(intersection)) { oldTarget.OnRaycastExit(); + } + } else { + foreach (var newTarget in hits) { + newTarget.OnRaycastEnter(); + } } - else foreach (var newTarget in hits) - newTarget.OnRaycastEnter(); CurrentTargets = hits; } private void ClearTargets() { - if (CurrentTargets == null) return; + if (CurrentTargets == null) { + return; + } - CurrentTargets.Foreach(target => target.OnRaycastExit()); + CurrentTargets.ForEach(target => target.OnRaycastExit()); CurrentTargets = null; } } diff --git a/Assets/Project/Source/Gameplay/Selections/EnemyShipSelection.cs b/Assets/Project/Source/Gameplay/Selections/EnemyShipSelection.cs index 84f6a2c3..35cb00da 100644 --- a/Assets/Project/Source/Gameplay/Selections/EnemyShipSelection.cs +++ b/Assets/Project/Source/Gameplay/Selections/EnemyShipSelection.cs @@ -1,12 +1,11 @@ -namespace Exa.Gameplay -{ - public class EnemyShipSelection : ShipSelection - { +namespace Exa.Gameplay { + public class EnemyShipSelection : ShipSelection { public EnemyShipSelection(Formation formation) : base(formation) { } public override ShipSelection Clone() { var selection = new EnemyShipSelection(formation); + foreach (var ship in this) { selection.Add(ship); } diff --git a/Assets/Project/Source/Gameplay/Selections/FriendlyShipSelection.cs b/Assets/Project/Source/Gameplay/Selections/FriendlyShipSelection.cs index 3fbb9ed3..6d72aeeb 100644 --- a/Assets/Project/Source/Gameplay/Selections/FriendlyShipSelection.cs +++ b/Assets/Project/Source/Gameplay/Selections/FriendlyShipSelection.cs @@ -1,13 +1,13 @@ -using Exa.Math; +using System.Linq; +using Exa.AI; +using Exa.AI.Actions; +using Exa.Math; using Exa.Ships.Targeting; -using System.Linq; using Exa.Utils; using UnityEngine; -namespace Exa.Gameplay -{ - public class FriendlyShipSelection : ShipSelection - { +namespace Exa.Gameplay { + public class FriendlyShipSelection : ShipSelection { public FriendlyShipSelection(Formation formation) : base(formation) { CanControl = true; @@ -15,18 +15,19 @@ public FriendlyShipSelection(Formation formation) public void MoveLookAt(Vector2 point) { var formationPositions = formation.GetGlobalLayout(this, point); - var formationShips = this.OrderByDescending(ship => ship.Blueprint.Blocks.MaxSize); + var formationShips = this.OrderByDescending(ship => ship.Blueprint.Grid.MaxSize); foreach (var (ship, formationPosition) in formationShips.AsTupleEnumerable(formationPositions)) { var currentPosition = ship.transform.position.ToVector2(); - ship.Ai.moveToTarget.Target = new StaticPositionTarget(formationPosition); - ship.Ai.lookAtTarget.Target = new StaticAngleTarget(currentPosition, formationPosition); + ship.Ai.GetAction().Target = new StaticPositionTarget(formationPosition); + ship.Ai.GetAction().Target = new StaticAngleTarget(currentPosition, formationPosition); } } public override ShipSelection Clone() { var selection = new FriendlyShipSelection(formation); + foreach (var ship in this) { selection.Add(ship); } diff --git a/Assets/Project/Source/Gameplay/Selections/SelectionBuilder.cs b/Assets/Project/Source/Gameplay/Selections/SelectionBuilder.cs index ac2fe3e6..3e5932ae 100644 --- a/Assets/Project/Source/Gameplay/Selections/SelectionBuilder.cs +++ b/Assets/Project/Source/Gameplay/Selections/SelectionBuilder.cs @@ -1,11 +1,9 @@ -using Exa.Ships; -using Exa.Generics; +using Exa.Generics; +using Exa.Ships; using UnityEngine; -namespace Exa.Gameplay -{ - public class SelectionBuilder : IBuilder - { +namespace Exa.Gameplay { + public class SelectionBuilder : IBuilder { private readonly Vector2 startSelectionPos; private ShipSelection selection; @@ -13,25 +11,25 @@ public SelectionBuilder(Vector2 startSelectionPos) { this.startSelectionPos = startSelectionPos; } + public ShipSelection Build() { + return selection?.Count > 0 ? selection : null; + } + public void UpdateSelection(Vector2 endSelectionPos) { var layerMask = LayerMask.GetMask("unit"); var colliders = Physics2D.OverlapAreaAll(startSelectionPos, endSelectionPos, layerMask); foreach (var collider in colliders) { - var ship = collider.gameObject.GetComponent(); + var ship = collider.gameObject.GetComponent(); if (ship != null && ship.Active) { - if (selection == null) - selection = ship.GetAppropriateSelection(new VicFormation()); - - if (ship.MatchesSelection(selection) && !selection.Contains(ship)) + selection ??= ship.GetAppropriateSelection(new VicFormation()); + + if (ship.MatchesSelection(selection) && !selection.Contains(ship)) { selection.Add(ship); + } } } } - - public ShipSelection Build() { - return selection?.Count > 0 ? selection : null; - } } } \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/Selections/ShipSelection.cs b/Assets/Project/Source/Gameplay/Selections/ShipSelection.cs index 6c04cbf8..6e29ab23 100644 --- a/Assets/Project/Source/Gameplay/Selections/ShipSelection.cs +++ b/Assets/Project/Source/Gameplay/Selections/ShipSelection.cs @@ -1,16 +1,15 @@ -using Exa.Bindings; +using System; +using System.Collections.Generic; +using System.Linq; using Exa.Generics; using Exa.Math; using Exa.Ships; -using System.Collections.Generic; -using System.Linq; +using Exa.Types.Binding; using UnityEngine; -using UnityEngine.Events; -namespace Exa.Gameplay -{ - public abstract class ShipSelection : ObservableCollection, ICloneable - { +namespace Exa.Gameplay { + public abstract class ShipSelection : ObservableCollection, ICloneable { + private readonly Dictionary callbackDict = new Dictionary(); protected Formation formation; protected ShipSelection(Formation formation) { @@ -27,22 +26,27 @@ public Vector2 AveragePosition { } } - private readonly Dictionary callbackDict = new Dictionary(); + public abstract ShipSelection Clone(); - public override void Add(Ship ship) { - base.Add(ship); + public override void Add(GridInstance gridInstance) { + base.Add(gridInstance); - ship.Overlay.overlayCircle.IsSelected = true; + (gridInstance.Overlay as GridOverlay)?.SetSelected(true); // Set a callback that removes the Ship from the collection when destroyed - void Callback() => Remove(ship); - callbackDict.Add(ship, Callback); - ship.ControllerDestroyedEvent.AddListener(Callback); + void Callback() { + Remove(gridInstance); + } + + callbackDict.Add(gridInstance, Callback); + + gridInstance.ControllerDestroyed += Callback; } - public override bool Remove(Ship ship) { - OnRemove(ship); - return base.Remove(ship); + public override bool Remove(GridInstance gridInstance) { + OnRemove(gridInstance); + + return base.Remove(gridInstance); } public override void Clear() { @@ -53,15 +57,13 @@ public override void Clear() { base.Clear(); } - private void OnRemove(Ship ship) { - ship.Overlay.overlayCircle.IsSelected = false; + private void OnRemove(GridInstance gridInstance) { + (gridInstance.Overlay as GridOverlay)?.SetSelected(false); // Get the callback and remove it - var callback = callbackDict[ship]; - callbackDict.Remove(ship); - ship.ControllerDestroyedEvent.RemoveListener(callback); + var callback = callbackDict[gridInstance]; + callbackDict.Remove(gridInstance); + gridInstance.ControllerDestroyed -= callback; } - - public abstract ShipSelection Clone(); } } \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/SpawnLayer.cs b/Assets/Project/Source/Gameplay/SpawnLayer.cs index 5b3384dd..0b9fa151 100644 --- a/Assets/Project/Source/Gameplay/SpawnLayer.cs +++ b/Assets/Project/Source/Gameplay/SpawnLayer.cs @@ -1,10 +1,17 @@ using UnityEngine; -namespace Exa.Gameplay -{ - public class SpawnLayer : MonoBehaviour - { +namespace Exa.Gameplay { + public class SpawnLayer : MonoBehaviour { + public Transform overlay; public Transform projectiles; public Transform ships; + public Transform drones; + + public void SetLayerActive(bool active) { + overlay.gameObject.SetActive(active); + projectiles.gameObject.SetActive(active); + ships.gameObject.SetActive(active); + drones.gameObject.SetActive(active); + } } } \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/SupportDrone.meta b/Assets/Project/Source/Gameplay/SupportDrone.meta new file mode 100644 index 00000000..7086661e --- /dev/null +++ b/Assets/Project/Source/Gameplay/SupportDrone.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 97216e4726d742828538fde5dec8e23a +timeCreated: 1635678750 \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/SupportDrone/IRepairable.cs b/Assets/Project/Source/Gameplay/SupportDrone/IRepairable.cs new file mode 100644 index 00000000..1fe4ff76 --- /dev/null +++ b/Assets/Project/Source/Gameplay/SupportDrone/IRepairable.cs @@ -0,0 +1,12 @@ +using System; +using Exa.Grids; + +namespace Exa.Gameplay { + public interface IRepairable { + public bool IsRepaired { get; } + + public void Repair(float hull); + + public event Action OnRemoved; + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/SupportDrone/IRepairable.cs.meta b/Assets/Project/Source/Gameplay/SupportDrone/IRepairable.cs.meta new file mode 100644 index 00000000..40647352 --- /dev/null +++ b/Assets/Project/Source/Gameplay/SupportDrone/IRepairable.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 778ee999c2c44ec0846885ac4ea84785 +timeCreated: 1635678807 \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/SupportDrone/OrchestratorGridClaim.cs b/Assets/Project/Source/Gameplay/SupportDrone/OrchestratorGridClaim.cs new file mode 100644 index 00000000..8c8abca6 --- /dev/null +++ b/Assets/Project/Source/Gameplay/SupportDrone/OrchestratorGridClaim.cs @@ -0,0 +1,7 @@ +using UnityEngine; + +namespace Exa.Gameplay { + public class OrchestratorGridClaim { + public Vector2 gridAnchor; + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/SupportDrone/OrchestratorGridClaim.cs.meta b/Assets/Project/Source/Gameplay/SupportDrone/OrchestratorGridClaim.cs.meta new file mode 100644 index 00000000..8655adfa --- /dev/null +++ b/Assets/Project/Source/Gameplay/SupportDrone/OrchestratorGridClaim.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 8222d25f03a549baa51f8ec4f13b19af +timeCreated: 1635685406 \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/SupportDrone/OrchestratorGridClaims.cs b/Assets/Project/Source/Gameplay/SupportDrone/OrchestratorGridClaims.cs new file mode 100644 index 00000000..a83bbfb6 --- /dev/null +++ b/Assets/Project/Source/Gameplay/SupportDrone/OrchestratorGridClaims.cs @@ -0,0 +1,16 @@ +using System.Collections.Generic; +using System.Linq; +using Exa.Grids; + +namespace Exa.Gameplay { + public class OrchestratorGridClaims : List { + public IEnumerable Except(IEnumerable input) + where T : IGridMember { + bool Selector(T item) { + return this.All(claim => claim.gridAnchor != item.GridAnchor); + } + + return input.Where(Selector); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/SupportDrone/OrchestratorGridClaims.cs.meta b/Assets/Project/Source/Gameplay/SupportDrone/OrchestratorGridClaims.cs.meta new file mode 100644 index 00000000..ca51e556 --- /dev/null +++ b/Assets/Project/Source/Gameplay/SupportDrone/OrchestratorGridClaims.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 93e8ed78d45b439b9fee070aa43f738f +timeCreated: 1635706938 \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/SupportDrone/RepairTask.cs b/Assets/Project/Source/Gameplay/SupportDrone/RepairTask.cs new file mode 100644 index 00000000..c16ed2d8 --- /dev/null +++ b/Assets/Project/Source/Gameplay/SupportDrone/RepairTask.cs @@ -0,0 +1,18 @@ +using Exa.Grids; +using Exa.Grids.Blocks.BlockTypes; +using UnityEngine; + +namespace Exa.Gameplay { + public class RepairTask : SupportDroneTask { + public Block target; + + public RepairTask(Block target) + : base(SupportDroneTaskType.Repair) { + this.target = target; + } + + public override Vector2 GetPosition() { + return target.GetGlobalPosition(target.GridInstance); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/SupportDrone/RepairTask.cs.meta b/Assets/Project/Source/Gameplay/SupportDrone/RepairTask.cs.meta new file mode 100644 index 00000000..b27b336c --- /dev/null +++ b/Assets/Project/Source/Gameplay/SupportDrone/RepairTask.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 7588b04903e04c54bd3c9b581d3d9f75 +timeCreated: 1635698060 \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/SupportDrone/SupportDrone.cs b/Assets/Project/Source/Gameplay/SupportDrone/SupportDrone.cs new file mode 100644 index 00000000..3c638f8f --- /dev/null +++ b/Assets/Project/Source/Gameplay/SupportDrone/SupportDrone.cs @@ -0,0 +1,113 @@ +using System; +using Cinemachine.Utility; +using Exa.Grids; +using Exa.Grids.Blocks; +using Exa.Grids.Blocks.Components; +using Exa.Math; +using UnityEditor; +using UnityEngine; + +namespace Exa.Gameplay { + public enum SupportDroneTaskType { + Repair, + } + + public class SupportDrone : MonoBehaviour, IDamageable { + [Header("State")] + [SerializeField] private DroneBayBehaviour bay; + [SerializeField] private HealthPool healthPool; + [SerializeField] private SupportDroneData data; + private IGridInstance parent; + private SupportDroneTask task; + + private Action targetRemovedHandler; + private OrchestratorGridClaim claim; + + public BlockContext? BlockContext { + get => parent?.BlockContext; + } + + public bool IsQueuedForDestruction { + get => healthPool.value <= 0f; + } + + public bool IsBusy { + get => task != null; + } + + public void Setup(DroneBayBehaviour bay, Transform nextParent) { + parent = bay.Parent; + + data = bay.Data.droneData; + + healthPool = new HealthPool { + value = data.hull + }; + + transform.SetParent(nextParent); + + parent.SupportDroneOrchestrator.SubmitDrone(this); + } + + public OrchestratorGridClaim SetTask(SupportDroneTask newTask) { + task = newTask; + + return task.Type switch { + SupportDroneTaskType.Repair => OnReceiveRepairTask(task as RepairTask), + _ => throw new ArgumentException($"type ${task.GetType()} not supported", nameof(task)) + }; + } + + private void Update() { + if (GS.IsPaused || task == null) { + return; + } + + MoveTowards(task.GetPosition()); + } + + private void MoveTowards(Vector2 position) { + var delta = 1f * Time.deltaTime; + transform.position = Vector2.MoveTowards(transform.position, position, delta); + + if ((transform.position.ToVector2() - position).magnitude <= float.Epsilon) { + Debug.Log("Arrived at destination"); + } + } + + private OrchestratorGridClaim OnReceiveRepairTask(RepairTask repairTask) { + targetRemovedHandler = () => { + repairTask.target.OnRemoved -= targetRemovedHandler; + OnTaskEnded(); + }; + + repairTask.target.OnRemoved += targetRemovedHandler; + + claim = new OrchestratorGridClaim { + gridAnchor = repairTask.target.GridAnchor + }; + + return claim; + } + + private void OnTaskEnded() { + targetRemovedHandler = null; + task = null; + + if (claim != null) { + parent.SupportDroneOrchestrator.GridClaims.Remove(claim); + } + + claim = null; + } + + public TakenDamage TakeDamage(Damage damage) { + if (!healthPool.TakeDamage(damage, data.armor, out var takenDamage)) { + OnTaskEnded(); + parent.SupportDroneOrchestrator.OnDestroy(this); + } + + return takenDamage; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/SupportDrone/SupportDrone.cs.meta b/Assets/Project/Source/Gameplay/SupportDrone/SupportDrone.cs.meta new file mode 100644 index 00000000..d6707efe --- /dev/null +++ b/Assets/Project/Source/Gameplay/SupportDrone/SupportDrone.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 4804dcd6eabf44279b4b61dc9a7e0dfe +timeCreated: 1635189419 \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/SupportDrone/SupportDroneOrchestrator.cs b/Assets/Project/Source/Gameplay/SupportDrone/SupportDroneOrchestrator.cs new file mode 100644 index 00000000..327d200a --- /dev/null +++ b/Assets/Project/Source/Gameplay/SupportDrone/SupportDroneOrchestrator.cs @@ -0,0 +1,70 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Exa.Grids; +using Exa.Grids.Blocks.BlockTypes; +using Exa.Ships; +using UnityEngine; + +namespace Exa.Gameplay { + public class SupportDroneOrchestrator { + private readonly IGridInstance instance; + private readonly BlockGridDiff diff; + + public List CurrentDrones { get; } + public OrchestratorGridClaims GridClaims { get; } + + public SupportDroneOrchestrator(IGridInstance instance, BlockGridDiff diff) { + this.instance = instance; + this.diff = diff; + + CurrentDrones = new List(); + GridClaims = new OrchestratorGridClaims(); + } + + public void Update() { + var drones = GetAvailableDrones().ToList(); + + if (drones.Count > 0) { + var pendingRepair = GetPendingRepair().ToList(); + + foreach (var drone in drones) { + var sortedPendingRepair = SortByDistance(pendingRepair, drone.transform.position); + var selectedToRepair = GridClaims.Except(sortedPendingRepair).FirstOrDefault(); + + if (selectedToRepair != null) { + var task = new RepairTask(selectedToRepair); + var claim = drone.SetTask(task); + GridClaims.Add(claim); + } + } + } + } + + public void SubmitDrone(SupportDrone drone) { + CurrentDrones.Add(drone); + } + + public void OnDestroy(SupportDrone drone) { + CurrentDrones.Remove(drone); + } + + private IEnumerable GetPendingRepair() { + return instance.BlockGrid.Where(block => !block.PhysicalBehaviour.IsRepaired); + } + + private IEnumerable SortByDistance(IEnumerable source, Vector2 pivot) + where T : IGridMember { + // Gets the magnitude between the world position of the grid member, and the pivot (Which is the world position of the drone) + float Selector(T item) { + return (item.GetGlobalPosition(instance) - pivot).magnitude; + } + + return source.OrderBy(Selector); + } + + private IEnumerable GetAvailableDrones() { + return CurrentDrones.Where(drone => !drone.IsBusy); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/SupportDrone/SupportDroneOrchestrator.cs.meta b/Assets/Project/Source/Gameplay/SupportDrone/SupportDroneOrchestrator.cs.meta new file mode 100644 index 00000000..bd018ab3 --- /dev/null +++ b/Assets/Project/Source/Gameplay/SupportDrone/SupportDroneOrchestrator.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 2427c3ae26f547d4aefaab39cc2cc7c5 +timeCreated: 1635678768 \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/SupportDrone/SupportDroneTask.cs b/Assets/Project/Source/Gameplay/SupportDrone/SupportDroneTask.cs new file mode 100644 index 00000000..f8c55fe9 --- /dev/null +++ b/Assets/Project/Source/Gameplay/SupportDrone/SupportDroneTask.cs @@ -0,0 +1,14 @@ +using System; +using UnityEngine; + +namespace Exa.Gameplay { + public abstract class SupportDroneTask { + protected SupportDroneTask(SupportDroneTaskType type) { + Type = type; + } + + public SupportDroneTaskType Type { get; private set; } + + public abstract Vector2 GetPosition(); + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Gameplay/SupportDrone/SupportDroneTask.cs.meta b/Assets/Project/Source/Gameplay/SupportDrone/SupportDroneTask.cs.meta new file mode 100644 index 00000000..30190d15 --- /dev/null +++ b/Assets/Project/Source/Gameplay/SupportDrone/SupportDroneTask.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 11d5f90457f447fe8021842433c02be3 +timeCreated: 1635698858 \ No newline at end of file diff --git a/Assets/Project/Source/Generics/Builders/BuilderException.cs b/Assets/Project/Source/Generics/Builders/BuilderException.cs deleted file mode 100644 index dd38eca1..00000000 --- a/Assets/Project/Source/Generics/Builders/BuilderException.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System; - -namespace Exa.Generics -{ - public class BuilderException : Exception - { - public BuilderException(string message) - : base(message) { } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Generics/Builders/IBuilder.cs b/Assets/Project/Source/Generics/Builders/IBuilder.cs deleted file mode 100644 index 8a50b481..00000000 --- a/Assets/Project/Source/Generics/Builders/IBuilder.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Exa.Generics -{ - public interface IBuilder - { - T Build(); - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Generics/IKeySelector.cs b/Assets/Project/Source/Generics/IKeySelector.cs deleted file mode 100644 index 83d8f429..00000000 --- a/Assets/Project/Source/Generics/IKeySelector.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace Exa.Generics -{ - /// - /// Supports an object that provides a key that may change - /// - /// - public interface IKeySelector - { - T Key { get; } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Generics/LabeledValue.cs b/Assets/Project/Source/Generics/LabeledValue.cs deleted file mode 100644 index cc27dc11..00000000 --- a/Assets/Project/Source/Generics/LabeledValue.cs +++ /dev/null @@ -1,33 +0,0 @@ -using Exa.UI.Tooltips; -using System; -using UnityEngine; - -namespace Exa.Generics -{ - public struct LabeledValue : ILabeledValue, IEquatable>, ITooltipComponent - { - public string Label { get; set; } - public T Value { get; set; } - - public LabeledValue(string label, T value) { - Label = label; - Value = value; - } - - public bool Equals(LabeledValue other) { - return - Label.Equals(other.Label) && - Value.Equals(other.Value); - } - - public TooltipComponentView InstantiateComponentView(Transform parent) { - return Systems.UI.tooltips.tooltipGenerator.GenerateTooltipProperty(parent, this); - } - } - - public interface ILabeledValue - { - string Label { get; } - T Value { get; } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Generics/LazyCache.cs b/Assets/Project/Source/Generics/LazyCache.cs deleted file mode 100644 index b5d995c8..00000000 --- a/Assets/Project/Source/Generics/LazyCache.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System; - -namespace Exa.Generics -{ - /// - /// Supports a value with lazy initialization that can be invalidated - /// - /// - public class LazyCache - { - protected Func valueFactory; - protected T value; - protected bool valueUpdated = false; - - private T Value { - get { - // If value is not up to date, create it and set the flag - if (!valueUpdated) { - value = valueFactory(); - valueUpdated = true; - } - - return value; - } - } - - public LazyCache(Func valueFactory) { - this.valueFactory = valueFactory; - } - - /// - /// Invalidate a value so it needs to be recalculated next time it's requested - /// - public void Invalidate() { - valueUpdated = false; - } - - public static implicit operator T(LazyCache cache) { - if (cache == null) - throw new ArgumentNullException(nameof(cache)); - - return cache.Value; - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Generics/MinMax.cs b/Assets/Project/Source/Generics/MinMax.cs deleted file mode 100644 index 7cf2f5a5..00000000 --- a/Assets/Project/Source/Generics/MinMax.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System; -using UnityEngine; - -namespace Exa.Generics -{ - [Serializable] - public struct MinMax - { - public T min; - public T max; - - public MinMax(T min, T max) { - this.min = min; - this.max = max; - } - - public static MinMax ZeroOne => new MinMax(0f, 1f); - } - - public static class MinMaxHelpers - { - public static float Evaluate(this MinMax minMax, float t) { - var diff = minMax.max - minMax.min; - return minMax.min + diff * t; - } - - public static float Clamp(this MinMax minMax, float value) { - return Mathf.Clamp(value, minMax.min, minMax.max); - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Generics/ObservableDictionary.cs b/Assets/Project/Source/Generics/ObservableDictionary.cs deleted file mode 100644 index 8a24127d..00000000 --- a/Assets/Project/Source/Generics/ObservableDictionary.cs +++ /dev/null @@ -1,42 +0,0 @@ -using Exa.Bindings; -using System.Collections.Generic; - -namespace Exa.Generics -{ - // NOTE: Poor lookup time, don't use for large datasets - public class ObservableDictionary : ObservableCollection - where TValue : IKeySelector - { - private readonly IEqualityComparer comparer; - - public ObservableDictionary(IEqualityComparer comparer) { - this.comparer = comparer; - } - - public TValue this[TKey key] { - get { - foreach (var item in this) - if (comparer.Equals(key, KeySelector(item))) - return item; - - throw new KeyNotFoundException(); - } - } - - public bool ContainsKey(TKey key) { - foreach (var item in this) - if (comparer.Equals(key, KeySelector(item))) - return true; - - return false; - } - - public override bool Contains(TValue item) { - return ContainsKey(KeySelector(item)); - } - - protected virtual TKey KeySelector(TValue value) { - return value.Key; - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Generics/OverrideList.cs b/Assets/Project/Source/Generics/OverrideList.cs deleted file mode 100644 index 332aae11..00000000 --- a/Assets/Project/Source/Generics/OverrideList.cs +++ /dev/null @@ -1,43 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Linq; - -namespace Exa.Generics -{ - public class OverrideList : IEnumerable> - { - protected T defaultValue; - protected readonly Action onValueChange; - protected List> overrides = new List>(); - - public OverrideList(T defaultValue, Action onValueChange) { - this.defaultValue = defaultValue; - this.onValueChange = onValueChange; - } - - public virtual void Add(ValueOverride valueOverride) { - overrides.Add(valueOverride); - onValueChange(valueOverride.Value); - } - - public virtual void Remove(ValueOverride valueOverride) { - overrides.Remove(valueOverride); - onValueChange(SelectValue()); - } - - private T SelectValue() { - return overrides.Count == 0 - ? defaultValue - : overrides.Last().Value; - } - - public IEnumerator> GetEnumerator() { - return overrides.GetEnumerator(); - } - - IEnumerator IEnumerable.GetEnumerator() { - return GetEnumerator(); - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Generics/ScriptableObjectBag.cs b/Assets/Project/Source/Generics/ScriptableObjectBag.cs deleted file mode 100644 index 45b26332..00000000 --- a/Assets/Project/Source/Generics/ScriptableObjectBag.cs +++ /dev/null @@ -1,54 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEditor; -using UnityEngine; - -namespace Exa.Generics -{ - public class ScriptableObjectBag : ScriptableObjectBagBase, IEnumerable - where T : ScriptableObject - { - [SerializeField] protected List objects = new List(); - - public override void FindObjects() { - objects = GetAllInstances(); - } - - private List GetAllInstances() { -#if UNITY_EDITOR - var guids = QueryGUIDs(); - var collection = new List(guids.Length); - - foreach (var guid in guids) { - var path = AssetDatabase.GUIDToAssetPath(guid); - collection.Add(AssetDatabase.LoadAssetAtPath(path)); - } - - return collection; -#else - throw new System.Exception("Cannot get instances in runtime"); -#endif - } - - protected virtual string[] QueryGUIDs() { -#if UNITY_EDITOR - return AssetDatabase.FindAssets("t:" + typeof(T).Name); -#else - throw new System.Exception("Cannot QueryGUIDs in runtime"); -#endif - } - - public IEnumerator GetEnumerator() { - return objects.GetEnumerator(); - } - - IEnumerator IEnumerable.GetEnumerator() { - return objects.GetEnumerator(); - } - } - - public abstract class ScriptableObjectBagBase : ScriptableObject - { - public abstract void FindObjects(); - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Generics/ValueOverride.cs b/Assets/Project/Source/Generics/ValueOverride.cs deleted file mode 100644 index 97cdeaef..00000000 --- a/Assets/Project/Source/Generics/ValueOverride.cs +++ /dev/null @@ -1,19 +0,0 @@ -using UnityEngine; - -namespace Exa.Generics -{ - [System.Serializable] - public class ValueOverride - { - [SerializeField] private T value; - - public T Value { - get => value; - set => this.value = value; - } - - public ValueOverride(T value) { - this.value = value; - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/BlockGrid.cs b/Assets/Project/Source/Grids/BlockGrid.cs index 90f6802b..d08c4dcf 100644 --- a/Assets/Project/Source/Grids/BlockGrid.cs +++ b/Assets/Project/Source/Grids/BlockGrid.cs @@ -1,71 +1,119 @@ using System; +using System.Collections.Generic; +using System.Linq; using Exa.Grids; -using Exa.Grids.Blocks; using Exa.Grids.Blocks.BlockTypes; +using Exa.Grids.Blocks.Components; using Exa.Grids.Blueprints; +using Exa.Logging; +using Exa.Types; using Exa.UI.Tooltips; using Exa.Utils; -using System.Collections.Generic; -using System.Linq; using UnityEngine; +using Object = UnityEngine.Object; -namespace Exa.Ships -{ - public class BlockGrid : Grid - { - private readonly Transform container; - private readonly Action destroyCallback; +namespace Exa.Ships { + public class BlockGrid : Grid { + private readonly DefaultDict> blockBehaviours; + private readonly GridTotals totals; + + #if ENABLE_BLOCK_LOGS + private List Logs { get; } = new List(); + #endif + + public BlockGrid(IGridInstance parent) { + Parent = parent; + blockBehaviours = new DefaultDict>(_ => new List()); + + totals = S.Blocks.Totals.StartWatching(this, parent.BlockContext); + } public IGridInstance Parent { get; } public bool Rebuilding { get; set; } - public BlockGridMetadata Metadata { get; } - - public BlockGrid(Transform container, Action destroyCallback, IGridInstance parent) - : base(totals: (parent as Ship)?.Totals) { - this.container = container; - this.destroyCallback = destroyCallback; + public Block Controller { get; protected set; } - Parent = parent; - Metadata = new BlockGridMetadata(GridMembers); + public GridTotals GetTotals() { + return totals; } + + public override void Add(Block block) { + #if ENABLE_BLOCK_LOGS + Logs.Add($"Added: {block}"); + #endif + + if (block.GetIsController()) { + if (Controller != null) { + throw new DuplicateControllerException(block.GridAnchor); + } + + Controller = block; + } - public override void Add(Block gridMember) { - if (gridMember.GetIsController() && Controller != null) { - throw new DuplicateControllerException(gridMember.GridAnchor); + foreach (var behaviour in block.GetBehaviours()) { + blockBehaviours[behaviour.GetType()].Add(behaviour); } - base.Add(gridMember); + base.Add(block); } - public override Block Remove(Vector2Int key) { - var block = base.Remove(key); + public override void Remove(Block block) { + #if ENABLE_BLOCK_LOGS + Logs.Add($"Removed: {block}"); + #endif + + base.Remove(block); - // Only rebuild if it isn't being rebuilt already - if (!Rebuilding) - GameSystems.BlockGridManager.AttemptRebuild(Parent); + if (block.GetIsController()) { + Controller = null; + } - return block; - } + foreach (var behaviour in block.GetBehaviours()) { + blockBehaviours[behaviour.GetType()].Remove(behaviour); + } - internal void Import(Blueprint blueprint) { - foreach (var anchoredBlueprintBlock in blueprint.Blocks) { - Add(CreateBlock(anchoredBlueprintBlock)); + // Only rebuild if it isn't being rebuilt already + if (!Rebuilding) { + GS.BlockGridManager.ScheduleRebuild(Parent); } } - private Block CreateBlock(AnchoredBlueprintBlock anchoredBlueprintBlock) { - var block = anchoredBlueprintBlock.CreateInactiveBlockInGrid(container, Parent.BlockContext); - block.Parent = Parent; - block.gameObject.SetActive(true); - return block; + public IEnumerable QueryStrict() + where T : BlockBehaviour { + return blockBehaviours[typeof(T)].Cast(); + } + + public IEnumerable QueryLike() { + return blockBehaviours + .Where(kvp => typeof(T).IsAssignableFrom(kvp.Key)) + .SelectMany(x => x.Value) + .Cast(); } - public IEnumerable GetDebugTooltipComponents() => new ITooltipComponent[] { - }; + public IEnumerable GetDebugTooltipComponents() { + return new ITooltipComponent[] { }; + } public void DestroyIfEmpty() { - if (!GridMembers.Any()) - destroyCallback(); + #if ENABLE_BLOCK_LOGS + Logs.Add($"Destroying grid: {Parent.Transform.gameObject.name}"); + #endif + + // No need to clean up now. Wait a frame for any potential remaining blocks in the grid to have been deleted or returned to the pool + if (!GridMembers.Any()) { + GS.BlockGridManager.ScheduleDestruction(Parent); + } + } + + internal void Import(Blueprint blueprint) { + foreach (var anchoredBlueprintBlock in blueprint.Grid) { + Place(anchoredBlueprintBlock); + } + } + + internal void Place(ABpBlock aBpBlock) { + var block = aBpBlock.CreateInactiveBlockInGrid(Parent); + Parent.AddBlock(block, false); + block.gameObject.SetActive(true); } } } \ No newline at end of file diff --git a/Assets/Project/Source/Grids/BlockGridDiff.cs b/Assets/Project/Source/Grids/BlockGridDiff.cs new file mode 100644 index 00000000..f1041008 --- /dev/null +++ b/Assets/Project/Source/Grids/BlockGridDiff.cs @@ -0,0 +1,69 @@ +using System.Collections.Generic; +using Exa.Grids.Blueprints; +using Exa.Ships; +using Exa.UI.Tooltips; + +namespace Exa.Grids { + public class BlockGridDiff : MemberCollectionListener { + private BlueprintGrid target; + + public BlockGridDiff(BlockGrid source, BlueprintGrid target) : base(source) { + this.target = target; + PendingAdd = new GridMemberDiffList(); + PendingRemove = new GridMemberDiffList(); + Diff(); + } + + public GridMemberDiffList PendingAdd { get; private set; } + + public GridMemberDiffList PendingRemove { get; private set; } + + public void TrackNewTarget(BlueprintGrid target) { + this.target = target; + Diff(); + } + + public TooltipGroup GetDebugTooltipComponents() { + return new TooltipGroup( + 1, + new TooltipText($"Pending add: {PendingAdd.Count} Items"), + new TooltipText($"Pending remove: {PendingRemove.Count} Items") + ); + } + + private void Diff() { + PendingAdd.Clear(); + PendingRemove.Clear(); + + foreach (var aBpBlock in target) { + FilteredAddToPending(source, aBpBlock, PendingAdd); + } + + foreach (var block in source) { + FilteredAddToPending(target, block, PendingRemove); + } + } + + // Get whether a blueprint block doesn't exist on the target, or the blocks differ + private static void FilteredAddToPending(Grid grid, IGridMember member, IList destination) + where T : class, IGridMember { + if (!grid.TryGetMember(member.GridAnchor, out var block) || !block.Equals(member)) { + destination.Add(member); + } + } + + protected override void OnMemberAdded(IGridMember member) { + // Check if the block is pending to be added, if it isn't, mark it as pending to be removed + if (!PendingAdd.Remove(member)) { + PendingRemove.Add(member); + } + } + + protected override void OnMemberRemoved(IGridMember member) { + // Check if the block is pending to be removed, if it isn't, mark it as pending to be added + if (!PendingRemove.Remove(member)) { + PendingAdd.Add(member); + } + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/BlockGridDiff.cs.meta b/Assets/Project/Source/Grids/BlockGridDiff.cs.meta new file mode 100644 index 00000000..dc055270 --- /dev/null +++ b/Assets/Project/Source/Grids/BlockGridDiff.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 606ba8ced0c947ba8436253a1d0ba14c +timeCreated: 1620489550 \ No newline at end of file diff --git a/Assets/Project/Source/Grids/BlockGridDiffManager.cs b/Assets/Project/Source/Grids/BlockGridDiffManager.cs new file mode 100644 index 00000000..25a7c8d8 --- /dev/null +++ b/Assets/Project/Source/Grids/BlockGridDiffManager.cs @@ -0,0 +1,30 @@ +using System.Collections.Generic; +using Exa.Grids.Blueprints; +using Exa.Ships; + +namespace Exa.Grids { + public class BlockGridDiffManager { + private readonly Dictionary diffs; + + public BlockGridDiffManager() { + diffs = new Dictionary(); + } + + public BlockGridDiff StartWatching(BlockGrid source, BlueprintGrid target) { + var diff = new BlockGridDiff(source, target); + diffs.Add(source, diff); + diff.AddListeners(); + + return diff; + } + + public void StopWatching(BlockGrid source) { + diffs[source].RemoveListeners(); + diffs.Remove(source); + } + + public BlockGridDiff GetDiff(BlockGrid blockGrid) { + return diffs[blockGrid]; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/BlockGridDiffManager.cs.meta b/Assets/Project/Source/Grids/BlockGridDiffManager.cs.meta new file mode 100644 index 00000000..fdef344d --- /dev/null +++ b/Assets/Project/Source/Grids/BlockGridDiffManager.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 00836def1ccc43228ad6b0c0b11bec34 +timeCreated: 1620402234 \ No newline at end of file diff --git a/Assets/Project/Source/Grids/BlockGridMetadata.cs b/Assets/Project/Source/Grids/BlockGridMetadata.cs deleted file mode 100644 index b06dff5c..00000000 --- a/Assets/Project/Source/Grids/BlockGridMetadata.cs +++ /dev/null @@ -1,52 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using Exa.Bindings; -using Exa.Grids.Blocks; -using Exa.Grids.Blocks.BlockTypes; -using Exa.Ships; -using Exa.Utils; - -namespace Exa.Grids -{ - public class BlockGridMetadata : ICollectionObserver - { - private ObservableCollection blocks; - - public TurretList TurretList; - public List ThrusterList; - - public BlockGridMetadata(ObservableCollection blocks) { - this.blocks = blocks; - blocks.Register(this); - - TurretList = new TurretList(); - ThrusterList = new List(); - } - - public IEnumerable QueryByCategory(BlockCategory category) { - return blocks.Where(block => block.GetMemberCategory().Is(category)); - } - - public IEnumerable QueryByType() - where T : class { - foreach (var block in blocks) { - if (block is T convertedBlock) - yield return convertedBlock; - } - } - - public void OnAdd(Block value) { - if (value is ITurret turret) - TurretList.Add(turret); - if (value is IThruster thruster) - ThrusterList.Add(thruster); - } - - public void OnRemove(Block value) { - if (value is ITurret turret) - TurretList.Remove(turret); - if (value is IThruster thruster) - ThrusterList.Remove(thruster); - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/BlockGridMetadata.cs.meta b/Assets/Project/Source/Grids/BlockGridMetadata.cs.meta deleted file mode 100644 index bfe0a4c2..00000000 --- a/Assets/Project/Source/Grids/BlockGridMetadata.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 3aec1d6bf5095eb4cb805a896d1e6401 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/Grids/BlockPresenter.cs b/Assets/Project/Source/Grids/BlockPresenter.cs new file mode 100644 index 00000000..a73d7598 --- /dev/null +++ b/Assets/Project/Source/Grids/BlockPresenter.cs @@ -0,0 +1,17 @@ +using UnityEngine; + +namespace Exa.Grids { + public class BlockPresenter : MonoBehaviour { + [SerializeField] private SpriteRenderer spriteRenderer; + + public SpriteRenderer Renderer { + get => spriteRenderer; + } + + public virtual void Present(IGridMember gridMember) { + gridMember.UpdateLocals(gameObject); + // As all current block sprites are horizontally symmetric, sprite renderers don't need to flip the sprite + // gridMember.BlueprintBlock.SetSpriteRendererFlips(spriteRenderer); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/BlockPresenter.cs.meta b/Assets/Project/Source/Grids/BlockPresenter.cs.meta new file mode 100644 index 00000000..adfcb1ac --- /dev/null +++ b/Assets/Project/Source/Grids/BlockPresenter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 565cfc078da651a4ba1632dc9c61f5aa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/AliveBlockPoolGroup.cs b/Assets/Project/Source/Grids/Blocks/AliveBlockPoolGroup.cs index d78c504e..5c9dfcec 100644 --- a/Assets/Project/Source/Grids/Blocks/AliveBlockPoolGroup.cs +++ b/Assets/Project/Source/Grids/Blocks/AliveBlockPoolGroup.cs @@ -1,31 +1,29 @@ -using Exa.Grids.Blocks.BlockTypes; -using Exa.Ships; +using System; +using Exa.Grids.Blocks.BlockTypes; using UnityEngine; -namespace Exa.Grids.Blocks -{ - public class AliveBlockPoolGroup : BlockPoolGroupBase - { - protected override PrefabType PrefabType => PrefabType.alive; - +namespace Exa.Grids.Blocks { + public class AliveBlockPoolGroup : BlockPoolGroupBase { /// - /// Creates an alive prefab on this group. + /// Creates an alive prefab on this group. /// /// /// - public void CreateAlivePrefabGroup(BlockTemplate blockTemplate, BlockContext blockContext) { - var blockGO = CreatePrefab(blockTemplate, PrefabType); + public void CreateAlivePrefabGroup(BlockTemplate blockTemplate) { + var blockGO = CreatePrefab(blockTemplate, PrefabType.alive); var block = blockGO.GetComponent(); block.Collider = blockGO.GetComponent(); foreach (var component in block.GetBehaviours()) { + if (component == null) { + throw new Exception($"Null component in block of template {blockTemplate.id} on block {blockGO.name}"); + } + component.block = block; } var id = blockTemplate.id; var pool = CreatePool(blockGO, $"Block pool: {id}", out var settings); - pool.blockTemplate = blockTemplate; - pool.blockContext = blockContext; poolById[id] = pool; pool.Configure(settings); } diff --git a/Assets/Project/Source/Grids/Blocks/BlockCategory.cs b/Assets/Project/Source/Grids/Blocks/BlockCategory.cs index e0f1f9bc..d21b8817 100644 --- a/Assets/Project/Source/Grids/Blocks/BlockCategory.cs +++ b/Assets/Project/Source/Grids/Blocks/BlockCategory.cs @@ -1,16 +1,37 @@ using System; -namespace Exa.Grids.Blocks -{ +namespace Exa.Grids.Blocks { [Flags] - public enum BlockCategory - { + public enum BlockCategory { Armor = 1 << 0, - Controller = 1 << 1, + ShipController = 1 << 1, Thruster = 1 << 2, Gyroscope = 1 << 3, Power = 1 << 4, Worker = 1 << 5, - Weapon = 1 << 6 + Weapon = 1 << 6, + StationController = 1 << 7, + ShieldGenerator = 1 << 8, + Support = 1 << 9, + AnyController = ShipController | StationController, + All = ~0 + } + + public static class BlockCategoryExtensions { + public static string ToFriendlyString(this BlockCategory category) { + return category switch { + BlockCategory.Armor => "Armor", + BlockCategory.ShipController => "Controller", + BlockCategory.Thruster => "Thruster", + BlockCategory.Gyroscope => "Gyroscope", + BlockCategory.Power => "Power", + BlockCategory.Worker => "Worker", + BlockCategory.Weapon => "Weapon", + BlockCategory.StationController => "Controller", + BlockCategory.ShieldGenerator => "Shield Generator", + BlockCategory.Support => "Support", + _ => "Not supported" + }; + } } } \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/BlockContext.cs b/Assets/Project/Source/Grids/Blocks/BlockContext.cs new file mode 100644 index 00000000..600841fd --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/BlockContext.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; + +namespace Exa.Grids.Blocks { + /// + /// Enum used to identify to which group a block belongs + /// + [Flags] + public enum BlockContext { + None = 0, + DefaultGroup = 1 << 0, + UserGroup = 1 << 1, + EnemyGroup = 1 << 2, + Debris = 1 << 3 + } + + public static class BlockContextExtensions { + public static IEnumerable GetContexts() { + yield return BlockContext.DefaultGroup; + yield return BlockContext.EnemyGroup; + yield return BlockContext.UserGroup; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/BlockContext.cs.meta b/Assets/Project/Source/Grids/Blocks/BlockContext.cs.meta new file mode 100644 index 00000000..5472896d --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/BlockContext.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1c3580b3c6dab8949b39ce7fbfcab96c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/BlockFactory.cs b/Assets/Project/Source/Grids/Blocks/BlockFactory.cs index d18c7727..aaef3906 100644 --- a/Assets/Project/Source/Grids/Blocks/BlockFactory.cs +++ b/Assets/Project/Source/Grids/Blocks/BlockFactory.cs @@ -1,70 +1,82 @@ -using Exa.Bindings; -using Exa.Grids.Blocks.BlockTypes; -using Exa.Utils; -using System; +using System; using System.Collections; using System.Collections.Generic; +using System.Linq; +using Exa.Grids.Blocks.BlockTypes; +using Exa.Types.Binding; +using Exa.Utils; using UnityEngine; #pragma warning disable CS0649 -namespace Exa.Grids.Blocks -{ - /// - /// Enum used to identify to which group a block belongs - /// - [Flags] - public enum BlockContext : uint - { - None = 0, - DefaultGroup = 1 << 0, - UserGroup = 1 << 1, - EnemyGroup = 1 << 2, - Debris = 1 << 3 - } +namespace Exa.Grids.Blocks { + public class ObservableBlockTemplateCollection : ObservableCollection { + private float? averageStrengthPerCredit = null; - public class ObservableBlockTemplateCollection : ObservableCollection - { } + public float GetAverageStrengthPerCredit() { + return averageStrengthPerCredit ??= this.Select( + template => { + var metadata = template.Data.metadata; + + return (float) metadata.strength / metadata.blockCosts.creditCost; + } + ) + .Average(); + } + } /// - /// Registers block types and creates block pools + /// Registers block types and creates block pools /// - public class BlockFactory : MonoBehaviour - { - public ObservableBlockTemplateCollection availableBlockTemplates = new ObservableBlockTemplateCollection(); - public Dictionary blockTemplatesDict = new Dictionary(); - + public class BlockFactory : MonoBehaviour { + [SerializeField] private TotalsManager totalsManager; [SerializeField] private BlockTemplateBag blockTemplateBag; [SerializeField] private InertBlockPoolGroup inertPrefabGroup; [SerializeField] private AliveBlockPoolGroup defaultPrefabGroup; [SerializeField] private AliveBlockPoolGroup userPrefabGroup; [SerializeField] private AliveBlockPoolGroup enemyPrefabGroup; + public ObservableBlockTemplateCollection blockTemplates = new ObservableBlockTemplateCollection(); + public Dictionary blockTemplatesDict = new Dictionary(); - public BlockValuesStore valuesStore; + public BlockValuesStore Values { get; private set; } + public BlockGridDiffManager Diffs { get; private set; } + + public TotalsManager Totals { + get => totalsManager; + } + + public T FindTemplate() + where T : class { + return blockTemplateBag.FindFirst(); + } public IEnumerator Init(IProgress progress) { - valuesStore = new BlockValuesStore(); + Values = new BlockValuesStore(); + Diffs = new BlockGridDiffManager(); var enumerator = EnumeratorUtils.ReportForeachOperation(blockTemplateBag, RegisterBlockTemplate, progress); - while (enumerator.MoveNext()) yield return enumerator.Current; + + while (enumerator.MoveNext()) { + yield return enumerator.Current; + } } public GameObject GetInactiveInertBlock(string id, Transform transform) { - return inertPrefabGroup.GetInactiveBlock(id, transform); + return inertPrefabGroup.GetInactiveBlock(id, transform).gameObject; } /// - /// Get the block prefab with the given id + /// Get the block prefab with the given id /// /// /// - public Block GetInactiveBlock(string id, Transform transform, BlockContext blockContext) { - return GetGroup(blockContext) - .GetInactiveBlock(id, transform) - .GetComponent(); + public Block GetInactiveBlock(string id, IGridInstance instance) { + return GetGroup(instance.BlockContext) + .GetInactiveBlock(id, instance.Transform) + .block; } /// - /// Register a template, and set the values on the block prefab + /// Register a template, and set the values on the block prefab /// /// private IEnumerator RegisterBlockTemplate(BlockTemplate blockTemplate) { @@ -72,30 +84,32 @@ private IEnumerator RegisterBlockTemplate(BlockTemplate blockTemplate) { throw new Exception("Duplicate block id found"); } - availableBlockTemplates.Add(new BlockTemplateContainer(blockTemplate)); + blockTemplates.Add(new BlockTemplateContainer(blockTemplate)); blockTemplatesDict[blockTemplate.id] = blockTemplate; - inertPrefabGroup.CreateInertPrefab(blockTemplate); - yield return null; - foreach (var context in GetContexts()) { - valuesStore.Register(context, blockTemplate); - GetGroup(context).CreateAlivePrefabGroup(blockTemplate, context); - yield return null; + yield return new WorkUnit(); + + foreach (var context in BlockContextExtensions.GetContexts()) { + Values.Register(context, blockTemplate); + + try { + GetGroup(context).CreateAlivePrefabGroup(blockTemplate); + } catch (Exception e) { + throw new Exception($"Exception while registering block template: {blockTemplate} for {context}", e); + } + + yield return new WorkUnit(); } } private AliveBlockPoolGroup GetGroup(BlockContext blockContext) { - return blockContext.Is(BlockContext.DefaultGroup) ? defaultPrefabGroup - : blockContext.Is(BlockContext.UserGroup) ? userPrefabGroup - : blockContext.Is(BlockContext.EnemyGroup) ? enemyPrefabGroup - : null; - } - - private IEnumerable GetContexts() { - yield return BlockContext.DefaultGroup; - yield return BlockContext.UserGroup; - yield return BlockContext.EnemyGroup; + return blockContext switch { + BlockContext.DefaultGroup => defaultPrefabGroup, + BlockContext.UserGroup => userPrefabGroup, + BlockContext.EnemyGroup => enemyPrefabGroup, + _ => null + }; } } } \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/BlockMetadata.cs b/Assets/Project/Source/Grids/Blocks/BlockMetadata.cs new file mode 100644 index 00000000..d70f52c7 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/BlockMetadata.cs @@ -0,0 +1,65 @@ +using System; +using Exa.IO; +using Exa.UI.Tooltips; +using UnityEngine; + +namespace Exa.Grids.Blocks { + [Serializable] + public struct BlockMetadata { + public int strength; + public BlockCosts blockCosts; + + public static BlockMetadata operator +(BlockMetadata a, BlockMetadata b) { + return new BlockMetadata { + strength = a.strength + b.strength, + blockCosts = a.blockCosts + b.blockCosts + }; + } + + public static BlockMetadata operator -(BlockMetadata a, BlockMetadata b) { + return new BlockMetadata { + strength = a.strength - b.strength, + blockCosts = a.blockCosts - b.blockCosts + }; + } + } + + [Serializable] + public struct BlockCosts : ITooltipComponent { + public int creditCost; + public int metalsCost; + + public float GaugePotentialStrength() { + return S.Blocks.blockTemplates.GetAverageStrengthPerCredit() * creditCost; + } + + public TooltipComponentView InstantiateComponentView(Transform parent) { + return S.UI.Tooltips.tooltipGenerator.CreateBlockCostsView(parent, this); + } + + public static BlockCosts operator +(BlockCosts a, BlockCosts b) { + return new BlockCosts { + creditCost = a.creditCost + b.creditCost, + metalsCost = a.metalsCost + b.metalsCost + }; + } + + public static BlockCosts operator -(BlockCosts a, BlockCosts b) { + return new BlockCosts { + creditCost = a.creditCost - b.creditCost, + metalsCost = a.metalsCost - b.metalsCost + }; + } + + public static BlockCosts operator *(BlockCosts a, float b) { + return new BlockCosts { + creditCost = Mathf.RoundToInt(a.creditCost * b), + metalsCost = Mathf.RoundToInt(a.metalsCost * b) + }; + } + + public override string ToString() { + return IOUtils.ToJson(this); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/BlockMetadata.cs.meta b/Assets/Project/Source/Grids/Blocks/BlockMetadata.cs.meta new file mode 100644 index 00000000..d827a369 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/BlockMetadata.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 4b5c639769534d61b169f4056f8fda6a +timeCreated: 1616870079 \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/BlockPool.cs b/Assets/Project/Source/Grids/Blocks/BlockPool.cs index 59ca3a33..71408df5 100644 --- a/Assets/Project/Source/Grids/Blocks/BlockPool.cs +++ b/Assets/Project/Source/Grids/Blocks/BlockPool.cs @@ -1,23 +1,14 @@ using Exa.Grids.Blocks.BlockTypes; using Exa.Pooling; -namespace Exa.Grids.Blocks -{ - public class BlockPool : Pool - { - public BlockContext blockContext; - public BlockTemplate blockTemplate; - - public override BlockPoolMember Retrieve() { - var member = base.Retrieve(); - var block = member.block; - Systems.Blocks.valuesStore.SetValues(blockContext, blockTemplate, block); - return member; - } - +namespace Exa.Grids.Blocks { + public class BlockPool : Pool { protected override BlockPoolMember InstantiatePrefab() { var member = base.InstantiatePrefab(); - member.block = member.gameObject.GetComponent(); + var block = member.gameObject.GetComponent(); + block.blockPoolMember = member; + member.block = block; + return member; } } diff --git a/Assets/Project/Source/Grids/Blocks/BlockPoolGroupBase.cs b/Assets/Project/Source/Grids/Blocks/BlockPoolGroupBase.cs index e9dfb663..a0272478 100644 --- a/Assets/Project/Source/Grids/Blocks/BlockPoolGroupBase.cs +++ b/Assets/Project/Source/Grids/Blocks/BlockPoolGroupBase.cs @@ -1,29 +1,23 @@ -using Exa.Pooling; -using System.Collections.Generic; +using System.Collections.Generic; +using Exa.Pooling; using UnityEngine; #pragma warning disable CS0649 -namespace Exa.Grids.Blocks -{ - public abstract class BlockPoolGroupBase : MonoBehaviour - { - protected Dictionary> poolById = new Dictionary>(); - +namespace Exa.Grids.Blocks { + public abstract class BlockPoolGroupBase : MonoBehaviour + where TPoolMember : PoolMember { [SerializeField] private PoolSettings defaultPoolSettings; + protected Dictionary> poolById = new Dictionary>(); - protected abstract PrefabType PrefabType { get; } - - public GameObject GetInactiveBlock(string id, Transform parent) { - var blockGO = poolById[id].Retrieve().gameObject; - - blockGO.transform.SetParent(parent); - - return blockGO; + public TPoolMember GetInactiveBlock(string id, Transform container) { + var member = poolById[id].Retrieve(); + member.transform.SetParent(container); + return member; } /// - /// Creates a block prefab for the given block template on this group + /// Creates a block prefab for the given block template on this group /// /// /// @@ -36,12 +30,12 @@ protected GameObject CreatePrefab(BlockTemplate blockTemplate, PrefabType prefab return instance; } - protected T CreatePool(GameObject prefab, string name, out PoolSettings settings) - where T : Component, IPool { + protected TPool CreatePool(GameObject prefab, string name, out PoolSettings settings) + where TPool : Component, IPool { var poolGO = new GameObject(name); poolGO.transform.SetParent(transform); - var pool = poolGO.AddComponent(); + var pool = poolGO.AddComponent(); settings = defaultPoolSettings.Clone(); settings.prefab = prefab; diff --git a/Assets/Project/Source/Grids/Blocks/BlockPoolMember.cs b/Assets/Project/Source/Grids/Blocks/BlockPoolMember.cs index e699b14c..fa01eb90 100644 --- a/Assets/Project/Source/Grids/Blocks/BlockPoolMember.cs +++ b/Assets/Project/Source/Grids/Blocks/BlockPoolMember.cs @@ -1,10 +1,22 @@ using Exa.Grids.Blocks.BlockTypes; using Exa.Pooling; -namespace Exa.Grids.Blocks -{ - public class BlockPoolMember : PoolMember - { +namespace Exa.Grids.Blocks { + public class BlockPoolMember : PoolMember { public Block block; + + protected override void OnDisable() { } + + public void ReturnBlock() { + #if ENABLE_BLOCK_LOGS + block.Logs.Add("Function: ReturnBlock"); + #endif + + base.OnDisable(); + } + + protected override bool IgnoreClause() { + return GS.IsQuitting; + } } } \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/BlockTemplate.cs b/Assets/Project/Source/Grids/Blocks/BlockTemplate.cs deleted file mode 100644 index 79c77415..00000000 --- a/Assets/Project/Source/Grids/Blocks/BlockTemplate.cs +++ /dev/null @@ -1,57 +0,0 @@ -using Exa.Grids.Blocks.BlockTypes; -using Exa.Grids.Blocks.Components; -using System; -using System.Collections.Generic; -using UnityEngine; - -namespace Exa.Grids.Blocks -{ - /// - /// Provides a generic base class for storing and setting the base values of blocks - /// - /// - public class BlockTemplate : BlockTemplate - where T : Block - { - [Header("Template partials")] - [SerializeField] protected PhysicalTemplatePartial physicalTemplatePartial; - - public override IEnumerable GetTemplatePartials() { - return new TemplatePartialBase[] { - physicalTemplatePartial - }; - } - } - - public abstract class BlockTemplate : ScriptableObject, IGridTotalsModifier - { - [Header("Settings")] - public string id; - public string displayId; - public BlockCategory category; - public Sprite thumbnail; - public Vector2Int size; - public GameObject inertPrefab; - public GameObject alivePrefab; - - private void OnEnable() { - if (!inertPrefab) { - throw new Exception("inertPrefab must have a prefab reference"); - } - } - - public void AddGridTotals(GridTotals totals) { - foreach (var partial in GetTemplatePartials()) { - partial.AddGridTotals(totals); - } - } - - public void RemoveGridTotals(GridTotals totals) { - foreach (var partial in GetTemplatePartials()) { - partial.RemoveGridTotals(totals); - } - } - - public abstract IEnumerable GetTemplatePartials(); - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/BlockTemplateBag.cs b/Assets/Project/Source/Grids/Blocks/BlockTemplateBag.cs index fe55035f..3e671cd1 100644 --- a/Assets/Project/Source/Grids/Blocks/BlockTemplateBag.cs +++ b/Assets/Project/Source/Grids/Blocks/BlockTemplateBag.cs @@ -1,9 +1,8 @@ -using Exa.Generics; +using System.Linq; +using Exa.Types.Generics; using UnityEngine; -namespace Exa.Grids.Blocks -{ +namespace Exa.Grids.Blocks { [CreateAssetMenu(menuName = "Grids/Blocks/BlockTemplateBag")] - public class BlockTemplateBag : ScriptableObjectBag - { } + public class BlockTemplateBag : ScriptableObjectBag { } } \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/BlockTemplateBase.cs b/Assets/Project/Source/Grids/Blocks/BlockTemplateBase.cs new file mode 100644 index 00000000..d94b2d20 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/BlockTemplateBase.cs @@ -0,0 +1,81 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Exa.Grids.Blocks.BlockTypes; +using Exa.Grids.Blocks.Components; +using UnityEngine; + +namespace Exa.Grids.Blocks { + public abstract class BlockTemplate : ScriptableObject, IGridTotalsModifier { + [Header("Settings")] + public string id; + public string displayId; + public BlockCategory category; + public Sprite thumbnail; + public Vector2Int size; + public BlockMetadata metadata; + public GameObject inertPrefab; + public GameObject alivePrefab; + + [Header("Template partials")] + [SerializeField] protected TemplatePartial physicalPartial; + + private void OnEnable() { + foreach (var partial in GetTemplatePartials()) { + partial.Template = this; + } + + if (!inertPrefab) { + Debug.LogWarning("inertPrefab must have a prefab reference"); + } + } + + public void AddGridTotals(GridTotals totals) { + totals.Metadata += metadata; + + foreach (var partial in GetTemplatePartials()) { + partial.AddGridTotals(totals); + } + } + + public void RemoveGridTotals(GridTotals totals) { + totals.Metadata -= metadata; + + foreach (var partial in GetTemplatePartials()) { + partial.RemoveGridTotals(totals); + } + } + + public T GetValues(BlockContext blockContext) + where T : IBlockComponentValues { + return S.Blocks.Values.GetValues(blockContext, this); + } + + public bool GetAnyPartialDataIsOf() + where T : IBlockComponentValues { + return GetTemplatePartials().Any(partial => partial.GetDataTypeIsOf()); + } + + public bool GetAnyPartialDataIsOf(Type type) { + return GetTemplatePartials().Any(partial => partial.GetDataTypeIsOf(type)); + } + + public virtual IEnumerable GetTemplatePartials() { + yield return physicalPartial; + } + + public void SetContextlessValues(Block block) { + if (block.BlueprintBlock.Template != this) { + throw new InvalidOperationException("Cannot set contextless values of block whose template is not the current template"); + } + + foreach (var partial in GetTemplatePartials()) { + partial.SetValues(block, partial.GetContextlessValues()); + } + } + + public override string ToString() { + return $"Block template id: {id}"; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/BlockTemplate.cs.meta b/Assets/Project/Source/Grids/Blocks/BlockTemplateBase.cs.meta similarity index 100% rename from Assets/Project/Source/Grids/Blocks/BlockTemplate.cs.meta rename to Assets/Project/Source/Grids/Blocks/BlockTemplateBase.cs.meta diff --git a/Assets/Project/Source/Grids/Blocks/BlockTemplateContainer.cs b/Assets/Project/Source/Grids/Blocks/BlockTemplateContainer.cs index e5cc0862..c4e7479c 100644 --- a/Assets/Project/Source/Grids/Blocks/BlockTemplateContainer.cs +++ b/Assets/Project/Source/Grids/Blocks/BlockTemplateContainer.cs @@ -1,13 +1,11 @@ -using Exa.Bindings; +using Exa.Types.Binding; -namespace Exa.Grids.Blocks -{ +namespace Exa.Grids.Blocks { /// - /// Observable container for block templates - /// Used by the editor inventory to keep track of block template updates + /// Observable container for block templates + /// Used by the editor inventory to keep track of block template updates /// - public class BlockTemplateContainer : Observable - { + public class BlockTemplateContainer : Observable { public BlockTemplateContainer(BlockTemplate data) : base(data) { } } diff --git a/Assets/Project/Source/Grids/Blocks/BlockTemplateTooltip.cs b/Assets/Project/Source/Grids/Blocks/BlockTemplateTooltip.cs index ff3b7f72..552bfa63 100644 --- a/Assets/Project/Source/Grids/Blocks/BlockTemplateTooltip.cs +++ b/Assets/Project/Source/Grids/Blocks/BlockTemplateTooltip.cs @@ -1,14 +1,12 @@ using Exa.UI.Tooltips; using Exa.Utils; -namespace Exa.Grids.Blocks -{ - public class BlockTemplateTooltip : FloatingTooltip - { +namespace Exa.Grids.Blocks { + public class BlockTemplateTooltip : FloatingTooltip { public void Show(BlockContext blockContext, BlockTemplate blockTemplate) { gameObject.SetActive(true); - var tooltip = Systems.Blocks.valuesStore.GetTooltip(blockContext, blockTemplate); - Systems.UI.tooltips.tooltipGenerator.CreateRootView(tooltip, itemsContainer); + var tooltip = S.Blocks.Values.GetTooltip(blockContext, blockTemplate); + S.UI.Tooltips.tooltipGenerator.CreateRootView(tooltip, itemsContainer); UpdatePosition(true); } diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/Armor.meta b/Assets/Project/Source/Grids/Blocks/BlockTypes/Armor.meta deleted file mode 100644 index f4164a2b..00000000 --- a/Assets/Project/Source/Grids/Blocks/BlockTypes/Armor.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: e70c3fcf4ecac834e94181c0a03b3578 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/Armor/Armor.cs b/Assets/Project/Source/Grids/Blocks/BlockTypes/Armor/Armor.cs deleted file mode 100644 index 20711d9d..00000000 --- a/Assets/Project/Source/Grids/Blocks/BlockTypes/Armor/Armor.cs +++ /dev/null @@ -1,5 +0,0 @@ -namespace Exa.Grids.Blocks.BlockTypes -{ - public class Armor : Block - { } -} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/Armor/Armor.cs.meta b/Assets/Project/Source/Grids/Blocks/BlockTypes/Armor/Armor.cs.meta deleted file mode 100644 index 5757c28c..00000000 --- a/Assets/Project/Source/Grids/Blocks/BlockTypes/Armor/Armor.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 4c1491fef2167eb41844618b313d1e8b -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/Armor/ArmorTemplate.cs b/Assets/Project/Source/Grids/Blocks/BlockTypes/Armor/ArmorTemplate.cs deleted file mode 100644 index c51bf295..00000000 --- a/Assets/Project/Source/Grids/Blocks/BlockTypes/Armor/ArmorTemplate.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System; -using UnityEngine; - -namespace Exa.Grids.Blocks.BlockTypes -{ - [Serializable] - [CreateAssetMenu(menuName = "Grids/Blocks/Armor")] - public class ArmorTemplate : BlockTemplate - { } -} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/ArmorTemplate.cs b/Assets/Project/Source/Grids/Blocks/BlockTypes/ArmorTemplate.cs new file mode 100644 index 00000000..f801a3a6 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/BlockTypes/ArmorTemplate.cs @@ -0,0 +1,8 @@ +using System; +using UnityEngine; + +namespace Exa.Grids.Blocks.BlockTypes { + [Serializable] + [CreateAssetMenu(menuName = "Grids/Blocks/Armor")] + public class ArmorTemplate : BlockTemplate { } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/Armor/ArmorTemplate.cs.meta b/Assets/Project/Source/Grids/Blocks/BlockTypes/ArmorTemplate.cs.meta similarity index 100% rename from Assets/Project/Source/Grids/Blocks/BlockTypes/Armor/ArmorTemplate.cs.meta rename to Assets/Project/Source/Grids/Blocks/BlockTypes/ArmorTemplate.cs.meta diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/AutocannonTemplate.cs b/Assets/Project/Source/Grids/Blocks/BlockTypes/AutocannonTemplate.cs new file mode 100644 index 00000000..2da9b5b9 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/BlockTypes/AutocannonTemplate.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Exa.Grids.Blocks.Components; +using UnityEngine; + +namespace Exa.Grids.Blocks.BlockTypes { + [Serializable] + [CreateAssetMenu(menuName = "Grids/Blocks/Autocannon")] + public class AutocannonTemplate : BlockTemplate { + [SerializeField] private TemplatePartial autocannonPartial; + + public override IEnumerable GetTemplatePartials() { + return base.GetTemplatePartials().Append(autocannonPartial); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/Turret/AutocannonTemplate.cs.meta b/Assets/Project/Source/Grids/Blocks/BlockTypes/AutocannonTemplate.cs.meta similarity index 100% rename from Assets/Project/Source/Grids/Blocks/BlockTypes/Turret/AutocannonTemplate.cs.meta rename to Assets/Project/Source/Grids/Blocks/BlockTypes/AutocannonTemplate.cs.meta diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/Block.cs b/Assets/Project/Source/Grids/Blocks/BlockTypes/Block.cs index 42bbd329..bf26911b 100644 --- a/Assets/Project/Source/Grids/Blocks/BlockTypes/Block.cs +++ b/Assets/Project/Source/Grids/Blocks/BlockTypes/Block.cs @@ -1,36 +1,42 @@ -using Exa.Ships; +using System; +using System.Collections.Generic; +using System.Linq; using Exa.Grids.Blocks.Components; using Exa.Grids.Blueprints; -using Unity.Entities; -using UnityEngine; -using System.Collections.Generic; +using Exa.Ships; using Exa.Utils; +using UnityEngine; #pragma warning disable CS0649 -namespace Exa.Grids.Blocks.BlockTypes -{ +namespace Exa.Grids.Blocks.BlockTypes { /// - /// Base class for blocks + /// Base class for blocks /// - public class Block : MonoBehaviour, IBlock, IGridMember, IPhysical - { - [HideInInspector] public AnchoredBlueprintBlock anchoredBlueprintBlock; + public class Block : MonoBehaviour, IGridMember { + [HideInInspector] public BlockPoolMember blockPoolMember; [SerializeField] private PhysicalBehaviour physicalBehaviour; - [SerializeField, HideInInspector] private new BoxCollider2D collider; + [SerializeField] [HideInInspector] private new BoxCollider2D collider; + [NonSerialized] public ABpBlock aBpBlock; private IGridInstance parent; - public Vector2Int GridAnchor => anchoredBlueprintBlock.gridAnchor; + public event Action OnRemoved; + + #if UNITY_EDITOR + public bool DebugFocused { get; set; } + #endif + + #if ENABLE_BLOCK_LOGS + public List Logs { get; } = new List(); + #endif - public BlueprintBlock BlueprintBlock => anchoredBlueprintBlock.blueprintBlock; + private List behaviours; - BlockBehaviour IBehaviourMarker.Component { + public PhysicalBehaviour PhysicalBehaviour { get => physicalBehaviour; } - public PhysicalBehaviour PhysicalBehaviour => physicalBehaviour; - public BoxCollider2D Collider { get => collider; set => collider = value; @@ -38,72 +44,134 @@ public BoxCollider2D Collider { public IGridInstance Parent { get => parent; - set { - if (parent == value) return; + } - if (parent != null && !Systems.IsQuitting) { - OnRemove(); - } + public void SetParentWithoutNotify(IGridInstance value) { + parent = value; + } - parent = value; + /// + /// Notifies the block as being added. + /// + /// If true, it will call the OnBlockDataReceived handler on every behaviour + public void NotifyAdded(bool mockSetValues) { + OnAdd(); + OnRemoved = null; - if (parent != null) { - OnAdd(); - } + foreach (var behaviour in GetBehaviours()) { + behaviour.NotifyAdded(); - foreach (var behaviour in GetBehaviours()) { - behaviour.Parent = value; + if (mockSetValues) { + behaviour.MockSetValues(); } } } - public Ship Ship => Parent as Ship; - - private void OnDisable() { - if (Systems.IsQuitting) return; - - Parent.BlockGrid.Remove(GridAnchor); - Parent = null; + public void NotifyRemoved() { + foreach (var behaviour in GetBehaviours()) { + behaviour.NotifyRemoved(); + } + + OnRemoved?.Invoke(); + OnRemoved = null; + OnRemove(); } - public TComponent GetBlockComponent() - where TComponent : BlockBehaviour - where TValues : struct, IBlockComponentValues { - if (this is IBehaviourMarker behaviourMarker && behaviourMarker.Component is TComponent behaviour) { - return behaviour; - } + public GridInstance GridInstance { + get => Parent as GridInstance; + } - return null; + public Vector2Int GridAnchor { + get => aBpBlock.gridAnchor; } - public bool TryGetBlockComponent(out TComponent value) - where TComponent : BlockBehaviour - where TValues : struct, IBlockComponentValues { - value = GetBlockComponent(); - return value != null; + public BlueprintBlock BlueprintBlock { + get => aBpBlock.blueprintBlock; } public void AddGridTotals(GridTotals totals) { + totals.Metadata += BlueprintBlock.Template.metadata; + foreach (var behaviour in GetBehaviours()) { behaviour.BlockComponentData.AddGridTotals(totals); } } public void RemoveGridTotals(GridTotals totals) { + totals.Metadata -= BlueprintBlock.Template.metadata; + foreach (var behaviour in GetBehaviours()) { behaviour.BlockComponentData.RemoveGridTotals(totals); } } - // TODO: cache the result of this operation - public virtual IEnumerable GetBehaviours() { - return new BlockBehaviourBase[] { - physicalBehaviour - }; + public bool Equals(IGridMember other) { + return GridMemberComparer.Default.Equals(this, other); + } + + /// + /// Returns the block to the pool + /// + public void DestroyBlock() { + #if ENABLE_BLOCK_LOGS + Logs.Add("Function: DestroyBlock"); + #endif + + if (GS.IsQuitting) { + parent = null; + + #if ENABLE_BLOCK_LOGS + Logs.Add("Function: DestroyBlock: Return"); + + return; + #endif + } + + Parent.RemoveBlock(this); + gameObject.SetActive(false); + blockPoolMember.ReturnBlock(); + } + + public T GetBehaviour() { + return GetBehaviours().FindFirst(); } - protected virtual void OnAdd() { } + public BlockBehaviour GetBehaviourOfData() + where T : struct, IBlockComponentValues { + return GetBehaviours() + .Where(behaviour => behaviour.GetDataTypeIsOf()) + .Cast>() + .FirstOrDefault(); + } - protected virtual void OnRemove() { } + public bool TryGetBehaviour(out T value) { + value = GetBehaviour(); + + return value.Equals(default); + } + + public IEnumerable GetBehaviours() { + if (behaviours == null) { + gameObject.GetComponents(behaviours = new List()); + } + + return behaviours; + } + + protected virtual void OnAdd() { + #if ENABLE_BLOCK_LOGS + Logs.Add("Function: OnAdd"); + #endif + } + + protected virtual void OnRemove() { + #if ENABLE_BLOCK_LOGS + Logs.Add("Function: OnRemove"); + #endif + } + + public override string ToString() { + return $"Id: {BlueprintBlock.Template.id}, Pos: {GridAnchor}"; + } } } \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/Controller.cs b/Assets/Project/Source/Grids/Blocks/BlockTypes/Controller.cs new file mode 100644 index 00000000..afd7893d --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/BlockTypes/Controller.cs @@ -0,0 +1,24 @@ +namespace Exa.Grids.Blocks.BlockTypes { + public class Controller : Block { + protected override void OnAdd() { + base.OnAdd(); + + if (!GridInstance) { + return; + } + + GridInstance.Controller = this; + } + + protected override void OnRemove() { + base.OnRemove(); + + if (!GridInstance) { + return; + } + + GridInstance.OnControllerDestroyed(); + GridInstance.Controller = null; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/Controller/Controller.cs.meta b/Assets/Project/Source/Grids/Blocks/BlockTypes/Controller.cs.meta similarity index 83% rename from Assets/Project/Source/Grids/Blocks/BlockTypes/Controller/Controller.cs.meta rename to Assets/Project/Source/Grids/Blocks/BlockTypes/Controller.cs.meta index 9ec82bca..8e1d47aa 100644 --- a/Assets/Project/Source/Grids/Blocks/BlockTypes/Controller/Controller.cs.meta +++ b/Assets/Project/Source/Grids/Blocks/BlockTypes/Controller.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: e9d23d84337d29f44905507089eaa9ca +guid: 1efbc8914b07d1545ab528e8a2d648cb MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/Controller.meta b/Assets/Project/Source/Grids/Blocks/BlockTypes/Controller.meta deleted file mode 100644 index 24113b31..00000000 --- a/Assets/Project/Source/Grids/Blocks/BlockTypes/Controller.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: d5a3aa83cfa2a444b9b1edde1af133a9 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/Controller/Controller.cs b/Assets/Project/Source/Grids/Blocks/BlockTypes/Controller/Controller.cs deleted file mode 100644 index d6e8acf5..00000000 --- a/Assets/Project/Source/Grids/Blocks/BlockTypes/Controller/Controller.cs +++ /dev/null @@ -1,34 +0,0 @@ -using Exa.Grids.Blocks.Components; -using System.Collections.Generic; -using System.Linq; -using UnityEngine; - -#pragma warning disable CS0649 - -namespace Exa.Grids.Blocks.BlockTypes -{ - public class Controller : Block, IBehaviourMarker - { - [SerializeField] private ControllerBehaviour controllerBehaviour; - - BlockBehaviour IBehaviourMarker.Component => controllerBehaviour; - - public override IEnumerable GetBehaviours() { - return base.GetBehaviours() - .Append(controllerBehaviour); - } - - protected override void OnAdd() { - if (!Ship) return; - - Ship.Controller = this; - } - - protected override void OnRemove() { - if (!Ship) return; - - Ship.OnControllerDestroyed(); - Ship.Controller = null; - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/Controller/ControllerTemplate.cs b/Assets/Project/Source/Grids/Blocks/BlockTypes/Controller/ControllerTemplate.cs deleted file mode 100644 index e27c4ff5..00000000 --- a/Assets/Project/Source/Grids/Blocks/BlockTypes/Controller/ControllerTemplate.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Exa.Grids.Blocks.Components; -using System; -using System.Collections.Generic; -using System.Linq; -using UnityEngine; - -namespace Exa.Grids.Blocks.BlockTypes -{ - [Serializable] - [CreateAssetMenu(menuName = "Grids/Blocks/Controller")] - public class ControllerTemplate : BlockTemplate - { - [SerializeField] public ControllerTemplatePartial controllerTemplatePartial; - - public override IEnumerable GetTemplatePartials() { - return base.GetTemplatePartials() - .Append(controllerTemplatePartial); - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/Controller/ControllerTemplate.cs.meta b/Assets/Project/Source/Grids/Blocks/BlockTypes/Controller/ControllerTemplate.cs.meta deleted file mode 100644 index a9388850..00000000 --- a/Assets/Project/Source/Grids/Blocks/BlockTypes/Controller/ControllerTemplate.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 81fb5adc618c4a34b9dc96c383c715e5 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/DroneBayTemplate.cs b/Assets/Project/Source/Grids/Blocks/BlockTypes/DroneBayTemplate.cs new file mode 100644 index 00000000..9d980063 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/BlockTypes/DroneBayTemplate.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Exa.Grids.Blocks.Components; +using UnityEngine; + +namespace Exa.Grids.Blocks { + [Serializable] + [CreateAssetMenu(menuName = "Grids/Blocks/DroneBay")] + public class DroneBayTemplate : BlockTemplate { + [SerializeField] private TemplatePartial droneBayPartial; + + public override IEnumerable GetTemplatePartials() { + return base.GetTemplatePartials().Append(droneBayPartial); + } + } +} diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/DroneBayTemplate.cs.meta b/Assets/Project/Source/Grids/Blocks/BlockTypes/DroneBayTemplate.cs.meta new file mode 100644 index 00000000..85e82c02 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/BlockTypes/DroneBayTemplate.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c4a9b5a4c4adb3146841421b06d2a73d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/GaussCannonTemplate.cs b/Assets/Project/Source/Grids/Blocks/BlockTypes/GaussCannonTemplate.cs new file mode 100644 index 00000000..3444ab1e --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/BlockTypes/GaussCannonTemplate.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Exa.Grids.Blocks.Components; +using UnityEngine; + +namespace Exa.Grids.Blocks.BlockTypes { + [Serializable] + [CreateAssetMenu(menuName = "Grids/Blocks/GaussCannon")] + public class GaussCannonTemplate : StationControllerTemplate { + [SerializeField] private TemplatePartial gaussCannonPartial; + + public override IEnumerable GetTemplatePartials() { + return base.GetTemplatePartials().Append(gaussCannonPartial); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/GaussCannonTemplate.cs.meta b/Assets/Project/Source/Grids/Blocks/BlockTypes/GaussCannonTemplate.cs.meta new file mode 100644 index 00000000..d0f38254 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/BlockTypes/GaussCannonTemplate.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 315cff37205d6a74dbb0f786e32cd1e8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/Generators.meta b/Assets/Project/Source/Grids/Blocks/BlockTypes/Generators.meta deleted file mode 100644 index 92dd33dd..00000000 --- a/Assets/Project/Source/Grids/Blocks/BlockTypes/Generators.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 978d6eaffacdc3f42b2be87dfc27863f -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/Generators/PowerGenerator.cs b/Assets/Project/Source/Grids/Blocks/BlockTypes/Generators/PowerGenerator.cs deleted file mode 100644 index 79a75642..00000000 --- a/Assets/Project/Source/Grids/Blocks/BlockTypes/Generators/PowerGenerator.cs +++ /dev/null @@ -1,21 +0,0 @@ -using Exa.Grids.Blocks.Components; -using System.Collections.Generic; -using System.Linq; -using UnityEngine; - -#pragma warning disable CS0649 - -namespace Exa.Grids.Blocks.BlockTypes -{ - public class PowerGenerator : Block, IBehaviourMarker - { - [SerializeField] private PowerGeneratorBehaviour powerGeneratorBehaviour; - - public BlockBehaviour Component => powerGeneratorBehaviour; - - public override IEnumerable GetBehaviours() { - return base.GetBehaviours() - .Append(powerGeneratorBehaviour); - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/Generators/PowerGenerator.cs.meta b/Assets/Project/Source/Grids/Blocks/BlockTypes/Generators/PowerGenerator.cs.meta deleted file mode 100644 index baba7da9..00000000 --- a/Assets/Project/Source/Grids/Blocks/BlockTypes/Generators/PowerGenerator.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 9f4cd17d16757c04dac200d77f7a1677 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/Generators/PowerGeneratorTemplate.cs b/Assets/Project/Source/Grids/Blocks/BlockTypes/Generators/PowerGeneratorTemplate.cs deleted file mode 100644 index aea5eef0..00000000 --- a/Assets/Project/Source/Grids/Blocks/BlockTypes/Generators/PowerGeneratorTemplate.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Exa.Grids.Blocks.Components; -using System; -using System.Collections.Generic; -using System.Linq; -using UnityEngine; - -namespace Exa.Grids.Blocks.BlockTypes -{ - [Serializable] - [CreateAssetMenu(menuName = "Grids/Blocks/PowerGenerator")] - public class PowerGeneratorTemplate : BlockTemplate - { - [SerializeField] protected PowerGeneratorTemplatePartial powerGeneratorTemplatePartial; - - public override IEnumerable GetTemplatePartials() { - return base.GetTemplatePartials() - .Append(powerGeneratorTemplatePartial); - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/GyroscopeTemplate.cs b/Assets/Project/Source/Grids/Blocks/BlockTypes/GyroscopeTemplate.cs new file mode 100644 index 00000000..cc314d4b --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/BlockTypes/GyroscopeTemplate.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Exa.Grids.Blocks.Components; +using UnityEngine; + +namespace Exa.Grids.Blocks.BlockTypes { + [Serializable] + [CreateAssetMenu(menuName = "Grids/Blocks/Gyroscope")] + public class GyroscopeTemplate : BlockTemplate { + [SerializeField] private TemplatePartial gyroscopePartial; + + public override IEnumerable GetTemplatePartials() { + return base.GetTemplatePartials().Append(gyroscopePartial); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/Gyroscopes/GyroscopeTemplate.cs.meta b/Assets/Project/Source/Grids/Blocks/BlockTypes/GyroscopeTemplate.cs.meta similarity index 100% rename from Assets/Project/Source/Grids/Blocks/BlockTypes/Gyroscopes/GyroscopeTemplate.cs.meta rename to Assets/Project/Source/Grids/Blocks/BlockTypes/GyroscopeTemplate.cs.meta diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/Gyroscopes.meta b/Assets/Project/Source/Grids/Blocks/BlockTypes/Gyroscopes.meta deleted file mode 100644 index b3d8167f..00000000 --- a/Assets/Project/Source/Grids/Blocks/BlockTypes/Gyroscopes.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: d4b6928c8d3bc614a85852d6a2f9fb85 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/Gyroscopes/Gyroscope.cs b/Assets/Project/Source/Grids/Blocks/BlockTypes/Gyroscopes/Gyroscope.cs deleted file mode 100644 index ba4cde2a..00000000 --- a/Assets/Project/Source/Grids/Blocks/BlockTypes/Gyroscopes/Gyroscope.cs +++ /dev/null @@ -1,21 +0,0 @@ -using Exa.Grids.Blocks.Components; -using System.Collections.Generic; -using System.Linq; -using UnityEngine; - -#pragma warning disable CS0649 - -namespace Exa.Grids.Blocks.BlockTypes -{ - public class Gyroscope : Block, IBehaviourMarker - { - [SerializeField] private GyroscopeBehaviour gyroscopeBehaviour; - - BlockBehaviour IBehaviourMarker.Component => gyroscopeBehaviour; - - public override IEnumerable GetBehaviours() { - return base.GetBehaviours() - .Append(gyroscopeBehaviour); - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/Gyroscopes/Gyroscope.cs.meta b/Assets/Project/Source/Grids/Blocks/BlockTypes/Gyroscopes/Gyroscope.cs.meta deleted file mode 100644 index bbe39d83..00000000 --- a/Assets/Project/Source/Grids/Blocks/BlockTypes/Gyroscopes/Gyroscope.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 2f121ac56bbdea54b8f616cacba87458 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/Gyroscopes/GyroscopeTemplate.cs b/Assets/Project/Source/Grids/Blocks/BlockTypes/Gyroscopes/GyroscopeTemplate.cs deleted file mode 100644 index 33f5c5d8..00000000 --- a/Assets/Project/Source/Grids/Blocks/BlockTypes/Gyroscopes/GyroscopeTemplate.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Exa.Grids.Blocks.Components; -using System; -using System.Collections.Generic; -using System.Linq; -using UnityEngine; - -namespace Exa.Grids.Blocks.BlockTypes -{ - [Serializable] - [CreateAssetMenu(menuName = "Grids/Blocks/Gyroscope")] - public class GyroscopeTemplate : BlockTemplate - { - [SerializeField] protected GyroscopeTemplatePartial gyroscopeTemplatePartial; - - public override IEnumerable GetTemplatePartials() { - return base.GetTemplatePartials() - .Append(gyroscopeTemplatePartial); - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/IBlock.cs b/Assets/Project/Source/Grids/Blocks/BlockTypes/IBlock.cs deleted file mode 100644 index db2fc95f..00000000 --- a/Assets/Project/Source/Grids/Blocks/BlockTypes/IBlock.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Exa.Grids.Blocks -{ - /// - /// Supports a block monoBehaviour - /// - public interface IBlock - { } -} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/IBlock.cs.meta b/Assets/Project/Source/Grids/Blocks/BlockTypes/IBlock.cs.meta deleted file mode 100644 index 6a25ccb1..00000000 --- a/Assets/Project/Source/Grids/Blocks/BlockTypes/IBlock.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: d4000a5311b974b4b8f78937fd68f872 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/PowerGeneratorTemplate.cs b/Assets/Project/Source/Grids/Blocks/BlockTypes/PowerGeneratorTemplate.cs new file mode 100644 index 00000000..62c279e8 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/BlockTypes/PowerGeneratorTemplate.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Exa.Grids.Blocks.Components; +using UnityEngine; + +namespace Exa.Grids.Blocks.BlockTypes { + [Serializable] + [CreateAssetMenu(menuName = "Grids/Blocks/PowerGenerator")] + public class PowerGeneratorTemplate : BlockTemplate { + [SerializeField] private TemplatePartial powerGeneratorPartial; + + public override IEnumerable GetTemplatePartials() { + return base.GetTemplatePartials().Append(powerGeneratorPartial); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/Generators/PowerGeneratorTemplate.cs.meta b/Assets/Project/Source/Grids/Blocks/BlockTypes/PowerGeneratorTemplate.cs.meta similarity index 100% rename from Assets/Project/Source/Grids/Blocks/BlockTypes/Generators/PowerGeneratorTemplate.cs.meta rename to Assets/Project/Source/Grids/Blocks/BlockTypes/PowerGeneratorTemplate.cs.meta diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/ShieldGeneratorTemplate.cs b/Assets/Project/Source/Grids/Blocks/BlockTypes/ShieldGeneratorTemplate.cs new file mode 100644 index 00000000..441ac3f0 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/BlockTypes/ShieldGeneratorTemplate.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Exa.Grids.Blocks.Components; +using UnityEngine; + +namespace Exa.Grids.Blocks.BlockTypes { + [Serializable] + [CreateAssetMenu(menuName = "Grids/Blocks/ShieldGenerator")] + public class ShieldGeneratorTemplate : BlockTemplate { + [SerializeField] protected TemplatePartial shieldGeneratorPartial; + + public override IEnumerable GetTemplatePartials() { + return base.GetTemplatePartials().Append(shieldGeneratorPartial); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/ShieldGeneratorTemplate.cs.meta b/Assets/Project/Source/Grids/Blocks/BlockTypes/ShieldGeneratorTemplate.cs.meta new file mode 100644 index 00000000..ec7e3d84 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/BlockTypes/ShieldGeneratorTemplate.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: f16438f0353e4382b0fcd91150af41f4 +timeCreated: 1625831841 \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/ShipControllerTemplate.cs b/Assets/Project/Source/Grids/Blocks/BlockTypes/ShipControllerTemplate.cs new file mode 100644 index 00000000..537dcd49 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/BlockTypes/ShipControllerTemplate.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Exa.Grids.Blocks.Components; +using UnityEngine; + +namespace Exa.Grids.Blocks.BlockTypes { + [Serializable] + [CreateAssetMenu(menuName = "Grids/Blocks/ShipController")] + public class ShipControllerTemplate : BlockTemplate { + [SerializeField] private TemplatePartial shipControllerPartial; + + public override IEnumerable GetTemplatePartials() { + return base.GetTemplatePartials().Append(shipControllerPartial); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/ShipControllerTemplate.cs.meta b/Assets/Project/Source/Grids/Blocks/BlockTypes/ShipControllerTemplate.cs.meta new file mode 100644 index 00000000..b9cbc008 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/BlockTypes/ShipControllerTemplate.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ccb7e6c2f1d5ffc47978c443fc0e9c85 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/StationControllerTemplate.cs b/Assets/Project/Source/Grids/Blocks/BlockTypes/StationControllerTemplate.cs new file mode 100644 index 00000000..16005141 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/BlockTypes/StationControllerTemplate.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Exa.Grids.Blocks.Components; +using UnityEngine; + +namespace Exa.Grids.Blocks.BlockTypes { + [Serializable] + [CreateAssetMenu(menuName = "Grids/Blocks/ShipController")] + public abstract class StationControllerTemplate : BlockTemplate { + [SerializeField] private TemplatePartial stationControllerPartial; + + public override IEnumerable GetTemplatePartials() { + return base.GetTemplatePartials().Append(stationControllerPartial); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/StationControllerTemplate.cs.meta b/Assets/Project/Source/Grids/Blocks/BlockTypes/StationControllerTemplate.cs.meta new file mode 100644 index 00000000..cb268ede --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/BlockTypes/StationControllerTemplate.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a5e605a89436f3e45a7fdf1619154347 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/Thruster.meta b/Assets/Project/Source/Grids/Blocks/BlockTypes/Thruster.meta deleted file mode 100644 index 4e9424bc..00000000 --- a/Assets/Project/Source/Grids/Blocks/BlockTypes/Thruster.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: d24e7852253ff36438c106d087a527d2 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/Thruster/IThruster.cs b/Assets/Project/Source/Grids/Blocks/BlockTypes/Thruster/IThruster.cs deleted file mode 100644 index 51f40f5d..00000000 --- a/Assets/Project/Source/Grids/Blocks/BlockTypes/Thruster/IThruster.cs +++ /dev/null @@ -1,10 +0,0 @@ -using Exa.Grids.Blocks.Components; - -namespace Exa.Grids.Blocks.BlockTypes -{ - public interface IThruster : IBehaviourMarker - { - void Fire(float strength); - void PowerDown(); - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/Thruster/IThruster.cs.meta b/Assets/Project/Source/Grids/Blocks/BlockTypes/Thruster/IThruster.cs.meta deleted file mode 100644 index 9a35809f..00000000 --- a/Assets/Project/Source/Grids/Blocks/BlockTypes/Thruster/IThruster.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 1d5bf59f44315414696456f782e70ade -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/Thruster/Thruster.cs b/Assets/Project/Source/Grids/Blocks/BlockTypes/Thruster/Thruster.cs deleted file mode 100644 index 714e7c74..00000000 --- a/Assets/Project/Source/Grids/Blocks/BlockTypes/Thruster/Thruster.cs +++ /dev/null @@ -1,37 +0,0 @@ -using Exa.Grids.Blocks.Components; -using UnityEngine; -using System.Collections.Generic; -using System.Linq; - -#pragma warning disable CS0649 - -namespace Exa.Grids.Blocks.BlockTypes -{ - public class Thruster : Block, IThruster - { - [SerializeField] private ThrusterBehaviour thrusterBehaviour; - - BlockBehaviour IBehaviourMarker.Component => thrusterBehaviour; - - public void Fire(float strength) { - thrusterBehaviour.Fire(strength); - } - - public void PowerDown() { - thrusterBehaviour.PowerDown(); - } - - public override IEnumerable GetBehaviours() { - return base.GetBehaviours() - .Append(thrusterBehaviour); - } - - protected override void OnAdd() { - Ship?.Navigation.ThrustVectors.Register(this); - } - - protected override void OnRemove() { - Ship?.Navigation.ThrustVectors.Unregister(this); - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/Thruster/Thruster.cs.meta b/Assets/Project/Source/Grids/Blocks/BlockTypes/Thruster/Thruster.cs.meta deleted file mode 100644 index 2ae843cf..00000000 --- a/Assets/Project/Source/Grids/Blocks/BlockTypes/Thruster/Thruster.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 9b8bf23e4f8c54741bedd0530d578e07 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/Thruster/ThrusterTemplate.cs b/Assets/Project/Source/Grids/Blocks/BlockTypes/Thruster/ThrusterTemplate.cs deleted file mode 100644 index 64a59219..00000000 --- a/Assets/Project/Source/Grids/Blocks/BlockTypes/Thruster/ThrusterTemplate.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Exa.Grids.Blocks.Components; -using System; -using System.Collections.Generic; -using System.Linq; -using UnityEngine; - -namespace Exa.Grids.Blocks.BlockTypes -{ - [Serializable] - [CreateAssetMenu(menuName = "Grids/Blocks/Thruster")] - public class ThrusterTemplate : BlockTemplate - { - [SerializeField] protected ThrusterTemplatePartial thrusterTemplatePartial; - - public override IEnumerable GetTemplatePartials() { - return base.GetTemplatePartials() - .Append(thrusterTemplatePartial); - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/ThrusterTemplate.cs b/Assets/Project/Source/Grids/Blocks/BlockTypes/ThrusterTemplate.cs new file mode 100644 index 00000000..28ec4d3c --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/BlockTypes/ThrusterTemplate.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Exa.Grids.Blocks.Components; +using UnityEngine; + +namespace Exa.Grids.Blocks.BlockTypes { + [Serializable] + [CreateAssetMenu(menuName = "Grids/Blocks/Thruster")] + public class ThrusterTemplate : BlockTemplate { + [SerializeField] private TemplatePartial thrusterPartial; + + public override IEnumerable GetTemplatePartials() { + return base.GetTemplatePartials().Append(thrusterPartial); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/Thruster/ThrusterTemplate.cs.meta b/Assets/Project/Source/Grids/Blocks/BlockTypes/ThrusterTemplate.cs.meta similarity index 100% rename from Assets/Project/Source/Grids/Blocks/BlockTypes/Thruster/ThrusterTemplate.cs.meta rename to Assets/Project/Source/Grids/Blocks/BlockTypes/ThrusterTemplate.cs.meta diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/Turret.meta b/Assets/Project/Source/Grids/Blocks/BlockTypes/Turret.meta deleted file mode 100644 index a2acfbe2..00000000 --- a/Assets/Project/Source/Grids/Blocks/BlockTypes/Turret.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: fb2747fb0d4af714ab9e4553ebd94968 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/Turret/Autocannon.cs b/Assets/Project/Source/Grids/Blocks/BlockTypes/Turret/Autocannon.cs deleted file mode 100644 index 046601c7..00000000 --- a/Assets/Project/Source/Grids/Blocks/BlockTypes/Turret/Autocannon.cs +++ /dev/null @@ -1,27 +0,0 @@ -using Exa.Grids.Blocks.Components; -using Exa.Ships.Targeting; -using System.Collections.Generic; -using System.Linq; -using UnityEngine; - -#pragma warning disable CS0649 - -namespace Exa.Grids.Blocks.BlockTypes -{ - public class Autocannon : Block, IBehaviourMarker, ITurret - { - [SerializeField] private AutocannonBehaviour turretBehaviour; - - BlockBehaviour IBehaviourMarker.Component => turretBehaviour; - public ITurretValues Data => (this as IBehaviourMarker).Component.Data; - - public override IEnumerable GetBehaviours() { - return base.GetBehaviours() - .Append(turretBehaviour); - } - - public void SetTarget(IWeaponTarget target) { - turretBehaviour.Target = target; - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/Turret/Autocannon.cs.meta b/Assets/Project/Source/Grids/Blocks/BlockTypes/Turret/Autocannon.cs.meta deleted file mode 100644 index cccad430..00000000 --- a/Assets/Project/Source/Grids/Blocks/BlockTypes/Turret/Autocannon.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 5d4fe6b84b5324d48981aae79996f322 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/Turret/AutocannonTemplate.cs b/Assets/Project/Source/Grids/Blocks/BlockTypes/Turret/AutocannonTemplate.cs deleted file mode 100644 index 3a09cbb9..00000000 --- a/Assets/Project/Source/Grids/Blocks/BlockTypes/Turret/AutocannonTemplate.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Exa.Grids.Blocks.Components; -using System; -using System.Collections.Generic; -using System.Linq; -using UnityEngine; - -namespace Exa.Grids.Blocks.BlockTypes -{ - [Serializable] - [CreateAssetMenu(menuName = "Grids/Blocks/Autocannon")] - public class AutocannonTemplate : BlockTemplate - { - [SerializeField] private AutocannonTemplatePartial autocannonTemplatePartial; - - public override IEnumerable GetTemplatePartials() { - return base.GetTemplatePartials() - .Append(autocannonTemplatePartial); - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/Turret/ITurret.cs b/Assets/Project/Source/Grids/Blocks/BlockTypes/Turret/ITurret.cs deleted file mode 100644 index 9072ae5a..00000000 --- a/Assets/Project/Source/Grids/Blocks/BlockTypes/Turret/ITurret.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Exa.Grids.Blocks.Components; -using Exa.Ships.Targeting; - -namespace Exa.Grids.Blocks.BlockTypes -{ - public interface ITurret - { - ITurretValues Data { get; } - void SetTarget(IWeaponTarget target); - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/BlockTypes/Turret/ITurret.cs.meta b/Assets/Project/Source/Grids/Blocks/BlockTypes/Turret/ITurret.cs.meta deleted file mode 100644 index 83c8b5c3..00000000 --- a/Assets/Project/Source/Grids/Blocks/BlockTypes/Turret/ITurret.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 0e3967447f73d0343ab47388738ab074 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/BlockValuesStore.cs b/Assets/Project/Source/Grids/Blocks/BlockValuesStore.cs index 5b6756c5..82119bc5 100644 --- a/Assets/Project/Source/Grids/Blocks/BlockValuesStore.cs +++ b/Assets/Project/Source/Grids/Blocks/BlockValuesStore.cs @@ -1,13 +1,14 @@ -using Exa.Grids.Blocks.BlockTypes; +using System; using System.Collections.Generic; -using System; +using System.Linq; +using Exa.Grids.Blocks.BlockTypes; using Exa.Grids.Blocks.Components; +using Exa.Research; using Exa.UI.Tooltips; +using Exa.Utils; -namespace Exa.Grids.Blocks -{ - public class BlockValuesStore - { +namespace Exa.Grids.Blocks { + public class BlockValuesStore { private readonly Dictionary contextDict; public BlockValuesStore() { @@ -21,45 +22,94 @@ public void Register(BlockContext blockContext, BlockTemplate blockTemplate) { throw new ArgumentException("Block template with given Id is already registered"); } + // Create a bundle with an empty cache, as research modifiers may yet still be applied var bundle = new TemplateBundle { template = blockTemplate, - valuesCache = GetValues(blockContext, blockTemplate), - valuesAreDirty = false + valuesCache = null, + valuesAreDirty = true }; templateDict.Add(blockTemplate, bundle); } - public void SetDirty(BlockContext blockContext, BlockTemplate blockTemplate) { - var bundle = contextDict[blockContext][blockTemplate]; - bundle.valuesAreDirty = true; - bundle.tooltip.ShouldRefresh = true; + public void SetDirty(BlockContext blockContext, IBlockComponentModifier modifier) { + foreach (var dirtyBundle in FindBundles(blockContext, modifier)) { + dirtyBundle.valuesAreDirty = true; + dirtyBundle.tooltip.ShouldRefresh = true; + } } public Tooltip GetTooltip(BlockContext blockContext, BlockTemplate blockTemplate) { - return contextDict[blockContext][blockTemplate].tooltip; + return GetUpdatedBundle(blockContext, blockTemplate).tooltip; + } + + public T GetValues(BlockContext blockContext, BlockTemplate blockTemplate) + where T : IBlockComponentValues { + var bundle = GetUpdatedBundle(blockContext, blockTemplate); + + foreach (var value in bundle.valuesCache.Values) { + if (value is T convertedValue) { + return convertedValue; + } + } + + throw new KeyNotFoundException($"Values of type {typeof(T)} was not found on block {blockTemplate}"); + } + + public bool TryGetValues(BlockContext blockContext, BlockTemplate blockTemplate, out T output) + where T : struct, IBlockComponentValues { + var bundle = GetUpdatedBundle(blockContext, blockTemplate); + + foreach (var value in bundle.valuesCache.Values) { + if (value.GetType() == typeof(T)) { + output = (T) value; + + return true; + } + } + + output = default; + + return true; } public void SetValues(BlockContext blockContext, BlockTemplate blockTemplate, Block block) { - var bundle = contextDict[blockContext][blockTemplate]; + var bundle = GetUpdatedBundle(blockContext, blockTemplate); + bundle.valuesCache.ApplyValues(block); + } + + private TemplateBundle GetUpdatedBundle(BlockContext blockContext, BlockTemplate blockTemplate) { + if (!contextDict.TryGetValue(blockContext, out var contextDictionary)) { + throw new KeyNotFoundException($"Block context: {blockContext} not registered"); + } + + if (!contextDictionary.TryGetValue(blockTemplate, out var bundle)) { + throw new KeyNotFoundException($"Block template: {blockTemplate} not registered"); + } if (bundle.valuesAreDirty) { - bundle.valuesCache = GetValues(blockContext, bundle.template); + bundle.valuesCache = ComputeValues(blockContext, bundle.template); bundle.valuesAreDirty = false; } - bundle.valuesCache.ApplyValues(block); + return bundle; } - private TemplateValuesCache GetValues(BlockContext blockContext, BlockTemplate template) { + /// + /// Computes the template values cache for a given template in a given block context + /// + /// Block context + /// Block template + /// + /// + private TemplateValuesCache ComputeValues(BlockContext blockContext, BlockTemplate template) { var dict = new TemplateValuesCache(); foreach (var partial in template.GetTemplatePartials()) { try { - var data = partial.GetValues(blockContext); + var data = partial.GetContextfulValues(blockContext); dict.Add(partial, data); - } - catch (Exception e) { + } catch (Exception e) { throw new Exception($"Exception while setting values of {partial.GetType().Name} partial", e); } } @@ -75,41 +125,47 @@ private BundleDictionary EnsureCreated(BlockContext blockContext) { return contextDict[blockContext]; } - private class BundleDictionary : Dictionary - { } + private IEnumerable FindBundles(BlockContext context, IBlockComponentModifier modifier) { + bool Filter(TemplateBundle bundle) { + return modifier.AffectsTemplate(bundle.template); + } + + return contextDict[context].Values.Where(Filter); + } + + private class BundleDictionary : Dictionary { } - private class TemplateValuesCache : Dictionary - { + private class TemplateValuesCache : Dictionary { public void ApplyValues(Block block) { - foreach (var kvp in this) { - var templatePartial = kvp.Key; - var values = kvp.Value; + foreach (var (templatePartial, values) in this.Unpack()) { templatePartial.SetValues(block, values); } } } - private class TemplateBundle - { + private class TemplateBundle { + public readonly Tooltip tooltip; public BlockTemplate template; - public TemplateValuesCache valuesCache; public bool valuesAreDirty; - public readonly Tooltip tooltip; + public TemplateValuesCache valuesCache; public TemplateBundle() { tooltip = new Tooltip(GetTooltipGroup); } - private TooltipGroup GetTooltipGroup() => new TooltipGroup(SelectTooltipComponents()); + private TooltipGroup GetTooltipGroup() { + return new TooltipGroup(SelectTooltipComponents()); + } private IEnumerable SelectTooltipComponents() { var components = new List { - new TooltipTitle(template.displayId) + new TooltipTitle(template.displayId), + template.metadata.blockCosts }; foreach (var componentData in valuesCache.Values) { components.Add(new TooltipSpacer()); - components.AddRange(componentData.GetTooltipComponents()); + components.Add(new TooltipGroup(componentData.GetTooltipComponents(), 0, 8)); } return components; diff --git a/Assets/Project/Source/Grids/Blocks/Components/BlockBehaviour.cs b/Assets/Project/Source/Grids/Blocks/Components/BlockBehaviour.cs index 647e0ae0..133e9b88 100644 --- a/Assets/Project/Source/Grids/Blocks/Components/BlockBehaviour.cs +++ b/Assets/Project/Source/Grids/Blocks/Components/BlockBehaviour.cs @@ -1,62 +1,107 @@ -using System.Runtime.CompilerServices; -using Exa.Ships; +using System; using Exa.Grids.Blocks.BlockTypes; +using Exa.Ships; using UnityEngine; -namespace Exa.Grids.Blocks.Components -{ - public abstract class BlockBehaviour : BlockBehaviourBase - where T : struct, IBlockComponentValues - { - [SerializeField] protected T data; +namespace Exa.Grids.Blocks.Components { + public abstract class BlockBehaviour : BlockBehaviour + where T : struct, IBlockComponentValues { + [NonSerialized] protected T data; public T Data { get => data; - set => data = value; + set { + var copy = data; + data = value; + + #if UNITY_EDITOR + if (Application.isPlaying) { + OnBlockDataReceived(copy, data); + } + #else + OnBlockDataReceived(copy, data); + #endif + } + } + + public override IBlockComponentValues BlockComponentData { + get => Data; + set => Data = (T) value; + } + + public T GetDefaultData() { + var context = block.Parent.BlockContext; + var template = block.BlueprintBlock.Template; + var store = S.Blocks.Values; + var success = store.TryGetValues(context, template, out var result); + + return success ? result : throw new InvalidOperationException("Could not find default values"); + } + + public sealed override void NotifyRemoved() { + OnRemove(); + OnBlockDataReceived(data, default); + } + + public override void MockSetValues() { + OnBlockDataReceived(default, data); + } + + public override Type GetDataType() { + return typeof(T); } - public override IBlockComponentValues BlockComponentData => data; + protected virtual void OnBlockDataReceived(T oldValues, T newValues) { } } - public abstract class BlockBehaviourBase : MonoBehaviour - { + public abstract class BlockBehaviour : MonoBehaviour, IBlockComponentContainer { [HideInInspector] public Block block; - private IGridInstance parent; + private bool forceActive; - public abstract IBlockComponentValues BlockComponentData { get; } + public abstract IBlockComponentValues BlockComponentData { get; set; } - public IGridInstance Parent - { - get => parent; - set - { - if (parent == value) return; + public Block Block { + get => block; + } - if (parent != null) { - OnRemove(); - } + #if UNITY_EDITOR + protected bool DebugFocused { + get => block.DebugFocused; + } + #endif + + public IGridInstance Parent { + get => block.Parent; + } - parent = value; + public GridInstance GridInstance { + get => Parent as GridInstance; + } - if (parent != null) { - OnAdd(); - } - } + public void NotifyAdded() { + OnAdd(); } - public Ship Ship => Parent as Ship; + public abstract void NotifyRemoved(); private void Update() { - if (Ship && Ship.Active) + if (forceActive || GridInstance && GridInstance.Active) { BlockUpdate(); + } } - protected virtual void BlockUpdate() { - - } + protected virtual void BlockUpdate() { } protected virtual void OnAdd() { } protected virtual void OnRemove() { } + + public void ForceActive() { + forceActive = true; + } + + public abstract void MockSetValues(); + + public abstract Type GetDataType(); } } \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/Controller/ControllerBehaviour.cs b/Assets/Project/Source/Grids/Blocks/Components/Controller/ControllerBehaviour.cs deleted file mode 100644 index 2a52b7d9..00000000 --- a/Assets/Project/Source/Grids/Blocks/Components/Controller/ControllerBehaviour.cs +++ /dev/null @@ -1,5 +0,0 @@ -namespace Exa.Grids.Blocks.Components -{ - public class ControllerBehaviour : BlockBehaviour - { } -} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/Controller/ControllerBehaviour.cs.meta b/Assets/Project/Source/Grids/Blocks/Components/Controller/ControllerBehaviour.cs.meta deleted file mode 100644 index 8d1cff24..00000000 --- a/Assets/Project/Source/Grids/Blocks/Components/Controller/ControllerBehaviour.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 3e83929f83919b44fb9534624d29b042 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/Components/Controller/ControllerData.cs b/Assets/Project/Source/Grids/Blocks/Components/Controller/ControllerData.cs deleted file mode 100644 index 9b5c452d..00000000 --- a/Assets/Project/Source/Grids/Blocks/Components/Controller/ControllerData.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System; -using Exa.Generics; -using Exa.UI.Tooltips; -using System.Collections.Generic; -using Exa.Data; - -namespace Exa.Grids.Blocks.Components -{ - [Serializable] - public struct ControllerData : IBlockComponentValues - { - public float powerGeneration; - public float powerConsumption; - public float powerStorage; - public float turningRate; - public Scalar thrustModifier; - - public void AddGridTotals(GridTotals totals) { - totals.controllerData = this; - } - - public void RemoveGridTotals(GridTotals totals) { } - - public IEnumerable GetTooltipComponents() => new ITooltipComponent[] { - new LabeledValue("Generation", $"{powerGeneration} KW"), - new LabeledValue("Consumption", $"{powerConsumption} KW"), - new LabeledValue("Storage", $"{powerStorage} KJ"), - new LabeledValue("Turning rate", $"{turningRate}"), - new LabeledValue("Thrust modifier", $"{thrustModifier.ToPercentageString()}") - }; - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/Controller/ControllerData.cs.meta b/Assets/Project/Source/Grids/Blocks/Components/Controller/ControllerData.cs.meta deleted file mode 100644 index 6b75d28c..00000000 --- a/Assets/Project/Source/Grids/Blocks/Components/Controller/ControllerData.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 67883e1f41c3e9d428b022c0fe72696a -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/Components/Controller/ControllerTemplatePartial.cs b/Assets/Project/Source/Grids/Blocks/Components/Controller/ControllerTemplatePartial.cs deleted file mode 100644 index c92262f2..00000000 --- a/Assets/Project/Source/Grids/Blocks/Components/Controller/ControllerTemplatePartial.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using Exa.Data; -using UnityEngine; - -namespace Exa.Grids.Blocks.Components -{ - [Serializable] - public class ControllerTemplatePartial : TemplatePartial - { - [SerializeField] private float powerGeneration; - [SerializeField] private float powerConsumption; - [SerializeField] private float powerStorage; - [SerializeField] private float turningRate; - [SerializeField] private Scalar thrustModifier; - - public override ControllerData Convert() => new ControllerData { - powerGeneration = powerGeneration, - powerConsumption = powerConsumption, - powerStorage = powerStorage, - turningRate = turningRate, - thrustModifier = thrustModifier - }; - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/Controller/ControllerTemplatePartial.cs.meta b/Assets/Project/Source/Grids/Blocks/Components/Controller/ControllerTemplatePartial.cs.meta deleted file mode 100644 index 29202267..00000000 --- a/Assets/Project/Source/Grids/Blocks/Components/Controller/ControllerTemplatePartial.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 6c69418e2b59ca64fa9463d73e8a2359 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/Components/Controller/IControllerData.cs b/Assets/Project/Source/Grids/Blocks/Components/Controller/IControllerData.cs new file mode 100644 index 00000000..797031ee --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/Controller/IControllerData.cs @@ -0,0 +1,3 @@ +namespace Exa.Grids.Blocks.Components { + public interface IControllerData : IBlockComponentValues { } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/Controller/IControllerData.cs.meta b/Assets/Project/Source/Grids/Blocks/Components/Controller/IControllerData.cs.meta new file mode 100644 index 00000000..59329f71 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/Controller/IControllerData.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 23305fdf711443159c3c1c01163f4441 +timeCreated: 1616856109 \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/Controller/ShipController.meta b/Assets/Project/Source/Grids/Blocks/Components/Controller/ShipController.meta new file mode 100644 index 00000000..9cba6de3 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/Controller/ShipController.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2e6a2ddda426ee141914d694546b7e97 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/Components/Controller/ShipController/ShipControllerBehaviour.cs b/Assets/Project/Source/Grids/Blocks/Components/Controller/ShipController/ShipControllerBehaviour.cs new file mode 100644 index 00000000..2090bd1b --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/Controller/ShipController/ShipControllerBehaviour.cs @@ -0,0 +1,3 @@ +namespace Exa.Grids.Blocks.Components { + public class ShipControllerBehaviour : BlockBehaviour { } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/Controller/ShipController/ShipControllerBehaviour.cs.meta b/Assets/Project/Source/Grids/Blocks/Components/Controller/ShipController/ShipControllerBehaviour.cs.meta new file mode 100644 index 00000000..be2d913a --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/Controller/ShipController/ShipControllerBehaviour.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e09d2b9e430459546a4832f13f7ce5f7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/Components/Controller/ShipController/ShipControllerData.cs b/Assets/Project/Source/Grids/Blocks/Components/Controller/ShipController/ShipControllerData.cs new file mode 100644 index 00000000..cb5a4878 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/Controller/ShipController/ShipControllerData.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using Exa.Data; +using Exa.Math; +using Exa.Types.Generics; +using Exa.UI.Tooltips; +using UnityEngine.Serialization; + +namespace Exa.Grids.Blocks.Components { + [Serializable] + public struct ShipControllerData : IControllerData { + [FormerlySerializedAs("powerGenerationModifier")] public float powerGeneration; + [FormerlySerializedAs("turningPowerModifier")] public float torque; + + public void AddGridTotals(GridTotals totals) { + totals.UnscaledPowerGeneration += powerGeneration; + totals.UnscaledTorque += torque; + } + + public void RemoveGridTotals(GridTotals totals) { + totals.UnscaledPowerGeneration -= powerGeneration; + totals.UnscaledTorque -= torque; + } + + public IEnumerable GetTooltipComponents() { + return new ITooltipComponent[] { + new LabeledValue("Power generation", powerGeneration.ToPercentageString()), + new LabeledValue("Torque", torque.ToPercentageString()) + }; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/Controller/ShipController/ShipControllerData.cs.meta b/Assets/Project/Source/Grids/Blocks/Components/Controller/ShipController/ShipControllerData.cs.meta new file mode 100644 index 00000000..4e026353 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/Controller/ShipController/ShipControllerData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3e42050743bc90041b939d361e9c44c7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/Components/Controller/StationController.meta b/Assets/Project/Source/Grids/Blocks/Components/Controller/StationController.meta new file mode 100644 index 00000000..6eeb4f2b --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/Controller/StationController.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1620efb28003d854a9cfb52b6c80b0fc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/Components/Controller/StationController/GaussCannon.meta b/Assets/Project/Source/Grids/Blocks/Components/Controller/StationController/GaussCannon.meta new file mode 100644 index 00000000..f131d68a --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/Controller/StationController/GaussCannon.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6bd223385c41cc44b8f03e36d3160d8f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/Components/Controller/StationController/GaussCannon/GaussCannonBehaviour.cs b/Assets/Project/Source/Grids/Blocks/Components/Controller/StationController/GaussCannon/GaussCannonBehaviour.cs new file mode 100644 index 00000000..53d2d8c7 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/Controller/StationController/GaussCannon/GaussCannonBehaviour.cs @@ -0,0 +1,194 @@ +using System; +using DG.Tweening; +using Exa.Audio; +using Exa.Math; +using Exa.Types.Generics; +using Exa.UI.Cursor; +using Exa.UI.Tweening; +using Exa.Utils; +using Exa.VFX; +using UnityEngine; + +#pragma warning disable 649 + +namespace Exa.Grids.Blocks.Components { + public class GaussCannonBehaviour : ChargeableTurretBehaviour { + private static readonly int Charge = Animator.StringToHash("Charge"); + private static readonly int CancelCharge = Animator.StringToHash("CancelCharge"); + private static readonly int ChargeDecaySpeed = Animator.StringToHash("ChargeDecaySpeed"); + private static readonly int ChargeSpeed = Animator.StringToHash("ChargeSpeed"); + + public static readonly int StepCount = 3; + public static readonly float StepSize = 1f / 3f; + + [Header("References")] + [SerializeField] private Animator coilAnimator; + [SerializeField] private Animator gunOverlayAnimator; + [SerializeField] private Transform beamOrigin; + [SerializeField] private GaussCannonArcs arcs; + [SerializeField] private LineRenderer lineRenderer; + + [Header("Audio")] + [SerializeField] private LocalAudioPlayerProxy audioPlayer; + [SerializeField] private Sound charge; + [SerializeField] private Sound coilCharge1; + [SerializeField] private Sound coilCharge2; + [SerializeField] private Sound coilCharge3; + [SerializeField] private Sound electricityLoop; + [SerializeField] private Sound fire; + [SerializeField] private Sound windDown; + + [Header("Settings")] + [SerializeField] private ExaEase progressToElectricityVolume; + [SerializeField] private ValueOverride cursorFacade; + + private SoundHandle fireSoundHandle; + private SoundHandle electricityLoopHandle; + + private int prevCoilStep = -1; + + protected override bool CanResumeCharge { + get => true; + } + + protected override float GetCooldownTime { + get => data.chargeTime * 2f; + } + + private void Awake() { + cursorFacade.Value.Init(S.UI.MouseCursor.VirtualMouseCursor, this); + } + + public override void StartCharge() { + if (IsCoolingDown) { + return; + } + + base.StartCharge(); + + if (chargeTime == 0f) { + S.UI.MouseCursor.CurrentCursor.CursorFacades?.Add(cursorFacade); + } + + var pos = GetNormalizedChargeProgress(); + coilAnimator.Play(Charge, 0, pos); + gunOverlayAnimator.Play(Charge, 0, pos); + + fireSoundHandle = audioPlayer.Play(charge, pos); + electricityLoopHandle = audioPlayer.Play(electricityLoop, pos); + } + + public override void EndCharge() { + if (IsCoolingDown) { + return; + } + + if (charging) { + var pos = 1f - GetNormalizedChargeProgress(); + coilAnimator.Play(CancelCharge, 0, pos); + gunOverlayAnimator.Play(CancelCharge, 0, pos); + + fireSoundHandle?.Stop(); + fireSoundHandle = null; + } + + audioPlayer.Play(windDown); + + base.EndCharge(); + } + + protected override void BlockUpdate() { + var prevChargeTime = chargeTime; + + base.BlockUpdate(); + + if (prevChargeTime != chargeTime) { + var progress = GetNormalizedChargeProgress(); + + HandleSound(progress); + + if (cursorFacade.Value.Enabled) { + cursorFacade.Value.Update(progress, IsCoolingDown); + } + + if (electricityLoopHandle != null) { + electricityLoopHandle.audioSource.volume = progressToElectricityVolume.Evaluate(progress); + } + + // Reset coil step and arcs when reaching 0 charge progress + if (progress == 0f) { + prevCoilStep = -1; + arcs.Reset(); + + // Remove if using a virtual cursor + S.UI.MouseCursor.CurrentCursor.CursorFacades?.Remove(cursorFacade); + + if (!charging) { + electricityLoopHandle?.Stop(); + electricityLoopHandle = null; + } + } + + arcs.SetChargeProgress(progress); + } + } + + public override void Fire() { + base.Fire(); + + prevCoilStep = -1; + arcs.Reset(); + + audioPlayer.Play(fire); + + var endPoint = HitScanFire(Data.damage, Data.Range, beamOrigin); + + lineRenderer.SetPosition(0, beamOrigin.position.SetZ(-0.2f)); + lineRenderer.SetPosition(1, endPoint.SetZ(-0.2f)); + + lineRenderer.gameObject.SetActive(true); + lineRenderer.widthMultiplier = 1.5f; + + lineRenderer.DOWidthMultiplier(0.5f, 0.5f) + .OnComplete(() => lineRenderer.gameObject.SetActive(false)); + } + + protected override void OnAdd() { + base.OnAdd(); + + var chargeSpeed = 1f / Data.chargeTime; + coilAnimator.SetFloat(ChargeSpeed, chargeSpeed); + coilAnimator.SetFloat(ChargeDecaySpeed, chargeSpeed * chargeDecaySpeed); + gunOverlayAnimator.SetFloat(ChargeSpeed, chargeSpeed); + gunOverlayAnimator.SetFloat(ChargeDecaySpeed, chargeSpeed * chargeDecaySpeed); + + arcs.RandomizeMaterials(); + } + + protected override void OnRemove() { + base.OnRemove(); + + // Remove if still present + if (cursorFacade.Value.Enabled) { + S.UI.MouseCursor.CurrentCursor.CursorFacades?.Remove(cursorFacade); + } + } + + private void HandleSound(float progress) { + var coilStep = progress.DivRem(1f / 3f); + + if (charging && prevCoilStep < coilStep) { + var sound = coilStep switch { + 0 => coilCharge1, + 1 => coilCharge2, + 2 => coilCharge3, + _ => throw new ArgumentException("Invalid coilStep", nameof(coilStep)) + }; + + audioPlayer.Play(sound); + } + + prevCoilStep = coilStep; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/Controller/StationController/GaussCannon/GaussCannonBehaviour.cs.meta b/Assets/Project/Source/Grids/Blocks/Components/Controller/StationController/GaussCannon/GaussCannonBehaviour.cs.meta new file mode 100644 index 00000000..51c71799 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/Controller/StationController/GaussCannon/GaussCannonBehaviour.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 152ca4b076055bb42bbfc90d24329297 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/Components/Controller/StationController/GaussCannon/GaussCannonData.cs b/Assets/Project/Source/Grids/Blocks/Components/Controller/StationController/GaussCannon/GaussCannonData.cs new file mode 100644 index 00000000..9d92825f --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/Controller/StationController/GaussCannon/GaussCannonData.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using Exa.Types.Generics; +using Exa.UI.Tooltips; + +namespace Exa.Grids.Blocks.Components { + [Serializable] + public struct GaussCannonData : IChargeableTurretValues { + public float turningRate; + public float turretArc; + public float turretRadius; + public float damage; + public float chargeTime; + public float range; + + public float Range { + get => range; + } + + public float TurningRate { + get => turningRate; + } + + public float FiringRate { + get => 0f; + } + + public float TurretArc { + get => turretArc; + } + + public float TurretRadius { + get => turretRadius; + } + + public float ChargeTime { + get => chargeTime; + } + + public void AddGridTotals(GridTotals totals) { } + + public void RemoveGridTotals(GridTotals totals) { } + + public IEnumerable GetTooltipComponents() { + // TO BE LOCALIZED + yield return new LabeledValue("Turning rate", $"{turningRate}°/s"); + yield return new LabeledValue("Charge time", $"{chargeTime}s"); + yield return new LabeledValue("Firing arc", $"{TurretArc}°"); + yield return new LabeledValue("Damage", $"{damage}"); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/Controller/StationController/GaussCannon/GaussCannonData.cs.meta b/Assets/Project/Source/Grids/Blocks/Components/Controller/StationController/GaussCannon/GaussCannonData.cs.meta new file mode 100644 index 00000000..07840548 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/Controller/StationController/GaussCannon/GaussCannonData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e761476f2b1bcac449cba858314c9241 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/Components/Controller/StationController/StationControllerBehaviour.cs b/Assets/Project/Source/Grids/Blocks/Components/Controller/StationController/StationControllerBehaviour.cs new file mode 100644 index 00000000..22c21f4c --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/Controller/StationController/StationControllerBehaviour.cs @@ -0,0 +1,3 @@ +namespace Exa.Grids.Blocks.Components { + public class StationControllerBehaviour : BlockBehaviour { } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/Controller/StationController/StationControllerBehaviour.cs.meta b/Assets/Project/Source/Grids/Blocks/Components/Controller/StationController/StationControllerBehaviour.cs.meta new file mode 100644 index 00000000..dd69146b --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/Controller/StationController/StationControllerBehaviour.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c94a1ceb55be6a843ba5db513312cdfd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/Components/Controller/StationController/StationControllerData.cs b/Assets/Project/Source/Grids/Blocks/Components/Controller/StationController/StationControllerData.cs new file mode 100644 index 00000000..657d4108 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/Controller/StationController/StationControllerData.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using Exa.Data; +using Exa.Math; +using Exa.Types.Generics; +using Exa.UI.Tooltips; +using UnityEngine.Serialization; + +namespace Exa.Grids.Blocks.Components { + [Serializable] + public struct StationControllerData : IControllerData { + [FormerlySerializedAs("powerGenerationModifier")] public float powerGeneration; + [FormerlySerializedAs("turningPowerModifier")] public float torque; + + public void AddGridTotals(GridTotals totals) { + totals.UnscaledPowerGeneration += powerGeneration; + totals.UnscaledTorque += torque; + } + + public void RemoveGridTotals(GridTotals totals) { + totals.UnscaledPowerGeneration -= powerGeneration; + totals.UnscaledTorque -= torque; + } + + public IEnumerable GetTooltipComponents() { + return new ITooltipComponent[] { + new LabeledValue("Power generation", powerGeneration.ToPercentageString()), + new LabeledValue("Torque", torque.ToPercentageString()) + }; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/Controller/StationController/StationControllerData.cs.meta b/Assets/Project/Source/Grids/Blocks/Components/Controller/StationController/StationControllerData.cs.meta new file mode 100644 index 00000000..6ca13b0c --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/Controller/StationController/StationControllerData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4186a1e3892f84645939948910a53284 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/Components/DroneBay.meta b/Assets/Project/Source/Grids/Blocks/Components/DroneBay.meta new file mode 100644 index 00000000..a30e5666 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/DroneBay.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: d9613d4358f9402fa825f8f183d6cbe2 +timeCreated: 1635104290 \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/DroneBay/DroneBayBehaviour.cs b/Assets/Project/Source/Grids/Blocks/Components/DroneBay/DroneBayBehaviour.cs new file mode 100644 index 00000000..348b918b --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/DroneBay/DroneBayBehaviour.cs @@ -0,0 +1,53 @@ +using System.Collections.Generic; +using Exa.Gameplay; +using Exa.Math; +using Exa.Utils; +using NaughtyAttributes; +using UnityEngine; + +namespace Exa.Grids.Blocks.Components { + public class DroneBayBehaviour : BlockBehaviour { + [SerializeField] private GameObject dronePrefab; + [SerializeField] private float spawnHeight; + + private float remainingBuildTime; + private List activeDrones; + + protected override void OnAdd() { + remainingBuildTime = data.buildTime; + activeDrones = new List(); // NOTE: As soon this list is created, any roaming drones should be attached to it + } + + protected override void BlockUpdate() { + if (remainingBuildTime == 0f && activeDrones.Count < data.maxPopulation) { + DeployDrone(); + remainingBuildTime = data.buildTime; + } + + remainingBuildTime = Mathf.Max(remainingBuildTime - Time.deltaTime, 0f); + } + + #if UNITY_EDITOR + [Button("Force deploy drone", enabledMode: EButtonEnableMode.Playmode)] + private void ForceDeployDrone() { + DeployDrone(); + remainingBuildTime = data.buildTime; + } + #endif + + private void DeployDrone() { + var drone = dronePrefab.Create(transform); + + drone.Setup(this, GS.SpawnLayer.drones); + + var droneTransform = drone.transform; + droneTransform.position = droneTransform.position.SetZ(spawnHeight); + + activeDrones.Add(drone); + } + + public void OnDestroyDrone(SupportDrone supportDrone) { + activeDrones.Remove(supportDrone); + } + } +} diff --git a/Assets/Project/Source/Grids/Blocks/Components/DroneBay/DroneBayBehaviour.cs.meta b/Assets/Project/Source/Grids/Blocks/Components/DroneBay/DroneBayBehaviour.cs.meta new file mode 100644 index 00000000..16211999 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/DroneBay/DroneBayBehaviour.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a35912b032510a540856d092ddecd7c2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/Components/DroneBay/DroneBayData.cs b/Assets/Project/Source/Grids/Blocks/Components/DroneBay/DroneBayData.cs new file mode 100644 index 00000000..d3f36156 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/DroneBay/DroneBayData.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using Exa.Types.Generics; +using Exa.UI.Tooltips; + +namespace Exa.Grids.Blocks.Components { + [Serializable] + public struct DroneBayData : IBlockComponentValues { + public float buildTime; + public int maxPopulation; + public SupportDroneData droneData; + + public void AddGridTotals(GridTotals totals) { + } + + public void RemoveGridTotals(GridTotals totals) { + } + + public IEnumerable GetTooltipComponents() { + yield return new LabeledValue("Build time", $"{buildTime}"); + yield return new LabeledValue("Max population", $"{maxPopulation}"); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/DroneBay/DroneBayData.cs.meta b/Assets/Project/Source/Grids/Blocks/Components/DroneBay/DroneBayData.cs.meta new file mode 100644 index 00000000..9dd141d9 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/DroneBay/DroneBayData.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 63795c1ad73342c7a3bdc85b84144397 +timeCreated: 1635104300 \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/DroneBay/SupportDroneData.cs b/Assets/Project/Source/Grids/Blocks/Components/DroneBay/SupportDroneData.cs new file mode 100644 index 00000000..12c7a5a9 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/DroneBay/SupportDroneData.cs @@ -0,0 +1,10 @@ +using System; + +namespace Exa.Grids.Blocks.Components { + [Serializable] + public struct SupportDroneData { + public float hull; + public float armor; + public float repairSpeed; // As in hull per second repaired + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/DroneBay/SupportDroneData.cs.meta b/Assets/Project/Source/Grids/Blocks/Components/DroneBay/SupportDroneData.cs.meta new file mode 100644 index 00000000..70fee889 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/DroneBay/SupportDroneData.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 085891a2b3ce4b9aa0acea0e5ef41660 +timeCreated: 1635190696 \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/Gyroscope/GyroscopeBehaviour.cs b/Assets/Project/Source/Grids/Blocks/Components/Gyroscope/GyroscopeBehaviour.cs index 55d441af..dd347a15 100644 --- a/Assets/Project/Source/Grids/Blocks/Components/Gyroscope/GyroscopeBehaviour.cs +++ b/Assets/Project/Source/Grids/Blocks/Components/Gyroscope/GyroscopeBehaviour.cs @@ -1,5 +1,3 @@ -namespace Exa.Grids.Blocks.Components -{ - public class GyroscopeBehaviour : BlockBehaviour - { } +namespace Exa.Grids.Blocks.Components { + public class GyroscopeBehaviour : BlockBehaviour { } } \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/Gyroscope/GyroscopeData.cs b/Assets/Project/Source/Grids/Blocks/Components/Gyroscope/GyroscopeData.cs index 0cba1815..aecd9a96 100644 --- a/Assets/Project/Source/Grids/Blocks/Components/Gyroscope/GyroscopeData.cs +++ b/Assets/Project/Source/Grids/Blocks/Components/Gyroscope/GyroscopeData.cs @@ -1,26 +1,26 @@ -using Exa.Data; -using Exa.Generics; -using Exa.UI.Tooltips; -using System; +using System; using System.Collections.Generic; +using Exa.Types.Generics; +using Exa.UI.Tooltips; +using UnityEngine.Serialization; -namespace Exa.Grids.Blocks.Components -{ +namespace Exa.Grids.Blocks.Components { [Serializable] - public struct GyroscopeData : IBlockComponentValues - { - public Scalar turningRate; + public struct GyroscopeData : IBlockComponentValues { + [FormerlySerializedAs("turningPower")] public float torque; public void AddGridTotals(GridTotals totals) { - totals.TurningPowerModifier += turningRate; + totals.UnscaledTorque += torque; } public void RemoveGridTotals(GridTotals totals) { - totals.TurningPowerModifier -= turningRate; + totals.UnscaledTorque -= torque; } - public IEnumerable GetTooltipComponents() => new ITooltipComponent[] { - new LabeledValue("Turning Rate", turningRate.ToString()) - }; + public IEnumerable GetTooltipComponents() { + return new ITooltipComponent[] { + new LabeledValue("Turning Rate", torque.ToString()) + }; + } } } \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/Gyroscope/GyroscopeTemplatePartial.cs b/Assets/Project/Source/Grids/Blocks/Components/Gyroscope/GyroscopeTemplatePartial.cs deleted file mode 100644 index 2398df53..00000000 --- a/Assets/Project/Source/Grids/Blocks/Components/Gyroscope/GyroscopeTemplatePartial.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Exa.Data; -using System; -using UnityEngine; - -namespace Exa.Grids.Blocks.Components -{ - [Serializable] - public class GyroscopeTemplatePartial : TemplatePartial - { - [SerializeField] private Scalar turningRate; - - public override GyroscopeData Convert() => new GyroscopeData { - turningRate = turningRate - }; - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/Gyroscope/GyroscopeTemplatePartial.cs.meta b/Assets/Project/Source/Grids/Blocks/Components/Gyroscope/GyroscopeTemplatePartial.cs.meta deleted file mode 100644 index bc76dca6..00000000 --- a/Assets/Project/Source/Grids/Blocks/Components/Gyroscope/GyroscopeTemplatePartial.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 3fd96405cf7d241449bd95bbcdb255f6 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/Components/IBehaviourMarker.cs b/Assets/Project/Source/Grids/Blocks/Components/IBehaviourMarker.cs deleted file mode 100644 index 6ea00ddc..00000000 --- a/Assets/Project/Source/Grids/Blocks/Components/IBehaviourMarker.cs +++ /dev/null @@ -1,10 +0,0 @@ -using Exa.Grids.Blocks.Components; - -namespace Exa.Grids.Blocks -{ - public interface IBehaviourMarker - where T : struct, IBlockComponentValues - { - BlockBehaviour Component { get; } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/IBehaviourMarker.cs.meta b/Assets/Project/Source/Grids/Blocks/Components/IBehaviourMarker.cs.meta deleted file mode 100644 index f6b080fa..00000000 --- a/Assets/Project/Source/Grids/Blocks/Components/IBehaviourMarker.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 5b6de20ece2b8f74189025cd859fca58 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/Components/IBlockComponentValues.cs b/Assets/Project/Source/Grids/Blocks/Components/IBlockComponentValues.cs index f3a68e04..6417c8de 100644 --- a/Assets/Project/Source/Grids/Blocks/Components/IBlockComponentValues.cs +++ b/Assets/Project/Source/Grids/Blocks/Components/IBlockComponentValues.cs @@ -1,10 +1,8 @@ -using Exa.UI.Tooltips; -using System.Collections.Generic; +using System.Collections.Generic; +using Exa.UI.Tooltips; -namespace Exa.Grids.Blocks.Components -{ - public interface IBlockComponentValues : IGridTotalsModifier - { +namespace Exa.Grids.Blocks.Components { + public interface IBlockComponentValues : IGridTotalsModifier { IEnumerable GetTooltipComponents(); } } \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/Physical/PhysicalBehaviour.cs b/Assets/Project/Source/Grids/Blocks/Components/Physical/PhysicalBehaviour.cs index 034f4019..8132bce4 100644 --- a/Assets/Project/Source/Grids/Blocks/Components/Physical/PhysicalBehaviour.cs +++ b/Assets/Project/Source/Grids/Blocks/Components/Physical/PhysicalBehaviour.cs @@ -1,62 +1,94 @@ -using Exa.Ships; +using System; +using Exa.Gameplay; +using Exa.Grids.Blocks.BlockTypes; using Exa.Utils; using UnityEngine; -namespace Exa.Grids.Blocks.Components -{ - public interface IPhysical : IBehaviourMarker - { } +namespace Exa.Grids.Blocks.Components { + public class PhysicalBehaviour : BlockBehaviour, IDamageable, IRepairable { + [Header("State")] + [SerializeField] private HealthPool hull; + public bool IsQueuedForDestruction { get; private set; } + + public bool IsRepaired { get; } - public class PhysicalBehaviour : BlockBehaviour - { + public BlockContext? BlockContext { + get => Parent?.BlockContext; + } + + public event Action OnDamage; + + // Pass event handling to block + public event Action OnRemoved { + add => block.OnRemoved += value; + remove => block.OnRemoved -= value; + } + + // TODO: replace damage source by an actual type /// - /// Takes a given amount of damage + /// Takes a given amount of damage /// /// The damage to take /// - public DamageInstanceData AbsorbDamage(object damageSource, float damage) { - if (Parent.Configuration.Invulnerable) { - return new DamageInstanceData { - absorbedDamage = damage, - appliedDamage = 0 - }; + public TakenDamage TakeDamage(Damage damage) { + if (IsQueuedForDestruction) { + #if ENABLE_BLOCK_LOGS + block.Logs.Add("Function: TakeDamage, Returning because block is queued for destruction"); + #endif + + return new TakenDamage(); } - var appliedDamage = Mathf.Min(data.hull, ComputeDamage(damage)); - var instanceData = new DamageInstanceData { - absorbedDamage = Mathf.Min(data.hull, damage), - appliedDamage = appliedDamage - }; + if (!Parent.Configuration.Invulnerable) { + try { + var noHealth = !hull.TakeDamage(damage, data.armor, out var takenDamage); + var appliedDamage = takenDamage.appliedDamage; + if (GridInstance) { + GridInstance.BlockGrid.GetTotals().Hull -= appliedDamage; + GS.PopupManager.CreateOrUpdateDamagePopup(transform.position, damage.source, appliedDamage); + } - if (Ship) { - Ship.Totals.Hull -= appliedDamage; - GameSystems.PopupManager.CreateOrUpdateDamagePopup(transform.position, damageSource, appliedDamage); - } + if (appliedDamage != 0f) { + OnDamage?.Invoke(appliedDamage); + } + + if (noHealth) { + IsQueuedForDestruction = true; + block.DestroyBlock(); + } - data.hull -= appliedDamage; - if (data.hull <= 0) { - gameObject.SetActive(false); + return takenDamage; + } catch (Exception e) { + Debug.LogException(e); + } } - return instanceData; + return new TakenDamage { + absorbedDamage = damage.value, + appliedDamage = 0 + }; + } + + public void Repair() { + hull.value = data.hull; } - public float ComputeDamage(float damage) { - return Mathf.Max(damage - data.armor, 0f); + public void Repair(float repairedHull) { + hull.value = Mathf.Min(data.hull, hull.value + repairedHull); + } + + protected override void OnBlockDataReceived(PhysicalData oldValues, PhysicalData newValues) { + Parent.Rigidbody2D.mass += newValues.mass - oldValues.mass; } protected override void OnAdd() { - block.Collider.SetMass(data.mass); + Repair(); + IsQueuedForDestruction = false; } protected override void OnRemove() { + OnDamage = null; } } - - public struct DamageInstanceData - { - public float absorbedDamage; - public float appliedDamage; - } } \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/Physical/PhysicalData.cs b/Assets/Project/Source/Grids/Blocks/Components/Physical/PhysicalData.cs index 1093bcde..9abdef07 100644 --- a/Assets/Project/Source/Grids/Blocks/Components/Physical/PhysicalData.cs +++ b/Assets/Project/Source/Grids/Blocks/Components/Physical/PhysicalData.cs @@ -1,13 +1,11 @@ -using Exa.Generics; -using Exa.UI.Tooltips; -using System; +using System; using System.Collections.Generic; +using Exa.Types.Generics; +using Exa.UI.Tooltips; -namespace Exa.Grids.Blocks.Components -{ +namespace Exa.Grids.Blocks.Components { [Serializable] - public struct PhysicalData : IBlockComponentValues - { + public struct PhysicalData : IBlockComponentValues { public float hull; public float armor; public float mass; @@ -22,10 +20,12 @@ public void RemoveGridTotals(GridTotals totals) { totals.Hull -= hull; } - public IEnumerable GetTooltipComponents() => new ITooltipComponent[] { - new LabeledValue("Hull", $"{hull}"), - new LabeledValue("Armor", $"{armor}"), - new LabeledValue("Mass", $"{mass * 1000:0} KG") - }; + public IEnumerable GetTooltipComponents() { + return new ITooltipComponent[] { + new LabeledValue("Hull", $"{hull}"), + new LabeledValue("Armor", $"{armor}"), + new LabeledValue("Mass", $"{mass * 1000:0} KG") + }; + } } } \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/Physical/PhysicalTemplatePartial.cs b/Assets/Project/Source/Grids/Blocks/Components/Physical/PhysicalTemplatePartial.cs deleted file mode 100644 index 101da85b..00000000 --- a/Assets/Project/Source/Grids/Blocks/Components/Physical/PhysicalTemplatePartial.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System; -using UnityEngine; - -namespace Exa.Grids.Blocks.Components -{ - [Serializable] - public class PhysicalTemplatePartial : TemplatePartial - { - [SerializeField] private float maxHull; - [SerializeField] private float armor; - [SerializeField] private float mass; // In ton - - public float MaxHull => maxHull; - public float Armor => armor; - public float Mass => mass; - - public override PhysicalData Convert() => new PhysicalData { - armor = armor, - hull = maxHull, - mass = mass - }; - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/Physical/PhysicalTemplatePartial.cs.meta b/Assets/Project/Source/Grids/Blocks/Components/Physical/PhysicalTemplatePartial.cs.meta deleted file mode 100644 index 58d5adcb..00000000 --- a/Assets/Project/Source/Grids/Blocks/Components/Physical/PhysicalTemplatePartial.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: e47ff886f6ee8c44db8e987fe5764ccd -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/Components/PowerConsumer/PowerConsumerBehaviour.cs b/Assets/Project/Source/Grids/Blocks/Components/PowerConsumer/PowerConsumerBehaviour.cs index ebc95daf..df43a1f7 100644 --- a/Assets/Project/Source/Grids/Blocks/Components/PowerConsumer/PowerConsumerBehaviour.cs +++ b/Assets/Project/Source/Grids/Blocks/Components/PowerConsumer/PowerConsumerBehaviour.cs @@ -1,8 +1,3 @@ -namespace Exa.Grids.Blocks.Components -{ - public interface IPowerConsumer : IBehaviourMarker - { } - - public class PowerConsumerBehaviour : BlockBehaviour - { } +namespace Exa.Grids.Blocks.Components { + public class PowerConsumerBehaviour : BlockBehaviour { } } \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/PowerConsumer/PowerConsumerData.cs b/Assets/Project/Source/Grids/Blocks/Components/PowerConsumer/PowerConsumerData.cs index 16e93901..79e8b0cc 100644 --- a/Assets/Project/Source/Grids/Blocks/Components/PowerConsumer/PowerConsumerData.cs +++ b/Assets/Project/Source/Grids/Blocks/Components/PowerConsumer/PowerConsumerData.cs @@ -1,26 +1,22 @@ using System; +using System.Collections.Generic; using Exa.Data; -using Exa.Generics; +using Exa.Types.Generics; using Exa.UI.Tooltips; -using System.Collections.Generic; -namespace Exa.Grids.Blocks.Components -{ +namespace Exa.Grids.Blocks.Components { [Serializable] - public struct PowerConsumerData : IBlockComponentValues - { + public struct PowerConsumerData : IBlockComponentValues { public Scalar powerConsumption; - public void AddGridTotals(GridTotals totals) { - totals.PowerConsumptionModifier += powerConsumption; - } + public void AddGridTotals(GridTotals totals) { } - public void RemoveGridTotals(GridTotals totals) { - totals.PowerConsumptionModifier -= powerConsumption; - } + public void RemoveGridTotals(GridTotals totals) { } - public IEnumerable GetTooltipComponents() => new ITooltipComponent[] { - new LabeledValue("Power consumption", $"{powerConsumption} KW") - }; + public IEnumerable GetTooltipComponents() { + return new ITooltipComponent[] { + new LabeledValue("Power consumption", $"{powerConsumption} KW") + }; + } } } \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/PowerConsumer/PowerConsumerTemplatePartial.cs b/Assets/Project/Source/Grids/Blocks/Components/PowerConsumer/PowerConsumerTemplatePartial.cs deleted file mode 100644 index c2eadf76..00000000 --- a/Assets/Project/Source/Grids/Blocks/Components/PowerConsumer/PowerConsumerTemplatePartial.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Exa.Data; -using System; -using UnityEngine; - -namespace Exa.Grids.Blocks.Components -{ - [Serializable] - public class PowerConsumerTemplatePartial : TemplatePartial - { - [SerializeField] private Scalar powerConsumption; // In MW - - public override PowerConsumerData Convert() => new PowerConsumerData { - powerConsumption = powerConsumption - }; - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/PowerConsumer/PowerConsumerTemplatePartial.cs.meta b/Assets/Project/Source/Grids/Blocks/Components/PowerConsumer/PowerConsumerTemplatePartial.cs.meta deleted file mode 100644 index f268ca74..00000000 --- a/Assets/Project/Source/Grids/Blocks/Components/PowerConsumer/PowerConsumerTemplatePartial.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 8e9d9237a9641714b9b239eec2617583 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/Components/PowerGenerator/PowerGeneratorBehaviour.cs b/Assets/Project/Source/Grids/Blocks/Components/PowerGenerator/PowerGeneratorBehaviour.cs index c058a323..a7e026f6 100644 --- a/Assets/Project/Source/Grids/Blocks/Components/PowerGenerator/PowerGeneratorBehaviour.cs +++ b/Assets/Project/Source/Grids/Blocks/Components/PowerGenerator/PowerGeneratorBehaviour.cs @@ -1,5 +1,3 @@ -namespace Exa.Grids.Blocks.Components -{ - public class PowerGeneratorBehaviour : BlockBehaviour - { } +namespace Exa.Grids.Blocks.Components { + public class PowerGeneratorBehaviour : BlockBehaviour { } } \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/PowerGenerator/PowerGeneratorData.cs b/Assets/Project/Source/Grids/Blocks/Components/PowerGenerator/PowerGeneratorData.cs index ae56a666..6c64065b 100644 --- a/Assets/Project/Source/Grids/Blocks/Components/PowerGenerator/PowerGeneratorData.cs +++ b/Assets/Project/Source/Grids/Blocks/Components/PowerGenerator/PowerGeneratorData.cs @@ -1,26 +1,25 @@ using System; -using Exa.Data; -using Exa.Generics; -using Exa.UI.Tooltips; using System.Collections.Generic; +using Exa.Types.Generics; +using Exa.UI.Tooltips; -namespace Exa.Grids.Blocks.Components -{ +namespace Exa.Grids.Blocks.Components { [Serializable] - public struct PowerGeneratorData : IBlockComponentValues - { - public Scalar powerGeneration; + public struct PowerGeneratorData : IBlockComponentValues { + public float powerGeneration; public void AddGridTotals(GridTotals totals) { - totals.PowerGenerationModifier += powerGeneration; + totals.UnscaledPowerGeneration += powerGeneration; } public void RemoveGridTotals(GridTotals totals) { - totals.PowerGenerationModifier -= powerGeneration; + totals.UnscaledPowerGeneration -= powerGeneration; } - public IEnumerable GetTooltipComponents() => new ITooltipComponent[] { - new LabeledValue("Power generation", $"{powerGeneration}") - }; + public IEnumerable GetTooltipComponents() { + return new ITooltipComponent[] { + new LabeledValue("Power generation", $"{powerGeneration}") + }; + } } } \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/PowerGenerator/PowerGeneratorTemplatePartial.cs b/Assets/Project/Source/Grids/Blocks/Components/PowerGenerator/PowerGeneratorTemplatePartial.cs deleted file mode 100644 index 41e3224c..00000000 --- a/Assets/Project/Source/Grids/Blocks/Components/PowerGenerator/PowerGeneratorTemplatePartial.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Exa.Data; -using System; -using UnityEngine; - -namespace Exa.Grids.Blocks.Components -{ - [Serializable] - public class PowerGeneratorTemplatePartial : TemplatePartial - { - [SerializeField] private Scalar peakGeneration; - - public override PowerGeneratorData Convert() => new PowerGeneratorData { - powerGeneration = peakGeneration - }; - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/PowerGenerator/PowerGeneratorTemplatePartial.cs.meta b/Assets/Project/Source/Grids/Blocks/Components/PowerGenerator/PowerGeneratorTemplatePartial.cs.meta deleted file mode 100644 index bdcf9309..00000000 --- a/Assets/Project/Source/Grids/Blocks/Components/PowerGenerator/PowerGeneratorTemplatePartial.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 8317e97d36b77034f91a56d2d4e636f8 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/Components/ShieldGenerator.meta b/Assets/Project/Source/Grids/Blocks/Components/ShieldGenerator.meta new file mode 100644 index 00000000..89350a5c --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/ShieldGenerator.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: d9af34474fa04b2fae3f185019debc32 +timeCreated: 1625831411 \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/ShieldGenerator/ShieldBubble.cs b/Assets/Project/Source/Grids/Blocks/Components/ShieldGenerator/ShieldBubble.cs new file mode 100644 index 00000000..9860fbd7 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/ShieldGenerator/ShieldBubble.cs @@ -0,0 +1,31 @@ +using UnityEngine; + +namespace Exa.Grids.Blocks.Components { + public class ShieldBubble : MonoBehaviour, IDamageable { + [SerializeField] private ShieldGeneratorBehaviour shieldGeneratorBehaviour; + + public bool IsQueuedForDestruction { get; private set; } + + public BlockContext? BlockContext { + get => shieldGeneratorBehaviour.Parent?.BlockContext; + } + + public void SetRadius(float value) { + transform.localScale = new Vector3(value * 2, value * 2); + } + + public void Raise() { + gameObject.SetActive(true); + IsQueuedForDestruction = false; + } + + public void Lower() { + gameObject.SetActive(false); + IsQueuedForDestruction = true; + } + + public TakenDamage TakeDamage(Damage damage) { + return shieldGeneratorBehaviour.TakeDamage(damage); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/ShieldGenerator/ShieldBubble.cs.meta b/Assets/Project/Source/Grids/Blocks/Components/ShieldGenerator/ShieldBubble.cs.meta new file mode 100644 index 00000000..ea0c9b4f --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/ShieldGenerator/ShieldBubble.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 2008076a8f3441a580f1086dd1081bec +timeCreated: 1626104798 \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/ShieldGenerator/ShieldGeneratorBehaviour.cs b/Assets/Project/Source/Grids/Blocks/Components/ShieldGenerator/ShieldGeneratorBehaviour.cs new file mode 100644 index 00000000..b25409f5 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/ShieldGenerator/ShieldGeneratorBehaviour.cs @@ -0,0 +1,84 @@ +using System; +using DG.Tweening; +using Exa.Utils; +using UnityEngine; +using Random = UnityEngine.Random; + +namespace Exa.Grids.Blocks.Components { + public class ShieldGeneratorBehaviour : BlockBehaviour { + [Header("References")] + [SerializeField] private SpriteRenderer lights; + [SerializeField] private ShieldBubble shieldBubble; + + [Header("Settings")] + [SerializeField] private float lightsAnimationDuration; + + [Header("State")] + [SerializeField] private HealthPool healthPool; + [SerializeField] private bool shieldIsRaised = true; + private Tween lightsTween; + private float normalizedLightsAlpha = 1f; + + protected override void OnAdd() { + healthPool.value = Data.health; + } + + protected override void OnBlockDataReceived(ShieldGeneratorData oldValues, ShieldGeneratorData newValues) { + shieldBubble.SetRadius(newValues.shieldRadius); + } + + public TakenDamage TakeDamage(Damage damage) { + try { + if (!shieldIsRaised) { + Debug.LogError("Received shield damage when shield is not raised"); + + return new TakenDamage(); + } + + if (!healthPool.TakeDamage(damage, 0, out var takenDamage)) { + LowerShields(); + } + + return takenDamage; + } catch (Exception e) { + Debug.LogException(e); + } + + return new TakenDamage { + absorbedDamage = damage.value, + appliedDamage = 0f + }; + } + + private void LowerShields() { + shieldIsRaised = false; + shieldBubble.Lower(); + AnimateLights(0f); + + this.Delay(RaiseShields, Data.recoverTime); + } + + private void RaiseShields() { + shieldIsRaised = true; + shieldBubble.Raise(); + healthPool.value = Data.health; + AnimateLights(1f); + } + + private float GetNormalizedLightsAlpha() { + return normalizedLightsAlpha; + } + + private void SetNormalizedLightsAlpha(float value) { + normalizedLightsAlpha = value; + + var randomizedAlpha = value + (Random.value - 0.5f) * 0.1f; + lights.color = lights.color.SetAlpha(randomizedAlpha); + } + + private void AnimateLights(float alpha) { + DOTween.To(GetNormalizedLightsAlpha, SetNormalizedLightsAlpha, alpha, lightsAnimationDuration) + .Replace(ref lightsTween); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/ShieldGenerator/ShieldGeneratorBehaviour.cs.meta b/Assets/Project/Source/Grids/Blocks/Components/ShieldGenerator/ShieldGeneratorBehaviour.cs.meta new file mode 100644 index 00000000..2332db0c --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/ShieldGenerator/ShieldGeneratorBehaviour.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 9e3fb722137d4e4eab06da7196c7659b +timeCreated: 1625831445 \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/ShieldGenerator/ShieldGeneratorData.cs b/Assets/Project/Source/Grids/Blocks/Components/ShieldGenerator/ShieldGeneratorData.cs new file mode 100644 index 00000000..cb90345d --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/ShieldGenerator/ShieldGeneratorData.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using Exa.Types.Generics; +using Exa.UI.Tooltips; + +namespace Exa.Grids.Blocks.Components { + [Serializable] + public struct ShieldGeneratorData : IBlockComponentValues { + public float shieldRadius; + public float recoverTime; + public float health; + + public void AddGridTotals(GridTotals totals) { } + + public void RemoveGridTotals(GridTotals totals) { } + + public IEnumerable GetTooltipComponents() { + yield return new LabeledValue("Shield radius", $"{shieldRadius}m"); + yield return new LabeledValue("Recover time", $"{recoverTime}s"); + yield return new LabeledValue("Health", $"{health}"); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/ShieldGenerator/ShieldGeneratorData.cs.meta b/Assets/Project/Source/Grids/Blocks/Components/ShieldGenerator/ShieldGeneratorData.cs.meta new file mode 100644 index 00000000..42c2a0a1 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/ShieldGenerator/ShieldGeneratorData.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: f35c78ffa1a84d40bc6542d926742ce6 +timeCreated: 1625831502 \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/TemplatePartial.cs b/Assets/Project/Source/Grids/Blocks/Components/TemplatePartial.cs new file mode 100644 index 00000000..8bd3ee98 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/TemplatePartial.cs @@ -0,0 +1,14 @@ +using System; +using UnityEngine; + +namespace Exa.Grids.Blocks.Components { + [Serializable] + public class TemplatePartial : TemplatePartialBase + where T : struct, IBlockComponentValues { + [SerializeField] private T data; + + public override T ToBaseComponentValues() { + return data; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/TemplatePartial.cs.meta b/Assets/Project/Source/Grids/Blocks/Components/TemplatePartial.cs.meta new file mode 100644 index 00000000..375e719b --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/TemplatePartial.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 3dbf663a4dd047468817a7347972c3fb +timeCreated: 1625911418 \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/Thruster/ThrusterBehaviour.cs b/Assets/Project/Source/Grids/Blocks/Components/Thruster/ThrusterBehaviour.cs index 49002414..da13c3a8 100644 --- a/Assets/Project/Source/Grids/Blocks/Components/Thruster/ThrusterBehaviour.cs +++ b/Assets/Project/Source/Grids/Blocks/Components/Thruster/ThrusterBehaviour.cs @@ -1,22 +1,20 @@ using DG.Tweening; -using Exa.Generics; -using Exa.Math; +using Exa.Ships; +using Exa.Types.Generics; using Exa.Utils; using UnityEngine; using UnityEngine.Experimental.Rendering.Universal; #pragma warning disable CS0649 -namespace Exa.Grids.Blocks.Components -{ - public class ThrusterBehaviour : BlockBehaviour - { - [Header("References")] +namespace Exa.Grids.Blocks.Components { + public class ThrusterBehaviour : BlockBehaviour { + [Header("References")] [SerializeField] private Transform thrusterFlameContainer; [SerializeField] private SpriteRenderer thrusterFlame; [SerializeField] private Light2D light2D; - [Header("Settings")] + [Header("Settings")] [SerializeField] private MinMax xScale; [SerializeField] private MinMax yScale; [SerializeField] private MinMax lightIntensityScale; @@ -40,14 +38,11 @@ public void PowerDown() { } protected override void OnAdd() { - var blueprintBlock = block.anchoredBlueprintBlock.blueprintBlock; - blueprintBlock.SetSpriteRendererFlips(thrusterFlame); - - var pos = thrusterFlameContainer.localPosition.ToVector2().Rotate(-blueprintBlock.Rotation); - - pos *= blueprintBlock.FlipVector; + (GridInstance as EnemyGrid)?.Navigation.ThrustVectors.Register(this); + } - thrusterFlameContainer.localPosition = pos.Rotate(blueprintBlock.Rotation); + protected override void OnRemove() { + (GridInstance as EnemyGrid)?.Navigation.ThrustVectors.Unregister(this); } } } \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/Thruster/ThrusterData.cs b/Assets/Project/Source/Grids/Blocks/Components/Thruster/ThrusterData.cs index 4cf93be6..46ab2ff8 100644 --- a/Assets/Project/Source/Grids/Blocks/Components/Thruster/ThrusterData.cs +++ b/Assets/Project/Source/Grids/Blocks/Components/Thruster/ThrusterData.cs @@ -1,21 +1,21 @@ using System; -using Exa.Generics; -using Exa.UI.Tooltips; using System.Collections.Generic; +using Exa.Types.Generics; +using Exa.UI.Tooltips; -namespace Exa.Grids.Blocks.Components -{ +namespace Exa.Grids.Blocks.Components { [Serializable] - public struct ThrusterData : IBlockComponentValues - { + public struct ThrusterData : IBlockComponentValues { public float thrust; public void AddGridTotals(GridTotals totals) { } public void RemoveGridTotals(GridTotals totals) { } - public IEnumerable GetTooltipComponents() => new ITooltipComponent[] { - new LabeledValue("Thrust", $"{thrust}") - }; + public IEnumerable GetTooltipComponents() { + return new ITooltipComponent[] { + new LabeledValue("Thrust", $"{thrust}") + }; + } } } \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/Thruster/ThrusterTemplatePartial.cs b/Assets/Project/Source/Grids/Blocks/Components/Thruster/ThrusterTemplatePartial.cs deleted file mode 100644 index 5a5c33ef..00000000 --- a/Assets/Project/Source/Grids/Blocks/Components/Thruster/ThrusterTemplatePartial.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using UnityEngine; - -namespace Exa.Grids.Blocks.Components -{ - [Serializable] - public class ThrusterTemplatePartial : TemplatePartial - { - [SerializeField] private float thrust; - - public override ThrusterData Convert() => new ThrusterData { - thrust = thrust - }; - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/Thruster/ThrusterTemplatePartial.cs.meta b/Assets/Project/Source/Grids/Blocks/Components/Thruster/ThrusterTemplatePartial.cs.meta deleted file mode 100644 index 75f4fdbe..00000000 --- a/Assets/Project/Source/Grids/Blocks/Components/Thruster/ThrusterTemplatePartial.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 941b26451c2430c4ab8f7d00e8586146 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/Components/Turret/AutoFireTurret.cs b/Assets/Project/Source/Grids/Blocks/Components/Turret/AutoFireTurret.cs new file mode 100644 index 00000000..a9c176f1 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/Turret/AutoFireTurret.cs @@ -0,0 +1,50 @@ +using UnityEngine; + +namespace Exa.Grids.Blocks.Components { + public abstract class AutoFireTurret : TurretBehaviour + where T : struct, ITurretValues { + + private float timeBetweenFire; + private float timeSinceFire; + + private void Awake() { + AutoFireEnabled = true; + } + + protected override void OnBlockDataReceived(T oldValues, T newValues) { + base.OnBlockDataReceived(oldValues, newValues); + timeBetweenFire = 60 / newValues.FiringRate; + } + + protected override void BlockUpdate() { + base.BlockUpdate(); + + // Only add to the time since fire if the current time since fire is below the firing rate of the turret + // This implementation allows for the time since fire to be slightly bigger than than the firing rate + // automatic fire is accurate + if (timeSinceFire < timeBetweenFire) { + timeSinceFire += Time.deltaTime; + } + + AttemptFire(); + } + + protected virtual void AttemptFire() { + if (Target == null || !AutoFireEnabled) { + return; + } + + // Long debug line cause debugging in unity sucks + // Debug.Log($"({block.GetInstanceString()}) Current angle: {GetCurrentAngle()}, Target angle: {SelectTargetAngle()}, Diff {Mathf.DeltaAngle(GetCurrentAngle(), SelectTargetAngle())} ({rotationResult.deltaToTarget})"); + + + // Only fire if the turret is facing the target properly, and it is ready to fire + if (Mathf.Abs(rotationResult.deltaToTarget) > 0.5f || timeSinceFire < timeBetweenFire) { + return; + } + + timeSinceFire -= timeBetweenFire; + Fire(); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/Turret/AutoFireTurret.cs.meta b/Assets/Project/Source/Grids/Blocks/Components/Turret/AutoFireTurret.cs.meta new file mode 100644 index 00000000..e526b6cf --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/Turret/AutoFireTurret.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1e9fa37b0999836439d5626c3480ac93 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/Components/Turret/Autocannon.meta b/Assets/Project/Source/Grids/Blocks/Components/Turret/Autocannon.meta new file mode 100644 index 00000000..66fe639a --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/Turret/Autocannon.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 72e992333d7f85d4d90445a68182945f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/Components/Turret/Autocannon/AutocannonBehaviour.cs b/Assets/Project/Source/Grids/Blocks/Components/Turret/Autocannon/AutocannonBehaviour.cs new file mode 100644 index 00000000..40d9d2d8 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/Turret/Autocannon/AutocannonBehaviour.cs @@ -0,0 +1,55 @@ +using System; +using Exa.Weapons; +using UnityEngine; + +#pragma warning disable CS0649 + +namespace Exa.Grids.Blocks.Components { + public class AutocannonBehaviour : AutoFireTurret { + [SerializeField] private AutocannonPart[] parts; + private int currentPoint; + + public override void Fire() { + switch (data.cycleMode) { + case CycleMode.Cycling: + parts[currentPoint].Fire(data.damage, data.range); + currentPoint++; + currentPoint %= parts.Length; + + break; + + case CycleMode.Volley: + foreach (var part in parts) { + part.Fire(data.damage, data.range); + } + + break; + + default: + throw new ArgumentOutOfRangeException(); + } + } + + protected override void OnAdd() { + var animTime = GetAnimTime(); + + if (Parent.BlockContext == 0) { + throw new InvalidOperationException("Parent's block context must be set"); + } + + var damageMask = ~Parent.BlockContext; + + foreach (var part in parts) { + part.Setup(animTime, Parent, damageMask); + } + } + + private float GetAnimTime() { + return data.cycleMode switch { + CycleMode.Cycling => data.firingRate * 1.5f, + CycleMode.Volley => data.firingRate * 0.75f, + _ => throw new Exception() + }; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/Turret/AutocannonBehaviour.cs.meta b/Assets/Project/Source/Grids/Blocks/Components/Turret/Autocannon/AutocannonBehaviour.cs.meta similarity index 83% rename from Assets/Project/Source/Grids/Blocks/Components/Turret/AutocannonBehaviour.cs.meta rename to Assets/Project/Source/Grids/Blocks/Components/Turret/Autocannon/AutocannonBehaviour.cs.meta index cf8bdc42..0041c99e 100644 --- a/Assets/Project/Source/Grids/Blocks/Components/Turret/AutocannonBehaviour.cs.meta +++ b/Assets/Project/Source/Grids/Blocks/Components/Turret/Autocannon/AutocannonBehaviour.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 70032b9cfafc6c24fb1a7bd4630b1441 +guid: e0137dd24c4320a4f86371eda34de905 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Project/Source/Grids/Blocks/Components/Turret/Autocannon/AutocannonData.cs b/Assets/Project/Source/Grids/Blocks/Components/Turret/Autocannon/AutocannonData.cs new file mode 100644 index 00000000..6da59689 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/Turret/Autocannon/AutocannonData.cs @@ -0,0 +1,56 @@ +using System; +using System.Collections.Generic; +using Exa.Types.Generics; +using Exa.UI.Tooltips; + +namespace Exa.Grids.Blocks.Components { + public enum CycleMode { + Cycling, + Volley + } + + [Serializable] + public struct AutocannonData : ITurretValues { + public float turningRate; + public float firingRate; + public float turretArc; + public float turretRadius; + public float damage; + public float range; + public CycleMode cycleMode; + + public float TurningRate { + get => turningRate; + } + + public float FiringRate { + get => firingRate; + } + + public float TurretArc { + get => turretArc; + } + + public float TurretRadius { + get => turretRadius; + } + + public float Range { + get => range; + } + + public void AddGridTotals(GridTotals totals) { } + + public void RemoveGridTotals(GridTotals totals) { } + + public IEnumerable GetTooltipComponents() { + // TO BE LOCALIZED + yield return new LabeledValue("Turning rate", $"{turningRate}°/s"); + yield return new LabeledValue("Firing rate", $"{60 / firingRate} RPM"); + yield return new LabeledValue("Firing arc", $"{TurretArc}°"); + yield return new LabeledValue("Damage", $"{damage}"); + yield return new LabeledValue("Cycle mode", $"{cycleMode}"); + yield return new LabeledValue("Range", $"{range}m"); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/Turret/AutocannonData.cs.meta b/Assets/Project/Source/Grids/Blocks/Components/Turret/Autocannon/AutocannonData.cs.meta similarity index 83% rename from Assets/Project/Source/Grids/Blocks/Components/Turret/AutocannonData.cs.meta rename to Assets/Project/Source/Grids/Blocks/Components/Turret/Autocannon/AutocannonData.cs.meta index 6ff33210..c92384d9 100644 --- a/Assets/Project/Source/Grids/Blocks/Components/Turret/AutocannonData.cs.meta +++ b/Assets/Project/Source/Grids/Blocks/Components/Turret/Autocannon/AutocannonData.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: d67c787bfb980414b98b9a11cb93804f +guid: fbf4ec0a610942246ab4f6fc0950f6c6 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Project/Source/Grids/Blocks/Components/Turret/AutocannonBehaviour.cs b/Assets/Project/Source/Grids/Blocks/Components/Turret/AutocannonBehaviour.cs deleted file mode 100644 index 420a4c84..00000000 --- a/Assets/Project/Source/Grids/Blocks/Components/Turret/AutocannonBehaviour.cs +++ /dev/null @@ -1,55 +0,0 @@ -using Exa.Weapons; -using System; -using UnityEngine; - -#pragma warning disable CS0649 - -namespace Exa.Grids.Blocks.Components -{ - public class AutocannonBehaviour : TurretBehaviour - { - [SerializeField] private AutocannonPart[] parts; - private int currentPoint = 0; - - public override void Fire() { - switch (data.cycleMode) { - case CycleMode.Cycling: - parts[currentPoint].Fire(data.damage); - currentPoint++; - currentPoint %= parts.Length; - break; - - case CycleMode.Volley: - foreach (var part in parts) - part.Fire(data.damage); - - break; - } - } - - protected override void OnAdd() { - var animTime = GetAnimTime(); - if (Parent.BlockContext == 0) { - throw new InvalidOperationException("Parent's block context must be set"); - } - - var damageMask = ~Parent.BlockContext; - - foreach (var part in parts) - part.Setup(animTime, Parent, damageMask); - } - - private float GetAnimTime() { - switch (data.cycleMode) { - case CycleMode.Cycling: - return data.firingRate * 1.5f; - - case CycleMode.Volley: - return data.firingRate * 0.75f; - - default: - throw new Exception(); - } - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/Turret/AutocannonData.cs b/Assets/Project/Source/Grids/Blocks/Components/Turret/AutocannonData.cs deleted file mode 100644 index 36135bdd..00000000 --- a/Assets/Project/Source/Grids/Blocks/Components/Turret/AutocannonData.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System; -using Exa.Generics; -using Exa.UI.Tooltips; -using System.Collections.Generic; - -namespace Exa.Grids.Blocks.Components -{ - public enum CycleMode - { - Cycling, - Volley - } - - [Serializable] - public struct AutocannonData : ITurretValues - { - public float turningRate; - public float firingRate; - public float damage; - public CycleMode cycleMode; - - public float TurningRate => turningRate; - public float FiringRate => firingRate; - public float Damage => damage; - - public void AddGridTotals(GridTotals totals) { } - - public void RemoveGridTotals(GridTotals totals) { } - - public IEnumerable GetTooltipComponents() => new ITooltipComponent[] { - new LabeledValue("Turning rate", $"{turningRate}°/s"), - new LabeledValue("Firing rate", $"{60 / firingRate} RPM"), - new LabeledValue("Damage", $"{damage}"), - new LabeledValue("Cycle mode", $"{cycleMode}") - }; - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/Turret/AutocannonTemplatePartial.cs b/Assets/Project/Source/Grids/Blocks/Components/Turret/AutocannonTemplatePartial.cs deleted file mode 100644 index aecc8e9d..00000000 --- a/Assets/Project/Source/Grids/Blocks/Components/Turret/AutocannonTemplatePartial.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; - -namespace Exa.Grids.Blocks.Components -{ - [Serializable] - public class AutocannonTemplatePartial : TemplatePartial - { - public float turningRate; // Degrees per second - public float firingRate; // Shot interval - public float damage; // Damage per shot - public CycleMode cycleMode; // Wether guns are cycled or fired simoultaniously - - public override AutocannonData Convert() => new AutocannonData { - turningRate = turningRate, - firingRate = firingRate, - damage = damage, - cycleMode = cycleMode - }; - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/Turret/AutocannonTemplatePartial.cs.meta b/Assets/Project/Source/Grids/Blocks/Components/Turret/AutocannonTemplatePartial.cs.meta deleted file mode 100644 index 51ae335a..00000000 --- a/Assets/Project/Source/Grids/Blocks/Components/Turret/AutocannonTemplatePartial.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: a0b4d2768bbaa5547b6f43b717b182fe -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/Components/Turret/ChargeableTurretBehaviour.cs b/Assets/Project/Source/Grids/Blocks/Components/Turret/ChargeableTurretBehaviour.cs new file mode 100644 index 00000000..e5167865 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/Turret/ChargeableTurretBehaviour.cs @@ -0,0 +1,70 @@ +using Exa.Data; +using UnityEngine; + +namespace Exa.Grids.Blocks.Components { + public abstract class ChargeableTurretBehaviour : TurretBehaviour, IChargeableTurretBehaviour + where T : struct, IChargeableTurretValues { + [Header("Settings")] + [SerializeField] protected float chargeDecaySpeed = 4f; + [SerializeField] protected float coolingDownChargeDecaySpeed = 12f; + + protected float chargeTime; + protected bool charging; + protected float remainingCooldownTime; + + protected abstract bool CanResumeCharge { get; } + protected abstract float GetCooldownTime { get; } + + protected bool IsCoolingDown { + get => remainingCooldownTime > 0f; + } + + public override void Fire() { + remainingCooldownTime = GetCooldownTime; + } + + public virtual void StartCharge() { + if (IsCoolingDown) { + return; + } + + charging = true; + + if (!CanResumeCharge) { + chargeTime = 0f; + } + } + + public virtual void EndCharge() { + charging = false; + } + + protected override void BlockUpdate() { + base.BlockUpdate(); + + if (charging) { + chargeTime += Time.deltaTime; + + if (chargeTime > Data.ChargeTime) { + charging = false; + chargeTime = Data.ChargeTime; + Fire(); + } + } else if (IsCoolingDown) { + chargeTime -= Time.deltaTime * coolingDownChargeDecaySpeed; + remainingCooldownTime -= Time.deltaTime; + } else { + chargeTime -= Time.deltaTime * chargeDecaySpeed; + } + + if (chargeTime < 0f) { + chargeTime = 0f; + } + } + + protected Scalar GetNormalizedChargeProgress() { + // Get the charge + return chargeTime == 0f ? 0f : chargeTime / Data.ChargeTime; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/Turret/ChargeableTurretBehaviour.cs.meta b/Assets/Project/Source/Grids/Blocks/Components/Turret/ChargeableTurretBehaviour.cs.meta new file mode 100644 index 00000000..97fd9f23 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/Turret/ChargeableTurretBehaviour.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9efc2da17dd9c574aa60f7d0a6c06951 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/Components/Turret/IChargeableTurretValues.cs b/Assets/Project/Source/Grids/Blocks/Components/Turret/IChargeableTurretValues.cs new file mode 100644 index 00000000..3928f629 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/Turret/IChargeableTurretValues.cs @@ -0,0 +1,5 @@ +namespace Exa.Grids.Blocks.Components { + public interface IChargeableTurretValues : ITurretValues { + public float ChargeTime { get; } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/Turret/IChargeableTurretValues.cs.meta b/Assets/Project/Source/Grids/Blocks/Components/Turret/IChargeableTurretValues.cs.meta new file mode 100644 index 00000000..e8db743c --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/Turret/IChargeableTurretValues.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 16cc6d217f502ff42aab909fb719c733 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/Components/Turret/ITurretBehaviour.cs b/Assets/Project/Source/Grids/Blocks/Components/Turret/ITurretBehaviour.cs new file mode 100644 index 00000000..e40c4ccd --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/Turret/ITurretBehaviour.cs @@ -0,0 +1,16 @@ +using Exa.Ships.Targeting; + +namespace Exa.Grids.Blocks.Components { + public interface ITurretBehaviour { + public bool AutoFireEnabled { get; } + public IWeaponTarget Target { set; } + + public void Fire(); + } + + public interface IChargeableTurretBehaviour : ITurretBehaviour { + void StartCharge(); + + void EndCharge(); + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/Turret/ITurretBehaviour.cs.meta b/Assets/Project/Source/Grids/Blocks/Components/Turret/ITurretBehaviour.cs.meta new file mode 100644 index 00000000..50693867 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Components/Turret/ITurretBehaviour.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: a411438773754a93968bc073e513ecd2 +timeCreated: 1621284411 \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/Turret/ITurretValues.cs b/Assets/Project/Source/Grids/Blocks/Components/Turret/ITurretValues.cs index 155c0a9f..70ba00bd 100644 --- a/Assets/Project/Source/Grids/Blocks/Components/Turret/ITurretValues.cs +++ b/Assets/Project/Source/Grids/Blocks/Components/Turret/ITurretValues.cs @@ -1,9 +1,19 @@ -namespace Exa.Grids.Blocks.Components -{ - public interface ITurretValues : IBlockComponentValues - { +using System.Collections.Generic; +using Exa.Types.Generics; +using Exa.UI.Tooltips; + +namespace Exa.Grids.Blocks.Components { + public interface ITurretValues : IBlockComponentValues { float TurningRate { get; } // in degrees rotation per second - float FiringRate { get; } // in rounds per second - float Damage { get; } // TODO: Expand the damage model + float FiringRate { get; } // As seconds elapsed between each shot + float TurretArc { get; } + float TurretRadius { get; } + float Range { get; } + } + + public static class ITurretValuesExtensions { + public static MinMax GetTurretArcMinMax(this ITurretValues values) { + return new MinMax(-(values.TurretArc / 2f), values.TurretArc / 2f); + } } } \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/Turret/TurretBehaviour.cs b/Assets/Project/Source/Grids/Blocks/Components/Turret/TurretBehaviour.cs index 760b7359..0a40f860 100644 --- a/Assets/Project/Source/Grids/Blocks/Components/Turret/TurretBehaviour.cs +++ b/Assets/Project/Source/Grids/Blocks/Components/Turret/TurretBehaviour.cs @@ -1,56 +1,128 @@ using Exa.Math; +using Exa.Ships; using Exa.Ships.Targeting; +using Exa.Types.Generics; +using Exa.Utils; using UnityEngine; -#pragma warning disable CS0649 - -namespace Exa.Grids.Blocks.Components -{ - public abstract class TurretBehaviour : BlockBehaviour - where T : struct, ITurretValues - { +namespace Exa.Grids.Blocks.Components { + public abstract class TurretBehaviour : BlockBehaviour, ITurretBehaviour + where T : struct, ITurretValues { [Header("References")] - [SerializeField] private Transform turret; + [SerializeField] protected Transform turret; + protected RotationResult rotationResult; - private float timeSinceFire; + public bool AutoFireEnabled { get; set; } public IWeaponTarget Target { get; set; } + public abstract void Fire(); + protected override void BlockUpdate() { - timeSinceFire += Time.deltaTime; + rotationResult = TryRotateTowardsTarget(); + } + protected RotationResult TryRotateTowardsTarget() { + // Dereference target if it isn't valid anymore if (!Target?.GetTargetValid() ?? false) { Target = null; } + var result = RotateTowards(SelectTargetAngle()); + SetCurrentAngle(result.endRotation); + + return result; + } + + protected virtual float SelectTargetAngle() { if (Target == null) { - var shipAngle = Parent.Transform.right.ToVector2().GetAngle(); - RotateTowards(shipAngle); - return; + return GetDefaultAngle(); } - // Rotate the turret to the target var currentPosition = transform.position.ToVector2(); var difference = Target.GetPosition(currentPosition) - currentPosition; - var targetAngle = difference.GetAngle(); - RotateTowards(targetAngle); - var currentAngle = turret.rotation.eulerAngles.z; - if (WithinFiringFrustum(currentAngle, targetAngle) && timeSinceFire > data.FiringRate) { - timeSinceFire = 0f; - Fire(); + return difference.Rotate(-transform.rotation.eulerAngles.z).GetAngle(); + } + + protected float GetDefaultAngle() { + return 0f; + } + + // TODO: Clamp to local space + protected virtual RotationResult RotateTowards(float targetAngle) { + var currentAngle = GetCurrentAngle(); + var deltaAngle = GetDeltaAngleTowards(currentAngle, targetAngle); + + if (deltaAngle == 0f) { + return new RotationResult(0f, currentAngle); } + + // Clamp the delta to whatever we are allowed to turn this frame + var maxDelta = Data.TurningRate * Time.deltaTime; + currentAngle += Mathf.Clamp(deltaAngle, -maxDelta, maxDelta); + + return new RotationResult { + deltaToTarget = Mathf.DeltaAngle(currentAngle, targetAngle), + endRotation = currentAngle + }; } - // TODO: Actually rotate using the rotation speed - public void RotateTowards(float angle) { - turret.rotation = Quaternion.Euler(0, 0, angle); + protected virtual float GetCurrentAngle() { + return turret.localRotation.eulerAngles.z; } - public abstract void Fire(); + protected virtual void SetCurrentAngle(float angle) { + turret.localRotation = Quaternion.Euler(0, 0, angle); + } + + protected virtual float GetDeltaAngleTowards(float currentAngle, float targetAngle) { + // If the arc is 360f, simply allow wrapping + if (Data.TurretArc == 360f) { + return Mathf.DeltaAngle(currentAngle, targetAngle); + } + + MathUtils.WrapAngle(ref currentAngle); + MathUtils.WrapAngle(ref targetAngle); + + return Data.GetTurretArcMinMax().Clamp(targetAngle) - currentAngle; + } + + protected Vector3 HitScanFire(float damage, float maxDistance, Transform firingPoint) { + var enemyMask = (~Parent.BlockContext).GetBlockMask(); + var hits = PhysicsExtensions.RaycastAll(firingPoint.position, firingPoint.right, maxDistance, enemyMask); + + using var hitsEnumerator = hits.GetEnumerator(); + + var lastHitPosition = new Vector2(); + + while (damage > 0f && hitsEnumerator.MoveNext(out var hit)) { + lastHitPosition = hit.hit.point; + + var damageInstance = hit.damageable.TakeDamage( + new Damage { + source = Parent, + value = damage + } + ); + + damage -= damageInstance.absorbedDamage; + } + + return damage > 0f + ? firingPoint.right * maxDistance + : lastHitPosition.ToVector3(); + } + } + + // TODO: Fix delta to target + public struct RotationResult { + public float deltaToTarget; + public float endRotation; - private bool WithinFiringFrustum(float currentAngle, float targetAngle) { - return Mathf.DeltaAngle(currentAngle, targetAngle) < 2.5f; + public RotationResult(float deltaToTarget, float endRotation) { + this.deltaToTarget = deltaToTarget; + this.endRotation = endRotation; } } } \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/Turret/TurretData.cs b/Assets/Project/Source/Grids/Blocks/Components/Turret/TurretData.cs deleted file mode 100644 index 6b123333..00000000 --- a/Assets/Project/Source/Grids/Blocks/Components/Turret/TurretData.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System; -using Exa.Generics; -using Exa.UI.Tooltips; -using System.Collections.Generic; - -namespace Exa.Grids.Blocks.Components -{ - [Serializable] - public struct TurretData : ITurretValues - { - public float turningRate; - public float firingRate; - public float damage; - - public float TurningRate => turningRate; - public float FiringRate => firingRate; - public float Damage => damage; - - public void AddGridTotals(GridTotals totals) { } - - public void RemoveGridTotals(GridTotals totals) { } - - public IEnumerable GetTooltipComponents() => new ITooltipComponent[] { - new LabeledValue("Turning rate", $"{turningRate}°/s"), - new LabeledValue("Firing rate", $"{firingRate * 60} RPM"), - new LabeledValue("Damage", $"{damage}") - }; - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/Turret/TurretData.cs.meta b/Assets/Project/Source/Grids/Blocks/Components/Turret/TurretData.cs.meta deleted file mode 100644 index 9c1b44a9..00000000 --- a/Assets/Project/Source/Grids/Blocks/Components/Turret/TurretData.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 8ec55c99aa4e20c47977131e115ffc89 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/Components/Turret/TurretTemplatePartial.cs b/Assets/Project/Source/Grids/Blocks/Components/Turret/TurretTemplatePartial.cs deleted file mode 100644 index bedf30b1..00000000 --- a/Assets/Project/Source/Grids/Blocks/Components/Turret/TurretTemplatePartial.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System; -using UnityEngine; - -namespace Exa.Grids.Blocks.Components -{ - [Serializable] - public class TurretTemplatePartial : TemplatePartial - { - [Tooltip("In degrees rotation per second")] - public float turningRate; - - [Tooltip("In second interval between shots")] - public float firingRate; - - public float damage; - - public override TurretData Convert() => new TurretData { - turningRate = turningRate, - firingRate = firingRate, - damage = damage - }; - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Components/Turret/TurretTemplatePartial.cs.meta b/Assets/Project/Source/Grids/Blocks/Components/Turret/TurretTemplatePartial.cs.meta deleted file mode 100644 index 50b61799..00000000 --- a/Assets/Project/Source/Grids/Blocks/Components/Turret/TurretTemplatePartial.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 38b0f73229a349843be0041bf29349ff -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blocks/Damage.cs b/Assets/Project/Source/Grids/Blocks/Damage.cs new file mode 100644 index 00000000..07fbd0f4 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Damage.cs @@ -0,0 +1,39 @@ +using Exa.Grids.Blocks.BlockTypes; +using Exa.Utils; +using UnityEngine; + +namespace Exa.Grids.Blocks { + public interface IDamageable { + TakenDamage TakeDamage(Damage damage); + BlockContext? BlockContext { get; } + bool IsQueuedForDestruction { get; } + } + + public struct Damage { + public float value; + public object source; + } + + public struct TakenDamage { + public float absorbedDamage; + public float appliedDamage; + } + + public static class DamageableExtensions { + /// + /// Get whether or not this damageable should be targeted + /// + public static bool PassesDamageMask(this IDamageable damageable, BlockContext damageMask) { + if (damageable.IsQueuedForDestruction) { + return false; + } + + if (damageable.BlockContext.GetHasValue(out var value)) { + return value.HasAnyValue(damageMask); + } + + Debug.LogError($"Damageable {damageable} has no parent"); + return false; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/Damage.cs.meta b/Assets/Project/Source/Grids/Blocks/Damage.cs.meta new file mode 100644 index 00000000..4d84390e --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/Damage.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 6a59c1eedf5b4b119cade848c8884b03 +timeCreated: 1626105228 \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/HealthPool.cs b/Assets/Project/Source/Grids/Blocks/HealthPool.cs new file mode 100644 index 00000000..3c624e85 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/HealthPool.cs @@ -0,0 +1,29 @@ +using System; +using UnityEngine; +using UnityEngine.Serialization; + +namespace Exa.Grids.Blocks { + [Serializable] + public struct HealthPool { + public float value; + + public bool TakeDamage(Damage damage, float armor, out TakenDamage takenDamage) { + if (value <= 0) { + throw new InvalidOperationException("Cannot take damage when health is empty"); + } + + takenDamage = new TakenDamage { + absorbedDamage = Mathf.Min(value, damage.value), + appliedDamage = Mathf.Min(value, ComputeDamage(damage.value, armor)) + }; + + value -= takenDamage.appliedDamage; + + return value > 0; + } + + private float ComputeDamage(float damage, float armor) { + return Mathf.Max(damage - armor, 0f); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/HealthPool.cs.meta b/Assets/Project/Source/Grids/Blocks/HealthPool.cs.meta new file mode 100644 index 00000000..e02421a3 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/HealthPool.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: f4583b5acd5a4d528181ea24ed51fb3d +timeCreated: 1626105057 \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/IBlockComponentContainer.cs b/Assets/Project/Source/Grids/Blocks/IBlockComponentContainer.cs new file mode 100644 index 00000000..44489179 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/IBlockComponentContainer.cs @@ -0,0 +1,28 @@ +using System; +using Exa.Grids.Blocks.Components; + +namespace Exa.Grids.Blocks { + /// + /// Supports converting a template component to the runtime data container + /// + /// + public interface ITemplatePartial : IBlockComponentContainer + where T : struct, IBlockComponentValues { + T ToBaseComponentValues(); + } + + public interface IBlockComponentContainer { + Type GetDataType(); + } + + public static class ITemplatePartialExtensions { + public static bool GetDataTypeIsOf(this IBlockComponentContainer partial) + where TType : IBlockComponentValues { + return partial.GetDataTypeIsOf(typeof(TType)); + } + + public static bool GetDataTypeIsOf(this IBlockComponentContainer partial, Type type) { + return type.IsAssignableFrom(partial.GetDataType()); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/ITemplatePartial.cs.meta b/Assets/Project/Source/Grids/Blocks/IBlockComponentContainer.cs.meta similarity index 100% rename from Assets/Project/Source/Grids/Blocks/ITemplatePartial.cs.meta rename to Assets/Project/Source/Grids/Blocks/IBlockComponentContainer.cs.meta diff --git a/Assets/Project/Source/Grids/Blocks/IGridTotalsModifier.cs b/Assets/Project/Source/Grids/Blocks/IGridTotalsModifier.cs index fac562f1..0e5c3f8c 100644 --- a/Assets/Project/Source/Grids/Blocks/IGridTotalsModifier.cs +++ b/Assets/Project/Source/Grids/Blocks/IGridTotalsModifier.cs @@ -1,7 +1,5 @@ -namespace Exa.Grids.Blocks -{ - public interface IGridTotalsModifier - { +namespace Exa.Grids.Blocks { + public interface IGridTotalsModifier { void AddGridTotals(GridTotals totals); void RemoveGridTotals(GridTotals totals); diff --git a/Assets/Project/Source/Grids/Blocks/ITemplatePartial.cs b/Assets/Project/Source/Grids/Blocks/ITemplatePartial.cs deleted file mode 100644 index ba04a751..00000000 --- a/Assets/Project/Source/Grids/Blocks/ITemplatePartial.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Exa.Grids.Blocks.Components; - -namespace Exa.Grids.Blocks -{ - /// - /// Supports converting a template component to the runtime data container - /// - /// - public interface ITemplatePartial - where T : IBlockComponentValues - { - T Convert(); - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/InertBlockPoolGroup.cs b/Assets/Project/Source/Grids/Blocks/InertBlockPoolGroup.cs index f6d995b8..6ae697f8 100644 --- a/Assets/Project/Source/Grids/Blocks/InertBlockPoolGroup.cs +++ b/Assets/Project/Source/Grids/Blocks/InertBlockPoolGroup.cs @@ -1,25 +1,20 @@ using Exa.Pooling; -namespace Exa.Grids.Blocks -{ - public enum PrefabType - { +namespace Exa.Grids.Blocks { + public enum PrefabType { inert, alive } - public class InertBlockPoolGroup : BlockPoolGroupBase - { - protected override PrefabType PrefabType => PrefabType.inert; - + public class InertBlockPoolGroup : BlockPoolGroupBase { /// - /// Creates an inert block prefab on this group - /// + /// Creates an inert block prefab on this group + /// /// /// public void CreateInertPrefab(BlockTemplate blockTemplate) { var id = blockTemplate.id; - var prefab = CreatePrefab(blockTemplate, PrefabType); + var prefab = CreatePrefab(blockTemplate, PrefabType.inert); var pool = CreatePool(prefab, $"Inert block pool: {id}", out var settings); poolById[id] = pool; pool.Configure(settings); diff --git a/Assets/Project/Source/Grids/Blocks/TemplatePartial.cs b/Assets/Project/Source/Grids/Blocks/TemplatePartial.cs deleted file mode 100644 index 8900b184..00000000 --- a/Assets/Project/Source/Grids/Blocks/TemplatePartial.cs +++ /dev/null @@ -1,55 +0,0 @@ -using Exa.Grids.Blocks.BlockTypes; -using Exa.Grids.Blocks.Components; -using System; - -namespace Exa.Grids.Blocks -{ - public abstract class TemplatePartial : TemplatePartialBase, ITemplatePartial - where T : struct, IBlockComponentValues - { - public abstract T Convert(); - - // TODO: Use the given context to apply value modifiers in the conversion step - public override IBlockComponentValues GetValues(BlockContext blockContext) { - return Convert(); - } - - public override void SetValues(Block block, IBlockComponentValues data) { - var partial = GetMarker(block); - partial.Component.Data = (T) data; - } - - public override void AddGridTotals(GridTotals totals) { - Convert().AddGridTotals(totals); - } - - public override void RemoveGridTotals(GridTotals totals) { - Convert().RemoveGridTotals(totals); - } - - private IBehaviourMarker GetMarker(Block block) { - var partial = block as IBehaviourMarker; - - if (partial == null) { - throw new Exception($"Partial {typeof(IBehaviourMarker)} is not supported on block: {block}"); - } - - if (partial.Component == null) { - throw new Exception($"Block behaviour for {typeof(T).Name} is null"); - } - - return partial; - } - } - - public abstract class TemplatePartialBase : IGridTotalsModifier - { - public abstract IBlockComponentValues GetValues(BlockContext blockContext); - - public abstract void SetValues(Block block, IBlockComponentValues data); - - public abstract void AddGridTotals(GridTotals totals); - - public abstract void RemoveGridTotals(GridTotals totals); - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/TemplatePartialBase.cs b/Assets/Project/Source/Grids/Blocks/TemplatePartialBase.cs new file mode 100644 index 00000000..fdaa4e29 --- /dev/null +++ b/Assets/Project/Source/Grids/Blocks/TemplatePartialBase.cs @@ -0,0 +1,55 @@ +using System; +using Exa.Grids.Blocks.BlockTypes; +using Exa.Grids.Blocks.Components; +using Exa.Utils; + +namespace Exa.Grids.Blocks { + public abstract class TemplatePartialBase : TemplatePartialBase, ITemplatePartial + where T : struct, IBlockComponentValues { + public abstract T ToBaseComponentValues(); + + public T ToContextfulComponentValues(BlockContext blockContext) { + return S.Research.ApplyModifiers(blockContext, Template, ToBaseComponentValues()); + } + + public override IBlockComponentValues GetContextlessValues() { + return ToBaseComponentValues(); + } + + public override IBlockComponentValues GetContextfulValues(BlockContext blockContext) { + return ToContextfulComponentValues(blockContext); + } + + public override void SetValues(Block block, IBlockComponentValues data) { + block.GetBehaviourOfData().Data = (T) data; + } + + public override void AddGridTotals(GridTotals totals) { + S.Blocks.Values.GetValues(totals.GetInjectedContext(), Template).AddGridTotals(totals); + } + + public override void RemoveGridTotals(GridTotals totals) { + S.Blocks.Values.GetValues(totals.GetInjectedContext(), Template).RemoveGridTotals(totals); + } + + public override Type GetDataType() { + return typeof(T); + } + } + + public abstract class TemplatePartialBase : IGridTotalsModifier, IBlockComponentContainer { + public BlockTemplate Template { get; internal set; } + + public abstract void AddGridTotals(GridTotals totals); + + public abstract void RemoveGridTotals(GridTotals totals); + + public abstract IBlockComponentValues GetContextlessValues(); + + public abstract IBlockComponentValues GetContextfulValues(BlockContext blockContext); + + public abstract void SetValues(Block block, IBlockComponentValues data); + + public abstract Type GetDataType(); + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blocks/TemplatePartial.cs.meta b/Assets/Project/Source/Grids/Blocks/TemplatePartialBase.cs.meta similarity index 100% rename from Assets/Project/Source/Grids/Blocks/TemplatePartial.cs.meta rename to Assets/Project/Source/Grids/Blocks/TemplatePartialBase.cs.meta diff --git a/Assets/Project/Source/Grids/Blueprints/ABpBlock.cs b/Assets/Project/Source/Grids/Blueprints/ABpBlock.cs new file mode 100644 index 00000000..b4220f3d --- /dev/null +++ b/Assets/Project/Source/Grids/Blueprints/ABpBlock.cs @@ -0,0 +1,72 @@ +using System; +using Exa.Generics; +using Exa.Grids.Blocks; +using Exa.Grids.Blocks.BlockTypes; +using UnityEngine; + +namespace Exa.Grids.Blueprints { + [Serializable] + public class ABpBlock : ICloneable, IGridMember { + public Vector2Int gridAnchor; + public BlueprintBlock blueprintBlock; + + public ABpBlock(Vector2Int gridAnchor, BlueprintBlock blueprintBlock) { + this.gridAnchor = gridAnchor; + this.blueprintBlock = blueprintBlock; + } + + public ABpBlock(IGridMember member) + : this(member.GridAnchor, member.BlueprintBlock) { + } + + public BlockTemplate Template { + get => BlueprintBlock.Template; + } + + public ABpBlock Clone() { + return new ABpBlock(gridAnchor, blueprintBlock); + } + + public Vector2Int GridAnchor { + get => gridAnchor; + set => gridAnchor = value; + } + + public BlueprintBlock BlueprintBlock { + get => blueprintBlock; + set => blueprintBlock = value; + } + + public void AddGridTotals(GridTotals totals) { + blueprintBlock.Template.AddGridTotals(totals); + } + + public void RemoveGridTotals(GridTotals totals) { + blueprintBlock.Template.RemoveGridTotals(totals); + } + + public bool Equals(IGridMember other) { + return GridMemberComparer.Default.Equals(this, other); + } + + public GameObject CreateInactiveInertBlockInGrid(Transform parent) { + var blockGO = S.Blocks.GetInactiveInertBlock(blueprintBlock.id, parent); + this.SetupGameObject(blockGO); + + return blockGO; + } + + public Block CreateInactiveBlockInGrid(IGridInstance parent) { + var block = S.Blocks.GetInactiveBlock(blueprintBlock.id, parent); + var blockGO = block.gameObject; + block.aBpBlock = this; + this.SetupGameObject(blockGO); + + return block; + } + + public override string ToString() { + return $"{gridAnchor}:{blueprintBlock}"; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blueprints/ABpBlock.cs.meta b/Assets/Project/Source/Grids/Blueprints/ABpBlock.cs.meta new file mode 100644 index 00000000..82c27a37 --- /dev/null +++ b/Assets/Project/Source/Grids/Blueprints/ABpBlock.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 394fa270324658f4aaf204019396b4ee +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blueprints/AnchoredBlueprintBlock.cs b/Assets/Project/Source/Grids/Blueprints/AnchoredBlueprintBlock.cs deleted file mode 100644 index f4f65ec9..00000000 --- a/Assets/Project/Source/Grids/Blueprints/AnchoredBlueprintBlock.cs +++ /dev/null @@ -1,56 +0,0 @@ -using Exa.Generics; -using Exa.Grids.Blocks; -using Exa.Grids.Blocks.BlockTypes; -using System; -using UnityEngine; - -namespace Exa.Grids.Blueprints -{ - [Serializable] - public class AnchoredBlueprintBlock : ICloneable, IGridMember - { - public Vector2Int gridAnchor; - public BlueprintBlock blueprintBlock; - - public Vector2Int GridAnchor { - get => gridAnchor; - set => gridAnchor = value; - } - - public BlueprintBlock BlueprintBlock { - get => blueprintBlock; - set => blueprintBlock = value; - } - - public AnchoredBlueprintBlock(Vector2Int gridAnchor, BlueprintBlock blueprintBlock) { - this.gridAnchor = gridAnchor; - this.blueprintBlock = blueprintBlock; - } - - public GameObject CreateInactiveInertBlockInGrid(Transform parent) { - var blockGO = Systems.Blocks.GetInactiveInertBlock(blueprintBlock.id, parent); - this.SetupGameObject(blockGO); - return blockGO; - } - - public Block CreateInactiveBlockInGrid(Transform parent, BlockContext blockPrefabType) { - var block = Systems.Blocks.GetInactiveBlock(blueprintBlock.id, parent, blockPrefabType); - var blockGO = block.gameObject; - block.anchoredBlueprintBlock = this; - this.SetupGameObject(blockGO); - return block; - } - - public AnchoredBlueprintBlock Clone() { - return new AnchoredBlueprintBlock(gridAnchor, blueprintBlock); - } - - public void AddGridTotals(GridTotals totals) { - blueprintBlock.Template.AddGridTotals(totals); - } - - public void RemoveGridTotals(GridTotals totals) { - blueprintBlock.Template.RemoveGridTotals(totals); - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blueprints/AnchoredBlueprintBlock.cs.meta b/Assets/Project/Source/Grids/Blueprints/AnchoredBlueprintBlock.cs.meta deleted file mode 100644 index b016db49..00000000 --- a/Assets/Project/Source/Grids/Blueprints/AnchoredBlueprintBlock.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 80a4fa5d5352b0d4a8a4b8ea6e7fa6d8 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blueprints/Blueprint.cs b/Assets/Project/Source/Grids/Blueprints/Blueprint.cs index 921aa4d5..b8a2961f 100644 --- a/Assets/Project/Source/Grids/Blueprints/Blueprint.cs +++ b/Assets/Project/Source/Grids/Blueprints/Blueprint.cs @@ -1,59 +1,66 @@ -using Exa.Generics; +using System.Collections.Generic; +using Exa.Generics; +using Exa.Types.Generics; using Exa.UI.Tooltips; using Newtonsoft.Json; -using System.Collections.Generic; using UnityEngine; -namespace Exa.Grids.Blueprints -{ - public class Blueprint : ICloneable - { +namespace Exa.Grids.Blueprints { + public class Blueprint : ICloneable { public static readonly string DEFAULT_BLUEPRINT_NAME = "New blueprint"; public string name; public BlueprintTypeGuid shipClass; - [JsonProperty("blocks")] public BlueprintBlocks Blocks { get; private set; } - [JsonIgnore] public Texture2D Thumbnail { get; set; } - - [JsonIgnore] public BlueprintType BlueprintType => Systems.Blueprints.blueprintTypes.typesById[shipClass]; - public Blueprint(BlueprintOptions options) { - this.name = options.name; - this.shipClass = options.shipClass; - this.Blocks = new BlueprintBlocks(); + name = options.name; + shipClass = options.shipClass; + Grid = new BlueprintGrid(); } [JsonConstructor] - public Blueprint(string name, BlueprintTypeGuid shipClass, BlueprintBlocks blocks) { + public Blueprint(string name, BlueprintTypeGuid shipClass, BlueprintGrid grid) { this.name = name; this.shipClass = shipClass; - this.Blocks = blocks; + Grid = grid; + } + + public ABpBlock this[Vector2Int key] { + get => Grid.GetMember(key); + } + + [JsonProperty("blocks")] public BlueprintGrid Grid { get; private set; } + [JsonIgnore] public Texture2D Thumbnail { get; set; } + + [JsonIgnore] public BlueprintType BlueprintType { + get => S.Blueprints.blueprintTypes.typesById[shipClass]; } - public void Add(AnchoredBlueprintBlock anchoredBlueprintBlock) { - Blocks.Add(anchoredBlueprintBlock); + public Blueprint Clone() { + return new Blueprint(name, shipClass, Grid.Clone()); + } + + public void Add(ABpBlock aBpBlock) { + Grid.Add(aBpBlock); } public void Remove(Vector2Int gridPos) { - Blocks.Remove(gridPos); + Grid.Remove(gridPos); } public void ClearBlocks() { - Blocks = new BlueprintBlocks(); + Grid = new BlueprintGrid(); Thumbnail = null; } - public Blueprint Clone() { - return new Blueprint(name, shipClass, Blocks.Clone()); + public IEnumerable GetDebugTooltipComponents() { + return new ITooltipComponent[] { + new TooltipText($"Name: {name}"), + new TooltipText($"Class: {shipClass}"), + new TooltipText($"Size: {(Vector2Int) Grid.Size}"), + new TooltipText($"Blocks (Count: {Grid.GetMemberCount()}):"), + new TooltipGroup(Grid.GetTotals().GetDebugTooltipComponents(), 1) + }; } - - public IEnumerable GetDebugTooltipComponents() => new ITooltipComponent[] { - new TooltipText($"Name: {name}"), - new TooltipText($"Class: {shipClass}"), - new TooltipText($"Size: {(Vector2Int)Blocks.Size}"), - new TooltipText($"Blocks (Count: {Blocks.GetMemberCount()}):"), - new TooltipGroup(Blocks.Totals.GetDebugTooltipComponents(), 1) - }; } } \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blueprints/BlueprintBlock.cs b/Assets/Project/Source/Grids/Blueprints/BlueprintBlock.cs index e8df7252..d14a8a91 100644 --- a/Assets/Project/Source/Grids/Blueprints/BlueprintBlock.cs +++ b/Assets/Project/Source/Grids/Blueprints/BlueprintBlock.cs @@ -1,20 +1,17 @@ -using Exa.Grids.Blocks; -using Exa.Math; -using Newtonsoft.Json; -using System; +using System; using System.Collections.Generic; using System.ComponentModel; +using Exa.Grids.Blocks; +using Exa.Math; +using Newtonsoft.Json; using UnityEngine; -namespace Exa.Grids.Blueprints -{ +namespace Exa.Grids.Blueprints { [Serializable] - public struct BlueprintBlock - { + public struct BlueprintBlock : IEquatable { public string id; [DefaultValue(false)] public bool flippedX; [DefaultValue(false)] public bool flippedY; - [JsonIgnore] private int rotation; public int Rotation { @@ -28,32 +25,46 @@ public int Direction { } [JsonIgnore] - public Vector2Int FlipVector => new Vector2Int { - x = flippedX ? -1 : 1, - y = flippedY ? -1 : 1 - }; + public Vector2Int FlipVector { + get => new Vector2Int { + x = flippedX ? -1 : 1, + y = flippedY ? -1 : 1 + }; + } [JsonIgnore] public BlockTemplate Template { get { - if (!Systems.Blocks.blockTemplatesDict.ContainsKey(id)) { + if (!S.Blocks.blockTemplatesDict.ContainsKey(id)) { throw new KeyNotFoundException($"Block template with id: {id} doesn't exist"); } - return Systems.Blocks.blockTemplatesDict[id]; + return S.Blocks.blockTemplatesDict[id]; } } - [JsonIgnore] - public Quaternion QuaternionRotation { - get => Quaternion.Euler(0, 0, Rotation * 90f); + public bool Equals(BlueprintBlock other) { + return + id == other.id && + flippedX == other.flippedX && + flippedY == other.flippedY && + rotation == other.rotation; + } + + public Quaternion GetDirection() { + return Quaternion.Euler(0, 0, Direction * 90f); } public Vector2Int CalculateSizeDelta() { var area = Template.size.Rotate(Rotation); - if (flippedX) area.x = -area.x; - if (flippedY) area.y = -area.y; + if (flippedX) { + area.x = -area.x; + } + + if (flippedY) { + area.y = -area.y; + } return area; } @@ -67,5 +78,24 @@ public void SetSpriteRendererFlips(SpriteRenderer spriteRenderer) { ? flippedY : flippedX; } + + public override string ToString() { + return $"{id}:{rotation}"; + } + + public override bool Equals(object obj) { + return obj is BlueprintBlock other && Equals(other); + } + + public override int GetHashCode() { + unchecked { + var hashCode = id != null ? id.GetHashCode() : 0; + hashCode = (hashCode * 397) ^ flippedX.GetHashCode(); + hashCode = (hashCode * 397) ^ flippedY.GetHashCode(); + hashCode = (hashCode * 397) ^ rotation; + + return hashCode; + } + } } } \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blueprints/BlueprintBlocks.cs b/Assets/Project/Source/Grids/Blueprints/BlueprintBlocks.cs deleted file mode 100644 index a1cbae1a..00000000 --- a/Assets/Project/Source/Grids/Blueprints/BlueprintBlocks.cs +++ /dev/null @@ -1,19 +0,0 @@ -using Exa.Generics; -using Exa.IO.Json; -using Newtonsoft.Json; - -namespace Exa.Grids.Blueprints -{ - [JsonConverter(typeof(BlueprintBlocksConverter))] - public class BlueprintBlocks : Grid, ICloneable - { - public BlueprintBlocks Clone() { - var newBlocks = new BlueprintBlocks(); - foreach (var block in GridMembers) { - newBlocks.Add(block.Clone()); - } - - return newBlocks; - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blueprints/BlueprintBlocksOccupiedTilesCache.cs b/Assets/Project/Source/Grids/Blueprints/BlueprintBlocksOccupiedTilesCache.cs index e7b5c221..884d2ee2 100644 --- a/Assets/Project/Source/Grids/Blueprints/BlueprintBlocksOccupiedTilesCache.cs +++ b/Assets/Project/Source/Grids/Blueprints/BlueprintBlocksOccupiedTilesCache.cs @@ -1,14 +1,13 @@ -using Exa.Generics; -using System.Collections.Generic; +using System.Collections.Generic; +using Exa.Generics; using UnityEngine; -namespace Exa.Grids.Blueprints -{ - public class BlueprintBlocksOccupiedTilesCache : Dictionary, - ICloneable - { +namespace Exa.Grids.Blueprints { + public class BlueprintBlocksOccupiedTilesCache : Dictionary, + ICloneable { public BlueprintBlocksOccupiedTilesCache Clone() { var dict = new BlueprintBlocksOccupiedTilesCache(); + foreach (var item in this) { dict.Add(item.Key, item.Value.Clone()); } diff --git a/Assets/Project/Source/Grids/Blueprints/BlueprintContainer.cs b/Assets/Project/Source/Grids/Blueprints/BlueprintContainer.cs index 85ea7ad4..42137083 100644 --- a/Assets/Project/Source/Grids/Blueprints/BlueprintContainer.cs +++ b/Assets/Project/Source/Grids/Blueprints/BlueprintContainer.cs @@ -1,42 +1,68 @@ -using Exa.Bindings; -using Exa.Generics; +using System.IO; using Exa.IO; +using Exa.Types.Binding; +using Exa.Types.Generics; using Newtonsoft.Json; -using System.IO; - -namespace Exa.Grids.Blueprints -{ - public class BlueprintContainer : Observable, ISerializableItem, IKeySelector - { - [JsonIgnore] public string ItemName => Data.name; - [JsonIgnore] public FileHandle BlueprintFileHandle { get; set; } - [JsonIgnore] public FileHandle ThumbnailFileHandle { get; set; } - [JsonIgnore] public string Key => Data.name; +namespace Exa.Grids.Blueprints { + public class BlueprintContainer : Observable, ISerializableItem, IKeySelector { public BlueprintContainer(BlueprintContainerArgs args) : base(args.blueprint) { if (args.generateBlueprintFileHandle) { - BlueprintFileHandle = new FileHandle(this, - name => DirectoryTree.Blueprints.CombineWith($"{name}.json"), - path => IOUtils.JsonSerializeToPath(Data, path), - args.generateBlueprintFileName); + BlueprintFileHandle = new FileHandle( + this, + name => Tree.Root.Blueprints.CombineWith($"{name}.json"), + path => IOUtils.ToJsonPath(Data, path), + args.generateBlueprintFileName + ); } var thumbnailDirectory = args.useDefaultThumbnailFolder - ? DirectoryTree.DefaultThumbnails - : DirectoryTree.Thumbnails; + ? Tree.Root.DefaultThumbnails + : Tree.Root.Thumbnails; - ThumbnailFileHandle = new FileHandle(this, + ThumbnailFileHandle = new FileHandle( + this, name => thumbnailDirectory.CombineWith($"{name}.png"), - path => IOUtils.SaveTexture2D(Data.Thumbnail, path)); + path => { + if (Data.Thumbnail != null) { + IOUtils.SaveTexture2D(Data.Thumbnail, path); + } + } + ); + } + + [JsonIgnore] public FileHandle BlueprintFileHandle { get; set; } + [JsonIgnore] public FileHandle ThumbnailFileHandle { get; set; } + + [JsonIgnore] public string Key { + get => Data.name; + } + + [JsonIgnore] public string ItemName { + get => Data.name; + } + + public override void SetData(Blueprint data, bool notify = true) { + Data = data; + + // Generate a thumbnail with the new blueprint. + if (notify) { + S.Thumbnails.GenerateThumbnail(data); + + // Make sure that Data is set before the thumbnail file handle is refreshed, as it requires the Data + ThumbnailFileHandle.Refresh(); + BlueprintFileHandle.Refresh(); + + Notify(); + } } public void LoadThumbnail() { if (File.Exists(ThumbnailFileHandle.TargetPath)) { Data.Thumbnail = IOUtils.LoadTexture2D(ThumbnailFileHandle.TargetPath, 512, 512); - } - else { - Systems.Thumbnails.GenerateThumbnail(Data); + } else { + S.Thumbnails.GenerateThumbnail(Data); ThumbnailFileHandle.Refresh(); } } diff --git a/Assets/Project/Source/Grids/Blueprints/BlueprintContainerArgs.cs b/Assets/Project/Source/Grids/Blueprints/BlueprintContainerArgs.cs index fd21e3d5..69198e7b 100644 --- a/Assets/Project/Source/Grids/Blueprints/BlueprintContainerArgs.cs +++ b/Assets/Project/Source/Grids/Blueprints/BlueprintContainerArgs.cs @@ -1,7 +1,5 @@ -namespace Exa.Grids.Blueprints -{ - public class BlueprintContainerArgs - { +namespace Exa.Grids.Blueprints { + public class BlueprintContainerArgs { public Blueprint blueprint; public bool generateBlueprintFileHandle = true; public bool generateBlueprintFileName = true; diff --git a/Assets/Project/Source/Grids/Blueprints/BlueprintContainerCollection.cs b/Assets/Project/Source/Grids/Blueprints/BlueprintContainerCollection.cs index 787dba91..b3146b9b 100644 --- a/Assets/Project/Source/Grids/Blueprints/BlueprintContainerCollection.cs +++ b/Assets/Project/Source/Grids/Blueprints/BlueprintContainerCollection.cs @@ -1,17 +1,17 @@ -using Exa.Generics; -using System; +using System; +using Exa.Types.Generics; +using UnityEngine; -namespace Exa.Grids.Blueprints -{ +namespace Exa.Grids.Blueprints { [Serializable] - public class BlueprintContainerCollection : ObservableDictionary - { + public class BlueprintContainerCollection : ObservableDictionary { public BlueprintContainerCollection() : base(StringComparer.OrdinalIgnoreCase) { } public override void Add(BlueprintContainer item) { if (Contains(item)) { - UnityEngine.Debug.LogWarning($"Blueprint: {item.Data.name} has already been added"); + Debug.LogWarning($"Blueprint: {item.Data.name} has already been added"); + return; } diff --git a/Assets/Project/Source/Grids/Blueprints/BlueprintGrid.cs b/Assets/Project/Source/Grids/Blueprints/BlueprintGrid.cs new file mode 100644 index 00000000..d056d8a3 --- /dev/null +++ b/Assets/Project/Source/Grids/Blueprints/BlueprintGrid.cs @@ -0,0 +1,23 @@ +using Exa.Generics; +using Exa.Grids.Blocks; +using Exa.IO.Json; +using Newtonsoft.Json; + +namespace Exa.Grids.Blueprints { + [JsonConverter(typeof(BlueprintBlocksConverter))] + public class BlueprintGrid : Grid, ICloneable { + public BlueprintGrid Clone() { + var newBlocks = new BlueprintGrid(); + + foreach (var block in GridMembers) { + newBlocks.Add(block.Clone()); + } + + return newBlocks; + } + + public GridTotals GetTotals(BlockContext context = BlockContext.DefaultGroup) { + return S.Blocks.Totals.GetGridTotalsSafe(this, context); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blueprints/BlueprintBlocks.cs.meta b/Assets/Project/Source/Grids/Blueprints/BlueprintGrid.cs.meta similarity index 100% rename from Assets/Project/Source/Grids/Blueprints/BlueprintBlocks.cs.meta rename to Assets/Project/Source/Grids/Blueprints/BlueprintGrid.cs.meta diff --git a/Assets/Project/Source/Grids/Blueprints/BlueprintManager.cs b/Assets/Project/Source/Grids/Blueprints/BlueprintManager.cs index 6ad2ef3f..bc345e0e 100644 --- a/Assets/Project/Source/Grids/Blueprints/BlueprintManager.cs +++ b/Assets/Project/Source/Grids/Blueprints/BlueprintManager.cs @@ -1,30 +1,31 @@ -using Exa.IO; -using System; +using System; using System.Collections; using System.Collections.Generic; using System.Linq; -using Exa.Bindings; +using Exa.IO; +using Exa.Types.Binding; +using Exa.Utils; using UnityEngine; +using UnityEngine.Serialization; +using Tree = Exa.IO.Tree; #pragma warning disable CS0649 -namespace Exa.Grids.Blueprints -{ - public class BlueprintManager : MonoBehaviour - { +namespace Exa.Grids.Blueprints { + public class BlueprintManager : MonoBehaviour { [HideInInspector] public BlueprintContainerCollection userBlueprints = new BlueprintContainerCollection(); [HideInInspector] public BlueprintContainerCollection defaultBlueprints = new BlueprintContainerCollection(); - [HideInInspector] public CompositeObservableEnumerable useableBlueprints; public BlueprintTypeBag blueprintTypes; - [SerializeField] private DefaultBlueprintBag defaultBlueprintBag; + [FormerlySerializedAs("defaultBlueprintBag")] [SerializeField] private StaticBlueprintBag staticBlueprintBag; + [HideInInspector] public CompositeObservableEnumerable useableBlueprints; public IEnumerator Init(IProgress progress) { var userBlueprintPaths = CollectionUtils - .GetJsonPathsFromDirectory(DirectoryTree.Blueprints) + .GetJsonPathsFromDirectory(Tree.Root.Blueprints) .ToList(); - var defaultBlueprintsList = defaultBlueprintBag.ToList(); + var defaultBlueprintsList = staticBlueprintBag.ToList(); var iterator = 0; var blueprintTotal = userBlueprintPaths.Count + defaultBlueprintsList.Count; @@ -35,55 +36,63 @@ public IEnumerator Init(IProgress progress) { foreach (var blueprintPath in userBlueprintPaths) { try { AddUserBlueprint(blueprintPath); + } catch (Exception e) { + S.UI.Logger.LogException($"Error loading blueprint: {e.Message}", false); } - catch (Exception e) { - Systems.UI.logger.Log($"Error loading blueprint: {e.Message}"); - } - yield return null; + yield return new WorkUnit(); + iterator++; progress.Report((float) iterator / blueprintTotal); } - // Load default blueprints - foreach (var defaultBlueprint in defaultBlueprintBag) { + foreach (var defaultBlueprint in staticBlueprintBag) { AddDefaultBlueprint(defaultBlueprint); - yield return null; + yield return new WorkUnit(); + iterator++; progress.Report((float) iterator / blueprintTotal); } - yield return null; + yield return new WorkUnit(); } public Blueprint GetBlueprint(string name) { - if (defaultBlueprints.ContainsKey(name)) + if (defaultBlueprints.ContainsKey(name)) { return defaultBlueprints[name].Data; + } - if (userBlueprints.ContainsKey(name)) + if (userBlueprints.ContainsKey(name)) { return userBlueprints[name].Data; + } - throw new KeyNotFoundException(); + throw new KeyNotFoundException($"Name: \"{name}\" not found"); } public bool ContainsName(string name) { - return defaultBlueprints.ContainsKey(name) - || userBlueprints.ContainsKey(name); + return GetBlueprintNames().Contains(name); + } + + public IEnumerable GetBlueprintNames() { + return defaultBlueprints + .Concat(userBlueprints) + .Select(blueprint => blueprint.Data.name); } - private void AddDefaultBlueprint(DefaultBlueprint defaultBlueprint) { - var blueprint = defaultBlueprint.ToContainer(); + private void AddDefaultBlueprint(StaticBlueprint staticBlueprint) { + var blueprint = staticBlueprint.GetContainer(); - if (ContainsName(blueprint.Data.name)) + if (ContainsName(blueprint.Data.name)) { throw new ArgumentException("Blueprint named is duplicate"); + } defaultBlueprints.Add(blueprint); } private void AddUserBlueprint(string path) { - var blueprint = IOUtils.JsonDeserializeFromPath(path); + var blueprint = IOUtils.FromJsonPath(path); if (blueprint == null) { throw new ArgumentNullException("blueprint"); @@ -98,8 +107,12 @@ private void AddUserBlueprint(string path) { generateBlueprintFileName = false }; - var observableBlueprint = new BlueprintContainer(args); - observableBlueprint.BlueprintFileHandle.CurrentPath = path; + var observableBlueprint = new BlueprintContainer(args) { + BlueprintFileHandle = { + CurrentPath = path + } + }; + observableBlueprint.LoadThumbnail(); userBlueprints.Add(observableBlueprint); } diff --git a/Assets/Project/Source/Grids/Blueprints/BlueprintOptions.cs b/Assets/Project/Source/Grids/Blueprints/BlueprintOptions.cs index 5311ac1d..74232d2e 100644 --- a/Assets/Project/Source/Grids/Blueprints/BlueprintOptions.cs +++ b/Assets/Project/Source/Grids/Blueprints/BlueprintOptions.cs @@ -1,7 +1,5 @@ -namespace Exa.Grids.Blueprints -{ - public class BlueprintOptions - { +namespace Exa.Grids.Blueprints { + public class BlueprintOptions { public string name; public BlueprintTypeGuid shipClass; diff --git a/Assets/Project/Source/Grids/Blueprints/BlueprintOptionsDescriptor.cs b/Assets/Project/Source/Grids/Blueprints/BlueprintOptionsDescriptor.cs index a6d5ae34..9212d85a 100644 --- a/Assets/Project/Source/Grids/Blueprints/BlueprintOptionsDescriptor.cs +++ b/Assets/Project/Source/Grids/Blueprints/BlueprintOptionsDescriptor.cs @@ -2,10 +2,8 @@ using Exa.UI.Controls; using UnityEngine; -namespace Exa.Grids.Blueprints -{ - public class BlueprintOptionsDescriptor : ModelDescriptor - { +namespace Exa.Grids.Blueprints { + public class BlueprintOptionsDescriptor : ModelDescriptor { private string blueprintName; private BlueprintType blueprintType; @@ -14,19 +12,30 @@ public override BlueprintOptions FromDescriptor() { } public override void GenerateView(Transform container) { - var blueprintTypes = Systems.Blueprints.blueprintTypes; - Systems.UI.controlFactory.CreateInputField(container, "Name", SetBlueprintName); - Systems.UI.controlFactory.CreateDropdown(container, "Class", blueprintTypes, - SetBlueprintType, OnOptionCreation); + var blueprintTypes = S.Blueprints.blueprintTypes; + InputFieldControl.Create(container, "Name", SetBlueprintName); + + DropdownControl.Create( + container, + "Class", + blueprintTypes, + SetBlueprintType, + OnOptionCreation + ); + } + + private void SetBlueprintName(string blueprintName) { + this.blueprintName = blueprintName; } - private void SetBlueprintName(string blueprintName) => this.blueprintName = blueprintName; - private void SetBlueprintType(BlueprintType blueprintType) => this.blueprintType = blueprintType; + private void SetBlueprintType(BlueprintType blueprintType) { + this.blueprintType = blueprintType; + } private void OnOptionCreation(BlueprintType value, DropdownTab tab) { var hoverable = tab.gameObject.AddComponent(); - hoverable.onPointerEnter.AddListener(() => Systems.UI.tooltips.blueprintTypeTooltip.Show(value)); - hoverable.onPointerExit.AddListener(() => Systems.UI.tooltips.blueprintTypeTooltip.Hide()); + hoverable.onPointerEnter.AddListener(() => S.UI.Tooltips.blueprintTypeTooltip.Show(value)); + hoverable.onPointerExit.AddListener(() => S.UI.Tooltips.blueprintTypeTooltip.Hide()); } } } \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blueprints/BlueprintType.cs b/Assets/Project/Source/Grids/Blueprints/BlueprintType.cs index 1d8e6f57..97239165 100644 --- a/Assets/Project/Source/Grids/Blueprints/BlueprintType.cs +++ b/Assets/Project/Source/Grids/Blueprints/BlueprintType.cs @@ -1,25 +1,20 @@ -using Exa.Generics; +using System; using Exa.Grids.Blocks; +using Exa.Types.Generics; using Exa.UI.Tooltips; -using System; using UnityEngine; -namespace Exa.Grids.Blueprints -{ +namespace Exa.Grids.Blueprints { [Serializable] [CreateAssetMenu(fileName = "BlueprintType", menuName = "Grids/Blueprints/BlueprintType")] - public class BlueprintType : ScriptableObject, ITooltipPresenter, ILabeledValue - { + public class BlueprintType : ScriptableObject, ITooltipPresenter, ILabeledValue { public BlueprintTypeGuid typeGuid; public string displayName; public Vector2Int maxSize; - public BlockCategory disallowedBlockCategories; + public BlockCategory allowedBlockCategory; private Tooltip tooltipResult; - public string Label => displayName; - public BlueprintType Value => this; - public bool IsMothership { get => typeGuid == BlueprintTypeGuid.mothership; } @@ -28,12 +23,24 @@ private void OnEnable() { tooltipResult = new Tooltip(GetTooltipGroup); } + public string Label { + get => displayName; + } + + public BlueprintType Value { + get => this; + } + public Tooltip GetTooltip() { return tooltipResult; } - private TooltipGroup GetTooltipGroup() => new TooltipGroup(new ITooltipComponent[] { - new LabeledValue("Max size", $"{maxSize.x}x{maxSize.y}") - }); + private TooltipGroup GetTooltipGroup() { + return new TooltipGroup( + new ITooltipComponent[] { + new LabeledValue("Max size", $"{maxSize.x}x{maxSize.y}") + } + ); + } } } \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blueprints/BlueprintTypeBag.cs b/Assets/Project/Source/Grids/Blueprints/BlueprintTypeBag.cs index a2dc487c..01e7b587 100644 --- a/Assets/Project/Source/Grids/Blueprints/BlueprintTypeBag.cs +++ b/Assets/Project/Source/Grids/Blueprints/BlueprintTypeBag.cs @@ -1,34 +1,33 @@ -using Exa.Generics; -using System.Collections.Generic; +using System.Collections.Generic; +using Exa.Types.Generics; using UnityEngine; -namespace Exa.Grids.Blueprints -{ +namespace Exa.Grids.Blueprints { [CreateAssetMenu(menuName = "Grids/Blueprints/BlueprintTypes")] - public class BlueprintTypeBag : ScriptableObjectBag - { - private class BlueprintTypeComparer : IComparer - { - public int Compare(BlueprintType x, BlueprintType y) { - return GetBlueprintTypeSize(x) - GetBlueprintTypeSize(y); - } + public class BlueprintTypeBag : ScriptableObjectBag { + public Dictionary typesById; - private static int GetBlueprintTypeSize(BlueprintType blueprintType) { - return blueprintType.maxSize.x * blueprintType.maxSize.y; + public void OnEnable() { + typesById = new Dictionary(); + + foreach (var type in objects) { + typesById[type.typeGuid] = type; } } - public Dictionary typesById; - public override void FindObjects() { base.FindObjects(); objects.Sort(new BlueprintTypeComparer()); } - public void OnEnable() { - typesById = new Dictionary(); - foreach (var type in objects) - typesById[type.typeGuid] = type; + private class BlueprintTypeComparer : IComparer { + public int Compare(BlueprintType x, BlueprintType y) { + return GetBlueprintTypeSize(x) - GetBlueprintTypeSize(y); + } + + private static int GetBlueprintTypeSize(BlueprintType blueprintType) { + return blueprintType.maxSize.x * blueprintType.maxSize.y; + } } } } \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blueprints/BlueprintTypeGuid.cs b/Assets/Project/Source/Grids/Blueprints/BlueprintTypeGuid.cs index fb4b9e3a..cd8a35c2 100644 --- a/Assets/Project/Source/Grids/Blueprints/BlueprintTypeGuid.cs +++ b/Assets/Project/Source/Grids/Blueprints/BlueprintTypeGuid.cs @@ -1,12 +1,11 @@ -namespace Exa.Grids.Blueprints -{ - public enum BlueprintTypeGuid - { +namespace Exa.Grids.Blueprints { + public enum BlueprintTypeGuid { mothership, battleship, corvette, fighter, worker, - scout + scout, + station } } \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blueprints/DefaultBlueprint.cs b/Assets/Project/Source/Grids/Blueprints/DefaultBlueprint.cs deleted file mode 100644 index f68f51dd..00000000 --- a/Assets/Project/Source/Grids/Blueprints/DefaultBlueprint.cs +++ /dev/null @@ -1,24 +0,0 @@ -using Exa.IO; -using UnityEngine; - -namespace Exa.Grids.Blueprints -{ - [CreateAssetMenu(menuName = "Grids/Blueprints/DefaultBlueprint")] - public class DefaultBlueprint : ScriptableObject - { - [TextArea(3, 3000)] public string blueprintJson; - - public BlueprintContainer ToContainer() { - var blueprint = IOUtils.JsonDeserializeWithSettings(blueprintJson, SerializationMode.Readable); - - var args = new BlueprintContainerArgs(blueprint) { - generateBlueprintFileHandle = false, - useDefaultThumbnailFolder = true - }; - - var container = new BlueprintContainer(args); - container.LoadThumbnail(); - return container; - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blueprints/DefaultBlueprintBag.cs b/Assets/Project/Source/Grids/Blueprints/DefaultBlueprintBag.cs deleted file mode 100644 index 43c077d3..00000000 --- a/Assets/Project/Source/Grids/Blueprints/DefaultBlueprintBag.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Exa.Generics; -using UnityEngine; - -namespace Exa.Grids.Blueprints -{ - [CreateAssetMenu(menuName = "Grids/Blueprints/DefaultBlueprintBag")] - public class DefaultBlueprintBag : ScriptableObjectBag - { } -} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blueprints/DuplicateControllerException.cs b/Assets/Project/Source/Grids/Blueprints/DuplicateControllerException.cs index 9ed9916e..f51c6c43 100644 --- a/Assets/Project/Source/Grids/Blueprints/DuplicateControllerException.cs +++ b/Assets/Project/Source/Grids/Blueprints/DuplicateControllerException.cs @@ -1,15 +1,13 @@ using System; using UnityEngine; -namespace Exa.Grids.Blueprints -{ - public class DuplicateControllerException : Exception - { - public Vector2Int GridPos { get; set; } - +namespace Exa.Grids.Blueprints { + public class DuplicateControllerException : Exception { public DuplicateControllerException(Vector2Int gridPos) : base($"Cannot add controller at grid pos {gridPos} as this would cause a duplicate ") { GridPos = gridPos; } + + public Vector2Int GridPos { get; set; } } } \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blueprints/ObservableBlueprintConverter.cs b/Assets/Project/Source/Grids/Blueprints/ObservableBlueprintConverter.cs index 52626342..666e4aaa 100644 --- a/Assets/Project/Source/Grids/Blueprints/ObservableBlueprintConverter.cs +++ b/Assets/Project/Source/Grids/Blueprints/ObservableBlueprintConverter.cs @@ -1,7 +1,5 @@ using Exa.IO.Json; -namespace Exa.Grids.Blueprints -{ - internal class ObservableBlueprintConverter : ObservableConverter - { } +namespace Exa.Grids.Blueprints { + internal class ObservableBlueprintConverter : ObservableConverter { } } \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blueprints/StaticBlueprint.cs b/Assets/Project/Source/Grids/Blueprints/StaticBlueprint.cs new file mode 100644 index 00000000..c0556f05 --- /dev/null +++ b/Assets/Project/Source/Grids/Blueprints/StaticBlueprint.cs @@ -0,0 +1,48 @@ +using Exa.IO; +using UnityEngine; +using SerializationMode = Exa.IO.SerializationMode; +#if UNITY_EDITOR +using Exa.Utils; +using UnityEditor; + +#endif + +namespace Exa.Grids.Blueprints { + [CreateAssetMenu(menuName = "Grids/Blueprints/StaticBlueprint")] + public class StaticBlueprint : ScriptableObject { + [TextArea(3, 3000)] public string blueprintJson; + + private BlueprintContainer container; + + #if UNITY_EDITOR + public void Save(Blueprint blueprint) { + blueprint.name = StringExtensions.GetUniqueName(blueprint.name, S.Blueprints.GetBlueprintNames()); + blueprintJson = IOUtils.ToJson(blueprint, SerializationMode.Readable); + var path = $"Assets/Project/GameData/Grids/Blueprints/StaticBlueprints/{blueprint.name}.asset"; + AssetDatabase.CreateAsset(this, path); + } + #endif + + public BlueprintContainer GetContainer() { + return container ??= ToContainer(); + } + + public Blueprint GetBlueprint() { + return GetContainer().Data; + } + + private BlueprintContainer ToContainer() { + var blueprint = IOUtils.FromJson(blueprintJson, SerializationMode.Readable); + + var args = new BlueprintContainerArgs(blueprint) { + generateBlueprintFileHandle = false, + useDefaultThumbnailFolder = true + }; + + var container = new BlueprintContainer(args); + container.LoadThumbnail(); + + return container; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blueprints/DefaultBlueprint.cs.meta b/Assets/Project/Source/Grids/Blueprints/StaticBlueprint.cs.meta similarity index 100% rename from Assets/Project/Source/Grids/Blueprints/DefaultBlueprint.cs.meta rename to Assets/Project/Source/Grids/Blueprints/StaticBlueprint.cs.meta diff --git a/Assets/Project/Source/Grids/Blueprints/StaticBlueprintBag.cs b/Assets/Project/Source/Grids/Blueprints/StaticBlueprintBag.cs new file mode 100644 index 00000000..e4f4cc40 --- /dev/null +++ b/Assets/Project/Source/Grids/Blueprints/StaticBlueprintBag.cs @@ -0,0 +1,7 @@ +using Exa.Types.Generics; +using UnityEngine; + +namespace Exa.Grids.Blueprints { + [CreateAssetMenu(menuName = "Grids/Blueprints/DefaultBlueprintBag")] + public class StaticBlueprintBag : ScriptableObjectBag { } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Blueprints/DefaultBlueprintBag.cs.meta b/Assets/Project/Source/Grids/Blueprints/StaticBlueprintBag.cs.meta similarity index 100% rename from Assets/Project/Source/Grids/Blueprints/DefaultBlueprintBag.cs.meta rename to Assets/Project/Source/Grids/Blueprints/StaticBlueprintBag.cs.meta diff --git a/Assets/Project/Source/Grids/Blueprints/ThumbnailGeneration.meta b/Assets/Project/Source/Grids/Blueprints/ThumbnailGeneration.meta deleted file mode 100644 index a8aea91c..00000000 --- a/Assets/Project/Source/Grids/Blueprints/ThumbnailGeneration.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: f0facea464c8a29499a37b14f3a9f08d -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/Grids/Blueprints/ThumbnailGenerator.cs b/Assets/Project/Source/Grids/Blueprints/ThumbnailGenerator.cs index 78b59390..f8e3a6b0 100644 --- a/Assets/Project/Source/Grids/Blueprints/ThumbnailGenerator.cs +++ b/Assets/Project/Source/Grids/Blueprints/ThumbnailGenerator.cs @@ -1,12 +1,11 @@ -using Exa.Utils; +using System; +using Exa.Utils; using UnityEngine; #pragma warning disable CS0649 -namespace Exa.Grids.Blueprints -{ - public class ThumbnailGenerator : MonoBehaviour - { +namespace Exa.Grids.Blueprints { + public class ThumbnailGenerator : MonoBehaviour { [SerializeField] private Color backgroundColor; [SerializeField] private float padding; @@ -19,17 +18,30 @@ private void Awake() { public void GenerateThumbnail(Blueprint blueprint) { // Generate Ship - foreach (var block in blueprint.Blocks) { + foreach (var block in blueprint.Grid) { var blockGO = block.CreateInactiveInertBlockInGrid(transform); blockGO.SetActive(true); } - RuntimePreviewGenerator.PreviewDirection = transform.forward; - var tex = RuntimePreviewGenerator.GenerateModelPreview(transform, 512, 512, false); - blueprint.Thumbnail = tex; + // Thumbnails are not that important, so nulling them is fine + try { + var thisTransform = transform; + RuntimePreviewGenerator.PreviewDirection = thisTransform.forward; + var tex = RuntimePreviewGenerator.GenerateModelPreview(thisTransform, 512, 512); - // Cleaup Ship - transform.SetActiveChildren(false); + // Make sure the texture is set + if (tex == null) { + throw new Exception("Generated thumbnail is null"); + } + + blueprint.Thumbnail = tex; + } catch (Exception e) { + blueprint.Thumbnail = null; + Debug.LogWarning($"Cannot generate grid thumbnail, {e}"); + } finally { + // Disable children, thus returning the blocks to the pool + transform.SetActiveChildren(false); + } } } } \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Grid.cs b/Assets/Project/Source/Grids/Grid.cs index e131e417..1ffb3be8 100644 --- a/Assets/Project/Source/Grids/Grid.cs +++ b/Assets/Project/Source/Grids/Grid.cs @@ -1,66 +1,71 @@ -using Exa.Generics; -using Exa.Grids.Blocks; -using Exa.Grids.Blueprints; -using System.Collections; +using System.Collections; using System.Collections.Generic; using System.Linq; -using Exa.Bindings; +using Exa.Grids.Blueprints; +using Exa.Types.Binding; +using Exa.Types.Generics; using UnityEngine; -using Exa.Utils; -namespace Exa.Grids -{ - public class Grid : IEnumerable - where T : class, IGridMember - { +namespace Exa.Grids { + // TODO: Implement a clear mechanism, so consumers don't need to re-instantiate a grid + public abstract class Grid : IEnumerable, IMemberCollection + where T : class, IGridMember { + protected Grid( + LazyCache size = null, + ObservableCollection gridMembers = null, + Dictionary occupiedTiles = null, + Dictionary> neighbourDict = null + ) { + Size = size ?? + new LazyCache( + () => { + var bounds = new GridBounds(OccupiedTiles.Keys); + + return bounds.GetDelta(); + } + ); + + GridMembers = gridMembers ?? new ObservableCollection(); + OccupiedTiles = occupiedTiles ?? new Dictionary(); + NeighbourDict = neighbourDict ?? new Dictionary>(); + } + public LazyCache Size { get; protected set; } - // NOTE: Grid totals are affected by the context of the blueprint, since they will be subject to change because of tech - // TODO: Replace the reference by a manager that handles totals versioning - public virtual GridTotals Totals { get; } protected ObservableCollection GridMembers { get; set; } protected Dictionary OccupiedTiles { get; set; } protected Dictionary> NeighbourDict { get; set; } - public T Controller { get; protected set; } - public float MaxSize { get { Vector2Int size = Size; + return Mathf.Max(size.x, size.y); } } - public Grid( - LazyCache size = null, - GridTotals totals = null, - ObservableCollection gridMembers = null, - Dictionary occupiedTiles = null, - Dictionary> neighbourDict = null) { - Size = size ?? new LazyCache(() => { - var bounds = new GridBounds(OccupiedTiles.Keys); - return bounds.GetDelta(); - }); + public IEnumerator GetEnumerator() { + return GridMembers.GetEnumerator(); + } - Totals = totals ?? new GridTotals(); - GridMembers = gridMembers ?? new ObservableCollection(); - OccupiedTiles = occupiedTiles ?? new Dictionary(); - NeighbourDict = neighbourDict ?? new Dictionary>(); + IEnumerator IEnumerable.GetEnumerator() { + return GridMembers.GetEnumerator(); } - public virtual void Add(T gridMember) { - Size.Invalidate(); + public event IMemberCollection.MemberChange MemberAdded; + public event IMemberCollection.MemberChange MemberRemoved; - // Assign controller reference - if (gridMember.GetIsController() && Controller == null) { - Controller = gridMember; - } + public IEnumerable GetMembers() { + return GridMembers; + } + public virtual void Add(T gridMember) { + Size.Invalidate(); GridMembers.Add(gridMember); - gridMember.AddGridTotals(Totals); + MemberAdded?.Invoke(gridMember); // Get grid positions of blueprint block - var tilePositions = GridUtils.GetOccupiedTilesByAnchor(gridMember); + var tilePositions = gridMember.GetTileClaims(); EnsureNeighbourKeyIsCreated(gridMember); @@ -76,19 +81,19 @@ public virtual void Add(T gridMember) { } public virtual T Remove(Vector2Int key) { - Size.Invalidate(); - var gridMember = GetMember(key); + Remove(gridMember); - // Remove controller reference - if (ReferenceEquals(gridMember, Controller)) { - Controller = default; - } + return gridMember; + } - var tilePositions = GridUtils.GetOccupiedTilesByAnchor(gridMember); + public virtual void Remove(T gridMember) { + Size.Invalidate(); + // TODO: Cache this result + var tilePositions = gridMember.GetTileClaims().ToList(); GridMembers.Remove(gridMember); - gridMember.RemoveGridTotals(Totals); + MemberRemoved?.Invoke(gridMember); // Remove neighbour references foreach (var neighbour in NeighbourDict[gridMember]) { @@ -100,8 +105,6 @@ public virtual T Remove(Vector2Int key) { foreach (var occupiedTile in tilePositions) { OccupiedTiles.Remove(occupiedTile); } - - return gridMember; } public bool ContainsMember(Vector2Int gridPos) { @@ -111,6 +114,7 @@ public bool ContainsMember(Vector2Int gridPos) { public bool TryGetMember(Vector2Int gridPos, out T member) { var containsMember = ContainsMember(gridPos); member = containsMember ? GetMember(gridPos) : null; + return containsMember; } @@ -150,13 +154,5 @@ protected void EnsureNeighbourKeyIsCreated(T gridMember) { public int GetNeighbourCount(T gridMember) { return NeighbourDict[gridMember].Count; } - - public IEnumerator GetEnumerator() { - return GridMembers.GetEnumerator(); - } - - IEnumerator IEnumerable.GetEnumerator() { - return GridMembers.GetEnumerator(); - } } } \ No newline at end of file diff --git a/Assets/Project/Source/Grids/GridBounds.cs b/Assets/Project/Source/Grids/GridBounds.cs index f4193afe..a1db6df0 100644 --- a/Assets/Project/Source/Grids/GridBounds.cs +++ b/Assets/Project/Source/Grids/GridBounds.cs @@ -1,12 +1,10 @@ -using Exa.Generics; -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; +using Exa.Types.Generics; using UnityEngine; -namespace Exa.Grids -{ - public struct GridBounds - { +namespace Exa.Grids { + public struct GridBounds { public MinMax minMax; public GridBounds(MinMax minMax) { @@ -16,29 +14,42 @@ public GridBounds(MinMax minMax) { public GridBounds(IEnumerable positions) { minMax = new MinMax(); - if (!positions.Any()) return; + if (!positions.Any()) { + return; + } var first = positions.First(); minMax.min = first; minMax.max = first; foreach (var position in positions) { - if (position.x < minMax.min.x) minMax.min.x = position.x; - if (position.y < minMax.min.y) minMax.min.y = position.y; - if (position.x > minMax.max.x) minMax.max.x = position.x; - if (position.y > minMax.max.y) minMax.max.y = position.y; + if (position.x < minMax.min.x) { + minMax.min.x = position.x; + } + + if (position.y < minMax.min.y) { + minMax.min.y = position.y; + } + + if (position.x > minMax.max.x) { + minMax.max.x = position.x; + } + + if (position.y > minMax.max.y) { + minMax.max.y = position.y; + } } } public IEnumerable GetAdjacentPositions() { // Get bottom and top adjacent positions - for (int i = minMax.min.x; i < minMax.max.x + 1; i++) { + for (var i = minMax.min.x; i < minMax.max.x + 1; i++) { yield return new Vector2Int(i, minMax.min.y - 1); yield return new Vector2Int(i, minMax.max.y + 1); } // Get right and left adjacent position - for (int i = minMax.min.y; i < minMax.max.y + 1; i++) { + for (var i = minMax.min.y; i < minMax.max.y + 1; i++) { yield return new Vector2Int(minMax.min.x - 1, i); yield return new Vector2Int(minMax.max.x + 1, i); } @@ -47,7 +58,7 @@ public IEnumerable GetAdjacentPositions() { public Vector2Int GetDelta() { return new Vector2Int { x = minMax.max.x - minMax.min.x + 1, - y = minMax.max.y - minMax.min.y + 1, + y = minMax.max.y - minMax.min.y + 1 }; } } diff --git a/Assets/Project/Source/Grids/GridInstanceConfiguration.cs b/Assets/Project/Source/Grids/GridInstanceConfiguration.cs index 1231c398..dad2f9ae 100644 --- a/Assets/Project/Source/Grids/GridInstanceConfiguration.cs +++ b/Assets/Project/Source/Grids/GridInstanceConfiguration.cs @@ -1,7 +1,11 @@ -namespace Exa.Grids -{ - public struct GridInstanceConfiguration - { +namespace Exa.Grids { + public struct GridInstanceConfiguration { public bool Invulnerable { get; set; } + + public static GridInstanceConfiguration InvulnerableConfig { + get => new GridInstanceConfiguration { + Invulnerable = true + }; + } } } \ No newline at end of file diff --git a/Assets/Project/Source/Grids/GridMemberComparer.cs b/Assets/Project/Source/Grids/GridMemberComparer.cs new file mode 100644 index 00000000..d49f55a5 --- /dev/null +++ b/Assets/Project/Source/Grids/GridMemberComparer.cs @@ -0,0 +1,33 @@ +using System.Collections.Generic; + +namespace Exa.Grids { + public class GridMemberComparer : IEqualityComparer { + private static GridMemberComparer defaultComparer; + + public static GridMemberComparer Default { + get => defaultComparer ??= new GridMemberComparer(); + } + + public bool Equals(IGridMember x, IGridMember y) { + if (ReferenceEquals(x, y)) { + return true; + } + + if (ReferenceEquals(x, null)) { + return false; + } + + if (ReferenceEquals(y, null)) { + return false; + } + + return x.GridAnchor.Equals(y.GridAnchor) && x.BlueprintBlock.Equals(y.BlueprintBlock); + } + + public int GetHashCode(IGridMember obj) { + unchecked { + return (obj.GridAnchor.GetHashCode() * 397) ^ obj.BlueprintBlock.GetHashCode(); + } + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/GridMemberComparer.cs.meta b/Assets/Project/Source/Grids/GridMemberComparer.cs.meta new file mode 100644 index 00000000..e3c4e3d8 --- /dev/null +++ b/Assets/Project/Source/Grids/GridMemberComparer.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e94bab3b8e8e40928ab5265a23be0fbf +timeCreated: 1620497054 \ No newline at end of file diff --git a/Assets/Project/Source/Grids/GridMemberDiffList.cs b/Assets/Project/Source/Grids/GridMemberDiffList.cs new file mode 100644 index 00000000..885f70f8 --- /dev/null +++ b/Assets/Project/Source/Grids/GridMemberDiffList.cs @@ -0,0 +1,39 @@ +using System.Collections.Generic; +using System.Diagnostics; +using Exa.Grids.Blueprints; + +namespace Exa.Grids { + public delegate void DiffChanged(IGridMember member); + + public class GridMemberDiffList : List{ + #if ENABLE_BLOCK_LOGS + private List Logs { get; } = new List(); + #endif + + public event DiffChanged MemberAdded; + public event DiffChanged MemberRemoved; + + public new void Add(IGridMember member) { + #if ENABLE_BLOCK_LOGS + Logs.Add($"Added {member}, with trace: {new StackTrace()}"); + #endif + var copy = new ABpBlock(member); + + base.Add(copy); + + MemberAdded?.Invoke(copy); + } + + public new bool Remove(IGridMember member) { + #if ENABLE_BLOCK_LOGS + Logs.Add($"Removed {member}, with trace: {new StackTrace()}"); + #endif + + var removed = base.Remove(member); + + MemberRemoved?.Invoke(member); + + return removed; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/GridMemberDiffList.cs.meta b/Assets/Project/Source/Grids/GridMemberDiffList.cs.meta new file mode 100644 index 00000000..f7c003dd --- /dev/null +++ b/Assets/Project/Source/Grids/GridMemberDiffList.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: eb1a4a24f2fb4e12833f14906ad6654b +timeCreated: 1635013215 \ No newline at end of file diff --git a/Assets/Project/Source/Grids/GridMemberUtils.cs b/Assets/Project/Source/Grids/GridMemberUtils.cs index 0ecbdf2e..5e635ede 100644 --- a/Assets/Project/Source/Grids/GridMemberUtils.cs +++ b/Assets/Project/Source/Grids/GridMemberUtils.cs @@ -1,24 +1,23 @@ -using Exa.Math; +using Exa.Grids.Blocks; +using Exa.Math; +using Exa.Ships; +using Exa.Utils; using UnityEngine; -namespace Exa.Grids -{ - public static class GridMemberUtils - { +namespace Exa.Grids { + public static class GridMemberUtils { public static void SetupGameObject(this IGridMember gridMember, GameObject blockGO) { var blueprintBlock = gridMember.BlueprintBlock; var gridAnchor = gridMember.GridAnchor; blockGO.name = $"{blueprintBlock.Template.displayId} {gridAnchor}"; - var spriteRenderer = blockGO.GetComponent(); - gridMember.BlueprintBlock.SetSpriteRendererFlips(spriteRenderer); - gridMember.UpdateLocals(blockGO); + blockGO.GetComponent().Present(gridMember); } public static void UpdateLocals(this IGridMember gridMember, GameObject blockGO) { var blueprintBlock = gridMember.BlueprintBlock; - blockGO.transform.localRotation = blueprintBlock.QuaternionRotation; + blockGO.transform.localRotation = blueprintBlock.GetDirection(); blockGO.transform.localPosition = gridMember.GetLocalPosition(); } @@ -34,5 +33,22 @@ public static Vector2 GetLocalPosition(this IGridMember gridMember) { return offset + gridMember.GridAnchor; } + + // Simulates 'transform.position' + public static Vector2 GetGlobalPosition(this IGridMember gridMember, IGridInstance gridInstance) { + var transform = gridInstance.Transform; + var angle = transform.localRotation.eulerAngles.ToVector2().GetAngle(); + var localPosition = gridMember.GetLocalPosition().Rotate(angle); + + return transform.position.ToVector2() + localPosition; + } + + public static bool GetIsController(this IGridMember gridMember) { + return BlockCategory.AnyController.HasValue(gridMember.GetMemberCategory()); + } + + public static BlockCategory GetMemberCategory(this IGridMember gridMember) { + return gridMember.BlueprintBlock.Template.category; + } } } \ No newline at end of file diff --git a/Assets/Project/Source/Grids/GridTotals.cs b/Assets/Project/Source/Grids/GridTotals.cs index ca1f8550..10b1e874 100644 --- a/Assets/Project/Source/Grids/GridTotals.cs +++ b/Assets/Project/Source/Grids/GridTotals.cs @@ -1,42 +1,79 @@ -using Exa.Data; +using System; +using System.Collections.Generic; using Exa.Generics; -using Exa.Grids.Blocks.Components; +using Exa.Grids.Blocks; using Exa.UI.Tooltips; -using System.Collections.Generic; -namespace Exa.Grids -{ - public class GridTotals : ICloneable - { - public ControllerData controllerData; +namespace Exa.Grids { + public class GridTotals : ICloneable { + private readonly BlockContext context; + private BlockMetadata metadata; + private float unscaledTorque; + private float unscaledPowerGeneration; + private float hull; + private float mass; + + public GridTotals(BlockContext context) { + this.context = context; + } + + public float Mass { + get => mass; + set => mass = value; + } - public virtual float Mass { get; set; } - public virtual float Hull { get; set; } - public virtual Scalar PowerGenerationModifier { get; set; } - public virtual Scalar PowerConsumptionModifier { get; set; } - public virtual Scalar PowerStorageModifier { get; set; } - public virtual Scalar TurningPowerModifier { get; set; } + public float Hull { + get => hull; + set => hull = value; + } - public virtual float PowerGeneration => PowerGenerationModifier.GetValue(controllerData.powerGeneration); - public virtual float PowerConsumption => PowerConsumptionModifier.GetValue(controllerData.powerConsumption); - public virtual float PowerStorage => PowerStorageModifier.GetValue(controllerData.powerStorage); - public virtual float TurningPower => TurningPowerModifier.GetValue(controllerData.turningRate); + public float UnscaledPowerGeneration { + get => unscaledPowerGeneration; + set => unscaledPowerGeneration = value; + } + + public float UnscaledTorque { + get => unscaledTorque; + set { + unscaledTorque = value; + UnscaledTorqueChanged?.Invoke(value); + } + } + + public BlockMetadata Metadata { + get => metadata; + set => metadata = value; + } + + public event Action UnscaledTorqueChanged; public GridTotals Clone() { - return new GridTotals { - controllerData = controllerData, - Mass = Mass, - Hull = Hull, - PowerGenerationModifier = PowerGenerationModifier, - PowerConsumptionModifier = PowerConsumptionModifier, - PowerStorageModifier = PowerStorageModifier, - TurningPowerModifier = TurningPowerModifier, + return new GridTotals(context) { + mass = mass, + hull = hull, + unscaledPowerGeneration = unscaledPowerGeneration, + unscaledTorque = unscaledTorque, + metadata = metadata }; } - public IEnumerable GetDebugTooltipComponents() => new ITooltipComponent[] { - new TooltipText($"Mass: {Mass}"), - new TooltipText($"Hull: {Hull}"), - }; + public BlockContext GetInjectedContext() { + return context; + } + + public void Reset() { + Mass = 0f; + Hull = 0f; + UnscaledPowerGeneration = 0f; + unscaledTorque = 0f; + Metadata = new BlockMetadata(); + } + + public IEnumerable GetDebugTooltipComponents() { + return new ITooltipComponent[] { + new TooltipText($"Mass: {Mass}"), + new TooltipText($"Hull: {Hull}") + }; + } } } \ No newline at end of file diff --git a/Assets/Project/Source/Grids/GridUtils.cs b/Assets/Project/Source/Grids/GridUtils.cs index 7a3f855b..25872392 100644 --- a/Assets/Project/Source/Grids/GridUtils.cs +++ b/Assets/Project/Source/Grids/GridUtils.cs @@ -1,12 +1,12 @@ -using Exa.Math; -using System; +using System; using System.Collections.Generic; +using Exa.Math; +using Exa.ShipEditor; +using Exa.Utils; using UnityEngine; -namespace Exa.Grids -{ - public static class GridUtils - { +namespace Exa.Grids { + public static class GridUtils { public static IEnumerable GetNeighbours(this Grid grid, IEnumerable tilePositions) where T : class, IGridMember { // Get grid positions around block @@ -15,27 +15,27 @@ public static IEnumerable GetNeighbours(this Grid grid, IEnumerable(); - foreach (var neighbourPosition in neighbourPositions) + foreach (var neighbourPosition in neighbourPositions) { if (grid.ContainsMember(neighbourPosition)) { var neighbour = grid.GetMember(neighbourPosition); + if (!neighbours.Contains(neighbour)) { neighbours.Add(neighbour); - yield return neighbour; } } + } + + return neighbours; } - public static IEnumerable GetOccupiedTilesByAnchor(IGridMember gridMember) { + public static IEnumerable GetTileClaims(this IGridMember gridMember) { var block = gridMember.BlueprintBlock; var gridAnchor = gridMember.GridAnchor; - var area = block.Template.size.Rotate(block.Rotation); - - if (block.flippedX) area.x = -area.x; - if (block.flippedY) area.y = -area.y; - + var area = block.Template.size.Rotate(block.Rotation) * block.FlipVector; return MathUtils.EnumerateVectors(area, gridAnchor); } + [Obsolete] public static Vector2Int GetMirroredGridPos(Vector2Int size, Vector2Int gridPos) { return new Vector2Int { x = gridPos.x, @@ -43,13 +43,11 @@ public static Vector2Int GetMirroredGridPos(Vector2Int size, Vector2Int gridPos) }; } - public static void ConditionallyApplyToMirror(Vector2Int? gridPos, Vector2Int size, Action action) { - if (gridPos == null) return; - - var realGridPos = gridPos.GetValueOrDefault(); - var mirroredGridPos = GetMirroredGridPos(size, realGridPos); - if (realGridPos == mirroredGridPos) return; - action(mirroredGridPos); + public static Vector2Int GetMirroredGridPos(Vector2Int size, Vector2Int gridPos, BlockFlip flip) { + return new Vector2Int { + x = flip.HasValue(BlockFlip.FlipX) ? size.x - 1 - gridPos.x : gridPos.x, + y = flip.HasValue(BlockFlip.FlipY) ? size.y - 1 - gridPos.y : gridPos.y + }; } } } \ No newline at end of file diff --git a/Assets/Project/Source/Grids/IGridInstance.cs b/Assets/Project/Source/Grids/IGridInstance.cs index 08f32da9..7205318d 100644 --- a/Assets/Project/Source/Grids/IGridInstance.cs +++ b/Assets/Project/Source/Grids/IGridInstance.cs @@ -1,15 +1,44 @@ -using Exa.Grids.Blocks; +using Exa.Gameplay; +using Exa.Grids.Blocks; +using Exa.Grids.Blocks.BlockTypes; using Exa.Ships; +using Exa.Utils; using UnityEngine; -namespace Exa.Grids -{ - public interface IGridInstance - { +namespace Exa.Grids { + public interface IGridInstance { BlockGrid BlockGrid { get; } Rigidbody2D Rigidbody2D { get; } Transform Transform { get; } BlockContext BlockContext { get; } GridInstanceConfiguration Configuration { get; } + SupportDroneOrchestrator SupportDroneOrchestrator { get; } + } + + public static class IGridInstanceExtensions { + public static void AddBlock(this IGridInstance instance, Block block, bool mockSetValues) { + // Set the parent without triggering any calls to listeners + // This is because the side effects caused by setting component values and parent of the block, + // may use each others underlying values + block.SetParentWithoutNotify(instance); + block.transform.SetParent(instance.Transform); + + if (!mockSetValues) { + S.Blocks.Values.SetValues(instance.BlockContext, block.aBpBlock.Template, block); + } + + instance.BlockGrid.Add(block); + block.NotifyAdded(mockSetValues); + } + + public static void RemoveBlock(this IGridInstance instance, Block block) { + block.NotifyRemoved(); + instance.BlockGrid.Remove(block); + block.SetParentWithoutNotify(null); + } + + public static void Destroy(this IGridInstance instance) { + instance.Transform.gameObject.Destroy(); + } } } \ No newline at end of file diff --git a/Assets/Project/Source/Grids/IGridMember.cs b/Assets/Project/Source/Grids/IGridMember.cs index fe0a153e..a6262b6f 100644 --- a/Assets/Project/Source/Grids/IGridMember.cs +++ b/Assets/Project/Source/Grids/IGridMember.cs @@ -1,24 +1,13 @@ -using Exa.Grids.Blocks; +using System; +using Exa.Grids.Blocks; using Exa.Grids.Blueprints; +using Exa.Ships; using Exa.Utils; using UnityEngine; -namespace Exa.Grids -{ - public interface IGridMember : IGridTotalsModifier - { +namespace Exa.Grids { + public interface IGridMember : IGridTotalsModifier, IEquatable { Vector2Int GridAnchor { get; } BlueprintBlock BlueprintBlock { get; } } - - public static class IGridMemberExtensions - { - public static bool GetIsController(this IGridMember gridMember) { - return gridMember.GetMemberCategory().Is(BlockCategory.Controller); - } - - public static BlockCategory GetMemberCategory(this IGridMember gridMember) { - return gridMember.BlueprintBlock.Template.category; - } - } } \ No newline at end of file diff --git a/Assets/Project/Source/Grids/IMemberCollection.cs b/Assets/Project/Source/Grids/IMemberCollection.cs new file mode 100644 index 00000000..465ceec0 --- /dev/null +++ b/Assets/Project/Source/Grids/IMemberCollection.cs @@ -0,0 +1,12 @@ +using System.Collections.Generic; + +namespace Exa.Grids { + public interface IMemberCollection { + public delegate void MemberChange(IGridMember member); + + public event MemberChange MemberAdded; + public event MemberChange MemberRemoved; + + public IEnumerable GetMembers(); + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/IMemberCollection.cs.meta b/Assets/Project/Source/Grids/IMemberCollection.cs.meta new file mode 100644 index 00000000..2c32c2e5 --- /dev/null +++ b/Assets/Project/Source/Grids/IMemberCollection.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: d9b882a75409433a95148c34e6961e88 +timeCreated: 1616333262 \ No newline at end of file diff --git a/Assets/Project/Source/Grids/MemberCollectionListener.cs b/Assets/Project/Source/Grids/MemberCollectionListener.cs new file mode 100644 index 00000000..3b700922 --- /dev/null +++ b/Assets/Project/Source/Grids/MemberCollectionListener.cs @@ -0,0 +1,30 @@ +namespace Exa.Grids { + public abstract class MemberCollectionListener + where T : IMemberCollection { + protected T source; + + protected MemberCollectionListener(T source) { + this.source = source; + } + + public void AddListeners() { + source.MemberAdded += OnMemberAdded; + source.MemberRemoved += OnMemberRemoved; + } + + public void RemoveListeners() { + source.MemberAdded -= OnMemberAdded; + source.MemberRemoved -= OnMemberRemoved; + } + + protected abstract void OnMemberAdded(IGridMember member); + + protected abstract void OnMemberRemoved(IGridMember member); + + public virtual void Reset() { + foreach (var member in source.GetMembers()) { + OnMemberAdded(member); + } + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/MemberCollectionListener.cs.meta b/Assets/Project/Source/Grids/MemberCollectionListener.cs.meta new file mode 100644 index 00000000..d87a9c35 --- /dev/null +++ b/Assets/Project/Source/Grids/MemberCollectionListener.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 95f9a132cfb4448dbe430dbd9e3d327e +timeCreated: 1620402340 \ No newline at end of file diff --git a/Assets/Project/Source/Grids/RelativeGridMemberComparer.cs b/Assets/Project/Source/Grids/RelativeGridMemberComparer.cs new file mode 100644 index 00000000..9be64c66 --- /dev/null +++ b/Assets/Project/Source/Grids/RelativeGridMemberComparer.cs @@ -0,0 +1,24 @@ +using System.Collections.Generic; +using Exa.Ships; +using UnityEngine; + +namespace Exa.Grids { + public class RelativeGridMemberComparer : IComparer { + private readonly Vector2 pivot; + + public RelativeGridMemberComparer(BlockGrid blockGrid) { + pivot = blockGrid.Controller.GetLocalPosition(); + } + + public int Compare(IGridMember x, IGridMember y) { + var xMag = (pivot - x.GetLocalPosition()).magnitude; + var yMag = (pivot - y.GetLocalPosition()).magnitude; + + return xMag == yMag + ? 0 + : xMag > yMag + ? 1 + : -1; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/RelativeGridMemberComparer.cs.meta b/Assets/Project/Source/Grids/RelativeGridMemberComparer.cs.meta new file mode 100644 index 00000000..4e79a88b --- /dev/null +++ b/Assets/Project/Source/Grids/RelativeGridMemberComparer.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 866050be53284bc298b4ecd04f7d7123 +timeCreated: 1620890473 \ No newline at end of file diff --git a/Assets/Project/Source/Grids/Ships.meta b/Assets/Project/Source/Grids/Ships.meta deleted file mode 100644 index 3d33aedf..00000000 --- a/Assets/Project/Source/Grids/Ships.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 68a87c49be444904fba48dbacd26080d -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/Grids/TotalsManager.cs b/Assets/Project/Source/Grids/TotalsManager.cs new file mode 100644 index 00000000..ff1dc7bb --- /dev/null +++ b/Assets/Project/Source/Grids/TotalsManager.cs @@ -0,0 +1,96 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Exa.Debugging; +using Exa.Grids.Blocks; +using Exa.Grids.Blueprints; +using Exa.IO; +using Exa.Ships; +using Exa.Utils; +using UnityEngine; + +namespace Exa.Grids { + public class TotalsManager : MonoBehaviour { + private Dictionary> totalsDictionary; + + private void Awake() { + totalsDictionary = new Dictionary>(); + S.Research.ResearchChanged += InvalidateTotals; + } + + public GridTotals StartWatching(IMemberCollection grid, BlockContext context) { + if (totalsDictionary.ContainsKey(grid) && totalsDictionary[grid].ContainsKey(context)) { + throw new Exception("Grid with given context already being watched"); + } + + var cache = new TotalsCache(grid) { + totals = new GridTotals(context) + }; + + cache.Reset(); + cache.AddListeners(); + + if (!totalsDictionary.ContainsKey(grid)) { + totalsDictionary.Add(grid, new Dictionary { + { context, cache } + }); + } + + return cache.totals; + } + + public GridTotals GetGridTotalsSafe(IMemberCollection grid, BlockContext context) { + return totalsDictionary.Get(grid)?.Get(context) == null + ? StartWatching(grid, context) + : GetGridTotals(grid, context); + } + + public GridTotals GetGridTotals(IMemberCollection grid, BlockContext context) { + return totalsDictionary[grid][context].totals; + } + + public void StopWatching(IMemberCollection grid, BlockContext context) { + totalsDictionary[grid][context].RemoveListeners(); + totalsDictionary[grid].Remove(context); + + if (totalsDictionary[grid].Values.Count == 0) { + totalsDictionary.Remove(grid); + } + } + + private void InvalidateTotals(BlockContext context) { + IEnumerable GetInvalidCaches() { + foreach (var (cacheContext, cache) in totalsDictionary + .SelectMany(blockContextDict => blockContextDict.Value.Unpack()) + ) { + if ((cacheContext & context) == cacheContext) { + yield return cache; + } + } + } + + foreach (var cache in GetInvalidCaches()) { + cache.Reset(); + } + } + + private class TotalsCache : MemberCollectionListener { + public GridTotals totals; + + public TotalsCache(IMemberCollection source) : base(source) { } + + public override void Reset() { + totals.Reset(); + base.Reset(); + } + + protected override void OnMemberAdded(IGridMember member) { + member.AddGridTotals(totals); + } + + protected override void OnMemberRemoved(IGridMember member) { + member.RemoveGridTotals(totals); + } + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Grids/TotalsManager.cs.meta b/Assets/Project/Source/Grids/TotalsManager.cs.meta new file mode 100644 index 00000000..2b7e3786 --- /dev/null +++ b/Assets/Project/Source/Grids/TotalsManager.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: ff703281f8ef47f7bee2b1beeac323e9 +timeCreated: 1616333086 \ No newline at end of file diff --git a/Assets/Project/Source/IO/CollectionUtils.cs b/Assets/Project/Source/IO/CollectionUtils.cs index 2b08177a..84d1323a 100644 --- a/Assets/Project/Source/IO/CollectionUtils.cs +++ b/Assets/Project/Source/IO/CollectionUtils.cs @@ -2,10 +2,8 @@ using System.Collections.Generic; using System.IO; -namespace Exa.IO -{ - public static class CollectionUtils - { +namespace Exa.IO { + public static class CollectionUtils { public static IEnumerable GetJsonPathsFromDirectory(string directory) { foreach (var filePath in Directory.GetFiles(directory, "*.json")) { yield return filePath; @@ -13,14 +11,16 @@ public static IEnumerable GetJsonPathsFromDirectory(string directory) { } /// - /// Deserialize items from directory and add to collection + /// Deserialize items from directory and add to collection /// /// /// /// public static void LoadJsonCollectionFromDirectory(string directory, Action callback) where T : class { - if (!Directory.Exists(directory)) return; + if (!Directory.Exists(directory)) { + return; + } foreach (var filePath in Directory.GetFiles(directory, "*.json")) { IOUtils.TryJsonDeserializeFromPath(filePath, out T item); @@ -31,7 +31,9 @@ public static void LoadJsonCollectionFromDirectory(string directory, Action(string directory, Action callback) where T : class { - if (!Directory.Exists(directory)) return; + if (!Directory.Exists(directory)) { + return; + } foreach (var filePath in Directory.GetFiles(directory, "*.json")) { callback(filePath); diff --git a/Assets/Project/Source/IO/DirectoryNode.cs b/Assets/Project/Source/IO/DirectoryNode.cs new file mode 100644 index 00000000..0b8b21dc --- /dev/null +++ b/Assets/Project/Source/IO/DirectoryNode.cs @@ -0,0 +1,27 @@ +using System.Collections.Generic; +using System.IO; + +namespace Exa.IO { + public class DirectoryNode : IDirectoryNode { + private readonly string name; + protected IDirectoryNode parent; + + public DirectoryNode(IDirectoryNode parent, string name) { + this.parent = parent; + this.name = name; + IOUtils.EnsureCreated(GetPath()); + } + + public string GetPath() { + return IOUtils.CombinePath(parent.GetPath(), name); + } + + public IEnumerable GetFiles(string pattern) { + return Directory.GetFiles(GetPath(), pattern); + } + + public static implicit operator string(DirectoryNode node) { + return node.GetPath(); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/IO/DirectoryNode.cs.meta b/Assets/Project/Source/IO/DirectoryNode.cs.meta new file mode 100644 index 00000000..e897dca1 --- /dev/null +++ b/Assets/Project/Source/IO/DirectoryNode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0d3ae9ef3e6abcd4a9d4fef331bf5423 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/IO/DirectoryTree.cs b/Assets/Project/Source/IO/DirectoryTree.cs deleted file mode 100644 index 7edb5bfa..00000000 --- a/Assets/Project/Source/IO/DirectoryTree.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Exa.IO -{ - public static class DirectoryTree - { - public static ExaDirectory Blueprints = new ExaDirectory("blueprints"); - public static ExaDirectory Settings = new ExaDirectory("settings"); - public static ExaDirectory Thumbnails = new ExaDirectory("thumbnails"); - public static ExaDirectory DefaultThumbnails = new ExaDirectory("defaultThumbnails"); - } -} \ No newline at end of file diff --git a/Assets/Project/Source/IO/DirectoryTree.cs.meta b/Assets/Project/Source/IO/DirectoryTree.cs.meta deleted file mode 100644 index 52a17a1c..00000000 --- a/Assets/Project/Source/IO/DirectoryTree.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 4a2c85f29d1aa654ba18607664055389 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/IO/ExaDirectory.cs b/Assets/Project/Source/IO/ExaDirectory.cs deleted file mode 100644 index 45671493..00000000 --- a/Assets/Project/Source/IO/ExaDirectory.cs +++ /dev/null @@ -1,44 +0,0 @@ -using System; -using System.IO; - -namespace Exa.IO -{ - public class ExaDirectory - { - public string Value { get; } - - internal ExaDirectory(string value, bool combineWithDataPath = true) - { - var path = combineWithDataPath - ? IOUtils.CombinePathWithDataPath(value) - : value; - - EnsureCreated(path); - this.Value = path; - } - - internal ExaDirectory(ExaDirectory parent, string value) - { - var path = IOUtils.CombinePath(parent, value); - EnsureCreated(path); - this.Value = path; - } - - public string CombineWith(string fileName) { - return IOUtils.CombinePath(this, fileName); - } - - private static void EnsureCreated(string directoryString) { - if (!Directory.Exists(directoryString)) { - Directory.CreateDirectory(directoryString); - } - } - - public static implicit operator string(ExaDirectory directory) { - if (directory == null) - throw new ArgumentNullException(nameof(directory)); - - return directory.Value; - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/IO/ExaDirectory.cs.meta b/Assets/Project/Source/IO/ExaDirectory.cs.meta deleted file mode 100644 index e2980656..00000000 --- a/Assets/Project/Source/IO/ExaDirectory.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 90ce1834d9993a9479501f68e4e44f86 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/IO/FileHandle.cs b/Assets/Project/Source/IO/FileHandle.cs index 33fb8990..8bc444c9 100644 --- a/Assets/Project/Source/IO/FileHandle.cs +++ b/Assets/Project/Source/IO/FileHandle.cs @@ -1,32 +1,40 @@ using System; using System.IO; -namespace Exa.IO -{ +namespace Exa.IO { /// - /// Provides a reference to a file that may have its name updated + /// Provides a reference to a file that may have its name updated /// - public class FileHandle - { + public class FileHandle { + private readonly ISerializableItem item; private readonly Func pathFactory; private readonly Action serializationFactory; - private readonly ISerializableItem item; - public string CurrentPath { get; set; } - public string TargetPath => pathFactory(item.ItemName); - public bool PathIsDirty => CurrentPath != TargetPath; - - public FileHandle(ISerializableItem item, Func pathFactory, Action serializationFactory, - bool generatePath = true) { + public FileHandle( + ISerializableItem item, + Func pathFactory, + Action serializationFactory, + bool generatePath = true + ) { this.item = item; this.pathFactory = pathFactory; this.serializationFactory = serializationFactory; if (generatePath) { - this.CurrentPath = pathFactory(item.ItemName); + CurrentPath = pathFactory(item.ItemName); } } + public string CurrentPath { get; set; } + + public string TargetPath { + get => pathFactory(item.ItemName); + } + + public bool PathIsDirty { + get => CurrentPath != TargetPath; + } + public void Delete() { if (CurrentPath != "" && File.Exists(CurrentPath)) { File.Delete(CurrentPath); diff --git a/Assets/Project/Source/IO/IDirectoryNode.cs b/Assets/Project/Source/IO/IDirectoryNode.cs new file mode 100644 index 00000000..9514cf09 --- /dev/null +++ b/Assets/Project/Source/IO/IDirectoryNode.cs @@ -0,0 +1,11 @@ +namespace Exa.IO { + public interface IDirectoryNode { + public string GetPath(); + } + + public static class IDirectoryNodeExtensions { + public static string CombineWith(this IDirectoryNode node, string fileName) { + return IOUtils.CombinePath(node.GetPath(), fileName); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/IO/IDirectoryNode.cs.meta b/Assets/Project/Source/IO/IDirectoryNode.cs.meta new file mode 100644 index 00000000..68f2184d --- /dev/null +++ b/Assets/Project/Source/IO/IDirectoryNode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d903005599b3e1a48bd368e5a6dd8c74 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/IO/IOUtils.Binary.cs b/Assets/Project/Source/IO/IOUtils.Binary.cs index 478c0b42..f3194215 100644 --- a/Assets/Project/Source/IO/IOUtils.Binary.cs +++ b/Assets/Project/Source/IO/IOUtils.Binary.cs @@ -1,20 +1,20 @@ using System.IO; using System.Runtime.Serialization.Formatters.Binary; -namespace Exa.IO -{ - public static partial class IOUtils - { +namespace Exa.IO { + public static partial class IOUtils { public static bool TryBinaryDeserializeFromPath(out T result, string filePath) where T : class { if (!File.Exists(filePath)) { result = null; + return false; } using (var stream = File.OpenRead(filePath)) { var formatter = new BinaryFormatter(); result = (T) formatter.Deserialize(stream); + return true; } } @@ -22,6 +22,7 @@ public static bool TryBinaryDeserializeFromPath(out T result, string filePath public static T BinaryDeserializeFromPath(string filePath) { using (var stream = File.OpenRead(filePath)) { var formatter = new BinaryFormatter(); + return (T) formatter.Deserialize(stream); } } diff --git a/Assets/Project/Source/IO/IOUtils.Json.cs b/Assets/Project/Source/IO/IOUtils.Json.cs index 410fe061..1002bc07 100644 --- a/Assets/Project/Source/IO/IOUtils.Json.cs +++ b/Assets/Project/Source/IO/IOUtils.Json.cs @@ -1,93 +1,104 @@ using System; -using Newtonsoft.Json; using System.IO; +using Newtonsoft.Json; -namespace Exa.IO -{ - public enum SerializationMode - { +namespace Exa.IO { + public enum SerializationMode { Compact, Readable, Settings } - public static partial class IOUtils - { - public static JsonSerializerSettings compactJsonSettings = new JsonSerializerSettings { + public static partial class IOUtils { + private static readonly JsonSerializerSettings CompactJsonSettings = new JsonSerializerSettings { Formatting = Formatting.None, DefaultValueHandling = DefaultValueHandling.Ignore }; - public static JsonSerializerSettings readableJsonSettings = new JsonSerializerSettings { + private static readonly JsonSerializerSettings ReadableJsonSettings = new JsonSerializerSettings { Formatting = Formatting.Indented, DefaultValueHandling = DefaultValueHandling.Ignore }; - public static JsonSerializerSettings settingsJsonSettings = new JsonSerializerSettings { + private static readonly JsonSerializerSettings SettingsJsonSettings = new JsonSerializerSettings { Formatting = Formatting.Indented, - DefaultValueHandling = DefaultValueHandling.Include + DefaultValueHandling = DefaultValueHandling.Populate }; - public static bool TryJsonDeserializeFromPath(string filePath, out T result, - SerializationMode serializationMode = SerializationMode.Compact) + public static bool TryJsonDeserializeFromPath( + string filePath, + out T result, + SerializationMode serializationMode = SerializationMode.Compact + ) where T : class { if (!File.Exists(filePath)) { result = null; + return false; } try { var text = File.ReadAllText(filePath); result = JsonConvert.DeserializeObject(text, GetSettings(serializationMode)); + return true; - } - catch { + } catch { result = null; + return false; } } - public static T JsonDeserializeWithSettings( + public static T FromJsonSafe( string input, - SerializationMode serializationMode = SerializationMode.Compact) { + SerializationMode serializationMode = SerializationMode.Compact + ) { + try { + return FromJson(input, serializationMode); + } catch { + return default; + } + } + + public static T FromJson( + string input, + SerializationMode serializationMode = SerializationMode.Compact + ) { return JsonConvert.DeserializeObject(input, GetSettings(serializationMode)); } - public static T JsonDeserializeFromPath( + public static T FromJsonPath( string filePath, - SerializationMode serializationMode = SerializationMode.Compact) { + SerializationMode serializationMode = SerializationMode.Compact + ) { var text = File.ReadAllText(filePath); - return JsonDeserializeWithSettings(text, serializationMode); + + return FromJson(text, serializationMode); } - public static string JsonSerializeWithSettings( + public static string ToJson( object value, - SerializationMode serializationMode = SerializationMode.Compact) { + SerializationMode serializationMode = SerializationMode.Compact + ) { return JsonConvert.SerializeObject(value, GetSettings(serializationMode)); } - public static void JsonSerializeToPath( + public static void ToJsonPath( object value, string filePath, - SerializationMode serializationMode = SerializationMode.Compact) { - var text = JsonSerializeWithSettings(value, serializationMode); + SerializationMode serializationMode = SerializationMode.Compact + ) { + var text = ToJson(value, serializationMode); File.WriteAllText(filePath, text); } private static JsonSerializerSettings GetSettings(SerializationMode serializationMode) { - switch (serializationMode) { - case SerializationMode.Compact: - return compactJsonSettings; - - case SerializationMode.Readable: - return readableJsonSettings; - - case SerializationMode.Settings: - return settingsJsonSettings; - - default: - throw new ArgumentException("Unsupported serialization mode", nameof(serializationMode)); - } + return serializationMode switch { + SerializationMode.Compact => CompactJsonSettings, + SerializationMode.Readable => ReadableJsonSettings, + SerializationMode.Settings => SettingsJsonSettings, + _ => throw new ArgumentException("Unsupported serialization mode", nameof(serializationMode)) + }; } } } \ No newline at end of file diff --git a/Assets/Project/Source/IO/IOUtils.cs b/Assets/Project/Source/IO/IOUtils.cs index 83f52bf8..6285c057 100644 --- a/Assets/Project/Source/IO/IOUtils.cs +++ b/Assets/Project/Source/IO/IOUtils.cs @@ -1,11 +1,13 @@ -using System.IO; +using System; +using System.IO; using System.Linq; +using Exa.Utils; +using UnityEditor; using UnityEngine; +using Object = UnityEngine.Object; -namespace Exa.IO -{ - public static partial class IOUtils - { +namespace Exa.IO { + public static partial class IOUtils { public static string CombinePathWithDataPath(params string[] paths) { paths = paths.Prepend(Application.persistentDataPath) .ToArray(); @@ -14,14 +16,39 @@ public static string CombinePathWithDataPath(params string[] paths) { } public static string CombinePath(params string[] paths) { - return Path.Combine(paths).Replace("/", "\\"); + return NormalizeSystem(Path.Combine(paths)); + } + + public static string NormalizeSystem(string path) { + return path.Replace('/', '\\'); + } + + public static string CombineAssetsPath(params string[] paths) { + try { + return NormalizeAssets(Path.Combine(paths)); + } catch (Exception e) { + throw new Exception($"Exception throw with paths {string.Join(", ", paths)}", e); + } + } + + public static string NormalizeAssets(string path) { + return path.Replace('\\', '/'); + } + + public static IDisposable TempFile(string extension, out string file) { + var fileName = CombinePath(Path.GetTempPath(), $"{Guid.NewGuid()}.{extension}"); + file = fileName; + + File.Create(fileName).Dispose(); + + return new DisposableAction(() => { File.Delete(fileName); }); } public static void SaveTexture2D(Texture2D tex, string filePath) { var bytes = tex.EncodeToPNG(); File.WriteAllBytes(filePath, bytes); } - + public static Texture2D LoadTexture2D(string filePath, int width, int height) { var bytes = File.ReadAllBytes(filePath); var tex = new Texture2D(width, height); @@ -29,5 +56,77 @@ public static Texture2D LoadTexture2D(string filePath, int width, int height) { return tex; } + + public static void EnsureCreated(string directoryString) { + if (!Directory.Exists(directoryString)) { + Directory.CreateDirectory(directoryString); + } + } + + #if UNITY_EDITOR + public static void EnsureAssetPathCreated(string assetPath) { + assetPath = NormalizeAssets(assetPath); + + var parentPath = Path.GetDirectoryName(assetPath); + var childFolder = Path.GetFileName(assetPath); + + if (AssetDatabase.IsValidFolder($"{parentPath}/{childFolder}")) { + return; + } + + AssetDatabase.CreateFolder(parentPath, childFolder); + } + + public static T SaveOrCreateAsset(T asset, string path) + where T : Object { + var existingAsset = AssetDatabase.LoadAssetAtPath(path); + + if (!existingAsset) { + AssetDatabase.CreateAsset(asset, path); + existingAsset = asset; + } else { + EditorUtility.CopySerialized(asset, existingAsset); + } + + return existingAsset; + } + + public static Sprite SaveSpriteToEditorPath(Sprite sprite, string path, Action modifyImportSettings = null) { + // Delete if exists + if (File.Exists(path)) { + File.Delete(path); + } + + // Write the texture and save the asset + File.WriteAllBytes(path, sprite.texture.EncodeToPNG()); + AssetDatabase.Refresh(); + AssetDatabase.AddObjectToAsset(sprite, path); + AssetDatabase.SaveAssets(); + + var assetImporter = AssetImporter.GetAtPath(path); + var textureImporter = assetImporter as TextureImporter; + + if (textureImporter == null) { + throw new Exception($"Asset importer {assetImporter} at path {path} is not an instance of TextureImporter"); + } + + modifyImportSettings?.Invoke(textureImporter); + + EditorUtility.SetDirty(textureImporter); + textureImporter.SaveAndReimport(); + + return AssetDatabase.LoadAssetAtPath(path); + } + + public static string SystemPathToAssetPath(string path) { + path = NormalizeAssets(path); + + if (path.StartsWith(Application.dataPath)) { + return "Assets" + path.Substring(Application.dataPath.Length); + } + + throw new ArgumentException(nameof(path), $"Path: {path} is not a valid asset path"); + } + #endif } } \ No newline at end of file diff --git a/Assets/Project/Source/IO/ISaveable.cs b/Assets/Project/Source/IO/ISaveable.cs index d32ef77b..af3e0cf0 100644 --- a/Assets/Project/Source/IO/ISaveable.cs +++ b/Assets/Project/Source/IO/ISaveable.cs @@ -1,7 +1,5 @@ -namespace Exa.IO -{ - public interface ISaveable - { +namespace Exa.IO { + public interface ISaveable { void Load(); void Save(); diff --git a/Assets/Project/Source/IO/ISerializableItem.cs b/Assets/Project/Source/IO/ISerializableItem.cs index 3d1b84f7..4d7bc0d9 100644 --- a/Assets/Project/Source/IO/ISerializableItem.cs +++ b/Assets/Project/Source/IO/ISerializableItem.cs @@ -1,7 +1,5 @@ -namespace Exa.IO -{ - public interface ISerializableItem - { +namespace Exa.IO { + public interface ISerializableItem { string ItemName { get; } } } \ No newline at end of file diff --git a/Assets/Project/Source/IO/JSON/BlueprintBlocksConverter.cs b/Assets/Project/Source/IO/JSON/BlueprintBlocksConverter.cs index c1c24cdd..4b2385d6 100644 --- a/Assets/Project/Source/IO/JSON/BlueprintBlocksConverter.cs +++ b/Assets/Project/Source/IO/JSON/BlueprintBlocksConverter.cs @@ -1,40 +1,51 @@ -using Exa.Grids.Blueprints; +using System; +using Exa.Grids.Blueprints; using Exa.Math; +using Exa.Utils; using Newtonsoft.Json; using Newtonsoft.Json.Linq; -using System; -using System.Linq; using UnityEngine; -namespace Exa.IO.Json -{ - public class BlueprintBlocksConverter : JsonConverter - { - public static readonly string[] SEPARATORS = new[] {"(", ",", ")"}; +namespace Exa.IO.Json { + public class BlueprintBlocksConverter : JsonConverter { + public static readonly string[] SEPARATORS = { + "(", + ",", + ")" + }; + + public override BlueprintGrid ReadJson( + JsonReader reader, + Type objectType, + BlueprintGrid existingValue, + bool hasExistingValue, + JsonSerializer serializer + ) { + if (reader.TokenType == JsonToken.Null) { + return null; + } - public override BlueprintBlocks ReadJson(JsonReader reader, Type objectType, BlueprintBlocks existingValue, - bool hasExistingValue, JsonSerializer serializer) { - if (reader.TokenType == JsonToken.Null) return null; + var blocks = new BlueprintGrid(); - var blocks = new BlueprintBlocks(); - foreach (var pair in JObject.Load(reader)) { - var vector = pair.Key.Split(SEPARATORS, StringSplitOptions.RemoveEmptyEntries); + foreach (var pair in JObject.Load(reader).Unpack()) { + var vector = pair.key.Split(SEPARATORS, StringSplitOptions.RemoveEmptyEntries); var key = new Vector2Int { - x = Convert.ToInt32(vector.First()), - y = Convert.ToInt32(vector.Last()) + x = Convert.ToInt32(vector[0]), + y = Convert.ToInt32(vector[1]) }; - var value = pair.Value.ToObject(serializer); + var value = pair.value.ToObject(serializer); - blocks.Add(new AnchoredBlueprintBlock(key, value)); + blocks.Add(new ABpBlock(key, value)); } return blocks; } - public override void WriteJson(JsonWriter writer, BlueprintBlocks value, JsonSerializer serializer) { + public override void WriteJson(JsonWriter writer, BlueprintGrid value, JsonSerializer serializer) { writer.WriteStartObject(); + foreach (var pair in value) { writer.WritePropertyName(pair.GridAnchor.ToShortString()); serializer.Serialize(writer, pair.BlueprintBlock); diff --git a/Assets/Project/Source/IO/JSON/ObservableConverter.cs b/Assets/Project/Source/IO/JSON/ObservableConverter.cs index 4250267d..3ccce606 100644 --- a/Assets/Project/Source/IO/JSON/ObservableConverter.cs +++ b/Assets/Project/Source/IO/JSON/ObservableConverter.cs @@ -1,16 +1,20 @@ -using Exa.Bindings; +using System; +using Exa.Types.Binding; using Newtonsoft.Json; -using System; -namespace Exa.IO.Json -{ +namespace Exa.IO.Json { internal class ObservableConverter : JsonConverter where TObservable : Observable - where TData : class - { - public override TObservable ReadJson(JsonReader reader, Type objectType, TObservable existingValue, - bool hasExistingValue, JsonSerializer serializer) { + where TData : class { + public override TObservable ReadJson( + JsonReader reader, + Type objectType, + TObservable existingValue, + bool hasExistingValue, + JsonSerializer serializer + ) { var data = serializer.Deserialize(reader, typeof(TData)) as TData; + return Activator.CreateInstance(typeof(TObservable), data) as TObservable; } diff --git a/Assets/Project/Source/IO/JSON/Vector2IntConverter.cs b/Assets/Project/Source/IO/JSON/Vector2IntConverter.cs index 14199892..f956859d 100644 --- a/Assets/Project/Source/IO/JSON/Vector2IntConverter.cs +++ b/Assets/Project/Source/IO/JSON/Vector2IntConverter.cs @@ -1,16 +1,23 @@ -using Newtonsoft.Json; -using System; +using System; using System.Linq; +using Newtonsoft.Json; using UnityEngine; -namespace Exa.IO.Json -{ - public class Vector2IntConverter : JsonConverter - { - public static readonly string[] SEPARATORS = new[] {"(", ", ", ")"}; +namespace Exa.IO.Json { + public class Vector2IntConverter : JsonConverter { + public static readonly string[] SEPARATORS = { + "(", + ", ", + ")" + }; - public override Vector2Int ReadJson(JsonReader reader, Type objectType, Vector2Int existingValue, - bool hasExistingValue, JsonSerializer serializer) { + public override Vector2Int ReadJson( + JsonReader reader, + Type objectType, + Vector2Int existingValue, + bool hasExistingValue, + JsonSerializer serializer + ) { var str = (string) reader.Value; var vector = str.Split(SEPARATORS, StringSplitOptions.RemoveEmptyEntries); diff --git a/Assets/Project/Source/IO/Tree.cs b/Assets/Project/Source/IO/Tree.cs new file mode 100644 index 00000000..64f317f8 --- /dev/null +++ b/Assets/Project/Source/IO/Tree.cs @@ -0,0 +1,47 @@ +using System.IO; +using UnityEngine; + +namespace Exa.IO { + public static class Tree { + static Tree() { + #if UNITY_EDITOR + var info = new DirectoryInfo(Application.persistentDataPath); + var newName = $"{info.Name}Dev"; + // ReSharper disable once PossibleNullReferenceException + Root = new RootNode(info.Parent.FullName, newName); + #else + Root = new RootNode(Application.persistentDataPath); + #endif + } + + public static RootNode Root { get; } + + public class RootNode : IDirectoryNode { + private readonly string rootFolder; + + public RootNode(string rootFolder) { + this.rootFolder = rootFolder; + IOUtils.EnsureCreated(GetPath()); + + Blueprints = new DirectoryNode(this, "blueprints"); + Settings = new DirectoryNode(this, "settings"); + Thumbnails = new DirectoryNode(this, "thumbnails"); + DefaultThumbnails = new DirectoryNode(this, "defaultThumbnails"); + CustomSoundTracks = new DirectoryNode(this, "customSoundTracks"); + } + + public RootNode(string rootFolder, string postFix) + : this(IOUtils.CombinePath(rootFolder, postFix)) { } + + public DirectoryNode Blueprints { get; } + public DirectoryNode Settings { get; } + public DirectoryNode Thumbnails { get; } + public DirectoryNode DefaultThumbnails { get; } + public DirectoryNode CustomSoundTracks { get; } + + public string GetPath() { + return rootFolder; + } + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/IO/Tree.cs.meta b/Assets/Project/Source/IO/Tree.cs.meta new file mode 100644 index 00000000..b65ec496 --- /dev/null +++ b/Assets/Project/Source/IO/Tree.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7dbe5a42bc1d2f24bba5d7da2e5a4032 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/IO/ZipUtils.cs b/Assets/Project/Source/IO/ZipUtils.cs new file mode 100644 index 00000000..8f592395 --- /dev/null +++ b/Assets/Project/Source/IO/ZipUtils.cs @@ -0,0 +1,37 @@ +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using Ionic.Zip; + +namespace Exa.IO { + public static class ZipUtils { + public static IEnumerable Filter(this IEnumerable entries, string filter) { + return entries.Where(entry => Path.GetExtension(entry.FileName) == filter); + } + + public static IEnumerable Filter(this IEnumerable entries, IEnumerable filters) { + return entries.Where( + entry => { + var extension = Path.GetExtension(entry.FileName); + + return filters.Any(filter => extension == filter); + } + ); + } + + public static MemoryStream GetStream(this ZipEntry entry) { + var stream = new MemoryStream(); + entry.Extract(stream); + stream.Position = 0; + + return stream; + } + + public static T ReadJson(this ZipEntry entry, SerializationMode mode) { + var json = Encoding.UTF8.GetString(entry.GetStream().ToArray()); + + return IOUtils.FromJson(json, mode); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/IO/ZipUtils.cs.meta b/Assets/Project/Source/IO/ZipUtils.cs.meta new file mode 100644 index 00000000..31789bd5 --- /dev/null +++ b/Assets/Project/Source/IO/ZipUtils.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9971f19b41b9c8541bc83b605d5f3573 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Input/GameControls.cs b/Assets/Project/Source/Input/GameControls.cs index ad62c80c..d136974c 100644 --- a/Assets/Project/Source/Input/GameControls.cs +++ b/Assets/Project/Source/Input/GameControls.cs @@ -61,7 +61,7 @@ public @GameControls() ""interactions"": """" }, { - ""name"": ""ToggleMirror"", + ""name"": ""ToggleVerticalMirror"", ""type"": ""Button"", ""id"": ""5cd15413-dd5d-4c6c-aed7-035969a257fa"", ""expectedControlType"": ""Button"", @@ -184,7 +184,7 @@ public @GameControls() ""interactions"": """", ""processors"": """", ""groups"": ""MouseKb"", - ""action"": ""ToggleMirror"", + ""action"": ""ToggleVerticalMirror"", ""isComposite"": false, ""isPartOfComposite"": false }, @@ -925,6 +925,52 @@ public @GameControls() ""isPartOfComposite"": false } ] + }, + { + ""name"": ""PlayerStation"", + ""id"": ""d0b94873-f500-4793-a15b-0dac208926b7"", + ""actions"": [ + { + ""name"": ""Fire"", + ""type"": ""Button"", + ""id"": ""5d02f292-a019-4882-b2d9-e5b82ca30e1b"", + ""expectedControlType"": ""Button"", + ""processors"": """", + ""interactions"": """" + }, + { + ""name"": ""Look"", + ""type"": ""Button"", + ""id"": ""0c0d7d47-2dfa-48fb-a4f0-c2744a18f3d2"", + ""expectedControlType"": ""Button"", + ""processors"": """", + ""interactions"": """" + } + ], + ""bindings"": [ + { + ""name"": """", + ""id"": ""ade5d63f-cadd-425b-839d-78b4aa859b3a"", + ""path"": ""/space"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""MouseKb"", + ""action"": ""Fire"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""4439616f-255b-4222-9ecc-4dfbf9f157f1"", + ""path"": ""/rightButton"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""MouseKb"", + ""action"": ""Look"", + ""isComposite"": false, + ""isPartOfComposite"": false + } + ] } ], ""controlSchemes"": [ @@ -953,7 +999,7 @@ public @GameControls() m_Editor_RightClick = m_Editor.FindAction("RightClick", throwIfNotFound: true); m_Editor_RotateLeft = m_Editor.FindAction("RotateLeft", throwIfNotFound: true); m_Editor_RotateRight = m_Editor.FindAction("RotateRight", throwIfNotFound: true); - m_Editor_ToggleMirror = m_Editor.FindAction("ToggleMirror", throwIfNotFound: true); + m_Editor_ToggleVerticalMirror = m_Editor.FindAction("ToggleVerticalMirror", throwIfNotFound: true); m_Editor_Zoom = m_Editor.FindAction("Zoom", throwIfNotFound: true); // Debug m_Debug = asset.FindActionMap("Debug", throwIfNotFound: true); @@ -973,6 +1019,10 @@ public @GameControls() m_Gameplay_SaveGroup = m_Gameplay.FindAction("SaveGroup", throwIfNotFound: true); m_Gameplay_SelectGroup = m_Gameplay.FindAction("SelectGroup", throwIfNotFound: true); m_Gameplay_SaveGroupModifier = m_Gameplay.FindAction("SaveGroupModifier", throwIfNotFound: true); + // PlayerStation + m_PlayerStation = asset.FindActionMap("PlayerStation", throwIfNotFound: true); + m_PlayerStation_Fire = m_PlayerStation.FindAction("Fire", throwIfNotFound: true); + m_PlayerStation_Look = m_PlayerStation.FindAction("Look", throwIfNotFound: true); } public void Dispose() @@ -1027,7 +1077,7 @@ public void Disable() private readonly InputAction m_Editor_RightClick; private readonly InputAction m_Editor_RotateLeft; private readonly InputAction m_Editor_RotateRight; - private readonly InputAction m_Editor_ToggleMirror; + private readonly InputAction m_Editor_ToggleVerticalMirror; private readonly InputAction m_Editor_Zoom; public struct EditorActions { @@ -1038,7 +1088,7 @@ public struct EditorActions public InputAction @RightClick => m_Wrapper.m_Editor_RightClick; public InputAction @RotateLeft => m_Wrapper.m_Editor_RotateLeft; public InputAction @RotateRight => m_Wrapper.m_Editor_RotateRight; - public InputAction @ToggleMirror => m_Wrapper.m_Editor_ToggleMirror; + public InputAction @ToggleVerticalMirror => m_Wrapper.m_Editor_ToggleVerticalMirror; public InputAction @Zoom => m_Wrapper.m_Editor_Zoom; public InputActionMap Get() { return m_Wrapper.m_Editor; } public void Enable() { Get().Enable(); } @@ -1064,9 +1114,9 @@ public void SetCallbacks(IEditorActions instance) @RotateRight.started -= m_Wrapper.m_EditorActionsCallbackInterface.OnRotateRight; @RotateRight.performed -= m_Wrapper.m_EditorActionsCallbackInterface.OnRotateRight; @RotateRight.canceled -= m_Wrapper.m_EditorActionsCallbackInterface.OnRotateRight; - @ToggleMirror.started -= m_Wrapper.m_EditorActionsCallbackInterface.OnToggleMirror; - @ToggleMirror.performed -= m_Wrapper.m_EditorActionsCallbackInterface.OnToggleMirror; - @ToggleMirror.canceled -= m_Wrapper.m_EditorActionsCallbackInterface.OnToggleMirror; + @ToggleVerticalMirror.started -= m_Wrapper.m_EditorActionsCallbackInterface.OnToggleVerticalMirror; + @ToggleVerticalMirror.performed -= m_Wrapper.m_EditorActionsCallbackInterface.OnToggleVerticalMirror; + @ToggleVerticalMirror.canceled -= m_Wrapper.m_EditorActionsCallbackInterface.OnToggleVerticalMirror; @Zoom.started -= m_Wrapper.m_EditorActionsCallbackInterface.OnZoom; @Zoom.performed -= m_Wrapper.m_EditorActionsCallbackInterface.OnZoom; @Zoom.canceled -= m_Wrapper.m_EditorActionsCallbackInterface.OnZoom; @@ -1089,9 +1139,9 @@ public void SetCallbacks(IEditorActions instance) @RotateRight.started += instance.OnRotateRight; @RotateRight.performed += instance.OnRotateRight; @RotateRight.canceled += instance.OnRotateRight; - @ToggleMirror.started += instance.OnToggleMirror; - @ToggleMirror.performed += instance.OnToggleMirror; - @ToggleMirror.canceled += instance.OnToggleMirror; + @ToggleVerticalMirror.started += instance.OnToggleVerticalMirror; + @ToggleVerticalMirror.performed += instance.OnToggleVerticalMirror; + @ToggleVerticalMirror.canceled += instance.OnToggleVerticalMirror; @Zoom.started += instance.OnZoom; @Zoom.performed += instance.OnZoom; @Zoom.canceled += instance.OnZoom; @@ -1270,6 +1320,47 @@ public void SetCallbacks(IGameplayActions instance) } } public GameplayActions @Gameplay => new GameplayActions(this); + + // PlayerStation + private readonly InputActionMap m_PlayerStation; + private IPlayerStationActions m_PlayerStationActionsCallbackInterface; + private readonly InputAction m_PlayerStation_Fire; + private readonly InputAction m_PlayerStation_Look; + public struct PlayerStationActions + { + private @GameControls m_Wrapper; + public PlayerStationActions(@GameControls wrapper) { m_Wrapper = wrapper; } + public InputAction @Fire => m_Wrapper.m_PlayerStation_Fire; + public InputAction @Look => m_Wrapper.m_PlayerStation_Look; + public InputActionMap Get() { return m_Wrapper.m_PlayerStation; } + public void Enable() { Get().Enable(); } + public void Disable() { Get().Disable(); } + public bool enabled => Get().enabled; + public static implicit operator InputActionMap(PlayerStationActions set) { return set.Get(); } + public void SetCallbacks(IPlayerStationActions instance) + { + if (m_Wrapper.m_PlayerStationActionsCallbackInterface != null) + { + @Fire.started -= m_Wrapper.m_PlayerStationActionsCallbackInterface.OnFire; + @Fire.performed -= m_Wrapper.m_PlayerStationActionsCallbackInterface.OnFire; + @Fire.canceled -= m_Wrapper.m_PlayerStationActionsCallbackInterface.OnFire; + @Look.started -= m_Wrapper.m_PlayerStationActionsCallbackInterface.OnLook; + @Look.performed -= m_Wrapper.m_PlayerStationActionsCallbackInterface.OnLook; + @Look.canceled -= m_Wrapper.m_PlayerStationActionsCallbackInterface.OnLook; + } + m_Wrapper.m_PlayerStationActionsCallbackInterface = instance; + if (instance != null) + { + @Fire.started += instance.OnFire; + @Fire.performed += instance.OnFire; + @Fire.canceled += instance.OnFire; + @Look.started += instance.OnLook; + @Look.performed += instance.OnLook; + @Look.canceled += instance.OnLook; + } + } + } + public PlayerStationActions @PlayerStation => new PlayerStationActions(this); private int m_MouseKbSchemeIndex = -1; public InputControlScheme MouseKbScheme { @@ -1286,7 +1377,7 @@ public interface IEditorActions void OnRightClick(InputAction.CallbackContext context); void OnRotateLeft(InputAction.CallbackContext context); void OnRotateRight(InputAction.CallbackContext context); - void OnToggleMirror(InputAction.CallbackContext context); + void OnToggleVerticalMirror(InputAction.CallbackContext context); void OnZoom(InputAction.CallbackContext context); } public interface IDebugActions @@ -1310,5 +1401,10 @@ public interface IGameplayActions void OnSelectGroup(InputAction.CallbackContext context); void OnSaveGroupModifier(InputAction.CallbackContext context); } + public interface IPlayerStationActions + { + void OnFire(InputAction.CallbackContext context); + void OnLook(InputAction.CallbackContext context); + } } } diff --git a/Assets/Project/Source/Input/GameControls.inputactions b/Assets/Project/Source/Input/GameControls.inputactions index 16197b39..f5f79888 100644 --- a/Assets/Project/Source/Input/GameControls.inputactions +++ b/Assets/Project/Source/Input/GameControls.inputactions @@ -46,7 +46,7 @@ "interactions": "" }, { - "name": "ToggleMirror", + "name": "ToggleVerticalMirror", "type": "Button", "id": "5cd15413-dd5d-4c6c-aed7-035969a257fa", "expectedControlType": "Button", @@ -169,7 +169,7 @@ "interactions": "", "processors": "", "groups": "MouseKb", - "action": "ToggleMirror", + "action": "ToggleVerticalMirror", "isComposite": false, "isPartOfComposite": false }, @@ -910,6 +910,52 @@ "isPartOfComposite": false } ] + }, + { + "name": "PlayerStation", + "id": "d0b94873-f500-4793-a15b-0dac208926b7", + "actions": [ + { + "name": "Fire", + "type": "Button", + "id": "5d02f292-a019-4882-b2d9-e5b82ca30e1b", + "expectedControlType": "Button", + "processors": "", + "interactions": "" + }, + { + "name": "Look", + "type": "Button", + "id": "0c0d7d47-2dfa-48fb-a4f0-c2744a18f3d2", + "expectedControlType": "Button", + "processors": "", + "interactions": "" + } + ], + "bindings": [ + { + "name": "", + "id": "ade5d63f-cadd-425b-839d-78b4aa859b3a", + "path": "/space", + "interactions": "", + "processors": "", + "groups": "MouseKb", + "action": "Fire", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "4439616f-255b-4222-9ecc-4dfbf9f157f1", + "path": "/rightButton", + "interactions": "", + "processors": "", + "groups": "MouseKb", + "action": "Look", + "isComposite": false, + "isPartOfComposite": false + } + ] } ], "controlSchemes": [ diff --git a/Assets/Project/Source/Input/InputManager.cs b/Assets/Project/Source/Input/InputManager.cs index 01bdfe4d..f491cfa7 100644 --- a/Assets/Project/Source/Input/InputManager.cs +++ b/Assets/Project/Source/Input/InputManager.cs @@ -1,49 +1,53 @@ -using Exa.UI; -using System.Linq; +using System.Linq; +using Exa.Math; +using Exa.UI; +using Exa.UI.Cursor; using UnityEngine; using UnityEngine.InputSystem; -namespace Exa.Input -{ - public class InputManager : MonoBehaviour - { +namespace Exa.Input { + public class InputManager : MonoBehaviour { [HideInInspector] public bool inputIsCaptured; private MouseCursorController mouseCursor; private Canvas root; - public Vector2 ScaledViewportPoint { get; private set; } - public Vector2 ScreenPoint { get; private set; } - public Vector2 ViewportPoint { get; private set; } + public Vector2 MouseScaledViewportPoint { get; private set; } + public Vector2 MouseScreenPoint { get; private set; } + public Vector2 MouseViewportPoint { get; private set; } public Vector2 MouseWorldPoint { get; private set; } + public Vector2 MouseOffsetFromCentre { get; private set; } private void Awake() { - mouseCursor = Systems.UI.mouseCursor; - root = Systems.UI.rootCanvas; + mouseCursor = S.UI.MouseCursor; + root = S.UI.RootCanvas; } private void Update() { var mousePos = Mouse.current.position.ReadValue(); - ScaledViewportPoint = mousePos / root.scaleFactor; - ScreenPoint = mousePos; - MouseWorldPoint = Camera.main.ScreenToWorldPoint(mousePos); - ViewportPoint = Camera.main.ScreenToViewportPoint(mousePos); - - var currFrameMouseInViewport = !( - ViewportPoint.x < 0f || - ViewportPoint.x > 1f || - ViewportPoint.y < 0f || - ViewportPoint.y > 1f); - - mouseCursor.UpdateMouseInViewport(currFrameMouseInViewport); + MouseScaledViewportPoint = mousePos / root.scaleFactor; + MouseScreenPoint = mousePos; + MouseWorldPoint = S.CameraController.Camera.ScreenToWorldPoint(mousePos); + MouseViewportPoint = S.CameraController.Camera.ScreenToViewportPoint(mousePos); + MouseOffsetFromCentre = CalculateMouseOffsetFromCentre(MouseViewportPoint); + + mouseCursor.UpdateMouseInViewport(MathUtils.GetPointIsInViewport(MouseViewportPoint)); } public bool GetMouseInsideRect(RectTransform rect) { - return RectTransformUtility.RectangleContainsScreenPoint(rect, ScreenPoint, Camera.main); + return RectTransformUtility.RectangleContainsScreenPoint(rect, MouseScreenPoint, S.CameraController.Camera); } public bool GetMouseInsideRect(params RectTransform[] rects) { return rects.Any(GetMouseInsideRect); } + + private Vector2 CalculateMouseOffsetFromCentre(Vector2 mouseViewportPoint) { + var min = new Vector2(-1, -1); + var max = new Vector2(1, 1); + var unclampedOffset = MathUtils.ViewportPointToCentreOffset(mouseViewportPoint); + + return unclampedOffset.Clamp(min, max); + } } } \ No newline at end of file diff --git a/Assets/Project/Source/Logging.meta b/Assets/Project/Source/Logging.meta new file mode 100644 index 00000000..08b20e50 --- /dev/null +++ b/Assets/Project/Source/Logging.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 752fca4fd82c4589ba3ee21202ffd0cd +timeCreated: 1626807682 \ No newline at end of file diff --git a/Assets/Project/Source/Logging/Logs.cs b/Assets/Project/Source/Logging/Logs.cs new file mode 100644 index 00000000..2a5f1537 --- /dev/null +++ b/Assets/Project/Source/Logging/Logs.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Exa.IO; +using Exa.Utils; +using UnityEngine; + +namespace Exa.Logging { + public class Logs : MonoSingleton { + private static List currentStackContext = new List(); + + private static void LogImpl(LogType logType, string message, object ctx = null) { + var stackDisposer = ctx == null ? null : Context(ctx); + + Debug.unityLogger.Log(logType, $"{message} info: {{\n{StringifyContext()}}}"); + + stackDisposer?.Dispose(); + } + + private static IDisposable Context(object ctx) { + currentStackContext.Add(ctx); + + return new DisposableAction(() => currentStackContext.Remove(ctx)); + } + + public static void Log(string message, object ctx = null) { + LogImpl(LogType.Log, message, ctx); + } + + public static void LogObj(object obj) { + LogImpl(LogType.Log, IOUtils.ToJson(obj)); + } + + public static void Warn(string message) { + LogImpl(LogType.Warning, message); + } + + public static void Error(string message) { + LogImpl(LogType.Error, message); + } + + private static string StringifyContext() { + var builder = new StringBuilder(); + + foreach (var ctx in currentStackContext) { + foreach (var (prop, value) in new PropertyAdapter(ctx).GetNamesAndValues()) { + builder.AppendLine($" {prop}: {value},"); + } + } + + return builder.ToString(); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Logging/Logs.cs.meta b/Assets/Project/Source/Logging/Logs.cs.meta new file mode 100644 index 00000000..2a32ba45 --- /dev/null +++ b/Assets/Project/Source/Logging/Logs.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 925be17b507b4576a5f9ab5a7975a024 +timeCreated: 1626807682 \ No newline at end of file diff --git a/Assets/Project/Source/Managers/ColorManager.cs b/Assets/Project/Source/Managers/ColorManager.cs new file mode 100644 index 00000000..3a6a97ad --- /dev/null +++ b/Assets/Project/Source/Managers/ColorManager.cs @@ -0,0 +1,12 @@ +using UnityEngine; + +namespace Exa { + public class ColorManager : MonoBehaviour { + public Color white; + public Color dimGray; + public Color onyx; + public Color raisinBlack; + public Color verdigris; + public Color roseVale; + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Managers/ColorManager.cs.meta b/Assets/Project/Source/Managers/ColorManager.cs.meta new file mode 100644 index 00000000..9a828c7f --- /dev/null +++ b/Assets/Project/Source/Managers/ColorManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 491b4be70626b0f4893fd3f69cf3c458 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Managers/GS.cs b/Assets/Project/Source/Managers/GS.cs new file mode 100644 index 00000000..122c5d40 --- /dev/null +++ b/Assets/Project/Source/Managers/GS.cs @@ -0,0 +1,72 @@ +using Exa.AI; +using Exa.Gameplay; +using Exa.Gameplay.Missions; +using Exa.Ships; +using Exa.UI.Components; +using Exa.UI.Gameplay; +using Exa.Utils; +using UnityEngine; + +#pragma warning disable CS0649 + +namespace Exa { + public class GS : MonoSingleton { + [SerializeField] private Raycaster raycaster; + [SerializeField] private Navigateable navigateable; + [SerializeField] private ShipFactory shipFactory; + [SerializeField] private GameplayUI gameplayUI; + [SerializeField] private AIManager aIManager; + [SerializeField] private SpawnLayer spawnLayer; + [SerializeField] private BlockGridManager blockGridManager; + [SerializeField] private PopupManager popupManager; + [SerializeField] private MissionManager missionManager; + + public static Raycaster Raycaster { + get => Instance.raycaster; + } + + public static Navigateable Navigateable { + get => Instance.navigateable; + } + + public static ShipFactory ShipFactory { + get => Instance.shipFactory; + } + + public static GameplayUI UI { + get => Instance.gameplayUI; + } + + public static AIManager AI { + get => Instance.aIManager; + } + + public static SpawnLayer SpawnLayer { + get => Instance.spawnLayer; + } + + public static BlockGridManager BlockGridManager { + get => Instance.blockGridManager; + } + + public static PopupManager PopupManager { + get => Instance.popupManager; + } + + public static MissionManager MissionManager { + get => Instance.missionManager; + } + + public static GameObject GameObject { + get => Instance.gameObject; + } + + public static bool IsQuitting { + get => S.IsQuitting || S.Scenes.GetSceneIsUnloading("Game"); + } + + public static bool IsPaused { + get => UI.pauseMenu.Paused || MissionManager.IsEditing; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Managers/GameSystems.cs.meta b/Assets/Project/Source/Managers/GS.cs.meta similarity index 100% rename from Assets/Project/Source/Managers/GameSystems.cs.meta rename to Assets/Project/Source/Managers/GS.cs.meta diff --git a/Assets/Project/Source/Managers/GameSystems.cs b/Assets/Project/Source/Managers/GameSystems.cs deleted file mode 100644 index c954934a..00000000 --- a/Assets/Project/Source/Managers/GameSystems.cs +++ /dev/null @@ -1,49 +0,0 @@ -using System; -using Exa.AI; -using Exa.Gameplay; -using Exa.Gameplay.Missions; -using Exa.Ships; -using Exa.UI.Components; -using Exa.UI.Gameplay; -using Exa.Utils; -using UnityEngine; - -#pragma warning disable CS0649 - -namespace Exa -{ - public class GameSystems : MonoSingleton - { - [SerializeField] private GameplayInputManager gameplayInputManager; - [SerializeField] private CameraController cameraController; - [SerializeField] private Raycaster raycaster; - [SerializeField] private Navigateable navigateable; - [SerializeField] private ShipFactory shipFactory; - [SerializeField] private GameplayUI gameplayUI; - [SerializeField] private AIManager aIManager; - [SerializeField] private SpawnLayer spawnLayer; - [SerializeField] private BlockGridManager blockGridManager; - [SerializeField] private PopupManager popupManager; - - public static GameplayInputManager GameplayInputManager => Instance.gameplayInputManager; - public static CameraController CameraController => Instance.cameraController; - public static Raycaster Raycaster => Instance.raycaster; - public static Navigateable Navigateable => Instance.navigateable; - public static ShipFactory ShipFactory => Instance.shipFactory; - public static GameplayUI UI => Instance.gameplayUI; - public static AIManager AI => Instance.aIManager; - public static SpawnLayer SpawnLayer => Instance.spawnLayer; - public static BlockGridManager BlockGridManager => Instance.blockGridManager; - public static PopupManager PopupManager => Instance.popupManager; - - public Mission Mission { get; private set; } - - public void LoadMission(Mission mission, MissionArgs args) { - if (Mission != null) - throw new InvalidOperationException("Cannot load a mission without unloading previous one"); - - Mission = mission; - mission.Init(args); - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Managers/S.cs b/Assets/Project/Source/Managers/S.cs new file mode 100644 index 00000000..387dab7a --- /dev/null +++ b/Assets/Project/Source/Managers/S.cs @@ -0,0 +1,183 @@ +using System; +using System.Collections; +using Exa.Audio; +using Exa.Audio.Music; +using Exa.Camera; +using Exa.Data; +using Exa.Debugging; +using Exa.Grids.Blocks; +using Exa.Grids.Blueprints; +using Exa.Input; +using Exa.Research; +using Exa.SceneManagement; +using Exa.ShipEditor; +using Exa.UI; +using Exa.Utils; +using UnityEditor; +using UnityEngine; + +#pragma warning disable 649 + +namespace Exa { + public delegate void DebugChangeDelegate(DebugMode mode); + + public class S : MonoSingleton { + [Header("References")] + [SerializeField] private BlockFactory blockFactory; + [SerializeField] private CameraController cameraController; + [SerializeField] private ColorManager colorManager; + [SerializeField] private ResearchStore researchStore; + [SerializeField] private BlueprintManager blueprintManager; + [SerializeField] private GridEditor gridEditor; + [SerializeField] private AudioManager audioManager; + [SerializeField] private ThumbnailGenerator thumbnailGenerator; + [SerializeField] private DebugManager debugManager; + [SerializeField] private InputManager inputManager; + [SerializeField] private SettingsManager settingsManager; + [SerializeField] private ExaSceneManager sceneManager; + [SerializeField] private LoggerInterceptor logger; + [SerializeField] private MainUI mainUI; + [SerializeField] private AtmosphereTrigger atmosphereTrigger; + + [Header("Settings")] + [SerializeField] private bool godModeIsEnabled; + [SerializeField] private bool loadSafe; + + public static BlockFactory Blocks { + get => Instance?.blockFactory; + } + + public static CameraController CameraController { + get => Instance?.cameraController; + } + + public static ColorManager Colors { + get => Instance?.colorManager; + } + + public static ResearchStore Research { + get => Instance?.researchStore; + } + + public static BlueprintManager Blueprints { + get => Instance?.blueprintManager; + } + + public static GridEditor Editor { + get => Instance?.gridEditor; + } + + public static AudioManager Audio { + get => Instance?.audioManager; + } + + public static ThumbnailGenerator Thumbnails { + get => Instance?.thumbnailGenerator; + } + + public static DebugManager Debug { + get => Instance?.debugManager; + } + + public static InputManager Input { + get => Instance?.inputManager; + } + + public static SettingsManager Settings { + get => Instance?.settingsManager; + } + + public static ExaSceneManager Scenes { + get => Instance?.sceneManager; + } + + public static LoggerInterceptor Logger { + get => Instance?.logger; + } + + public static MainUI UI { + get => Instance?.mainUI; + } + + public static bool GodModeIsEnabled { + get => Instance.godModeIsEnabled; + set => Instance.godModeIsEnabled = value; + } + + public static bool IsQuitting { get; set; } + + private void Start() { + var enumerator = loadSafe + ? EnumeratorUtils.EnumerateSafe(Load(), OnLoadException) + : Load(); + + StartCoroutine(enumerator); + } + + public static void Quit() { + #if UNITY_EDITOR + EditorApplication.isPlaying = false; + #else + Application.Quit(); + #endif + } + + [RuntimeInitializeOnLoadMethod] + private static void RunOnStart() { + Application.quitting += () => { IsQuitting = true; }; + } + + private IEnumerator Load() { + // Allow the screen to be shown + UI.WipScreen?.Init(); + UI.LoadingScreen.Init(); + UI.LoadingScreen.ShowScreen(LoadingScreenDuration.Long); + UI.Root.gameObject.SetActive(false); + + yield return new WorkUnit(); + + Audio.Init(); + + Settings.AudioSettings.LoadHandler = new SoundTrackLoadHandler { + Progress = UI.LoadingScreen.GetLoadReporter("soundtrack") + }; + + Settings.Load(); + + yield return Settings.AudioSettings.LoadHandler.LoadEnumerator.ScheduleWithTargetFramerate(); + + Settings.AudioSettings.LoadHandler = new SoundTrackLoadHandler { + Progress = UI.Prompts.PromptProgress("Loading soundtrack", UI.Root.interactableAdapter) + }; + + // Play music only after settings have been loaded + atmosphereTrigger.gameObject.SetActive(true); + + // Initialize research systems + researchStore.Init(); + + yield return blockFactory.Init(UI.LoadingScreen.GetLoadReporter("blocks")) + .ScheduleWithTargetFramerate(); + + // Enable research items after the block factory is initialized, as research items call the block factory when enabled + researchStore.AutoEnableItems(); + + yield return blueprintManager.Init(UI.LoadingScreen.GetLoadReporter("blueprints")) + .ScheduleWithTargetFramerate(); + + yield return new WorkUnit(); + + UI.Root.blueprintSelector.Source = Blueprints.userBlueprints; + UI.Root.gameObject.SetActive(true); + UI.LoadingScreen.HideScreen(); + + Audio.Music.IsPlaying = true; + } + + private void OnLoadException(Exception exception) { + UI.LoadingScreen.HideScreen("Error"); + UnityEngine.Debug.LogWarning(exception); + UI.Logger.LogException($"An error has occurred while loading.\n {exception.Message}"); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Managers/Systems.cs.meta b/Assets/Project/Source/Managers/S.cs.meta similarity index 100% rename from Assets/Project/Source/Managers/Systems.cs.meta rename to Assets/Project/Source/Managers/S.cs.meta diff --git a/Assets/Project/Source/Managers/Systems.cs b/Assets/Project/Source/Managers/Systems.cs deleted file mode 100644 index ff5a3058..00000000 --- a/Assets/Project/Source/Managers/Systems.cs +++ /dev/null @@ -1,119 +0,0 @@ -using Exa.Audio; -using Exa.Debugging; -using Exa.Grids.Blocks; -using Exa.Grids.Blueprints; -using Exa.Input; -using Exa.SceneManagement; -using Exa.UI; -using Exa.Utils; -using System; -using System.Collections; -using Exa.Audio.Music; -using UnityEditor; -using UnityEngine; - -#pragma warning disable 649 - -namespace Exa -{ - public delegate void DebugChangeDelegate(DebugMode mode); - - public class Systems : MonoSingleton - { - [Header("References")] - [SerializeField] private BlockFactory blockFactory; - [SerializeField] private BlueprintManager blueprintManager; - [SerializeField] private ShipEditor.ShipEditor shipEditor; - [SerializeField] private AudioManager audioManager; - [SerializeField] private ThumbnailGenerator thumbnailGenerator; - [SerializeField] private DebugManager debugManager; - [SerializeField] private InputManager inputManager; - [SerializeField] private ExaSceneManager sceneManager; - [SerializeField] private LoggerInterceptor logger; - [SerializeField] private MainUI mainUI; - [SerializeField] private AtmosphereTrigger atmosphereTrigger; - - [Header("Settings")] - [SerializeField] private bool godModeIsEnabled = false; - [SerializeField] private bool loadSafe = false; - - public static BlockFactory Blocks => Instance.blockFactory; - public static BlueprintManager Blueprints => Instance.blueprintManager; - public static ShipEditor.ShipEditor Editor => Instance.shipEditor; - public static AudioManager Audio => Instance.audioManager; - public static ThumbnailGenerator Thumbnails => Instance.thumbnailGenerator; - public static DebugManager Debug => Instance.debugManager; - public static InputManager Input => Instance.inputManager; - public static ExaSceneManager Scenes => Instance.sceneManager; - public static LoggerInterceptor Logger => Instance.logger; - public static MainUI UI => Instance.mainUI; - - public static bool GodModeIsEnabled { - get => Instance.godModeIsEnabled; - set => Instance.godModeIsEnabled = value; - } - - public static bool IsQuitting { get; set; } = false; - - public static void Quit() { -#if UNITY_EDITOR - EditorApplication.isPlaying = false; -#else - Application.Quit(); -#endif - } - - private void Start() { - var enumerator = loadSafe - ? EnumeratorUtils.EnumerateSafe(Load(), OnLoadException) - : Load(); - - StartCoroutine(enumerator); - } - - [RuntimeInitializeOnLoadMethod] - private static void RunOnStart() { - Application.quitting += () => { IsQuitting = true; }; - } - - private IEnumerator Load() { - // Allow the screen to be shown - UI.wipScreen?.Init(); - UI.loadingScreen.Init(); - UI.loadingScreen.ShowScreen(LoadingScreenDuration.Long); - UI.root.gameObject.SetActive(false); - - yield return 0; - - UI.root.settings.Load(); - - // Play music only after settings have been loaded - atmosphereTrigger.Trigger(); - - var targetFrameRate = UI.root.settings.videoSettings.settings.Values.resolution.refreshRate; - - yield return EnumeratorUtils.ScheduleWithFramerate(blockFactory.Init(new Progress(value => { - var message = $"Loading blocks ({Mathf.RoundToInt(value * 100)}% complete) ..."; - UI.loadingScreen.UpdateMessage(message); - })), targetFrameRate); - - yield return EnumeratorUtils.ScheduleWithFramerate(blueprintManager.Init(new Progress(value => { - var message = $"Loading blueprints ({Mathf.RoundToInt(value * 100)}% complete) ..."; - UI.loadingScreen.UpdateMessage(message); - })), targetFrameRate); - - yield return null; - - UI.root.blueprintSelector.Source = Blueprints.userBlueprints; - UI.root.missionSetup.fleetBuilder.Init(Blueprints.useableBlueprints); - UI.root.gameObject.SetActive(true); - UI.loadingScreen.HideScreen(); - } - - private void OnLoadException(Exception exception) { - UI.loadingScreen.HideScreen("Error"); - UnityEngine.Debug.LogWarning(exception); - UI.logger.Log($"An error has occurred while loading.\n {exception.Message}"); - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Math/BezierCurve.cs b/Assets/Project/Source/Math/BezierCurve.cs index afb9d981..77678db4 100644 --- a/Assets/Project/Source/Math/BezierCurve.cs +++ b/Assets/Project/Source/Math/BezierCurve.cs @@ -2,25 +2,14 @@ using DG.Tweening; using UnityEngine; -namespace Exa.Math -{ - public class BezierCurve - { +namespace Exa.Math { + public class BezierCurve { private readonly Vector2 P0; private readonly Vector2 P1; private readonly Vector2 P2; private readonly Vector2 P3; - public BezierCurve Reverse => new BezierCurve( - new Vector2(P0.x, 1f - P0.y), - new Vector2(P1.x, 1f - P1.y), - new Vector2(P2.x, 1f - P2.y), - new Vector2(P3.x, 1f - P3.y)); - - public EaseFunction EaseFunction => (time, duration, amplitude, period) => GetY(time); - - public BezierCurve(Vector2 p0, Vector2 p1, Vector2 p2, Vector2 p3) - { + public BezierCurve(Vector2 p0, Vector2 p1, Vector2 p2, Vector2 p3) { P0 = p0; P1 = p1; P2 = p2; @@ -36,12 +25,27 @@ public BezierCurve(Vector2 p1, Vector2 p2) public BezierCurve(float p1x, float p1y, float p2x, float p2y) : this(new Vector2(p1x, p1y), new Vector2(p2x, p2y)) { } + public BezierCurve Reverse { + get => new BezierCurve( + new Vector2(P0.x, 1f - P0.y), + new Vector2(P1.x, 1f - P1.y), + new Vector2(P2.x, 1f - P2.y), + new Vector2(P3.x, 1f - P3.y) + ); + } + + public EaseFunction EaseFunction { + get => (time, duration, amplitude, period) => GetY(time); + } + public float GetY(float x) { - var y = GetY((double)x); - if (y == null) + var y = GetY((double) x); + + if (y == null) { throw new Exception("Invalid curve"); - - return (float)y; + } + + return (float) y; } public override string ToString() { @@ -51,37 +55,41 @@ public override string ToString() { private double? GetY(double x) { // Determine t double t; - if (x == P0.x) - { + + if (x == P0.x) { // Handle corner cases explicitly to prevent rounding errors t = 0; - } - else if (x == P3.x) + } else if (x == P3.x) { t = 1; - else - { + } else { // Calculate t double a = -P0.x + 3 * P1.x - 3 * P2.x + P3.x; double b = 3 * P0.x - 6 * P1.x + 3 * P2.x; double c = -3 * P0.x + 3 * P1.x; var d = P0.x - x; var tTemp = SolveCubic(a, b, c, d); - if (tTemp == null) return null; + + if (tTemp == null) { + return null; + } + t = tTemp.Value; } // Calculate y from t - return Cubed(1 - t) * P0.y - + 3 * t * Squared(1 - t) * P1.y - + 3 * Squared(t) * (1 - t) * P2.y - + Cubed(t) * P3.y; + return Cubed(1 - t) * P0.y + 3 * t * Squared(1 - t) * P1.y + 3 * Squared(t) * (1 - t) * P2.y + Cubed(t) * P3.y; } // Solves the equation ax³+bx²+cx+d = 0 for x ϵ ℝ // and returns the first result in [0, 1] or null. private static double? SolveCubic(double a, double b, double c, double d) { - if (a == 0) return SolveQuadratic(b, c, d); - if (d == 0) return 0; + if (a == 0) { + return SolveQuadratic(b, c, d); + } + + if (d == 0) { + return 0; + } b /= a; c /= a; @@ -92,40 +100,53 @@ public override string ToString() { var disc = Cubed(q) + Squared(r); var term1 = b / 3.0; - if (disc > 0) - { + if (disc > 0) { var s = r + System.Math.Sqrt(disc); - s = (s < 0) ? -CubicRoot(-s) : CubicRoot(s); + s = s < 0 ? -CubicRoot(-s) : CubicRoot(s); var t = r - System.Math.Sqrt(disc); - t = (t < 0) ? -CubicRoot(-t) : CubicRoot(t); + t = t < 0 ? -CubicRoot(-t) : CubicRoot(t); var result = -term1 + s + t; - if (result >= 0 && result <= 1) return result; - } - else if (disc == 0) - { - var r13 = (r < 0) ? -CubicRoot(-r) : CubicRoot(r); + + if (result >= 0 && result <= 1) { + return result; + } + } else if (disc == 0) { + var r13 = r < 0 ? -CubicRoot(-r) : CubicRoot(r); var result = -term1 + 2.0 * r13; - if (result >= 0 && result <= 1) return result; + + if (result >= 0 && result <= 1) { + return result; + } result = -(r13 + term1); - if (result >= 0 && result <= 1) return result; - } - else - { + + if (result >= 0 && result <= 1) { + return result; + } + } else { q = -q; var dum1 = q * q * q; dum1 = System.Math.Acos(r / System.Math.Sqrt(dum1)); var r13 = 2.0 * System.Math.Sqrt(q); var result = -term1 + r13 * System.Math.Cos(dum1 / 3.0); - if (result >= 0 && result <= 1) return result; + + if (result >= 0 && result <= 1) { + return result; + } result = -term1 + r13 * System.Math.Cos((dum1 + 2.0 * System.Math.PI) / 3.0); - if (result >= 0 && result <= 1) return result; + + if (result >= 0 && result <= 1) { + return result; + } result = -term1 + r13 * System.Math.Cos((dum1 + 4.0 * System.Math.PI) / 3.0); - if (result >= 0 && result <= 1) return result; + + if (result >= 0 && result <= 1) { + return result; + } } return null; @@ -135,10 +156,16 @@ public override string ToString() { // and returns the first result in [0, 1] or null. private static double? SolveQuadratic(double a, double b, double c) { var result = (-b + System.Math.Sqrt(Squared(b) - 4 * a * c)) / (2 * a); - if (result >= 0 && result <= 1) return result; + + if (result >= 0 && result <= 1) { + return result; + } result = (-b - System.Math.Sqrt(Squared(b) - 4 * a * c)) / (2 * a); - if (result >= 0 && result <= 1) return result; + + if (result >= 0 && result <= 1) { + return result; + } return null; } @@ -157,23 +184,20 @@ private static double CubicRoot(double f) { } [Serializable] - public struct BezierCurveSettings - { + public struct BezierCurveSettings { public Vector2 p0; public Vector2 p1; public Vector2 p2; public Vector2 p3; - public BezierCurveSettings(Vector2 p1, Vector2 p2) - { - this.p0 = Vector2.zero; + public BezierCurveSettings(Vector2 p1, Vector2 p2) { + p0 = Vector2.zero; this.p1 = p1; this.p2 = p2; - this.p3 = Vector2.one; + p3 = Vector2.one; } - public BezierCurveSettings(Vector2 p0, Vector2 p1, Vector2 p2, Vector2 p3) - { + public BezierCurveSettings(Vector2 p0, Vector2 p1, Vector2 p2, Vector2 p3) { this.p0 = p0; this.p1 = p1; this.p2 = p2; diff --git a/Assets/Project/Source/Math/ControlSystems/PdSettings.cs b/Assets/Project/Source/Math/ControlSystems/PdSettings.cs index 2fb32063..4538c86d 100644 --- a/Assets/Project/Source/Math/ControlSystems/PdSettings.cs +++ b/Assets/Project/Source/Math/ControlSystems/PdSettings.cs @@ -1,10 +1,8 @@ using System; -namespace Exa.Math.ControlSystems -{ +namespace Exa.Math.ControlSystems { [Serializable] - public struct PdSettings - { + public struct PdSettings { public float proportional; public float derivitive; diff --git a/Assets/Project/Source/Math/ControlSystems/PdVector2Controller.cs b/Assets/Project/Source/Math/ControlSystems/PdVector2Controller.cs index 3699b2bf..1279cc8b 100644 --- a/Assets/Project/Source/Math/ControlSystems/PdVector2Controller.cs +++ b/Assets/Project/Source/Math/ControlSystems/PdVector2Controller.cs @@ -1,44 +1,30 @@ using UnityEngine; -namespace Exa.Math.ControlSystems -{ - public class PdVector2Controller - { - private float proportional; - private float maxVel; - private float derivitive; - - public float Proportional { - get => proportional; - set => proportional = value; +namespace Exa.Math.ControlSystems { + public class PdVector2Controller { + public PdVector2Controller(float proportional, float derivitive, float maxVel) { + Proportional = proportional; + Derivitive = derivitive; + MaxVel = maxVel; } - public float Derivitive { - get => derivitive; - set => derivitive = value; - } + public float Proportional { get; set; } - public float MaxVel { - get => maxVel; - set => maxVel = value; - } + public float Derivitive { get; set; } - public PdVector2Controller(float proportional, float derivitive, float maxVel) { - this.proportional = proportional; - this.derivitive = derivitive; - this.maxVel = maxVel; - } + public float MaxVel { get; set; } public void SetSettings(PdSettings pdSettings) { - this.Proportional = pdSettings.proportional; - this.Derivitive = pdSettings.derivitive; + Proportional = pdSettings.proportional; + Derivitive = pdSettings.derivitive; } public Vector2 CalculateRequiredVelocity(Vector2 currentPos, Vector2 targetPos, Vector2 currentVelocity) { var dist = targetPos - currentPos; - var targetVel = Vector2.ClampMagnitude(proportional * dist, maxVel); + var targetVel = Vector2.ClampMagnitude(Proportional * dist, MaxVel); var error = targetVel - currentVelocity; - return derivitive * error; + + return Derivitive * error; } } } \ No newline at end of file diff --git a/Assets/Project/Source/Math/ControlSystems/PidAngleController.cs b/Assets/Project/Source/Math/ControlSystems/PidAngleController.cs index 845adaf9..3dbeae02 100644 --- a/Assets/Project/Source/Math/ControlSystems/PidAngleController.cs +++ b/Assets/Project/Source/Math/ControlSystems/PidAngleController.cs @@ -1,8 +1,6 @@ -namespace Exa.Math.ControlSystems -{ +namespace Exa.Math.ControlSystems { // NOTE: This is completely broken - public class PidAngleController : PidController - { + public class PidAngleController : PidController { public PidAngleController(float proportional, float integral, float derivitive) : base(proportional, integral, derivitive) { } } diff --git a/Assets/Project/Source/Math/ControlSystems/PidController.cs b/Assets/Project/Source/Math/ControlSystems/PidController.cs index 352a4c08..339600c0 100644 --- a/Assets/Project/Source/Math/ControlSystems/PidController.cs +++ b/Assets/Project/Source/Math/ControlSystems/PidController.cs @@ -1,25 +1,23 @@ using System; using UnityEngine; -namespace Exa.Math.ControlSystems -{ - public class PidController - { +namespace Exa.Math.ControlSystems { + public class PidController { private const float MaxOutput = 1000.0f; + private float calculatedIntegral; private float calculatedIntegralMax; - private float calculatedIntegral; + private float derivitive; + private float integral; private float proportional; - private float integral; - private float derivitive; public PidController(float proportional, float integral, float derivitive) { Proportional = proportional; Integral = integral; Derivitive = derivitive; - this.calculatedIntegralMax = MaxOutput / Integral; + calculatedIntegralMax = MaxOutput / Integral; } public float Proportional { @@ -37,9 +35,13 @@ public float Integral { integral = value; - this.calculatedIntegralMax = MaxOutput / Integral; - this.calculatedIntegral = Mathf.Clamp(this.calculatedIntegral, -this.calculatedIntegralMax, - this.calculatedIntegralMax); + calculatedIntegralMax = MaxOutput / Integral; + + calculatedIntegral = Mathf.Clamp( + calculatedIntegral, + -calculatedIntegralMax, + calculatedIntegralMax + ); } } @@ -53,17 +55,21 @@ public float Derivitive { get => derivitive; set { EnsureNonNegative(value, "Derivative"); - this.derivitive = value; + derivitive = value; } } public float ComputeOutput(float error, float delta, float deltaTime) { - this.calculatedIntegral += (error * deltaTime); - this.calculatedIntegral = Mathf.Clamp(this.calculatedIntegral, -this.calculatedIntegralMax, - this.calculatedIntegralMax); + calculatedIntegral += error * deltaTime; + + calculatedIntegral = Mathf.Clamp( + calculatedIntegral, + -calculatedIntegralMax, + calculatedIntegralMax + ); - float derivative = delta / deltaTime; - float output = (Proportional * error) + (Integral * this.calculatedIntegral) + (Derivitive * derivative); + var derivative = delta / deltaTime; + var output = Proportional * error + Integral * calculatedIntegral + Derivitive * derivative; output = Mathf.Clamp(output, -MaxOutput, MaxOutput); diff --git a/Assets/Project/Source/Math/ControlSystems/PidQuaternionController.cs b/Assets/Project/Source/Math/ControlSystems/PidQuaternionController.cs index 9bd577ab..19438555 100644 --- a/Assets/Project/Source/Math/ControlSystems/PidQuaternionController.cs +++ b/Assets/Project/Source/Math/ControlSystems/PidQuaternionController.cs @@ -1,13 +1,19 @@ using System; using UnityEngine; - -namespace Exa.Math.ControlSystems -{ - public class PidQuaternionController - { +namespace Exa.Math.ControlSystems { + public class PidQuaternionController { private readonly PidController[] internalControllers; + public PidQuaternionController(float proportional, float integral, float derivitive) { + internalControllers = new[] { + new PidController(proportional, integral, derivitive), + new PidController(proportional, integral, derivitive), + new PidController(proportional, integral, derivitive), + new PidController(proportional, integral, derivitive) + }; + } + public float Proportional { get => internalControllers[0].Proportional; set { @@ -37,26 +43,17 @@ public float Derivative { set { EnsureNonNegative(value, "Derivative"); - this.internalControllers[0].Derivitive = value; - this.internalControllers[1].Derivitive = value; - this.internalControllers[2].Derivitive = value; - this.internalControllers[3].Derivitive = value; + internalControllers[0].Derivitive = value; + internalControllers[1].Derivitive = value; + internalControllers[2].Derivitive = value; + internalControllers[3].Derivitive = value; } } - public PidQuaternionController(float proportional, float integral, float derivitive) { - internalControllers = new[] { - new PidController(proportional, integral, derivitive), - new PidController(proportional, integral, derivitive), - new PidController(proportional, integral, derivitive), - new PidController(proportional, integral, derivitive) - }; - } - public static Quaternion MultiplyAsVector(Matrix4x4 matrix, Quaternion quaternion) { var vector = new Vector4(quaternion.w, quaternion.x, quaternion.y, quaternion.z); - Vector4 result = matrix * vector; + var result = matrix * vector; return new Quaternion(result.y, result.z, result.w, result.x); } @@ -65,8 +62,12 @@ public static Quaternion ToEulerAngleQuaternion(Vector3 eulerAngles) { return new Quaternion(eulerAngles.x, eulerAngles.y, eulerAngles.z, 0); } - public Vector3 ComputeRequiredAngularAcceleration(Quaternion currentOrientation, Quaternion desiredOrientation, - Vector3 currentAngularVelocity, float deltaTime) { + public Vector3 ComputeRequiredAngularAcceleration( + Quaternion currentOrientation, + Quaternion desiredOrientation, + Vector3 currentAngularVelocity, + float deltaTime + ) { var requiredRotation = QuaternionExtensions.RequiredRotation(currentOrientation, desiredOrientation); var error = Quaternion.identity.Subtract(requiredRotation); @@ -103,55 +104,71 @@ private void EnsureNonNegative(float value, string paramName) { } private Matrix4x4 OrthogonalizeMatrix(Quaternion requiredRotation) { - return new Matrix4x4() { + return new Matrix4x4 { m00 = - -requiredRotation.x * -requiredRotation.x + -requiredRotation.y * -requiredRotation.y + + -requiredRotation.x * -requiredRotation.x + + -requiredRotation.y * -requiredRotation.y + -requiredRotation.z * -requiredRotation.z, m01 = - -requiredRotation.x * requiredRotation.w + -requiredRotation.y * -requiredRotation.z + + -requiredRotation.x * requiredRotation.w + + -requiredRotation.y * -requiredRotation.z + -requiredRotation.z * requiredRotation.y, m02 = - -requiredRotation.x * requiredRotation.z + -requiredRotation.y * requiredRotation.w + + -requiredRotation.x * requiredRotation.z + + -requiredRotation.y * requiredRotation.w + -requiredRotation.z * -requiredRotation.x, m03 = - -requiredRotation.x * -requiredRotation.y + -requiredRotation.y * requiredRotation.x + + -requiredRotation.x * -requiredRotation.y + + -requiredRotation.y * requiredRotation.x + -requiredRotation.z * requiredRotation.w, m10 = - requiredRotation.w * -requiredRotation.x + -requiredRotation.z * -requiredRotation.y + + requiredRotation.w * -requiredRotation.x + + -requiredRotation.z * -requiredRotation.y + requiredRotation.y * -requiredRotation.z, m11 = - requiredRotation.w * requiredRotation.w + -requiredRotation.z * -requiredRotation.z + + requiredRotation.w * requiredRotation.w + + -requiredRotation.z * -requiredRotation.z + requiredRotation.y * requiredRotation.y, m12 = - requiredRotation.w * requiredRotation.z + -requiredRotation.z * requiredRotation.w + + requiredRotation.w * requiredRotation.z + + -requiredRotation.z * requiredRotation.w + requiredRotation.y * -requiredRotation.x, m13 = - requiredRotation.w * -requiredRotation.y + -requiredRotation.z * requiredRotation.x + + requiredRotation.w * -requiredRotation.y + + -requiredRotation.z * requiredRotation.x + requiredRotation.y * requiredRotation.w, m20 = - requiredRotation.z * -requiredRotation.x + requiredRotation.w * -requiredRotation.y + + requiredRotation.z * -requiredRotation.x + + requiredRotation.w * -requiredRotation.y + -requiredRotation.x * -requiredRotation.z, m21 = - requiredRotation.z * requiredRotation.w + requiredRotation.w * -requiredRotation.z + + requiredRotation.z * requiredRotation.w + + requiredRotation.w * -requiredRotation.z + -requiredRotation.x * requiredRotation.y, m22 = - requiredRotation.z * requiredRotation.z + requiredRotation.w * requiredRotation.w + + requiredRotation.z * requiredRotation.z + + requiredRotation.w * requiredRotation.w + -requiredRotation.x * -requiredRotation.x, m23 = - requiredRotation.z * -requiredRotation.y + requiredRotation.w * requiredRotation.x + + requiredRotation.z * -requiredRotation.y + + requiredRotation.w * requiredRotation.x + -requiredRotation.x * requiredRotation.w, m30 = - -requiredRotation.y * -requiredRotation.x + requiredRotation.x * -requiredRotation.y + + -requiredRotation.y * -requiredRotation.x + + requiredRotation.x * -requiredRotation.y + requiredRotation.w * -requiredRotation.z, m31 = - -requiredRotation.y * requiredRotation.w + requiredRotation.x * -requiredRotation.z + + -requiredRotation.y * requiredRotation.w + + requiredRotation.x * -requiredRotation.z + requiredRotation.w * requiredRotation.y, m32 = - -requiredRotation.y * requiredRotation.z + requiredRotation.x * requiredRotation.w + + -requiredRotation.y * requiredRotation.z + + requiredRotation.x * requiredRotation.w + requiredRotation.w * -requiredRotation.x, m33 = - -requiredRotation.y * -requiredRotation.y + requiredRotation.x * requiredRotation.x + - requiredRotation.w * requiredRotation.w, + -requiredRotation.y * -requiredRotation.y + + requiredRotation.x * requiredRotation.x + + requiredRotation.w * requiredRotation.w }; } } diff --git a/Assets/Project/Source/Math/MathUtils.Easing.cs b/Assets/Project/Source/Math/MathUtils.Easing.cs index 80e2ef12..c3c9e807 100644 --- a/Assets/Project/Source/Math/MathUtils.Easing.cs +++ b/Assets/Project/Source/Math/MathUtils.Easing.cs @@ -1,18 +1,14 @@ using DG.Tweening; using UnityEngine; -namespace Exa.Math -{ - public static partial class MathUtils - { +namespace Exa.Math { + public static partial class MathUtils { public static EaseFunction CubicBezier(float p0, float p1, float p2, float p3) { return (c, s, e, d) => { var t = c / d; var it = 1f - t; - var r = (Mathf.Pow(it, 3f) * p0) - + (3f * Mathf.Pow(it, 2f) * t * p1) - + (3f * it * Mathf.Pow(t, 2f) * p2) - + (Mathf.Pow(t, 3f) * p3); + var r = Mathf.Pow(it, 3f) * p0 + 3f * Mathf.Pow(it, 2f) * t * p1 + 3f * it * Mathf.Pow(t, 2f) * p2 + Mathf.Pow(t, 3f) * p3; + return s + e * r; }; } diff --git a/Assets/Project/Source/Math/MathUtils.Enumerators.cs b/Assets/Project/Source/Math/MathUtils.Enumerators.cs index 05e8b618..aee83ab4 100644 --- a/Assets/Project/Source/Math/MathUtils.Enumerators.cs +++ b/Assets/Project/Source/Math/MathUtils.Enumerators.cs @@ -1,44 +1,40 @@ using System.Collections.Generic; using UnityEngine; -namespace Exa.Math -{ - public static partial class MathUtils - { +namespace Exa.Math { + public static partial class MathUtils { /// - /// Enumerate through a range of intergers, if the value is negative the enumeration will go backwards + /// Enumerate through a range of ints, if the value is negative the enumeration will go backwards /// /// /// private static IEnumerable Range(int value) { if (value > 0) { - for (int i = 0; i < value; i++) { + for (var i = 0; i < value; i++) { yield return i; } - } - else { - for (int i = 0; i > value; i--) { + } else { + for (var i = 0; i > value; i--) { yield return i; } } } /// - /// Enumerate through a square of vectors + /// Enumerate through a square of vectors /// /// Width /// Height /// public static IEnumerable EnumerateVectors(int sizeX, int sizeY) { - foreach (var x in Range(sizeX)) { - foreach (var y in Range(sizeY)) { - yield return new Vector2Int(x, y); - } + foreach (var x in Range(sizeX)) + foreach (var y in Range(sizeY)) { + yield return new Vector2Int(x, y); } } /// - /// Enumerate through a square of vectors from the given offset + /// Enumerate through a square of vectors from the given offset /// /// Horizontal offset /// Vertical offset @@ -46,19 +42,18 @@ public static IEnumerable EnumerateVectors(int sizeX, int sizeY) { /// Height /// public static IEnumerable EnumerateVectors(int sizeX, int sizeY, int offsetX, int offsetY) { - foreach (var x in Range(sizeX)) { - foreach (var y in Range(sizeY)) { - yield return new Vector2Int(x + offsetX, y + offsetY); - } + foreach (var x in Range(sizeX)) + foreach (var y in Range(sizeY)) { + yield return new Vector2Int(x + offsetX, y + offsetY); } } - /// + /// public static IEnumerable EnumerateVectors(Vector2Int size) { return EnumerateVectors(size.x, size.y); } - /// + /// public static IEnumerable EnumerateVectors(Vector2Int size, Vector2Int offset) { return EnumerateVectors(size.x, size.y, offset.x, offset.y); } diff --git a/Assets/Project/Source/Math/MathUtils.Float.cs b/Assets/Project/Source/Math/MathUtils.Float.cs new file mode 100644 index 00000000..e76595c0 --- /dev/null +++ b/Assets/Project/Source/Math/MathUtils.Float.cs @@ -0,0 +1,23 @@ +using UnityEngine; + +namespace Exa.Math { + public static partial class MathUtils { + public static Vector2 ToVector2(this float value) { + return new Vector2(value, value); + } + + public static string ToPercentageString(this float value) { + return $"{value * 100f}%"; + } + + public static int DivRem(this float value, float mod, out float rem) { + rem = value % mod; + + return Mathf.FloorToInt(value / mod); + } + + public static int DivRem(this float value, float mod) { + return Mathf.FloorToInt(value / mod); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Math/MathUtils.Float.cs.meta b/Assets/Project/Source/Math/MathUtils.Float.cs.meta new file mode 100644 index 00000000..a55d7c82 --- /dev/null +++ b/Assets/Project/Source/Math/MathUtils.Float.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d13957b6d04d8ca41b1fc8f48ba5128e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Math/MathUtils.Vector2.cs b/Assets/Project/Source/Math/MathUtils.Vector2.cs index 8d6c0fa2..5f19c4d8 100644 --- a/Assets/Project/Source/Math/MathUtils.Vector2.cs +++ b/Assets/Project/Source/Math/MathUtils.Vector2.cs @@ -2,24 +2,23 @@ using System.Linq; using UnityEngine; -namespace Exa.Math -{ - public static partial class MathUtils - { +namespace Exa.Math { + public static partial class MathUtils { public static float GetAngle(this Vector2 vector) { var theta = Mathf.Atan2(vector.y, vector.x); + return NormalizeAngle360(theta * Mathf.Rad2Deg); } public static Vector2 RandomVector2(float magnitude) { float RandomComponent() { - return UnityEngine.Random.Range(-magnitude, magnitude); + return Random.Range(-magnitude, magnitude); } return new Vector2(RandomComponent(), RandomComponent()); - } + } - public static Vector2 Clamp(Vector2 value, Vector2 min, Vector2 max) { + public static Vector2 Clamp(this Vector2 value, Vector2 min, Vector2 max) { return new Vector2 { x = Mathf.Clamp(value.x, min.x, max.x), y = Mathf.Clamp(value.y, min.y, max.y) @@ -28,23 +27,25 @@ public static Vector2 Clamp(Vector2 value, Vector2 min, Vector2 max) { public static Vector2 GrowDirectionToMax(Vector2 direction, Vector2 max) { var minGrowth = AbsMin(max.x / direction.x, max.y / direction.y); + return direction * minGrowth; } public static Vector2 Average(IEnumerable positions) { var count = positions.Count(); - var total = Vector2.zero; - - foreach (var position in positions) { - total += position; - } + var total = positions.Aggregate(Vector2.zero, (current, position) => current + position); return total / count; } + public static Vector2 RandomFromAngledMagnitude(float distance) { + return FromAngledMagnitude(distance, Random.Range(0f, 360f)); + } + public static Vector2 FromAngledMagnitude(float magnitude, float angle) { var vector = Vector2.right; Rotate(ref vector, angle); + return vector * magnitude; } @@ -56,8 +57,8 @@ public static Vector2 Rotate(this Vector2 vector, float angle) { var ty = vector.y; return new Vector2 { - x = (cos * tx) - (sin * ty), - y = (sin * tx) + (cos * ty) + x = cos * tx - sin * ty, + y = sin * tx + cos * ty }; } @@ -68,12 +69,14 @@ public static void Rotate(ref Vector2 vector, float angle) { var tx = vector.x; var ty = vector.y; - vector.x = (cos * tx) - (sin * ty); - vector.y = (sin * tx) + (cos * ty); + vector.x = cos * tx - sin * ty; + vector.y = sin * tx + cos * ty; } public static Vector2 MoveTowards(Vector2 current, Vector2 target, float maxDelta) { - if (target == current) return current; + if (target == current) { + return current; + } return new Vector2 { x = Mathf.MoveTowards(current.x, target.x, maxDelta), @@ -82,21 +85,25 @@ public static Vector2 MoveTowards(Vector2 current, Vector2 target, float maxDelt } public static void MoveTowards(ref Vector2 current, Vector2 target, float maxDelta) { - if (target == current) return; + if (target == current) { + return; + } current.x = Mathf.MoveTowards(current.x, target.x, maxDelta); current.y = Mathf.MoveTowards(current.y, target.y, maxDelta); } /// - /// Rotate a vector2 by the given count of quarter turns + /// Rotate a vector2 by the given count of quarter turns /// /// Vector2 to be rotated /// Amount of 90 degree turns /// public static Vector2 Rotate(this Vector2 vector, int quarterTurns) { // if the vector is rotated by 360 degrees we dont need to calculate anything - if (quarterTurns % 4 == 0) return vector; + if (quarterTurns % 4 == 0) { + return vector; + } var sin = Mathf.Sin(quarterTurns * 90 * Mathf.Deg2Rad); var cos = Mathf.Cos(quarterTurns * 90 * Mathf.Deg2Rad); @@ -104,26 +111,29 @@ public static Vector2 Rotate(this Vector2 vector, int quarterTurns) { var tx = vector.x; var ty = vector.y; - vector.x = (cos * tx) - (sin * ty); - vector.y = (sin * tx) + (cos * ty); + vector.x = cos * tx - sin * ty; + vector.y = sin * tx + cos * ty; return vector; } public static int GetRotation(this Vector2Int vector) { var angle = ((Vector2) vector).GetAngle(); + return Mathf.RoundToInt(angle / 90f); } /// - /// Rotate a vector2int by the given count of quarter turns + /// Rotate a vector2int by the given count of quarter turns /// /// Vector2int to be rotated /// Amount of 90 degree turns /// public static Vector2Int Rotate(this Vector2Int vector, int quarterTurns) { // if the vector is rotated by 360 degrees we dont need to calculate anything - if (quarterTurns % 4 == 0) return vector; + if (quarterTurns % 4 == 0) { + return vector; + } var sin = Mathf.Sin(quarterTurns * 90 * Mathf.Deg2Rad); var cos = Mathf.Cos(quarterTurns * 90 * Mathf.Deg2Rad); @@ -131,14 +141,15 @@ public static Vector2Int Rotate(this Vector2Int vector, int quarterTurns) { var tx = vector.x; var ty = vector.y; - vector.x = Mathf.RoundToInt((cos * tx) - (sin * ty)); - vector.y = Mathf.RoundToInt((sin * tx) + (cos * ty)); + vector.x = Mathf.RoundToInt(cos * tx - sin * ty); + vector.y = Mathf.RoundToInt(sin * tx + cos * ty); return vector; } public static Vector2Int GetRatio(Vector2Int value) { var gdc = GreatestCommonDivisor(value.x, value.y); + return new Vector2Int { x = value.x / gdc, y = value.y / gdc @@ -146,7 +157,7 @@ public static Vector2Int GetRatio(Vector2Int value) { } /// - /// Convert a vector2int to a vector3 with the optional z angle + /// Convert a vector2int to a vector3 with the optional z angle /// /// /// @@ -156,7 +167,7 @@ public static Vector3 ToVector3(this Vector2Int from, float z = 0f) { } /// - /// Convert a vector2 to a vector3 with the optional z angle + /// Convert a vector2 to a vector3 with the optional z angle /// /// /// @@ -188,5 +199,17 @@ public static Vector3 WithZ(this Vector2 vector, float z) { public static string ToShortString(this Vector2Int vector) { return $"{vector.x},{vector.y}"; } + + public static bool GetPointIsInViewport(Vector2 viewportPoint) { + return !( + viewportPoint.x < 0f || + viewportPoint.x > 1f || + viewportPoint.y < 0f || + viewportPoint.y > 1f); + } + + public static Vector2 ViewportPointToCentreOffset(Vector2 viewportPoint) { + return viewportPoint * 2 - new Vector2(1f, 1f); + } } } \ No newline at end of file diff --git a/Assets/Project/Source/Math/MathUtils.Vector3.cs b/Assets/Project/Source/Math/MathUtils.Vector3.cs index 13a67f35..e29586cc 100644 --- a/Assets/Project/Source/Math/MathUtils.Vector3.cs +++ b/Assets/Project/Source/Math/MathUtils.Vector3.cs @@ -1,11 +1,9 @@ using UnityEngine; -namespace Exa.Math -{ - public static partial class MathUtils - { +namespace Exa.Math { + public static partial class MathUtils { /// - /// Convert a vector3int to a vector + /// Convert a vector3int to a vector /// /// /// @@ -20,5 +18,11 @@ public static Vector2 ToVector2(this Vector3Int from) { public static Vector2 ToVector2(this Vector3 from) { return new Vector2(from.x, from.y); } + + public static Vector3 SetZ(this Vector3 from, float value) { + from.z = value; + + return from; + } } } \ No newline at end of file diff --git a/Assets/Project/Source/Math/MathUtils.cs b/Assets/Project/Source/Math/MathUtils.cs index 0239feb2..93bb4f5c 100644 --- a/Assets/Project/Source/Math/MathUtils.cs +++ b/Assets/Project/Source/Math/MathUtils.cs @@ -1,11 +1,9 @@ using System.Linq; -using Exa.Generics; +using Exa.Types.Generics; using UnityEngine; -namespace Exa.Math -{ - public static partial class MathUtils - { +namespace Exa.Math { + public static partial class MathUtils { public static int GreatestCommonDivisor(int a, int b) { while (b != 0) { var i = a % b; @@ -17,24 +15,32 @@ public static int GreatestCommonDivisor(int a, int b) { } public static float Increment(float from, float to, float by) { - if (from == to) return from; + if (from == to) { + return from; + } if (from < to) { var result = from + by; + return result < to ? result : to; - } - else { + } else { var result = from - by; + return result > to ? result : to; } } + public static float Remap(this float value, MinMax from, MinMax to) { + return value.Remap(from.min, from.max, to.min, to.max); + } + public static float Remap( this float value, float from1, float to1, float from2, - float to2) { + float to2 + ) { value = Mathf.Clamp(value, from1, to1); return @@ -48,10 +54,10 @@ public static float Remap( } /// - /// Normalizes a given float value between the float range + /// Normalizes a given float value between the float range /// /// - /// Values over or under the min and max wrap to a value inside the range + /// Values over or under the min and max wrap to a value inside the range /// public static float NormalizeWrap(float value, MinMax minMax) { value %= minMax.max; @@ -77,6 +83,19 @@ public static float NormalizeAngle180(float angle) { return NormalizeWrap(angle, new MinMax(-180f, 180f)); } + public static float WrapAngle(float angle) { + // Wrap + if (angle > 180f) { + angle -= 360f; + } + + return angle; + } + + public static void WrapAngle(ref float angle) { + angle = WrapAngle(angle); + } + public static int Round(this float value) { return Mathf.RoundToInt(value); } diff --git a/Assets/Project/Source/Math/QuaternionExtensions.cs b/Assets/Project/Source/Math/QuaternionExtensions.cs index b62c0363..ec8eea00 100644 --- a/Assets/Project/Source/Math/QuaternionExtensions.cs +++ b/Assets/Project/Source/Math/QuaternionExtensions.cs @@ -1,14 +1,14 @@ using UnityEngine; -namespace Exa.Math -{ - public static class QuaternionExtensions - { +namespace Exa.Math { + public static class QuaternionExtensions { public static Quaternion Multiply(this Quaternion quaternion, float scalar) { - return new Quaternion((float) ((double) quaternion.x * (double) scalar), - (float) ((double) quaternion.y * (double) scalar), - (float) ((double) quaternion.z * (double) scalar), - (float) ((double) quaternion.w * (double) scalar)); + return new Quaternion( + (float) (quaternion.x * (double) scalar), + (float) (quaternion.y * (double) scalar), + (float) (quaternion.z * (double) scalar), + (float) (quaternion.w * (double) scalar) + ); } public static Quaternion RequiredRotation(Quaternion from, Quaternion to) { @@ -27,10 +27,12 @@ public static Quaternion RequiredRotation(Quaternion from, Quaternion to) { } public static Quaternion Subtract(this Quaternion lhs, Quaternion rhs) { - return new Quaternion((float) ((double) lhs.x - (double) rhs.x), - (float) ((double) lhs.y - (double) rhs.y), - (float) ((double) lhs.z - (double) rhs.z), - (float) ((double) lhs.w - (double) rhs.w)); + return new Quaternion( + (float) (lhs.x - (double) rhs.x), + (float) (lhs.y - (double) rhs.y), + (float) (lhs.z - (double) rhs.z), + (float) (lhs.w - (double) rhs.w) + ); } } } \ No newline at end of file diff --git a/Assets/Project/Source/Misc/ICloneable.cs b/Assets/Project/Source/Misc/ICloneable.cs index daa9b2b7..e076b6ba 100644 --- a/Assets/Project/Source/Misc/ICloneable.cs +++ b/Assets/Project/Source/Misc/ICloneable.cs @@ -1,8 +1,6 @@ -namespace Exa.Generics -{ +namespace Exa.Generics { public interface ICloneable - where T : class - { + where T : class { T Clone(); } } \ No newline at end of file diff --git a/Assets/Project/Source/Misc/UserException.cs b/Assets/Project/Source/Misc/UserException.cs index 5161e13a..0031ebbb 100644 --- a/Assets/Project/Source/Misc/UserException.cs +++ b/Assets/Project/Source/Misc/UserException.cs @@ -1,14 +1,10 @@ using System; -namespace Exa.Misc -{ +namespace Exa.Misc { /// - /// Base class for any exception that should be logged directly to the user + /// Base class for any exception that should be logged directly to the user /// - public class UserException : Exception - { - public bool Fatal { get; } = false; - + public class UserException : Exception { public UserException() { } public UserException(string message) @@ -18,5 +14,7 @@ public UserException(string message, bool fatal) : base(message) { Fatal = fatal; } + + public bool Fatal { get; } } } \ No newline at end of file diff --git a/Assets/Project/Source/Pooling/IPool.cs b/Assets/Project/Source/Pooling/IPool.cs index df5d7558..a8d195d8 100644 --- a/Assets/Project/Source/Pooling/IPool.cs +++ b/Assets/Project/Source/Pooling/IPool.cs @@ -1,15 +1,14 @@ -namespace Exa.Pooling -{ +namespace Exa.Pooling { public interface IPool : IPool - where T : PoolMember - { + where T : PoolMember { T Retrieve(); } - public interface IPool - { + public interface IPool { void Configure(PoolSettings poolSettings); + bool Return(PoolMember poolMember); + void OnDestroyMember(); } } \ No newline at end of file diff --git a/Assets/Project/Source/Pooling/Pool.cs b/Assets/Project/Source/Pooling/Pool.cs index 418f4fcb..67a54249 100644 --- a/Assets/Project/Source/Pooling/Pool.cs +++ b/Assets/Project/Source/Pooling/Pool.cs @@ -1,21 +1,19 @@ -using Exa.Utils; -using System; +using System; using System.Collections.Generic; +using Exa.Logging; +using Exa.Utils; using UnityEngine; -namespace Exa.Pooling -{ - public class Pool : Pool - { } +namespace Exa.Pooling { + public class Pool : Pool { } [Serializable] public class Pool : MonoBehaviour, IPool - where T : PoolMember - { - public int totalMembers = 0; + where T : PoolMember { + public int totalMembers; + private Stack poolMembers = new Stack(); private PoolSettings poolSettings; - private Stack poolMembers = new Stack(); private void Update() { // Grow the queue @@ -44,39 +42,44 @@ public virtual T Retrieve() { public void OnDestroyMember() { totalMembers--; + + Debug.LogWarning("Pool member destroyed, this shouldn't happen"); } public virtual bool Return(PoolMember poolMember) { - if (!(poolMember is T)) { + if (!(poolMember is T member)) { throw new ArgumentException( - $"Pool member type ({poolMember.GetType()}) does not match type ({typeof(T)})"); + $"Pool member type ({poolMember.GetType()}) does not match type ({typeof(T)})" + ); } - return TryPush((T) poolMember); + return TryPush(member); } protected virtual T TryPop() { - if (poolMembers.Count == 0) { - return InstantiatePrefab(); - } - - return poolMembers.Pop(); + return poolMembers.Count == 0 ? InstantiatePrefab() : poolMembers.Pop(); } protected virtual bool TryPush(T poolMember) { if (poolMembers.Count > poolSettings.maxSize) { + Logs.Log( + "Destroyed member", + new { + Name = poolMember.gameObject.name + } + ); + Destroy(poolMember.gameObject); + return false; } - Action action = () => poolMember.transform.SetParent(transform); - var enumerator = EnumeratorUtils.DelayOneFrame(action); - Systems.Instance.StartCoroutine(enumerator); + EnumeratorUtils.DelayOneFrame(() => poolMember.transform.SetParent(transform)).Start(); poolMembers.Push(poolMember); + return true; } - protected virtual T InstantiatePrefab() { totalMembers++; var poolMemberGO = Instantiate(poolSettings.prefab, transform); diff --git a/Assets/Project/Source/Pooling/PoolMember.cs b/Assets/Project/Source/Pooling/PoolMember.cs index 85012247..611af0e9 100644 --- a/Assets/Project/Source/Pooling/PoolMember.cs +++ b/Assets/Project/Source/Pooling/PoolMember.cs @@ -1,20 +1,27 @@ using UnityEngine; -using Exa.SceneManagement; -namespace Exa.Pooling -{ - public class PoolMember : MonoBehaviour - { +namespace Exa.Pooling { + public class PoolMember : MonoBehaviour { [HideInInspector] public IPool pool; protected virtual void OnDisable() { - if (Systems.IsQuitting) return; + if (IgnoreClause()) { + return; + } + pool.Return(this); } protected virtual void OnDestroy() { - if (Systems.IsQuitting) return; + if (IgnoreClause()) { + return; + } + pool.OnDestroyMember(); } + + protected virtual bool IgnoreClause() { + return S.IsQuitting; + } } } \ No newline at end of file diff --git a/Assets/Project/Source/Pooling/PoolSettings.cs b/Assets/Project/Source/Pooling/PoolSettings.cs index 4491ed23..2b4b81b8 100644 --- a/Assets/Project/Source/Pooling/PoolSettings.cs +++ b/Assets/Project/Source/Pooling/PoolSettings.cs @@ -1,22 +1,22 @@ -using Exa.Generics; -using System; +using System; +using Exa.Generics; using UnityEngine; -namespace Exa.Pooling -{ +namespace Exa.Pooling { [Serializable] - public class PoolSettings : ICloneable - { + public class PoolSettings : ICloneable { public int maxSize; public int preferredSize; public bool growToPreferredSize; public GameObject prefab; - public PoolSettings Clone() => new PoolSettings { - maxSize = maxSize, - preferredSize = preferredSize, - growToPreferredSize = growToPreferredSize, - prefab = prefab - }; + public PoolSettings Clone() { + return new PoolSettings { + maxSize = maxSize, + preferredSize = preferredSize, + growToPreferredSize = growToPreferredSize, + prefab = prefab + }; + } } } \ No newline at end of file diff --git a/Assets/Project/Source/Research.meta b/Assets/Project/Source/Research.meta new file mode 100644 index 00000000..1f7bd7bb --- /dev/null +++ b/Assets/Project/Source/Research.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 55480bc4cd87d874793535c6e59d55d7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Research/BlockComponentModifier.cs b/Assets/Project/Source/Research/BlockComponentModifier.cs new file mode 100644 index 00000000..3e7d6d6e --- /dev/null +++ b/Assets/Project/Source/Research/BlockComponentModifier.cs @@ -0,0 +1,50 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Exa.Grids.Blocks; +using Exa.Grids.Blocks.Components; + +namespace Exa.Research { + public abstract class BlockComponentModifier : BlockComponentModifier + where T : struct, IBlockComponentValues { + protected virtual IEnumerable> GetModifiers() { + return new[] { + new ResearchStep(AdditiveStep, ValueModificationOrder.Addition), + new ResearchStep(MultiplicativeStep, ValueModificationOrder.Multiplicative) + }; + } + + public override IEnumerable GetResearchSteps() { + return GetModifiers(); + } + + protected override Type GetTargetType() { + return typeof(T); + } + + protected virtual void AdditiveStep(T initialData, ref T currentData) { } + + protected virtual void MultiplicativeStep(T initialData, ref T currentData) { } + } + + public abstract class BlockComponentModifier : ResearchItem, IBlockComponentModifier { + public virtual bool AffectsTemplate(BlockTemplate template) { + + // This makes sure the modifier only affects block templates which contain partials with the same target type + // This can be overriden to provide custom target behaviour + return template.GetAnyPartialDataIsOf(GetTargetType()); + } + + public abstract IEnumerable GetResearchSteps(); + + public override void EnableOn(BlockContext filter) { + S.Research.AddModifier(filter, this); + } + + public override void DisableOn(BlockContext filter) { + S.Research.RemoveModifier(filter, this); + } + + protected abstract Type GetTargetType(); + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Research/BlockComponentModifier.cs.meta b/Assets/Project/Source/Research/BlockComponentModifier.cs.meta new file mode 100644 index 00000000..9e85246f --- /dev/null +++ b/Assets/Project/Source/Research/BlockComponentModifier.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c3b4f90d48eb9504aa980ba73a41e3fd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Research/DynamicBlockComponentModifier.cs b/Assets/Project/Source/Research/DynamicBlockComponentModifier.cs new file mode 100644 index 00000000..45d4ebb0 --- /dev/null +++ b/Assets/Project/Source/Research/DynamicBlockComponentModifier.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using Exa.Grids.Blocks; + +namespace Exa.Research { + public class DynamicBlockComponentModifier : IBlockComponentModifier { + private readonly Func affectsTemplate; + private readonly ResearchStep step; + + public DynamicBlockComponentModifier(ResearchStep step, Func affectsTemplate) { + this.step = step; + this.affectsTemplate = affectsTemplate; + } + + public bool AffectsTemplate(BlockTemplate blockTemplate) { + return affectsTemplate?.Invoke(blockTemplate) ?? true; + } + + public IEnumerable GetResearchSteps() { + yield return step; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Research/DynamicBlockComponentModifier.cs.meta b/Assets/Project/Source/Research/DynamicBlockComponentModifier.cs.meta new file mode 100644 index 00000000..149617a3 --- /dev/null +++ b/Assets/Project/Source/Research/DynamicBlockComponentModifier.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 618bcdafd14a408cb4c03990f9fdcde6 +timeCreated: 1616240526 \ No newline at end of file diff --git a/Assets/Project/Source/Research/DynamicResearchStep.cs b/Assets/Project/Source/Research/DynamicResearchStep.cs new file mode 100644 index 00000000..d374253b --- /dev/null +++ b/Assets/Project/Source/Research/DynamicResearchStep.cs @@ -0,0 +1,3 @@ +namespace Exa.Research { + public class DynamicResearchStep { } +} \ No newline at end of file diff --git a/Assets/Project/Source/Research/DynamicResearchStep.cs.meta b/Assets/Project/Source/Research/DynamicResearchStep.cs.meta new file mode 100644 index 00000000..9a16a850 --- /dev/null +++ b/Assets/Project/Source/Research/DynamicResearchStep.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: c23dc36298e74e81a5f22da1f46ade71 +timeCreated: 1616242732 \ No newline at end of file diff --git a/Assets/Project/Source/Research/IBlockComponentModifier.cs b/Assets/Project/Source/Research/IBlockComponentModifier.cs new file mode 100644 index 00000000..5e963d65 --- /dev/null +++ b/Assets/Project/Source/Research/IBlockComponentModifier.cs @@ -0,0 +1,10 @@ +using System.Collections.Generic; +using Exa.Grids.Blocks; + +namespace Exa.Research { + public interface IBlockComponentModifier { + public bool AffectsTemplate(BlockTemplate blockTemplate); + + public IEnumerable GetResearchSteps(); + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Research/IBlockComponentModifier.cs.meta b/Assets/Project/Source/Research/IBlockComponentModifier.cs.meta new file mode 100644 index 00000000..6b3b8d88 --- /dev/null +++ b/Assets/Project/Source/Research/IBlockComponentModifier.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 935e52b5f18845ffb13c266ede93bc4f +timeCreated: 1616240067 \ No newline at end of file diff --git a/Assets/Project/Source/Research/Mods.meta b/Assets/Project/Source/Research/Mods.meta new file mode 100644 index 00000000..eee60b6e --- /dev/null +++ b/Assets/Project/Source/Research/Mods.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 681bb18921f522f48a9610a8cfd39fcc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Research/Mods/GaussCannonExplosiveUpgrade.cs b/Assets/Project/Source/Research/Mods/GaussCannonExplosiveUpgrade.cs new file mode 100644 index 00000000..87e909a9 --- /dev/null +++ b/Assets/Project/Source/Research/Mods/GaussCannonExplosiveUpgrade.cs @@ -0,0 +1,15 @@ +using Exa.Grids.Blocks.Components; +using UnityEngine; + +namespace Exa.Research { + [CreateAssetMenu(menuName = "Research/GaussCannonExplosiveUpgrade")] + public class GaussCannonExplosiveUpgrade : BlockComponentModifier { + protected override void AdditiveStep(GaussCannonData initialData, ref GaussCannonData currentData) { + currentData.damage += 10; + } + + protected override void MultiplicativeStep(GaussCannonData initialData, ref GaussCannonData currentData) { + currentData.damage += initialData.damage * 0.5f; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Research/Mods/GaussCannonExplosiveUpgrade.cs.meta b/Assets/Project/Source/Research/Mods/GaussCannonExplosiveUpgrade.cs.meta new file mode 100644 index 00000000..42eabeb5 --- /dev/null +++ b/Assets/Project/Source/Research/Mods/GaussCannonExplosiveUpgrade.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7284ed509dd5c9d4a9196237c9a7789a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Research/Mods/WeakAutocannonMod.cs b/Assets/Project/Source/Research/Mods/WeakAutocannonMod.cs new file mode 100644 index 00000000..c968de6c --- /dev/null +++ b/Assets/Project/Source/Research/Mods/WeakAutocannonMod.cs @@ -0,0 +1,11 @@ +using Exa.Grids.Blocks.Components; +using UnityEngine; + +namespace Exa.Research { + [CreateAssetMenu(menuName = "Research/WeakAutocannonMod")] + public class WeakAutocannonMod : BlockComponentModifier { + protected override void MultiplicativeStep(AutocannonData initialData, ref AutocannonData currentData) { + currentData.damage *= 0.01f; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Research/Mods/WeakAutocannonMod.cs.meta b/Assets/Project/Source/Research/Mods/WeakAutocannonMod.cs.meta new file mode 100644 index 00000000..43b01077 --- /dev/null +++ b/Assets/Project/Source/Research/Mods/WeakAutocannonMod.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b8e576c87acc7ad4782dbfe5fea273eb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Research/ResearchBuilder.cs b/Assets/Project/Source/Research/ResearchBuilder.cs new file mode 100644 index 00000000..5d1157af --- /dev/null +++ b/Assets/Project/Source/Research/ResearchBuilder.cs @@ -0,0 +1,115 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Exa.Grids.Blocks; +using Exa.Grids.Blocks.Components; + +namespace Exa.Research { + public class ResearchBuilder { + private readonly List clearActions; + private readonly ResearchStore store; + private BlockContext context = BlockContext.DefaultGroup; + private Func filter; + + public ResearchBuilder(ResearchStore store) { + this.store = store; + clearActions = new List(); + } + + public ResearchBuilder Context(BlockContext context) { + this.context = context; + + return this; + } + + public ResearchBuilder Add( + ResearchStep.ApplyValues applyValues, + ValueModificationOrder order = ValueModificationOrder.Multiplicative + ) + where T : struct, IBlockComponentValues { + + clearActions.Add( + item: store.AddModifier( + context, + modifier: new DynamicBlockComponentModifier( + step: new ResearchStep(applyValues, order), + affectsTemplate: template => template.GetAnyPartialDataIsOf() && (filter?.Invoke(template) ?? true) + ) + ) + ); + + return this; + } + + public ResearchBuilder Add( + ResearchStep.ApplyValuesOmitInit applyValuesOmitInit, + ValueModificationOrder order = ValueModificationOrder.Multiplicative + ) + where T : struct, IBlockComponentValues { + void ApplyValues(T init, ref T curr) { + applyValuesOmitInit(ref curr); + } + + Add(ApplyValues, order); + + return this; + } + + public ResearchBuilder Filter() + where TTemplate : BlockTemplate { + filter = template => template is TTemplate; + + return this; + } + + public ResearchBuilder Filter(Func filter) { + this.filter = filter; + + return this; + } + + public ResearchBuilder ClearFilter() { + filter = null; + + return this; + } + + public ResearchBuilder AddFor( + ResearchStep.ApplyValuesOmitInit applyValuesOmitInit, + ValueModificationOrder order = ValueModificationOrder.Multiplicative + ) + where TTemplate : BlockTemplate + where TBlockComponentValues : struct, IBlockComponentValues { + void ApplyValues(TBlockComponentValues init, ref TBlockComponentValues curr) { + applyValuesOmitInit(ref curr); + } + + return AddFor(ApplyValues, order); + } + + public ResearchBuilder AddFor( + ResearchStep.ApplyValues applyValues, + ValueModificationOrder order = ValueModificationOrder.Multiplicative + ) + where TTemplate : BlockTemplate + where TBlockComponentValues : struct, IBlockComponentValues { + clearActions.Add( + store.AddModifier( + context, + new DynamicBlockComponentModifier( + new ResearchStep(applyValues, order), + template => template is TTemplate + ) + ) + ); + + return this; + } + + public void Clear() { + foreach (var clearAction in clearActions) { + clearAction(); + } + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Research/ResearchBuilder.cs.meta b/Assets/Project/Source/Research/ResearchBuilder.cs.meta new file mode 100644 index 00000000..3d06af6a --- /dev/null +++ b/Assets/Project/Source/Research/ResearchBuilder.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 988780cf7e2f4751b6c2f50581b8bde9 +timeCreated: 1621192421 \ No newline at end of file diff --git a/Assets/Project/Source/Research/ResearchItem.cs b/Assets/Project/Source/Research/ResearchItem.cs new file mode 100644 index 00000000..327c3926 --- /dev/null +++ b/Assets/Project/Source/Research/ResearchItem.cs @@ -0,0 +1,22 @@ +using Exa.Grids.Blocks; +using UnityEngine; + +namespace Exa.Research { + public abstract class ResearchItem : ScriptableObject { + [SerializeField] private BlockContext autoEnableOn; + + public string Id { + get => name; + } + + public void AutoEnable() { + if (autoEnableOn != BlockContext.None) { + EnableOn(autoEnableOn); + } + } + + public abstract void EnableOn(BlockContext filter); + + public abstract void DisableOn(BlockContext filter); + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Research/ResearchItem.cs.meta b/Assets/Project/Source/Research/ResearchItem.cs.meta new file mode 100644 index 00000000..47c81297 --- /dev/null +++ b/Assets/Project/Source/Research/ResearchItem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ce0454f4efe19784b9f0684df85ccca0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Research/ResearchItemBag.cs b/Assets/Project/Source/Research/ResearchItemBag.cs new file mode 100644 index 00000000..074b5546 --- /dev/null +++ b/Assets/Project/Source/Research/ResearchItemBag.cs @@ -0,0 +1,7 @@ +using Exa.Types.Generics; +using UnityEngine; + +namespace Exa.Research { + [CreateAssetMenu(menuName = "Research/ResearchItemBag")] + public class ResearchItemBag : ScriptableObjectBag { } +} \ No newline at end of file diff --git a/Assets/Project/Source/Research/ResearchItemBag.cs.meta b/Assets/Project/Source/Research/ResearchItemBag.cs.meta new file mode 100644 index 00000000..d87e5442 --- /dev/null +++ b/Assets/Project/Source/Research/ResearchItemBag.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7ce01822a88a42c40a160fb3eda20674 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Research/ResearchStep.cs b/Assets/Project/Source/Research/ResearchStep.cs new file mode 100644 index 00000000..384e7413 --- /dev/null +++ b/Assets/Project/Source/Research/ResearchStep.cs @@ -0,0 +1,40 @@ +using Exa.Grids.Blocks.Components; + +namespace Exa.Research { + public class ResearchStep : ResearchStep + where T : struct, IBlockComponentValues { + public delegate void ApplyValues(T init, ref T curr); + + public delegate void ApplyValuesOmitInit(ref T curr); + + private readonly ApplyValues applyFunc; + + public ResearchStep(ApplyValues applyFunc, ValueModificationOrder order) + : base(order) { + this.applyFunc = applyFunc; + } + + public override IBlockComponentValues CalculateCurrentValues(IBlockComponentValues init, IBlockComponentValues curr) { + var convertedCopy = (T) curr; + applyFunc((T) init, ref convertedCopy); + + return convertedCopy; + } + + public override bool MatchesType(IBlockComponentValues values) { + return values is T; + } + } + + public abstract class ResearchStep { + protected ResearchStep(ValueModificationOrder order) { + Order = order; + } + + public ValueModificationOrder Order { get; } + + public abstract IBlockComponentValues CalculateCurrentValues(IBlockComponentValues init, IBlockComponentValues curr); + + public abstract bool MatchesType(IBlockComponentValues values); + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Research/ResearchStep.cs.meta b/Assets/Project/Source/Research/ResearchStep.cs.meta new file mode 100644 index 00000000..10fc4a8f --- /dev/null +++ b/Assets/Project/Source/Research/ResearchStep.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b13e53e60e771b045a6d35947fe5c434 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Research/ResearchStepGroup.cs b/Assets/Project/Source/Research/ResearchStepGroup.cs new file mode 100644 index 00000000..4d4484c1 --- /dev/null +++ b/Assets/Project/Source/Research/ResearchStepGroup.cs @@ -0,0 +1,61 @@ +using System.Collections.Generic; +using System.Linq; +using Exa.Grids.Blocks; +using Exa.Grids.Blocks.Components; +using Exa.Utils; + +namespace Exa.Research { + public class ResearchStepGroup { + public StepCache stepCache = new StepCache(); + + public void AddSteps(IBlockComponentModifier modifier, List cache) { + stepCache.Add(modifier, cache); + } + + public void RemoveSteps(IBlockComponentModifier modifier) { + stepCache.Remove(modifier); + } + + public T ApplyContext(BlockTemplate template, T baseValues) + where T : struct, IBlockComponentValues { + var currentValues = baseValues; + + foreach (var (_, researchSteps) in GroupByStepAndFilter(template, currentValues)) { + var initialValues = currentValues; + + T Reducer(T current, ResearchStep step) { + return (T) step.CalculateCurrentValues(initialValues, current); + } + + currentValues = researchSteps.Aggregate(currentValues, Reducer); + } + + return currentValues; + } + + /// + /// Gets the research steps associated with a given block template and block component values, grouped and ordered by + /// the order the steps should be applied + /// + private IEnumerable<(ValueModificationOrder, IEnumerable)> GroupByStepAndFilter(BlockTemplate template, IBlockComponentValues values) { + // Reduce a list of research steps for a given block template + List Reducer(List current, (IBlockComponentModifier, List) modifierSteps) { + var (modifier, steps) = modifierSteps; + + // Only add the steps associated with a modifier if the modifier should affect the values of the template + if (modifier.AffectsTemplate(template)) { + current.AddRange(steps.Where(step => step.MatchesType(values))); + } + + return current; + } + + return stepCache.Unpack() + .Aggregate(new List(), Reducer) + .GroupBy(step => step.Order) + .Select(grouping => (grouping.Key, (IEnumerable) grouping)); + } + } + + public class StepCache : Dictionary> { } +} \ No newline at end of file diff --git a/Assets/Project/Source/Research/ResearchStepGroup.cs.meta b/Assets/Project/Source/Research/ResearchStepGroup.cs.meta new file mode 100644 index 00000000..b71e6407 --- /dev/null +++ b/Assets/Project/Source/Research/ResearchStepGroup.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3085d689bc2c36c489529a1452c9affc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Research/ResearchStore.cs b/Assets/Project/Source/Research/ResearchStore.cs new file mode 100644 index 00000000..f47a2953 --- /dev/null +++ b/Assets/Project/Source/Research/ResearchStore.cs @@ -0,0 +1,87 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Exa.Grids.Blocks; +using Exa.Grids.Blocks.Components; +using Exa.Utils; +using UnityEngine; + +namespace Exa.Research { + public class ResearchStore : MonoBehaviour { + public delegate void ResearchChangedDelegate(BlockContext blockContext); + + [SerializeField] private ResearchItemBag researchItemBag; + + private Dictionary researchContexts; + + public event ResearchChangedDelegate ResearchChanged; + + public void Init() { + researchContexts = new Dictionary(); + + foreach (var blockContext in BlockContextExtensions.GetContexts()) { + researchContexts.Add(blockContext, new ResearchStepGroup()); + } + } + + public void AutoEnableItems() { + foreach (var researchItem in researchItemBag) { + researchItem.AutoEnable(); + } + } + + public ResearchItem Find(string id) { + return researchItemBag.FirstOrDefault(item => item.Id == id); + } + + public T Find() + where T : ResearchItem { + return researchItemBag.FindFirst(); + } + + public T ApplyModifiers(BlockContext context, BlockTemplate template, T baseValues) + where T : struct, IBlockComponentValues { + return researchContexts[context].ApplyContext(template, baseValues); + } + + public Action AddModifier(BlockContext filter, IBlockComponentModifier modifier) { + var steps = new List(modifier.GetResearchSteps()); + + foreach (var (context, group) in FilterDict(filter)) { + group.AddSteps(modifier, steps); + S.Blocks.Values.SetDirty(context, modifier); + ResearchChanged?.Invoke(context); + } + + return () => RemoveModifier(filter, modifier); + } + + public Action AddModifier( + BlockContext filter, + ResearchStep.ApplyValues applyFunc, + ValueModificationOrder order = ValueModificationOrder.Multiplicative + ) + where T : struct, IBlockComponentValues { + var step = new ResearchStep(applyFunc, order); + var dynamicModifier = new DynamicBlockComponentModifier(step, template => template.GetAnyPartialDataIsOf()); + + return AddModifier(filter, dynamicModifier); + } + + public void RemoveModifier(BlockContext filter, IBlockComponentModifier modifier) { + foreach (var (context, group) in FilterDict(filter)) { + group.RemoveSteps(modifier); + S.Blocks.Values.SetDirty(context, modifier); + ResearchChanged?.Invoke(context); + } + } + + private IEnumerable<(BlockContext, ResearchStepGroup)> FilterDict(BlockContext filter) { + foreach (var (key, context) in researchContexts.Unpack()) { + if (filter.HasValue(key)) { + yield return (key, context); + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Research/ResearchStore.cs.meta b/Assets/Project/Source/Research/ResearchStore.cs.meta new file mode 100644 index 00000000..facf6f42 --- /dev/null +++ b/Assets/Project/Source/Research/ResearchStore.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7bf4183f5b938924d8acc5e2b31c1e3c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Research/ValueModificationOrder.cs b/Assets/Project/Source/Research/ValueModificationOrder.cs new file mode 100644 index 00000000..c919bb04 --- /dev/null +++ b/Assets/Project/Source/Research/ValueModificationOrder.cs @@ -0,0 +1,9 @@ +namespace Exa.Research { + /// + /// Denotes the step in which the modifier is applied + /// + public enum ValueModificationOrder { + Addition, + Multiplicative + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Research/ValueModificationOrder.cs.meta b/Assets/Project/Source/Research/ValueModificationOrder.cs.meta new file mode 100644 index 00000000..0d789146 --- /dev/null +++ b/Assets/Project/Source/Research/ValueModificationOrder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6135521f6c958c34ebb0ca874e883036 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/SceneManagement/ExaSceneManager.cs b/Assets/Project/Source/SceneManagement/ExaSceneManager.cs index 7a253e7f..f20f2bd2 100644 --- a/Assets/Project/Source/SceneManagement/ExaSceneManager.cs +++ b/Assets/Project/Source/SceneManagement/ExaSceneManager.cs @@ -1,34 +1,31 @@ -using Exa.UI; +using System; using System.Collections; using System.Collections.Generic; +using Exa.UI; using Exa.Utils; using UnityEngine; using UnityEngine.SceneManagement; -namespace Exa.SceneManagement -{ - public enum LoadScreenMode - { +namespace Exa.SceneManagement { + public enum LoadScreenMode { CloseOnPrepared, ManuallyClose, None } - public class TransitionArgs - { + public class TransitionArgs { public LoadSceneMode loadSceneMode; public LoadScreenMode loadScreenMode; - public bool setActiveScene = false; public bool reportProgress = false; + public bool setActiveScene = false; } - public class ExaSceneManager : MonoBehaviour - { + public class ExaSceneManager : MonoBehaviour { private LoadingScreen loadingScreen; private Dictionary sceneStatuses; private void Awake() { - loadingScreen = Systems.UI.loadingScreen; + loadingScreen = S.UI.LoadingScreen; sceneStatuses = new Dictionary(); } @@ -36,61 +33,84 @@ public SceneTransition Transition(string name, TransitionArgs transitionArgs) { var operation = SceneManager.LoadSceneAsync(name, transitionArgs.loadSceneMode); var transition = new SceneTransition(operation); - sceneStatuses.EnsureCreated(name, () => new SceneStatus()); + if (!sceneStatuses.ContainsKey(name)) { + sceneStatuses.Add(name, new SceneStatus()); + } + sceneStatuses[name].loading = true; transition.onPrepared.AddListener(() => { sceneStatuses[name].loading = false; }); if (transitionArgs.loadScreenMode != LoadScreenMode.None) { loadingScreen.ShowScreen(LoadingScreenDuration.Short); - if (transitionArgs.loadScreenMode == LoadScreenMode.CloseOnPrepared) + if (transitionArgs.loadScreenMode == LoadScreenMode.CloseOnPrepared) { transition.onPrepared.AddListener(loadingScreen.HideScreen); + } StartCoroutine(ReportOperation(operation)); } if (transitionArgs.setActiveScene) { - transition.onPrepared.AddListener(() => { - var scene = SceneManager.GetSceneByName(name); - SceneManager.SetActiveScene(scene); - }); + transition.onPrepared.AddListener( + () => { + var scene = SceneManager.GetSceneByName(name); + SceneManager.SetActiveScene(scene); + } + ); } return transition; } public bool GetSceneIsLoading(string name) { - sceneStatuses.EnsureCreated(name, () => new SceneStatus()); + Func factory = () => new SceneStatus(); + + if (!sceneStatuses.ContainsKey(name)) { + sceneStatuses.Add(name, factory()); + } + return sceneStatuses[name].loading; } public bool GetSceneIsUnloading(string name) { - sceneStatuses.EnsureCreated(name, () => new SceneStatus()); + Func factory = () => new SceneStatus(); + + if (!sceneStatuses.ContainsKey(name)) { + sceneStatuses.Add(name, factory()); + } + return sceneStatuses[name].unloading; } public AsyncOperation UnloadAsync(string name) { - sceneStatuses.EnsureCreated(name, () => new SceneStatus()); + Func factory = () => new SceneStatus(); + + if (!sceneStatuses.ContainsKey(name)) { + sceneStatuses.Add(name, factory()); + } + sceneStatuses[name].unloading = true; var asyncOperation = SceneManager.UnloadSceneAsync(name); - asyncOperation.completed += (op) => { sceneStatuses[name].unloading = false; }; + asyncOperation.completed += op => { sceneStatuses[name].unloading = false; }; + return asyncOperation; } private IEnumerator ReportOperation(AsyncOperation operation) { while (true) { loadingScreen.UpdateMessage( - $"Loading scene ({Mathf.RoundToInt(operation.progress * 100)}% complete) ..."); + $"Loading scene ({Mathf.RoundToInt(operation.progress * 100)}% complete) ..." + ); - if (operation.isDone) + if (operation.isDone) { break; + } yield return operation; } } - private class SceneStatus - { + private class SceneStatus { public bool loading; public bool unloading; } diff --git a/Assets/Project/Source/SceneManagement/ISceneTransition.cs b/Assets/Project/Source/SceneManagement/ISceneTransition.cs index a3b2ad7e..f895984c 100644 --- a/Assets/Project/Source/SceneManagement/ISceneTransition.cs +++ b/Assets/Project/Source/SceneManagement/ISceneTransition.cs @@ -1,9 +1,7 @@ using UnityEngine.Events; -namespace Exa.SceneManagement -{ - public interface ISceneTransition - { +namespace Exa.SceneManagement { + public interface ISceneTransition { UnityEvent onPrepared { get; } void MarkPrepared(); diff --git a/Assets/Project/Source/SceneManagement/SceneExtensions.cs b/Assets/Project/Source/SceneManagement/SceneExtensions.cs index ad3ff7c1..4baf42d3 100644 --- a/Assets/Project/Source/SceneManagement/SceneExtensions.cs +++ b/Assets/Project/Source/SceneManagement/SceneExtensions.cs @@ -1,17 +1,17 @@ using UnityEngine; -namespace Exa.SceneManagement -{ - public static class SceneExtensions - { +namespace Exa.SceneManagement { + public static class SceneExtensions { public static bool GetParentSceneIsLoading(this MonoBehaviour monoBehaviour) { var name = monoBehaviour.gameObject.scene.name; - return Systems.Scenes.GetSceneIsLoading(name); + + return S.Scenes.GetSceneIsLoading(name); } public static bool GetParentSceneIsUnloading(this MonoBehaviour monoBehaviour) { var name = monoBehaviour.gameObject.scene.name; - return Systems.Scenes.GetSceneIsUnloading(name); + + return S.Scenes.GetSceneIsUnloading(name); } } } \ No newline at end of file diff --git a/Assets/Project/Source/SceneManagement/SceneTransition.cs b/Assets/Project/Source/SceneManagement/SceneTransition.cs index 4d966327..0eed4635 100644 --- a/Assets/Project/Source/SceneManagement/SceneTransition.cs +++ b/Assets/Project/Source/SceneManagement/SceneTransition.cs @@ -1,17 +1,15 @@ using UnityEngine; using UnityEngine.Events; -namespace Exa.SceneManagement -{ - public class SceneTransition : ISceneTransition - { - public UnityEvent onPrepared { get; } - +namespace Exa.SceneManagement { + public class SceneTransition : ISceneTransition { public SceneTransition(AsyncOperation loadOperation) { onPrepared = new UnityEvent(); loadOperation.completed += op => MarkPrepared(); } + public UnityEvent onPrepared { get; } + public void MarkPrepared() { onPrepared?.Invoke(); } diff --git a/Assets/Project/Source/ShipEditor/EditorGrid/BlockGhost.cs b/Assets/Project/Source/ShipEditor/EditorGrid/BlockGhost.cs deleted file mode 100644 index 6fe83032..00000000 --- a/Assets/Project/Source/ShipEditor/EditorGrid/BlockGhost.cs +++ /dev/null @@ -1,44 +0,0 @@ -using Exa.Grids; -using Exa.Grids.Blueprints; -using Exa.Math; -using UnityEngine; - -#pragma warning disable CS0649 - -namespace Exa.ShipEditor -{ - /// - /// Represents a single block that is not yet placed - /// - public class BlockGhost : MonoBehaviour - { - [SerializeField] private SpriteRenderer ghostImage; - [SerializeField] private SpriteRenderer filter; - [SerializeField] private Transform filterTransform; - [SerializeField] private Color activeColor; - [SerializeField] private Color inactiveColor; - - public AnchoredBlueprintBlock AnchoredBlueprintBlock { get; private set; } - - /// - /// Update the block the ghost is representing - /// - /// - public void ImportBlock(BlueprintBlock block) { - ghostImage.sprite = block.Template.thumbnail; - filterTransform.localScale = block.Template.size.ToVector3(); - AnchoredBlueprintBlock = new AnchoredBlueprintBlock(new Vector2Int(), block); - AnchoredBlueprintBlock.BlueprintBlock.SetSpriteRendererFlips(ghostImage); - AnchoredBlueprintBlock.UpdateLocals(gameObject); - } - - public void SetFilterColor(bool active) { - filter.color = active ? activeColor : inactiveColor; - } - - public void ReflectState() { - AnchoredBlueprintBlock.BlueprintBlock.SetSpriteRendererFlips(ghostImage); - AnchoredBlueprintBlock.UpdateLocals(gameObject); - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/EditorGrid/EditorGrid.Input.cs b/Assets/Project/Source/ShipEditor/EditorGrid/EditorGrid.Input.cs deleted file mode 100644 index ac4dae3b..00000000 --- a/Assets/Project/Source/ShipEditor/EditorGrid/EditorGrid.Input.cs +++ /dev/null @@ -1,112 +0,0 @@ -using Exa.Grids; -using Exa.Grids.Blocks; -using UnityEngine; - -namespace Exa.ShipEditor -{ - public partial class EditorGrid - { - private Vector2Int? mouseGridPos; - - /// - /// Current mouse position in the grid - /// - /// A null value signifies a mouse outside of the grid - /// - /// - private Vector2Int? MouseGridPos { - get => mouseGridPos; - set { - if (mouseGridPos == value) return; - - if (mouseGridPos != null) { - SetActiveBackground(mouseGridPos, false); - } - - mouseGridPos = value; - - if (value != null) { - SetActiveBackground(value, true); - } - - ghostLayer.MoveGhost(size, value); - CalculateGhostEnabled(); - } - } - - public void OnBlockSelected(BlockTemplate template) { - ghostLayer.CreateGhost(template); - } - - public void OnRotateLeft() { - if (!ghostLayer.GhostCreated) return; - - ghostLayer.RotateGhosts(1); - CalculateGhostEnabled(); - } - - public void OnRotateRight() { - if (!ghostLayer.GhostCreated) return; - - ghostLayer.RotateGhosts(-1); - CalculateGhostEnabled(); - } - - public void OnLeftClickPressed() { - // if mouse position is invalid - if (MouseGridPos == null) return; - - // if ghost cannot be placed - if (!canPlaceGhost) return; - - // if the editor grid is interactable - if (!Interactable) return; - - canPlaceGhost = false; - - blueprintLayer.AddBlock(ghostLayer.ghost.AnchoredBlueprintBlock.Clone()); - - if (MirrorEnabled && ghostLayer.ghost.AnchoredBlueprintBlock.GridAnchor - != ghostLayer.mirrorGhost.AnchoredBlueprintBlock.GridAnchor) { - blueprintLayer.AddBlock(ghostLayer.mirrorGhost.AnchoredBlueprintBlock.Clone()); - } - - CalculateGhostEnabled(); - } - - public void OnRightClickPressed() { - if (MouseGridPos == null) return; - - if (!Interactable) return; - - var realGridPos = MouseGridPos.GetValueOrDefault(); - - blueprintLayer.RemoveBlock(realGridPos); - - if (MirrorEnabled) { - blueprintLayer.RemoveBlock(GridUtils.GetMirroredGridPos(size, realGridPos)); - } - - CalculateGhostEnabled(); - } - - private void OnEnterGrid(Vector2Int? gridPos) { - MouseGridPos = gridPos; - } - - private void OnExitGrid() { - MouseGridPos = null; - } - - private void SetActiveBackground(Vector2Int? gridPos, bool enter) { - if (gridPos == null) return; - - backgroundLayer.SetGridBackgroundItemColor(gridPos, enter); - - GridUtils.ConditionallyApplyToMirror(gridPos, size, - mirroredGridPos => { - backgroundLayer.SetGridBackgroundItemColor(mirroredGridPos, MirrorEnabled && enter); - }); - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/EditorGrid/EditorGrid.cs b/Assets/Project/Source/ShipEditor/EditorGrid/EditorGrid.cs deleted file mode 100644 index ec3dade4..00000000 --- a/Assets/Project/Source/ShipEditor/EditorGrid/EditorGrid.cs +++ /dev/null @@ -1,205 +0,0 @@ -using DG.Tweening; -using Exa.Grids; -using Exa.Grids.Blueprints; -using Exa.Math; -using Exa.UI; -using System.Collections.Generic; -using System.Linq; -using Exa.UI.Tweening; -using UnityEngine; - -#pragma warning disable CS0649 - -namespace Exa.ShipEditor -{ - /// - /// Grid layer for the Ship layer - /// - public partial class EditorGrid : MonoBehaviour, IUIGroup - { - [SerializeField] private float movementSpeed; - private bool interactible = true; - private bool mirrorEnabled = false; - private bool mouseOverUI = false; - private bool canPlaceGhost = false; - private Vector2 centerPos; - private Vector2 playerPos = Vector2.zero; - private Vector2Int size; - private Tween positionTweener; - private TweenWrapper positionTween; - - public EditorGridBackgroundLayer backgroundLayer; - public EditorGridBlueprintLayer blueprintLayer; - public EditorGridGhostLayer ghostLayer; - - public Vector2 MovementVector { private get; set; } - public float ZoomScale { private get; set; } - - /// - /// Wether or not the grid can be interacted with - /// - public bool Interactable { - get => interactible; - set { - interactible = value; - if (!value) { - ghostLayer.GhostVisible = false; - } - } - } - - /// - /// Wether of not a ghost mirror is enabled - /// - public bool MirrorEnabled { - get => mirrorEnabled; - set { - mirrorEnabled = value; - - ghostLayer.MirrorEnabled = value; - SetActiveBackground(mouseGridPos, true); - CalculateGhostEnabled(); - } - } - - /// - /// Wether or not the mouse is over UI - /// - public bool MouseOverUI { - get => mouseOverUI; - set { - mouseOverUI = value; - - ghostLayer.MouseOverUI = value; - CalculateGhostEnabled(); - } - } - - private void Awake() { - backgroundLayer.EnterGrid += OnEnterGrid; - backgroundLayer.ExitGrid += OnExitGrid; - positionTween = new TweenWrapper((e, t) => transform.DOLocalMove(e, t)); - } - - public void Update() { - if (!Interactable) return; - - // Move the grid to keyboard input - // Remap zoom scale range to damp scale - var remappedZoomScale = ZoomScale.Remap(0f, 3f, 0.5f, 1.5f); - - // Calculate movement offset - playerPos -= - MovementVector * - movementSpeed * - Time.deltaTime * - remappedZoomScale; - - // Clamp movement offset to prevent going out of bounds - playerPos = Vector2.ClampMagnitude(playerPos, 15f); - - // Get position by adding the pivot to the offset - var position = centerPos + playerPos; - - positionTween.To(position, 0.3f); - - // Check for mouse input - backgroundLayer.UpdateCurrActiveGridItem(transform.localPosition.ToVector2()); - } - - public void OnDisable() { - // Reset values - playerPos = Vector2.zero; - mouseGridPos = null; - transform.localPosition = Vector3.zero; - } - - /// - /// Creates a grid with the given size - /// - /// - public void GenerateGrid(Vector2Int size) { - // Set the active size and set targe player position the center of the grid - this.size = size; - - // Set the movement pivot - centerPos = GetGridOffset(); - transform.localPosition = centerPos.ToVector3(); - - // Generate the grid - backgroundLayer.GenerateGrid(size); - } - - /// - /// Import a blueprint - /// - /// - public void Import(Blueprint blueprint) { - // Get size of blueprint class and resize the grid accordingly - var editorSize = blueprint.BlueprintType.maxSize; - GenerateGrid(editorSize); - - // Import the blueprint - blueprintLayer.Import(blueprint); - } - - public void ClearBlueprint() { - blueprintLayer.ClearBlueprint(); - } - - private Vector2 GetGridOffset() { - var halfSize = size.ToVector2() / 2f; - return new Vector2 { - x = -halfSize.x + 0.5f, - y = -halfSize.y + 0.5f - }; - } - - /// - /// Walk through all cases and calculate wether the ghost/s should be enabled - /// - public void CalculateGhostEnabled() { - if (!ghostLayer.GhostCreated) return; - - if (MouseOverUI) { - canPlaceGhost = false; - return; - } - - var ghostTiles = GridUtils.GetOccupiedTilesByAnchor(ghostLayer.ghost.AnchoredBlueprintBlock); - var mirrorGhostTiles = GridUtils.GetOccupiedTilesByAnchor(ghostLayer.mirrorGhost.AnchoredBlueprintBlock); - - bool GetGhostIsClear(IEnumerable occupiedGhostTiles) { - return !blueprintLayer.ActiveBlueprint.Blocks.HasOverlap(occupiedGhostTiles) && - occupiedGhostTiles.All(gridPos => backgroundLayer.PosIsInGrid(gridPos)); - } - - // Calculate wether the main ghost doesn't overlap existing blocks or is outside of the grid - var ghostIsClear = GetGhostIsClear(ghostTiles); - - if (MirrorEnabled) { - // Calculate wether the mirror ghost doesn't overlap existing blocks or is outside of the grid - var mirrorGhostIsClear = GetGhostIsClear(mirrorGhostTiles); - - // Calculate if the ghosts intersect - var ghostsIntersect = ghostTiles.Intersect(mirrorGhostTiles).Any() && - !(ghostLayer.ghost.AnchoredBlueprintBlock.gridAnchor - == ghostLayer.mirrorGhost.AnchoredBlueprintBlock.gridAnchor); - - // Set the color for the main ghost - ghostLayer.ghost.SetFilterColor(ghostIsClear && !ghostsIntersect); - - // Set the color for the mirror ghost - ghostLayer.mirrorGhost.SetFilterColor(mirrorGhostIsClear && !ghostsIntersect); - - // Only allow block placement when both ghosts are clear - canPlaceGhost = ghostIsClear && mirrorGhostIsClear && !ghostsIntersect; - } - else { - // Set the filter color to the clear state of the ghost - ghostLayer.ghost.SetFilterColor(ghostIsClear); - canPlaceGhost = ghostIsClear; - } - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/EditorGrid/EditorGridBlueprintLayer.cs b/Assets/Project/Source/ShipEditor/EditorGrid/EditorGridBlueprintLayer.cs deleted file mode 100644 index 867d53da..00000000 --- a/Assets/Project/Source/ShipEditor/EditorGrid/EditorGridBlueprintLayer.cs +++ /dev/null @@ -1,68 +0,0 @@ -using Exa.Grids.Blueprints; -using Exa.Utils; -using System.Collections.Generic; -using UnityEngine; -using UnityEngine.Events; - -#pragma warning disable CS0649 - -namespace Exa.ShipEditor -{ - public class EditorGridBlueprintLayer : MonoBehaviour - { - public UnityEvent onBlueprintChanged; - - [SerializeField] private ShipEditorStopwatch stopwatch; - private Dictionary blocksByBlueprintAnchor = new Dictionary(); - - public Blueprint ActiveBlueprint { get; private set; } - - private void OnDisable() { - transform.SetActiveChildren(false); - - blocksByBlueprintAnchor = new Dictionary(); - } - - public void Import(Blueprint blueprint) { - ActiveBlueprint = blueprint; - - foreach (var block in blueprint.Blocks) { - PlaceBlock(block); - } - } - - public void AddBlock(AnchoredBlueprintBlock anchoredBlueprintBlock) { - // Reset the stopwatch timer used by the shipeditor to time blueprint grid validation - stopwatch.Reset(); - onBlueprintChanged?.Invoke(); - PlaceBlock(anchoredBlueprintBlock); - ActiveBlueprint.Add(anchoredBlueprintBlock); - } - - public void RemoveBlock(Vector2Int gridPos) { - if (!ActiveBlueprint.Blocks.ContainsMember(gridPos)) return; - - // Reset the stopwatch timer used by the shipeditor to time blueprint grid validation - stopwatch.Reset(); - - var anchoredBlock = ActiveBlueprint.Blocks.GetMember(gridPos); - var anchoredPos = anchoredBlock.GridAnchor; - - ActiveBlueprint.Remove(anchoredPos); - onBlueprintChanged?.Invoke(); - blocksByBlueprintAnchor[anchoredPos].SetActive(false); - } - - public void ClearBlueprint() { - transform.SetActiveChildren(false); - - ActiveBlueprint?.ClearBlocks(); - } - - public void PlaceBlock(AnchoredBlueprintBlock block) { - var blockGO = block.CreateInactiveInertBlockInGrid(transform); - blockGO.SetActive(true); - blocksByBlueprintAnchor[block.gridAnchor] = blockGO; - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/EditorGrid/EditorGridGhostLayer.cs b/Assets/Project/Source/ShipEditor/EditorGrid/EditorGridGhostLayer.cs deleted file mode 100644 index 446a2d4c..00000000 --- a/Assets/Project/Source/ShipEditor/EditorGrid/EditorGridGhostLayer.cs +++ /dev/null @@ -1,123 +0,0 @@ -using Exa.Grids; -using Exa.Grids.Blocks; -using Exa.Grids.Blueprints; -using UnityEngine; - -namespace Exa.ShipEditor -{ - public class EditorGridGhostLayer : MonoBehaviour - { - private bool ghostVisible = true; - private bool mirrorEnabled = false; - private bool mouseOverUI = false; - - public GameObject ghostPrefab; - public BlockGhost ghost; - public BlockGhost mirrorGhost; - - public bool GhostCreated { get; private set; } - - /// - /// Ghost was created - /// - public bool GhostVisible { - get => ghostVisible; - set { - ghostVisible = value; - - CalculateGhostEnabled(); - } - } - - /// - /// Ghost is enabled - /// - public bool MirrorEnabled { - get => mirrorEnabled; - set { - mirrorEnabled = value; - - CalculateGhostEnabled(); - } - } - - /// - /// If player is hovering over ui - /// - public bool MouseOverUI { - get => mouseOverUI; - set { - mouseOverUI = value; - - CalculateGhostEnabled(); - } - } - - private void Awake() { - ghost = Instantiate(ghostPrefab, transform).GetComponent(); - mirrorGhost = Instantiate(ghostPrefab, transform).GetComponent(); - - GhostCreated = false; - GhostVisible = false; - } - - private void OnDisable() { - GhostVisible = false; - } - - public void CreateGhost(BlockTemplate template) { - ghost.ImportBlock(new BlueprintBlock { - id = template.id, - Rotation = 0, - flippedX = false, - flippedY = false - }); - - mirrorGhost.ImportBlock(new BlueprintBlock { - id = template.id, - Rotation = 0, - flippedX = false, - flippedY = true - }); - - GhostCreated = true; - } - - public void MoveGhost(Vector2Int gridSize, Vector2Int? anchorPos) { - if (!GhostCreated) return; - - GhostVisible = anchorPos != null; - - if (!GhostVisible) return; - - var realAnchorPos = anchorPos.GetValueOrDefault(); - var mirroredAnchorPos = GridUtils.GetMirroredGridPos(gridSize, realAnchorPos); - - ghost.AnchoredBlueprintBlock.gridAnchor = realAnchorPos; - ghost.ReflectState(); - mirrorGhost.AnchoredBlueprintBlock.gridAnchor = mirroredAnchorPos; - mirrorGhost.ReflectState(); - - CalculateGhostEnabled(); - } - - public void RotateGhosts(int value) { - ghost.AnchoredBlueprintBlock.blueprintBlock.Rotation += value; - ghost.ReflectState(); - mirrorGhost.AnchoredBlueprintBlock.blueprintBlock.Rotation += value; - mirrorGhost.ReflectState(); - } - - private void CalculateGhostEnabled() { - ghost.gameObject.SetActive( - GhostVisible && - !mouseOverUI); - - mirrorGhost.gameObject.SetActive( - MirrorEnabled && - GhostVisible && - ghost.AnchoredBlueprintBlock.gridAnchor != mirrorGhost.AnchoredBlueprintBlock.gridAnchor - && !mouseOverUI); - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/EditorGrid/EditorGridItem.cs b/Assets/Project/Source/ShipEditor/EditorGrid/EditorGridItem.cs deleted file mode 100644 index 74ddc5bd..00000000 --- a/Assets/Project/Source/ShipEditor/EditorGrid/EditorGridItem.cs +++ /dev/null @@ -1,17 +0,0 @@ -using UnityEngine; - -#pragma warning disable CS0649 - -namespace Exa.ShipEditor -{ - public class EditorGridItem : MonoBehaviour - { - [SerializeField] private SpriteRenderer spriteRenderer; - [SerializeField] private Color defaultColor; - [SerializeField] private Color hoverColor; - - public void SetColor(bool enabled) { - spriteRenderer.color = enabled ? hoverColor : defaultColor; - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/EditorGrid/EditorGridItem.cs.meta b/Assets/Project/Source/ShipEditor/EditorGrid/EditorGridItem.cs.meta deleted file mode 100644 index acf725c7..00000000 --- a/Assets/Project/Source/ShipEditor/EditorGrid/EditorGridItem.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 0990e17e5150e1444935589dcf63458f -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/ShipEditor/ShipEditor.Events.cs b/Assets/Project/Source/ShipEditor/ShipEditor.Events.cs deleted file mode 100644 index 62344c9e..00000000 --- a/Assets/Project/Source/ShipEditor/ShipEditor.Events.cs +++ /dev/null @@ -1,62 +0,0 @@ -namespace Exa.ShipEditor -{ - public partial class ShipEditor - { - public void OnBlueprintClear() { - // Hide block ghost and ask user for blueprint clear confirmation - Systems.UI.promptController.PromptYesNo("Are you sure you want to clear the blueprint?", this, yes => { - if (yes) { - IsSaved = false; - editorGrid.ClearBlueprint(); - } - }); - } - - public void OnOverlayPointerEnter() { - MouseOverUI = true; - } - - public void OnOverlayPointerExit() { - MouseOverUI = false; - } - - public void OnBlueprintChanged() { - IsSaved = false; - UpdateSaveButton(); - } - - public void OnBlueprintNameInputChanged(string value) { - IsSaved = false; - ValidateName(value); - UpdateSaveButton(); - } - - public void OnBlueprintGridValidationRequested() { - ValidateGrid(); - UpdateSaveButton(); - } - - public void OnBlueprintSave() { - // Don't to save twice - if (IsSaved) return; - - // Make sure the grid is validated before saving - ValidateGrid(); - UpdateSaveButton(); - - if (!ShouldSave) return; - - IsSaved = true; - UpdateSaveButton(); - - // Set the value of the observable - container.SetData(editorGrid.blueprintLayer.ActiveBlueprint, false); - - // Save the blueprint, generate the thumbnail - saveCallback(container); - - // Notify after saving as observers require the thumbnail to be generated - container.Notify(); - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/ShipEditor.Input.cs b/Assets/Project/Source/ShipEditor/ShipEditor.Input.cs deleted file mode 100644 index 45fa3b7b..00000000 --- a/Assets/Project/Source/ShipEditor/ShipEditor.Input.cs +++ /dev/null @@ -1,106 +0,0 @@ -using DG.Tweening; -using UnityEngine; -using UnityEngine.InputSystem; - -namespace Exa.ShipEditor -{ - public partial class ShipEditor - { - public void OnMovement(InputAction.CallbackContext context) { - if (Systems.Input.inputIsCaptured) { - editorGrid.MovementVector = Vector2.zero; - return; - } - - switch (context.phase) { - case InputActionPhase.Performed: - editorGrid.MovementVector = context.ReadValue(); - break; - - case InputActionPhase.Canceled: - editorGrid.MovementVector = Vector2.zero; - break; - - default: - return; - } - } - - public void OnLeftClick(InputAction.CallbackContext context) { - switch (context.phase) { - case InputActionPhase.Started: - leftButtonPressed = true; - break; - - case InputActionPhase.Canceled: - leftButtonPressed = false; - break; - - default: - return; - } - } - - public void OnRightClick(InputAction.CallbackContext context) { - switch (context.phase) { - case InputActionPhase.Started: - rightButtonPressed = true; - break; - - case InputActionPhase.Canceled: - rightButtonPressed = false; - break; - - default: - return; - } - } - - public void OnRotateLeft(InputAction.CallbackContext context) { - switch (context.phase) { - case InputActionPhase.Started: - editorGrid.OnRotateLeft(); - break; - - default: - return; - } - } - - public void OnRotateRight(InputAction.CallbackContext context) { - switch (context.phase) { - case InputActionPhase.Started: - editorGrid.OnRotateRight(); - break; - - default: - return; - } - } - - public void OnToggleMirror(InputAction.CallbackContext context) { - switch (context.phase) { - case InputActionPhase.Started: - MirrorEnabled = !MirrorEnabled; - break; - - default: - return; - } - } - - public void OnZoom(InputAction.CallbackContext context) { - if (MouseOverUI) return; - - if (context.phase == InputActionPhase.Performed) { - var v2delta = context.ReadValue(); - var yDelta = v2delta.y; - if (yDelta == 0f) return; - - yDelta /= 100f; - Zoom = Mathf.Clamp(Zoom + (-yDelta * zoomSpeed), 3, 15); - Camera.main.DOOrthoSize(Zoom, 0.5f); - } - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/ShipEditor.State.cs b/Assets/Project/Source/ShipEditor/ShipEditor.State.cs deleted file mode 100644 index e0075961..00000000 --- a/Assets/Project/Source/ShipEditor/ShipEditor.State.cs +++ /dev/null @@ -1,107 +0,0 @@ -using Exa.Grids.Blueprints; -using Exa.Validation; -using System; -using UnityEngine; - -namespace Exa.ShipEditor -{ - public partial class ShipEditor - { - private bool leftButtonPressed = false; - private bool rightButtonPressed = false; - private bool mirrorEnabled = false; - private bool mouseOverUI = false; - private bool interactible = true; - private float zoom; - private BlueprintContainer container; - private Action saveCallback; - - public bool IsSaved { get; private set; } - public ValidationResult NameValidationResult { get; private set; } - public ValidationResult GridValidationResult { get; private set; } - - public bool MirrorEnabled { - get => mirrorEnabled; - set { - mirrorEnabled = value; - editorGrid.MirrorEnabled = value; - overlay.mirrorView.SetState(value); - } - } - - public bool Interactable { - get => interactible; - set { - interactible = value; - - editorGrid.Interactable = value; - navigateable.Interactable = value; - - if (value) { - gameControls.Enable(); - } - else { - gameControls.Disable(); - editorGrid.MovementVector = Vector2.zero; - } - } - } - - public bool MouseOverUI { - get => mouseOverUI; - set { - mouseOverUI = value; - - editorGrid.MouseOverUI = value; - } - } - - public float Zoom { - get => zoom; - set { - zoom = value; - - editorGrid.ZoomScale = value / 5f; - } - } - - private bool ShouldSave { get; set; } - - private void ResetState() { - Zoom = 5f; - IsSaved = true; - NameValidationResult = null; - GridValidationResult = null; - - Camera.main.orthographicSize = Zoom; - } - - public void UpdateSaveButton() { - ShouldSave = GetShouldSave(out var message); - - overlay.infoPanel.saveButtonTooltipTrigger.SetText(message); - overlay.infoPanel.saveButtonCanvasGroup.interactable = ShouldSave; - overlay.infoPanel.saveButtonCanvasGroup.alpha = ShouldSave ? 1f : 0.5f; - } - - private bool GetShouldSave(out string message) { - if (IsSaved) { - message = "Blueprint is already saved"; - return false; - } - - if (NameValidationResult != null && !NameValidationResult) { - message = NameValidationResult.GetFirstBySeverity().Message; - return false; - } - - if (GridValidationResult != null && !GridValidationResult) { - message = GridValidationResult.GetFirstBySeverity().Message; - return false; - } - - message = null; - return true; - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/ShipEditor.Validation.cs b/Assets/Project/Source/ShipEditor/ShipEditor.Validation.cs deleted file mode 100644 index a7cf26ab..00000000 --- a/Assets/Project/Source/ShipEditor/ShipEditor.Validation.cs +++ /dev/null @@ -1,33 +0,0 @@ -namespace Exa.ShipEditor -{ - public partial class ShipEditor - { - private BlueprintGridValidator gridValidator; - private BlueprintNameValidator nameValidator; - - public void ValidateGrid() { - var args = new BlueprintGridValidationArgs { - blueprintBlocks = editorGrid.blueprintLayer.ActiveBlueprint.Blocks - }; - - GridValidationResult = overlay - .infoPanel - .errorListController - .Validate(gridValidator, args); - } - - public void ValidateName(string name) { - var args = new BlueprintNameValidationArgs { - collectionContext = Systems.Blueprints.userBlueprints, - requestedName = name, - blueprintContainer = container - }; - - NameValidationResult = overlay.infoPanel.errorListController - .Validate(nameValidator, args); - - if (NameValidationResult) - editorGrid.blueprintLayer.ActiveBlueprint.name = name; - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/ShipEditor.cs b/Assets/Project/Source/ShipEditor/ShipEditor.cs deleted file mode 100644 index 4ef34c34..00000000 --- a/Assets/Project/Source/ShipEditor/ShipEditor.cs +++ /dev/null @@ -1,94 +0,0 @@ -using Exa.Grids.Blueprints; -using Exa.Input; -using Exa.IO; -using Exa.UI; -using System; -using UnityEngine; -using static Exa.Input.GameControls; - -#pragma warning disable CS0649 - -namespace Exa.ShipEditor -{ - [RequireComponent(typeof(ShipEditorNavigateable))] - public partial class ShipEditor : MonoBehaviour, IEditorActions, IUIGroup - { - public EditorGrid editorGrid; - public ShipEditorNavigateable navigateable; - - [SerializeField] private ShipEditorStopwatch stopwatch; - [SerializeField] private GameObject editorGridBackground; - [SerializeField] private float zoomSpeed; - private GameControls gameControls; - private ShipEditorOverlay overlay; - - private void Awake() { - overlay = Systems.UI.editorOverlay; - - gameControls = new GameControls(); - gameControls.Editor.SetCallbacks(this); - - overlay.infoPanel.clearButton.onClick.AddListener(OnBlueprintClear); - overlay.inventory.blockSelected.AddListener(editorGrid.OnBlockSelected); - overlay.onPointerEnter.AddListener(OnOverlayPointerEnter); - overlay.onPointerExit.AddListener(OnOverlayPointerExit); - overlay.infoPanel.blueprintNameInput.inputField.onValueChanged.AddListener(OnBlueprintNameInputChanged); - overlay.infoPanel.saveButton.onClick.AddListener(OnBlueprintSave); - - editorGrid.blueprintLayer.onBlueprintChanged.AddListener(OnBlueprintChanged); - - stopwatch.onTime.AddListener(OnBlueprintGridValidationRequested); - - SetGridBackground(); - } - - private void OnEnable() { - ResetState(); - - overlay.gameObject.SetActive(true); - gameControls.Enable(); - } - - private void OnDisable() { - overlay.gameObject.SetActive(false); - gameControls.Disable(); - } - - private void Update() { - if (leftButtonPressed) { - editorGrid.OnLeftClickPressed(); - return; - } - - if (rightButtonPressed) { - editorGrid.OnRightClickPressed(); - return; - } - } - - public void Import(BlueprintContainer blueprintContainer, Action saveCallback) { - this.container = blueprintContainer; - this.saveCallback = saveCallback; - this.gridValidator = new BlueprintGridValidator(); - this.nameValidator = new BlueprintNameValidator(); - - var newBlueprint = blueprintContainer.Data.Clone(); - editorGrid.Import(newBlueprint); - - ValidateName(newBlueprint.name); - - overlay.infoPanel.blueprintNameInput.SetValue(newBlueprint.name, false); - } - - public void ExportToClipboard() { - var json = IOUtils.JsonSerializeWithSettings(editorGrid.blueprintLayer.ActiveBlueprint); - GUIUtility.systemCopyBuffer = json; - } - - private void SetGridBackground() { - var screenHeightInUnits = Camera.main.orthographicSize * 2; - var screenWidthInUnits = screenHeightInUnits * Screen.width / Screen.height; - editorGridBackground.transform.localScale = new Vector3(screenWidthInUnits, screenHeightInUnits); - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/ShipEditorNavigateable.cs b/Assets/Project/Source/ShipEditor/ShipEditorNavigateable.cs deleted file mode 100644 index c4639c89..00000000 --- a/Assets/Project/Source/ShipEditor/ShipEditorNavigateable.cs +++ /dev/null @@ -1,29 +0,0 @@ -using Exa.UI.Components; -using UnityEngine; - -#pragma warning disable CS0649 - -namespace Exa.ShipEditor -{ - [RequireComponent(typeof(ShipEditor))] - public class ShipEditorNavigateable : ReturnNavigateable - { - [SerializeField] private ShipEditor shipEditor; - - protected override void Return(bool force = false) { - if (!Interactable) return; - - if (!shipEditor.IsSaved) { - Systems.UI.promptController.PromptYesNo("Are you sure you want to exit without saving?", shipEditor, - yes => { - if (yes) { - base.Return(true); - } - }); - } - else { - base.Return(); - } - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/ShipEditorOverlay/BlockTemplateView.cs b/Assets/Project/Source/ShipEditor/ShipEditorOverlay/BlockTemplateView.cs deleted file mode 100644 index 06b24711..00000000 --- a/Assets/Project/Source/ShipEditor/ShipEditorOverlay/BlockTemplateView.cs +++ /dev/null @@ -1,44 +0,0 @@ -using Exa.Bindings; -using Exa.Data; -using Exa.Grids.Blocks; -using Exa.UI; -using Exa.UI.Components; -using UnityEngine; -using UnityEngine.UI; - -#pragma warning disable CS0649 - -namespace Exa.ShipEditor -{ - public class BlockTemplateView : MonoBehaviour, IObserver - { - [Header("References")] - public Button button; - [SerializeField] private Text blockSizeText; - [SerializeField] private Image image; - [SerializeField] private Border activeBorder; - [SerializeField] private Hoverable hoverable; - - [Header("Settings")] - [SerializeField] private ActivePair backgroundColors; - - private BlockTemplate data; - - public bool Selected { - set => activeBorder.SetVisibility(value); - } - - private void Awake() { - hoverable.onPointerEnter.AddListener(() => { - Systems.UI.tooltips.blockTemplateTooltip.Show(BlockContext.DefaultGroup, data); - }); - hoverable.onPointerExit.AddListener(() => { Systems.UI.tooltips.blockTemplateTooltip.Hide(); }); - } - - public void OnUpdate(BlockTemplate data) { - this.data = data; - image.sprite = data.thumbnail; - blockSizeText.text = $"{data.size.x}x{data.size.y}"; - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/ShipEditorOverlay/GridTotalsView.cs b/Assets/Project/Source/ShipEditor/ShipEditorOverlay/GridTotalsView.cs deleted file mode 100644 index 2e6ba347..00000000 --- a/Assets/Project/Source/ShipEditor/ShipEditorOverlay/GridTotalsView.cs +++ /dev/null @@ -1,29 +0,0 @@ -using Exa.Grids; -using Exa.UI.Tooltips; -using UnityEngine; - -#pragma warning disable CS0649 - -namespace Exa.ShipEditor -{ - public class GridTotalsView : MonoBehaviour - { - [Header("References")] - [SerializeField] private PropertyView massView; - [SerializeField] private PropertyView hullView; - [SerializeField] private PropertyView energyView; - [SerializeField] private PropertyView turningPower; - - public void Update() { - var totals = Systems.Editor.editorGrid.blueprintLayer.ActiveBlueprint.Blocks.Totals; - Render(totals); - } - - private void Render(GridTotals totals) { - massView.SetValue($"{totals.Mass:0} Tonne"); - hullView.SetValue($"{totals.Hull:0}"); - energyView.SetValue($"{totals.PowerGenerationModifier:0}"); - turningPower.SetValue($"{totals.TurningPowerModifier:0}"); - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/ShipEditorOverlay/ShipEditorOverlayInfoPanel.cs b/Assets/Project/Source/ShipEditor/ShipEditorOverlay/ShipEditorOverlayInfoPanel.cs deleted file mode 100644 index bb23f6f4..00000000 --- a/Assets/Project/Source/ShipEditor/ShipEditorOverlay/ShipEditorOverlayInfoPanel.cs +++ /dev/null @@ -1,19 +0,0 @@ -using Exa.UI.Controls; -using Exa.UI.Tooltips; -using UnityEngine; -using UnityEngine.UI; - -namespace Exa.ShipEditor -{ - public class ShipEditorOverlayInfoPanel : MonoBehaviour - { - public Button clearButton; - public TextTooltipTrigger saveButtonTooltipTrigger; - public Button saveButton; - public Button exportButton; - public InputFieldControl blueprintNameInput; - public BlueprintErrorListController errorListController; - public CanvasGroup saveButtonCanvasGroup; - public GridTotalsView gridTotalsView; - } -} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/ShipEditorOverlay/ShipEditorOverlayInventory.cs b/Assets/Project/Source/ShipEditor/ShipEditorOverlay/ShipEditorOverlayInventory.cs deleted file mode 100644 index d0941e63..00000000 --- a/Assets/Project/Source/ShipEditor/ShipEditorOverlay/ShipEditorOverlayInventory.cs +++ /dev/null @@ -1,55 +0,0 @@ -using Exa.Bindings; -using Exa.Grids.Blocks; -using Exa.UI.Components; -using System.Collections.Generic; -using UnityEngine; -using UnityEngine.Events; - -#pragma warning disable CS0649 - -namespace Exa.ShipEditor -{ - public class BlockSelectedEvent : UnityEvent - { } - - public class ShipEditorOverlayInventory : ViewController - { - public BlockSelectedEvent blockSelected = new BlockSelectedEvent(); - - [SerializeField] private GameObject expandableItemPrefab; - - private readonly Dictionary blockCategories = - new Dictionary(); - - private BlockTemplateView activeView; - - private void Start() { - Source = Systems.Blocks.availableBlockTemplates; - } - - public override void OnAdd(BlockTemplateContainer value) { - var category = value.Data.category; - var categoryString = value.Data.category.ToString(); - - if (!blockCategories.ContainsKey(category)) { - var newExpandableItemObject = Instantiate(expandableItemPrefab, viewContainer); - var newExpandableItem = newExpandableItemObject.GetComponent(); - newExpandableItem.HeaderText = categoryString; - blockCategories[category] = newExpandableItem; - } - - var categoryItem = blockCategories[category]; - var view = base.OnAdd(value, categoryItem.content); - - view.button.onClick.AddListener(() => { - if (activeView != null) - activeView.Selected = false; - - activeView = view; - activeView.Selected = true; - - blockSelected?.Invoke(value.Data); - }); - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/ShipEditorStopwatch.cs b/Assets/Project/Source/ShipEditor/ShipEditorStopwatch.cs deleted file mode 100644 index 132ad6bb..00000000 --- a/Assets/Project/Source/ShipEditor/ShipEditorStopwatch.cs +++ /dev/null @@ -1,40 +0,0 @@ -using UnityEngine; -using UnityEngine.Events; - -#pragma warning disable CS0649 - -namespace Exa.ShipEditor -{ - public class ShipEditorStopwatch : MonoBehaviour - { - public UnityEvent onTime; - - [SerializeField] private float invokeOnTime; - private float timeElapsedFromLastEdit = 0f; - private bool invokedOnTime = false; - - public void OnEnable() { - timeElapsedFromLastEdit = 0f; - invokedOnTime = false; - } - - public void Reset() { - timeElapsedFromLastEdit = 0f; - invokedOnTime = false; - } - - public void EmulateInvoke() { - invokedOnTime = true; - onTime?.Invoke(); - } - - public void Update() { - if (timeElapsedFromLastEdit > invokeOnTime && !invokedOnTime) { - invokedOnTime = true; - onTime?.Invoke(); - } - - timeElapsedFromLastEdit += Time.deltaTime; - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/ShipEditorUtils.cs b/Assets/Project/Source/ShipEditor/ShipEditorUtils.cs deleted file mode 100644 index 26284b67..00000000 --- a/Assets/Project/Source/ShipEditor/ShipEditorUtils.cs +++ /dev/null @@ -1,46 +0,0 @@ -using Exa.Grids.Blueprints; -using Exa.Math; -using System; -using System.Collections.Generic; -using UnityEngine; - -namespace Exa.ShipEditor -{ - public static class ShipEditorUtils - { - public static IEnumerable GetOccupiedTilesByGhost(BlockGhost blockGhost) { - return GetOccupiedTilesByAnchor(blockGhost.AnchoredBlueprintBlock); - } - - public static IEnumerable GetOccupiedTilesByAnchor(AnchoredBlueprintBlock anchoredBlueprintBlock) { - var block = anchoredBlueprintBlock.BlueprintBlock; - var gridAnchor = anchoredBlueprintBlock.GridAnchor; - return GetOccupiedTilesByAnchor(block, gridAnchor); - } - - public static IEnumerable GetOccupiedTilesByAnchor(BlueprintBlock block, Vector2Int gridAnchor) { - var area = block.Template.size.Rotate(block.Rotation); - - if (block.flippedX) area.x = -area.x; - if (block.flippedY) area.y = -area.y; - - return MathUtils.EnumerateVectors(area, gridAnchor); - } - - public static Vector2Int GetMirroredGridPos(Vector2Int size, Vector2Int gridPos) { - return new Vector2Int { - x = gridPos.x, - y = size.y - 1 - gridPos.y - }; - } - - public static void ConditionallyApplyToMirror(Vector2Int? gridPos, Vector2Int size, Action action) { - if (gridPos == null) return; - - var realGridPos = gridPos.GetValueOrDefault(); - var mirroredGridPos = GetMirroredGridPos(size, realGridPos); - if (realGridPos == mirroredGridPos) return; - action(mirroredGridPos); - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/ShipEditorUtils.cs.meta b/Assets/Project/Source/ShipEditor/ShipEditorUtils.cs.meta deleted file mode 100644 index 809e3dc9..00000000 --- a/Assets/Project/Source/ShipEditor/ShipEditorUtils.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: db179cbc1f57ede4c8d8c97feef730ae -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/ShipEditor/Validation/BlueprintGridValidationArgs.cs b/Assets/Project/Source/ShipEditor/Validation/BlueprintGridValidationArgs.cs deleted file mode 100644 index 9a9374f6..00000000 --- a/Assets/Project/Source/ShipEditor/Validation/BlueprintGridValidationArgs.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Exa.Grids.Blueprints; - -namespace Exa.ShipEditor -{ - public class BlueprintGridValidationArgs - { - public BlueprintBlocks blueprintBlocks; - } -} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/Validation/BlueprintGridValidator.cs b/Assets/Project/Source/ShipEditor/Validation/BlueprintGridValidator.cs deleted file mode 100644 index bfab9359..00000000 --- a/Assets/Project/Source/ShipEditor/Validation/BlueprintGridValidator.cs +++ /dev/null @@ -1,51 +0,0 @@ -using Exa.Grids.Blocks; -using Exa.Grids.Blueprints; -using Exa.Utils; -using Exa.Validation; -using System.Collections.Generic; -using System.Linq; -using UnityEngine; - -namespace Exa.ShipEditor -{ - public class BlueprintGridValidator : Validator - { - protected override void AddErrors(ValidationResult errors, BlueprintGridValidationArgs args) { - var blocks = args.blueprintBlocks; - - var controllers = blocks - .Where(block => block.BlueprintBlock.Template.category.Is(BlockCategory.Controller)); - - var controllerCount = controllers.Count(); - - if (controllerCount > 1) { - errors.Throw("Cannot have multiple controllers"); - } - else if (controllerCount == 0) { - errors.Throw("Must have at least one controller"); - } - - if (blocks.Any(block => blocks.GetNeighbourCount(block) == 0)) { - errors.Throw("Blueprint has disconnected blocks"); - } - } - - public bool BlueprintBlocksAreConnected(Vector2Int startingPoint, BlueprintBlocks blocks) { - var visited = new HashSet(); - - void FloodFill(Vector2Int gridPos) { - if (blocks.ContainsMember(gridPos) && !visited.Contains(gridPos)) { - visited.Add(gridPos); - FloodFill(new Vector2Int(gridPos.x - 1, gridPos.y)); - FloodFill(new Vector2Int(gridPos.x + 1, gridPos.y)); - FloodFill(new Vector2Int(gridPos.x, gridPos.y - 1)); - FloodFill(new Vector2Int(gridPos.x, gridPos.y + 1)); - } - } - - FloodFill(startingPoint); - - return blocks.GetOccupiedTileCount() == visited.Count; - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/Validation/BlueprintNameValidationArgs.cs b/Assets/Project/Source/ShipEditor/Validation/BlueprintNameValidationArgs.cs deleted file mode 100644 index f58326c9..00000000 --- a/Assets/Project/Source/ShipEditor/Validation/BlueprintNameValidationArgs.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Exa.Grids.Blueprints; - -namespace Exa.ShipEditor -{ - public class BlueprintNameValidationArgs - { - public BlueprintContainerCollection collectionContext; - public BlueprintContainer blueprintContainer; - public string requestedName; - } -} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/Validation/BlueprintNameValidator.cs b/Assets/Project/Source/ShipEditor/Validation/BlueprintNameValidator.cs deleted file mode 100644 index 637c6cb1..00000000 --- a/Assets/Project/Source/ShipEditor/Validation/BlueprintNameValidator.cs +++ /dev/null @@ -1,29 +0,0 @@ -using Exa.Grids.Blueprints; -using Exa.Validation; -using System.Linq; - -namespace Exa.ShipEditor -{ - public class BlueprintNameValidator : Validator - { - protected override void AddErrors(ValidationResult errors, BlueprintNameValidationArgs args) { - // Check if there is any blueprint in the collection that contains the same name as the requested name - errors.Assert( - $"Blueprint name is already used", - !args.collectionContext.Any(blueprintContainer => - blueprintContainer.Data.name == args.requestedName && - blueprintContainer != args.blueprintContainer) - ); - - // Check if the name isn't empty - errors.Assert( - $"Blueprint name is empty", - args.requestedName != ""); - - // Check if the requested name is the default name - errors.Assert( - "Blueprint name cannot be default", - args.requestedName != Blueprint.DEFAULT_BLUEPRINT_NAME); - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/Validation/Errors/BlueprintNameDefaultError.cs b/Assets/Project/Source/ShipEditor/Validation/Errors/BlueprintNameDefaultError.cs deleted file mode 100644 index 1dfb9924..00000000 --- a/Assets/Project/Source/ShipEditor/Validation/Errors/BlueprintNameDefaultError.cs +++ /dev/null @@ -1,7 +0,0 @@ -using Exa.Validation; - -namespace Exa.ShipEditor -{ - public class BlueprintNameDefaultError : ValidationError - { } -} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/Validation/Errors/BlueprintNameDuplicateError.cs b/Assets/Project/Source/ShipEditor/Validation/Errors/BlueprintNameDuplicateError.cs deleted file mode 100644 index 610cb3b8..00000000 --- a/Assets/Project/Source/ShipEditor/Validation/Errors/BlueprintNameDuplicateError.cs +++ /dev/null @@ -1,7 +0,0 @@ -using Exa.Validation; - -namespace Exa.ShipEditor -{ - public class BlueprintNameDuplicateError : ValidationError - { } -} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/Validation/Errors/BlueprintNameEmptyError.cs b/Assets/Project/Source/ShipEditor/Validation/Errors/BlueprintNameEmptyError.cs deleted file mode 100644 index 73b641f2..00000000 --- a/Assets/Project/Source/ShipEditor/Validation/Errors/BlueprintNameEmptyError.cs +++ /dev/null @@ -1,7 +0,0 @@ -using Exa.Validation; - -namespace Exa.ShipEditor -{ - public class BlueprintNameEmptyError : ValidationError - { } -} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/Validation/Errors/ControllerError.cs b/Assets/Project/Source/ShipEditor/Validation/Errors/ControllerError.cs deleted file mode 100644 index 0bd11083..00000000 --- a/Assets/Project/Source/ShipEditor/Validation/Errors/ControllerError.cs +++ /dev/null @@ -1,7 +0,0 @@ -using Exa.Validation; - -namespace Exa.ShipEditor -{ - public class ControllerError : ValidationError - { } -} \ No newline at end of file diff --git a/Assets/Project/Source/ShipEditor/Validation/Errors/DisconnectedBlocksError.cs b/Assets/Project/Source/ShipEditor/Validation/Errors/DisconnectedBlocksError.cs deleted file mode 100644 index ccc61b8a..00000000 --- a/Assets/Project/Source/ShipEditor/Validation/Errors/DisconnectedBlocksError.cs +++ /dev/null @@ -1,7 +0,0 @@ -using Exa.Validation; - -namespace Exa.ShipEditor -{ - public class DisconnectedBlocksError : ValidationError - { } -} \ No newline at end of file diff --git a/Assets/Project/Source/Ships/Actions/ActionScheduler.cs b/Assets/Project/Source/Ships/Actions/ActionScheduler.cs index 1609abef..bebac779 100644 --- a/Assets/Project/Source/Ships/Actions/ActionScheduler.cs +++ b/Assets/Project/Source/Ships/Actions/ActionScheduler.cs @@ -2,21 +2,19 @@ using System.Linq; using UnityEngine; -namespace Exa.Ships -{ - public class ActionScheduler - { - private readonly Ship ship; - private readonly List shipActions = new List(); +namespace Exa.Ships { + public class ActionScheduler { private readonly float generation; - private float stored; + private readonly GridInstance gridInstance; + private readonly List shipActions = new List(); private readonly float storage; + private float stored; - public ActionScheduler(Ship ship) { - this.ship = ship; - this.generation = 50f; - this.stored = 500f; - this.storage = 500f; + public ActionScheduler(GridInstance gridInstance) { + this.gridInstance = gridInstance; + generation = 50f; + stored = 500f; + storage = 500f; } public void Add(ShipAction shipAction) { @@ -52,11 +50,11 @@ public void ExecuteActions(float deltaTime) { stored = storage; } - ship.Overlay.overlayEnergyBar.SetFill(stored / storage); + gridInstance.Overlay.SetEnergyFill(stored, storage); } /// - /// Tries to take a given amount of energy + /// Tries to take a given amount of energy /// /// /// The amount of energy taken @@ -66,15 +64,16 @@ private float TryTake(float energy) { private IEnumerable SortActions(float deltaTime) { return shipActions - .Select(action => new ActionCache { - consumption = action.CalculateConsumption(deltaTime), - action = action - }) + .Select( + action => new ActionCache { + consumption = action.CalculateConsumption(deltaTime), + action = action + } + ) .OrderBy(actionCache => actionCache.consumption); } - private struct ActionCache - { + private struct ActionCache { public float consumption; public ShipAction action; } diff --git a/Assets/Project/Source/Ships/Actions/ShipAction.cs b/Assets/Project/Source/Ships/Actions/ShipAction.cs index 17a7f977..a558e637 100644 --- a/Assets/Project/Source/Ships/Actions/ShipAction.cs +++ b/Assets/Project/Source/Ships/Actions/ShipAction.cs @@ -1,24 +1,22 @@ -namespace Exa.Ships -{ +namespace Exa.Ships { /// - /// Base class for actions a grid can make that use energy + /// Base class for actions a grid can make that use energy /// - public abstract class ShipAction - { - protected Ship ship; + public abstract class ShipAction { + protected GridInstance gridInstance; - protected ShipAction(Ship ship) { - this.ship = ship; + protected ShipAction(GridInstance gridInstance) { + this.gridInstance = gridInstance; } public abstract float CalculateConsumption(float deltaTime); /// - /// Execute the action with the given energy coefficient + /// Execute the action with the given energy coefficient /// /// - /// 0-1 based float that determines how much energy the action can use. - /// 1 being fully powered, while 0 essentially not doing anything + /// 0-1 based float that determines how much energy the action can use. + /// 1 being fully powered, while 0 essentially not doing anything /// public abstract void Update(float energyCoefficient, float deltaTime); } diff --git a/Assets/Project/Source/Ships/CentreOfMassCache.cs b/Assets/Project/Source/Ships/CentreOfMassCache.cs index 697e4620..b37a1379 100644 --- a/Assets/Project/Source/Ships/CentreOfMassCache.cs +++ b/Assets/Project/Source/Ships/CentreOfMassCache.cs @@ -2,12 +2,10 @@ using System.Text; using UnityEngine; -namespace Exa.Ships -{ - public partial class CentreOfMassCache : Dictionary - { - private Vector2 vectoredTotal = new Vector2(); - private float totalMass = 0f; +namespace Exa.Ships { + public class CentreOfMassCache : Dictionary { + private float totalMass; + private Vector2 vectoredTotal; public new void Add(Vector2 position, float mass) { base.Add(position, mass); @@ -31,6 +29,7 @@ public Vector2 GetCentreOfMass() { public override string ToString() { var sb = new StringBuilder(); sb.Append($"Centre of mass: {GetCentreOfMass()}"); + return sb.ToString(); } } diff --git a/Assets/Project/Source/Ships/Collision.meta b/Assets/Project/Source/Ships/Collision.meta deleted file mode 100644 index 8d67495e..00000000 --- a/Assets/Project/Source/Ships/Collision.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: ab753f17c9e47cf489405263e4140333 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/Ships/ContextMask.cs b/Assets/Project/Source/Ships/ContextMask.cs new file mode 100644 index 00000000..0c16d32f --- /dev/null +++ b/Assets/Project/Source/Ships/ContextMask.cs @@ -0,0 +1,33 @@ +using Exa.Grids.Blocks; +using Exa.Utils; +using UnityEngine; + +namespace Exa.Ships { + public readonly struct ContextMask { + public LayerMask LayerMask { get; } + public BlockContext BlockContextMask { get; } + + internal ContextMask(BlockContext blockContextMask, LayerMask layerMask) { + LayerMask = layerMask; + BlockContextMask = blockContextMask; + } + + public bool HasValue(BlockContext context) { + return BlockContextMask.HasValue(context); + } + + public static implicit operator LayerMask(ContextMask mask) { + return mask.LayerMask; + } + } + + public static class ContextMaskUtils { + public static ContextMask GetShipMask(this BlockContext context) { + return new ContextMask(context, LayerMask.GetMask("unit")); + } + + public static ContextMask GetBlockMask(this BlockContext context) { + return new ContextMask(context, LayerMask.GetMask("blocks")); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Ships/ShipMask.cs.meta b/Assets/Project/Source/Ships/ContextMask.cs.meta similarity index 100% rename from Assets/Project/Source/Ships/ShipMask.cs.meta rename to Assets/Project/Source/Ships/ContextMask.cs.meta diff --git a/Assets/Project/Source/Ships/EnemyGrid.cs b/Assets/Project/Source/Ships/EnemyGrid.cs new file mode 100644 index 00000000..5a8b6d6c --- /dev/null +++ b/Assets/Project/Source/Ships/EnemyGrid.cs @@ -0,0 +1,56 @@ +using Exa.Debugging; +using Exa.Gameplay; +using Exa.Grids; +using Exa.Grids.Blocks; +using Exa.Grids.Blueprints; +using Exa.Math; +using Exa.Project.Source.UI.Gameplay; +using Exa.Ships.Navigation; +using UnityEngine; + +namespace Exa.Ships { + public class EnemyGrid : GridInstance, IDebugDragable, IEnemyWarningCircleSource { + [SerializeField] private NavigationOptions navigationOptions; + public INavigation Navigation { get; private set; } + + public Vector2 GetDebugDraggerPosition() { + return transform.position; + } + + public void SetDebugDraggerGlobals(Vector2 position, Vector2 velocity) { + transform.position = position; + Rigidbody2D.velocity = velocity; + } + + public override void Import(Blueprint blueprint, BlockContext blockContext, GridInstanceConfiguration configuration) { + Navigation = navigationOptions.GetNavigation(this, blueprint); + base.Import(blueprint, blockContext, configuration); + Overlay = GS.ShipFactory.CreateOverlay(this); + } + + protected override void ActiveFixedUpdate(float fixedDeltaTime) { + Navigation?.Update(fixedDeltaTime); + base.ActiveFixedUpdate(fixedDeltaTime); + } + + public override ShipSelection GetAppropriateSelection(Formation formation) { + return new EnemyShipSelection(formation); + } + + public override bool MatchesSelection(ShipSelection selection) { + return selection is EnemyShipSelection; + } + + float IEnemyWarningCircleSource.GetSize() { + return BlockGrid.MaxSize; + } + + public override Vector2 GetPosition() { + return Rigidbody2D.worldCenterOfMass; + } + + public override void SetPosition(Vector2 position) { + transform.position = position - Rigidbody2D.centerOfMass.Rotate(-Rigidbody2D.rotation); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Ships/EnemyShip.cs.meta b/Assets/Project/Source/Ships/EnemyGrid.cs.meta similarity index 100% rename from Assets/Project/Source/Ships/EnemyShip.cs.meta rename to Assets/Project/Source/Ships/EnemyGrid.cs.meta diff --git a/Assets/Project/Source/Ships/EnemyShip.cs b/Assets/Project/Source/Ships/EnemyShip.cs deleted file mode 100644 index 2cec7bed..00000000 --- a/Assets/Project/Source/Ships/EnemyShip.cs +++ /dev/null @@ -1,15 +0,0 @@ -using Exa.Gameplay; - -namespace Exa.Ships -{ - public class EnemyShip : Ship - { - public override ShipSelection GetAppropriateSelection(Formation formation) { - return new EnemyShipSelection(formation); - } - - public override bool MatchesSelection(ShipSelection selection) { - return selection is EnemyShipSelection; - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Ships/Fleet.cs b/Assets/Project/Source/Ships/Fleet.cs index 326fffeb..2d709cab 100644 --- a/Assets/Project/Source/Ships/Fleet.cs +++ b/Assets/Project/Source/Ships/Fleet.cs @@ -4,10 +4,8 @@ #pragma warning disable CS0649 -namespace Exa.Ships -{ - public class Fleet : IEnumerable - { +namespace Exa.Ships { + public class Fleet : IEnumerable { public BlueprintContainer mothership; public List units; @@ -18,8 +16,10 @@ public Fleet(int unitCapacity) { public IEnumerator GetEnumerator() { yield return mothership; - foreach (var unit in units) + + foreach (var unit in units) { yield return unit; + } } IEnumerator IEnumerable.GetEnumerator() { diff --git a/Assets/Project/Source/Ships/FriendlyShip.cs b/Assets/Project/Source/Ships/FriendlyShip.cs deleted file mode 100644 index b771bf1d..00000000 --- a/Assets/Project/Source/Ships/FriendlyShip.cs +++ /dev/null @@ -1,15 +0,0 @@ -using Exa.Gameplay; - -namespace Exa.Ships -{ - public class FriendlyShip : Ship - { - public override ShipSelection GetAppropriateSelection(Formation formation) { - return new FriendlyShipSelection(formation); - } - - public override bool MatchesSelection(ShipSelection selection) { - return selection is FriendlyShipSelection; - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Ships/FriendlyShip.cs.meta b/Assets/Project/Source/Ships/FriendlyShip.cs.meta deleted file mode 100644 index f206f940..00000000 --- a/Assets/Project/Source/Ships/FriendlyShip.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: bf71f9f56937da64baeef246f47c24f2 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/Ships/GridInstance.cs b/Assets/Project/Source/Ships/GridInstance.cs new file mode 100644 index 00000000..f5443fb3 --- /dev/null +++ b/Assets/Project/Source/Ships/GridInstance.cs @@ -0,0 +1,294 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Exa.AI; +using Exa.Debugging; +using Exa.Gameplay; +using Exa.Grids; +using Exa.Grids.Blocks; +using Exa.Grids.Blocks.BlockTypes; +using Exa.Grids.Blocks.Components; +using Exa.Grids.Blueprints; +using Exa.Math; +using Exa.Ships.Rotation; +using Exa.Types.Generics; +using Exa.UI; +using Exa.UI.Cursor; +using Exa.UI.Tooltips; +using UnityEngine; +using UnityEngine.Serialization; + +#pragma warning disable CS0649 + +namespace Exa.Ships { + public abstract class GridInstance : MonoBehaviour, IRaycastTarget, ITooltipPresenter, IGridInstance { + [Header("References")] + [SerializeField] private GridAi gridAi; + [SerializeField] private Rigidbody2D rb; + [SerializeField] private CircleCollider2D mouseOverCollider; + [SerializeField] protected RotationController rotationController; + + [Header("Settings")] + [SerializeField] private ValueOverride cursorOverride; + [FormerlySerializedAs("shipDebugFont")] public Font debugFont; + + private Tooltip debugTooltip; + private Controller controller; + + public ActionScheduler ActionScheduler { get; private set; } + public Blueprint Blueprint { get; private set; } + + public Controller Controller { + get => controller; + set { + if (value != null && controller != null) { + throw new InvalidOperationException( + "Cannot overwrite the controller by another one before explicitly setting the value as null." + + "This exception is probably caused by multiple controllers being set on a grid" + ); + } + + controller = value; + } + } + + public BlockGridDiff Diff { get; protected set; } + public bool Active { get; private set; } + public IGridOverlay Overlay { get; set; } + public float HullIntegrity { get; set; } + public BlockContext BlockContext { get; private set; } + public GridInstanceConfiguration Configuration { get; private set; } + public SupportDroneOrchestrator SupportDroneOrchestrator { get; protected set; } + public BlockGrid BlockGrid { get; private set; } + + public Transform Transform { + get => transform; + } + + public Rigidbody2D Rigidbody2D { + get => rb; + } + + public GridAi Ai { + get => gridAi; + } + + public RotationController RotationController { + get => rotationController; + } + + protected virtual void Awake() { + debugTooltip = new Tooltip(GetDebugTooltipComponents, debugFont); + } + + private void Update() { + var currentHull = BlockGrid.GetTotals().Hull; + var totalHull = Blueprint.Grid.GetTotals(BlockContext).Hull; + HullIntegrity = currentHull / totalHull; + + if (Active) { + Overlay.SetHullFill(currentHull, totalHull); + + SupportDroneOrchestrator?.Update(); + } + } + + private void FixedUpdate() { + if (Active) { + ActiveFixedUpdate(Time.fixedDeltaTime); + } + + mouseOverCollider.offset = rb.centerOfMass; + + if (debugTooltip != null) { + debugTooltip.ShouldRefresh = true; + } + } + + public virtual void OnRaycastEnter() { + if (!Active) { + return; + } + + EnterRaycast(); + } + + public virtual void OnRaycastExit() { + if (!Active) { + return; + } + + ExitRaycast(); + } + + public Tooltip GetTooltip() { + return debugTooltip; + } + + public event Action ControllerDestroyed; + + protected virtual void ActiveFixedUpdate(float fixedDeltaTime) { + ActionScheduler.ExecuteActions(fixedDeltaTime); + } + + // TODO: Make this look nicer by breaking up the ship and adding an explosion + public virtual void OnControllerDestroyed() { + foreach (var thruster in BlockGrid.QueryLike()) { + thruster.PowerDown(); + } + + ControllerDestroyed?.Invoke(); + Active = false; + + ExitRaycast(); + } + + public GridTotals GridTotals() { + return BlockGrid.GetTotals(); + } + + public GridTotals BlueprintTotals() { + return Blueprint.Grid.GetTotals(BlockContext); + } + + public virtual void Import(Blueprint blueprint, BlockContext blockContext, GridInstanceConfiguration configuration) { + BlockGrid = new BlockGrid(this); + + GridTotals().UnscaledTorqueChanged += rotationController.SetMaxTorque; + rotationController.SetMaxTorque(GridTotals().UnscaledTorque); + + Configuration = configuration; + ActionScheduler = new ActionScheduler(this); + Active = true; + BlockContext = blockContext; + + var radius = blueprint.Grid.MaxSize / 2f; + mouseOverCollider.radius = radius; + BlockGrid.Import(blueprint); + Blueprint = blueprint; + + gridAi.Init(); + } + + public virtual void SetBlueprint(Blueprint blueprint) { + Blueprint = blueprint; + } + + public string GetInstanceString() { + return $"({GetType().Name}) {Blueprint.name} : {gameObject.GetInstanceID()}"; + } + + private void EnterRaycast() { + (Overlay as GridOverlay)?.SetHovered(true); + S.UI.MouseCursor.stateManager.Add(cursorOverride); + + if (DebugMode.Ships.IsEnabled()) { + S.UI.Tooltips.shipAIDebugTooltip.Show(this); + } + } + + private void ExitRaycast() { + (Overlay as GridOverlay)?.SetHovered(false); + S.UI.MouseCursor.stateManager.Remove(cursorOverride); + + if (DebugMode.Ships.IsEnabled()) { + S.UI.Tooltips.shipAIDebugTooltip.Hide(); + } + } + + // TODO: Somehow cache this, or let the results come from a central manager + public IEnumerable QueryNeighbours(float radius, ContextMask contextMask, bool mustBeActive = false) { + var colliders = Physics2D.OverlapCircleAll(transform.position, radius, contextMask.LayerMask); + + foreach (var collider in colliders) { + var neighbour = collider.gameObject.GetComponent(); + + if (neighbour == null) { + continue; + } + + var passesContextMask = contextMask.HasValue(neighbour.BlockContext); + + if (!ReferenceEquals(neighbour, this) && passesContextMask) { + if (mustBeActive && !neighbour.Active) { + continue; + } + + yield return neighbour; + } + } + } + + public abstract ShipSelection GetAppropriateSelection(Formation formation); + + public abstract bool MatchesSelection(ShipSelection selection); + + public abstract Vector2 GetPosition(); + + public abstract void SetPosition(Vector2 position); + + protected virtual TooltipGroup GetDebugTooltipComponents() { + return new TooltipGroup( + 1, + new TooltipTitle(GetInstanceString(), false), + new TooltipSpacer(), + new TooltipText("Blueprint:"), + new TooltipGroup(Blueprint.GetDebugTooltipComponents(), 1), + new TooltipSpacer(), + new TooltipText("BlockGrid:"), + new TooltipGroup(BlockGrid.GetDebugTooltipComponents(), 1), + new TooltipSpacer(), + new TooltipText("State:"), + new TooltipGroup( + 1, + new TooltipText($"HullIntegrity: {HullIntegrity}") + ), + new TooltipSpacer(), + new TooltipText("State:"), + new TooltipGroup( + 1, + new TooltipText($"Rotation: {rb.rotation}"), + new TooltipText($"Clamped Rotation: {MathUtils.NormalizeAngle360(rb.rotation)}") + ), + new TooltipSpacer(), + new TooltipText("AI:"), + new TooltipGroup(gridAi.GetDebugTooltipComponents(), 1) + ); + } + + public void SetLookAt(Vector2 globalLookAt) { + Rigidbody2D.rotation = (globalLookAt - GetPosition()).GetAngle(); + } + + public void SetRotation(float angle) { + Rigidbody2D.rotation = angle; + } + + public void Rotate(float degrees) { + Rigidbody2D.rotation += degrees; + } + + public void Repair() { + foreach (var physicalBehaviour in BlockGrid.QueryLike()) { + physicalBehaviour.Repair(); + } + } + + public void ReconcileWithDiff() { + var pendingAdd = Diff.PendingAdd.ToList(); + var pendingRemove = Diff.PendingRemove.ToList(); + + try { + foreach (var block in pendingRemove) { + BlockGrid.GetMember(block.GridAnchor).DestroyBlock(); + } + + foreach (var block in pendingAdd) { + BlockGrid.Place(Blueprint[block.GridAnchor]); + } + } catch (Exception e) { + Debug.LogError(e); + } + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Ships/Ship.cs.meta b/Assets/Project/Source/Ships/GridInstance.cs.meta similarity index 100% rename from Assets/Project/Source/Ships/Ship.cs.meta rename to Assets/Project/Source/Ships/GridInstance.cs.meta diff --git a/Assets/Project/Source/Ships/GridOverlay.cs b/Assets/Project/Source/Ships/GridOverlay.cs new file mode 100644 index 00000000..3bf30ac3 --- /dev/null +++ b/Assets/Project/Source/Ships/GridOverlay.cs @@ -0,0 +1,37 @@ +using UnityEngine; + +namespace Exa.Ships { + public class GridOverlay : MonoBehaviour, IGridOverlay { + [SerializeField] private RectTransform rectContainer; + [SerializeField] private ShipOverlayHullBar overlayHullBar; + [SerializeField] private ShipOverlayEnergyBar overlayEnergyBar; + [SerializeField] private ShipOverlayCircle overlayCircle; + private GridInstance gridInstance; + + public void Update() { + transform.position = gridInstance.GetPosition(); + } + + public void SetEnergyFill(float current, float max) { + overlayEnergyBar.SetFill(current / max); + } + + public void SetHullFill(float current, float max) { + overlayHullBar.SetFill(current / max); + } + + public void SetGrid(GridInstance instance) { + gridInstance = instance; + var size = instance.Blueprint.Grid.MaxSize * 10; + rectContainer.sizeDelta = new Vector2(size, size); + } + + public void SetSelected(bool value) { + overlayCircle.IsSelected = value; + } + + public void SetHovered(bool value) { + overlayCircle.IsHovered = value; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Ships/ShipOverlay.cs.meta b/Assets/Project/Source/Ships/GridOverlay.cs.meta similarity index 100% rename from Assets/Project/Source/Ships/ShipOverlay.cs.meta rename to Assets/Project/Source/Ships/GridOverlay.cs.meta diff --git a/Assets/Project/Source/Ships/IGridOverlay.cs b/Assets/Project/Source/Ships/IGridOverlay.cs new file mode 100644 index 00000000..7017fe21 --- /dev/null +++ b/Assets/Project/Source/Ships/IGridOverlay.cs @@ -0,0 +1,7 @@ +namespace Exa.Ships { + public interface IGridOverlay { + public void SetEnergyFill(float current, float max); + + public void SetHullFill(float current, float max); + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Ships/IGridOverlay.cs.meta b/Assets/Project/Source/Ships/IGridOverlay.cs.meta new file mode 100644 index 00000000..83d37c55 --- /dev/null +++ b/Assets/Project/Source/Ships/IGridOverlay.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fbf9d3e5140b9be44bf42799326efa08 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Ships/Navigation/Directional/AxisThrustVectors.cs b/Assets/Project/Source/Ships/Navigation/Directional/AxisThrustVectors.cs index ffce1707..1b82cf6c 100644 --- a/Assets/Project/Source/Ships/Navigation/Directional/AxisThrustVectors.cs +++ b/Assets/Project/Source/Ships/Navigation/Directional/AxisThrustVectors.cs @@ -1,42 +1,53 @@ using Exa.Data; -using Exa.Grids.Blocks.BlockTypes; +using Exa.Grids.Blocks.Components; using Exa.Math; using UnityEngine; -namespace Exa.Ships.Navigation -{ - public class AxisThrustVectors : MonoBehaviour, IThrustVectors - { +namespace Exa.Ships.Navigation { + public class AxisThrustVectors : MonoBehaviour, IThrustVectors { [SerializeField] private Vector2 currentDirection; [SerializeField] private Vector2 targetDirection; + private GridInstance gridInstance; private ThrusterAxis xAxis; private ThrusterAxis yAxis; - private Ship ship; - - public void Setup(Ship ship, Scalar thrustModifier) { - this.ship = ship; - xAxis = new ThrusterAxis(thrustModifier); - yAxis = new ThrusterAxis(thrustModifier); - } public void Update() { - if (!ship.Active) return; + if (!gridInstance.Active) { + return; + } + + xAxis.SetGraphics(0f); + yAxis.SetGraphics(0f); + return; + MathUtils.MoveTowards(ref currentDirection, targetDirection, Time.deltaTime * 2f); xAxis.SetGraphics(currentDirection.x); yAxis.SetGraphics(currentDirection.y); } - public void Register(IThruster thruster) { + public void Register(ThrusterBehaviour thruster) { SelectAxis(thruster, out var component).Register(thruster, component); } - public void Unregister(IThruster thruster) { + public void Unregister(ThrusterBehaviour thruster) { SelectAxis(thruster, out var component).Unregister(thruster, component); } + public void SetGraphics(Vector2 directionScalar) { + targetDirection = directionScalar; + xAxis.SetGraphics(targetDirection.x); + yAxis.SetGraphics(targetDirection.y); + } + + public void Setup(GridInstance gridInstance, Scalar thrustModifier) { + this.gridInstance = gridInstance; + xAxis = new ThrusterAxis(thrustModifier); + yAxis = new ThrusterAxis(thrustModifier); + } + public void Fire(Vector2 force) { xAxis.Fire(force.x); yAxis.Fire(force.y); @@ -44,12 +55,14 @@ public void Fire(Vector2 force) { public Vector2 GetForce(Vector2 forceDirection, Scalar thrustModifier) { var force = GetUnClampedForce(forceDirection); + return thrustModifier.GetValue(force); } public Vector2 GetClampedForce(Vector2 forceDirection, Scalar thrustModifier) { var force = GetUnClampedForce(forceDirection); var clampedForce = MathUtils.GrowDirectionToMax(forceDirection.normalized, force); + return thrustModifier.GetValue(clampedForce); } @@ -60,17 +73,11 @@ private Vector2 GetUnClampedForce(Vector2 forceDirection) { }; } - public void SetGraphics(Vector2 directionScalar) { - targetDirection = directionScalar; - xAxis.SetGraphics(targetDirection.x); - yAxis.SetGraphics(targetDirection.y); - } - - private ThrusterAxis SelectAxis(IThruster thruster, out bool positiveAxisComponent) { - var block = thruster.Component.block; - var direction = block.BlueprintBlock.Direction; + private ThrusterAxis SelectAxis(BlockBehaviour thruster, out bool positiveAxisComponent) { + var direction = thruster.block.BlueprintBlock.Direction; positiveAxisComponent = direction <= 1; + return direction % 2 == 0 ? xAxis : yAxis; } } diff --git a/Assets/Project/Source/Ships/Navigation/Directional/DirectionalNavigation.cs b/Assets/Project/Source/Ships/Navigation/Directional/DirectionalNavigation.cs index ad05799d..b636bab7 100644 --- a/Assets/Project/Source/Ships/Navigation/Directional/DirectionalNavigation.cs +++ b/Assets/Project/Source/Ships/Navigation/Directional/DirectionalNavigation.cs @@ -4,27 +4,28 @@ using Exa.Ships.Targeting; using UnityEngine; -namespace Exa.Ships.Navigation -{ - public class DirectionalNavigation : INavigation - { +namespace Exa.Ships.Navigation { + public class DirectionalNavigation : INavigation { private static readonly Scalar DampeningThrustMultiplier = new Scalar(1.5f); private static readonly Scalar TargetThrustMultiplier = new Scalar(1f); - private readonly Ship ship; + private readonly GridInstance gridInstance; private readonly NavigationOptions options; private readonly AxisThrustVectors thrustVectors; + public DirectionalNavigation(GridInstance gridInstance, NavigationOptions options, Scalar thrustModifier) { + this.gridInstance = gridInstance; + this.options = options; + + thrustVectors = gridInstance.gameObject.AddComponent(); + thrustVectors.Setup(gridInstance, thrustModifier); + } + public ITarget LookAt { private get; set; } public ITarget MoveTo { private get; set; } - public IThrustVectors ThrustVectors => thrustVectors; - public DirectionalNavigation(Ship ship, NavigationOptions options, Scalar thrustModifier) { - this.ship = ship; - this.options = options; - - thrustVectors = ship.gameObject.AddComponent(); - thrustVectors.Setup(ship, thrustModifier); + public IThrustVectors ThrustVectors { + get => thrustVectors; } public void Update(float deltaTime) { @@ -41,7 +42,7 @@ public void Update(float deltaTime) { if (DebugMode.Navigation.IsEnabled()) { void DrawRay(Vector2 localFrameForce, Color color) { var force = localFrameForce.Rotate(GetCurrentRotation()) / deltaTime; - Debug.DrawRay(ship.GetPosition(), force / ship.Rigidbody2D.mass / 10, color); + Debug.DrawRay(gridInstance.GetPosition(), force / gridInstance.Rigidbody2D.mass / 10, color); } DrawRay(frameTargetForce, Color.red); @@ -70,25 +71,29 @@ private Vector2 Target(VelocityValues velocityValues, float deltaTime) { } private Vector2 GetLocalDifference(ITarget target) { - var currentPos = ship.GetPosition(); + var currentPos = gridInstance.GetPosition(); var diff = target.GetPosition(currentPos) - currentPos; + return diff.Rotate(-GetCurrentRotation()); } private float GetDecelerationVelocity(Vector2 direction, Scalar thrustModifier) { var force = thrustVectors.GetClampedForce(direction, thrustModifier); - return -(force / Mathf.Pow(ship.Rigidbody2D.mass, 2)).magnitude; + + return -(force / Mathf.Pow(gridInstance.Rigidbody2D.mass, 2)).magnitude; } // TODO: Fix this private float GetBrakeDistance(Vector2 diff, VelocityValues velocityValues) { var currentVelocity = velocityValues.localVelocity.magnitude; var deceleration = GetDecelerationVelocity(-diff, DampeningThrustMultiplier); + return CalculateBrakeDistance(currentVelocity, 0, deceleration); } private float CalculateBrakeDistance(float currentVelocity, float targetVelocity, float deceleration) { var t = (targetVelocity - currentVelocity) / deceleration; + return currentVelocity * t + deceleration * (t * t) / 2f; } @@ -102,6 +107,7 @@ void ProcessAxis(ref float forceAxis, float velocityAxis) { // Get force for this frame var frameTargetForce = thrustVectors.GetForce(-velocityValues.localVelocityForce, DampeningThrustMultiplier) * deltaTime; + var frameVelocityForce = -velocityValues.localVelocityForce / deltaTime; ProcessAxis(ref frameTargetForce.x, frameVelocityForce.x); @@ -113,10 +119,12 @@ void ProcessAxis(ref float forceAxis, float velocityAxis) { private Vector2 MergeForces(Vector2 frameTargetForce, Vector2 frameDampenForce) { // TODO: Make this branch-less float ProcessAxis(float targetComponent, float dampenComponent) { - if (targetComponent == 0f) return dampenComponent; + if (targetComponent == 0f) { + return dampenComponent; + } // Check if the target and the dampen component have different signs - return targetComponent > 0f ^ dampenComponent > 0f + return (targetComponent > 0f) ^ (dampenComponent > 0f) // If so, return the target vector component ? targetComponent // Otherwise, return biggest of the two components @@ -134,23 +142,23 @@ float ProcessAxis(float targetComponent, float dampenComponent) { private void Fire(Vector2 frameTargetForce, float deltaTime) { // Transform force for this frame to velocity thrustVectors.Fire(frameTargetForce / deltaTime); - ship.Rigidbody2D.AddForce(frameTargetForce, ForceMode2D.Force); + gridInstance.Rigidbody2D.AddForce(frameTargetForce, ForceMode2D.Force); } private VelocityValues GetLocalVelocity() { - var localVelocity = ship.Rigidbody2D.velocity.Rotate(-GetCurrentRotation()); + var localVelocity = gridInstance.Rigidbody2D.velocity.Rotate(-GetCurrentRotation()); + return new VelocityValues { localVelocity = localVelocity, - localVelocityForce = localVelocity * ship.Rigidbody2D.mass + localVelocityForce = localVelocity * gridInstance.Rigidbody2D.mass }; } private float GetCurrentRotation() { - return MathUtils.NormalizeAngle360(ship.Rigidbody2D.rotation); + return MathUtils.NormalizeAngle360(gridInstance.Rigidbody2D.rotation); } - private struct VelocityValues - { + private struct VelocityValues { public Vector2 localVelocity; public Vector2 localVelocityForce; } diff --git a/Assets/Project/Source/Ships/Navigation/Directional/ThrusterAxis.cs b/Assets/Project/Source/Ships/Navigation/Directional/ThrusterAxis.cs index dc95b5cb..32f3cea4 100644 --- a/Assets/Project/Source/Ships/Navigation/Directional/ThrusterAxis.cs +++ b/Assets/Project/Source/Ships/Navigation/Directional/ThrusterAxis.cs @@ -1,24 +1,22 @@ using Exa.Data; -using Exa.Grids.Blocks.BlockTypes; +using Exa.Grids.Blocks.Components; using UnityEngine; -namespace Exa.Ships.Navigation -{ - public class ThrusterAxis - { - private readonly ThrusterGroup positiveThrusterGroup; +namespace Exa.Ships.Navigation { + public class ThrusterAxis { private readonly ThrusterGroup negativeThrusterGroup; + private readonly ThrusterGroup positiveThrusterGroup; public ThrusterAxis(Scalar thrustModifier) { positiveThrusterGroup = new ThrusterGroup(thrustModifier); negativeThrusterGroup = new ThrusterGroup(thrustModifier); } - public void Register(IThruster thruster, bool positiveComponent) { + public void Register(ThrusterBehaviour thruster, bool positiveComponent) { SelectGroup(positiveComponent).Add(thruster); } - public void Unregister(IThruster thruster, bool positiveComponent) { + public void Unregister(ThrusterBehaviour thruster, bool positiveComponent) { SelectGroup(positiveComponent).Remove(thruster); } @@ -35,6 +33,7 @@ public void Fire(float velocity) { public float Clamp(float directionForce) { var positive = directionForce > 0f; var maxForceDelta = SelectGroup(positive).Thrust; + return positive ? maxForceDelta : -maxForceDelta; } diff --git a/Assets/Project/Source/Ships/Navigation/INavigation.cs b/Assets/Project/Source/Ships/Navigation/INavigation.cs index e7a22636..26147c4f 100644 --- a/Assets/Project/Source/Ships/Navigation/INavigation.cs +++ b/Assets/Project/Source/Ships/Navigation/INavigation.cs @@ -1,10 +1,7 @@ -using Exa.Data; -using Exa.Ships.Targeting; +using Exa.Ships.Targeting; -namespace Exa.Ships.Navigation -{ - public interface INavigation - { +namespace Exa.Ships.Navigation { + public interface INavigation { ITarget LookAt { set; } ITarget MoveTo { set; } IThrustVectors ThrustVectors { get; } diff --git a/Assets/Project/Source/Ships/Navigation/IThrustVectors.cs b/Assets/Project/Source/Ships/Navigation/IThrustVectors.cs index b766602f..fb2b6499 100644 --- a/Assets/Project/Source/Ships/Navigation/IThrustVectors.cs +++ b/Assets/Project/Source/Ships/Navigation/IThrustVectors.cs @@ -1,12 +1,12 @@ -using Exa.Grids.Blocks.BlockTypes; +using Exa.Grids.Blocks.Components; using UnityEngine; -namespace Exa.Ships.Navigation -{ - public interface IThrustVectors - { - void Register(IThruster thruster); - void Unregister(IThruster thruster); +namespace Exa.Ships.Navigation { + public interface IThrustVectors { + void Register(ThrusterBehaviour thruster); + + void Unregister(ThrusterBehaviour thruster); + void SetGraphics(Vector2 directionScalar); } } \ No newline at end of file diff --git a/Assets/Project/Source/Ships/Navigation/NavigationOptions.cs b/Assets/Project/Source/Ships/Navigation/NavigationOptions.cs index 509585c4..6c4c223a 100644 --- a/Assets/Project/Source/Ships/Navigation/NavigationOptions.cs +++ b/Assets/Project/Source/Ships/Navigation/NavigationOptions.cs @@ -1,47 +1,25 @@ using System; -using Exa.Grids.Blocks.BlockTypes; +using Exa.Data; using Exa.Grids.Blueprints; using UnityEngine; -namespace Exa.Ships.Navigation -{ - public enum NavigationType - { +namespace Exa.Ships.Navigation { + public enum NavigationType { Simple, Directional, NewDirectional } - public class NavigationOptions : MonoBehaviour - { - [Header("Options")] - public bool continuouslyApplySettings; + public class NavigationOptions : MonoBehaviour { + [Header("Options")] public NavigationType navigationType; - [Header("PID-Quaternion-parameters")] - public float qProportionalBase; - public float qIntegral; - public float qDerivative; - - [Header("PD-Position-parameters")] - public float pProportional; - public float pDerivative; - public float maxVel; - - public INavigation GetNavigation(Ship ship, Blueprint blueprint) { - var template = blueprint.Blocks.Controller.BlueprintBlock.Template as ControllerTemplate; - var controllerValues = template.controllerTemplatePartial.Convert(); - - switch (navigationType) { - case NavigationType.Simple: - return new SimpleNavigation(ship, this, controllerValues.thrustModifier); - - case NavigationType.Directional: - return new DirectionalNavigation(ship, this, controllerValues.thrustModifier); - - default: - throw new ArgumentOutOfRangeException(nameof(navigationType)); - } + public INavigation GetNavigation(GridInstance gridInstance, Blueprint blueprint) { + return navigationType switch { + NavigationType.Simple => new SimpleNavigation(gridInstance, this, new Scalar(1)), + NavigationType.Directional => new DirectionalNavigation(gridInstance, this, new Scalar(1)), + _ => throw new ArgumentOutOfRangeException(nameof(navigationType)) + }; } } } \ No newline at end of file diff --git a/Assets/Project/Source/Ships/Navigation/Simple/SimpleNavigation.cs b/Assets/Project/Source/Ships/Navigation/Simple/SimpleNavigation.cs index 1d06c8fa..c776ecf6 100644 --- a/Assets/Project/Source/Ships/Navigation/Simple/SimpleNavigation.cs +++ b/Assets/Project/Source/Ships/Navigation/Simple/SimpleNavigation.cs @@ -1,24 +1,25 @@ -using Exa.Math; +using Exa.Data; +using Exa.Math; using Exa.Ships.Targeting; -using Exa.Data; using UnityEngine; -namespace Exa.Ships.Navigation -{ - public class SimpleNavigation : INavigation - { - private readonly ThrustVectors thrustVectors; - private readonly Ship ship; +namespace Exa.Ships.Navigation { + public class SimpleNavigation : INavigation { + private readonly GridInstance gridInstance; private readonly NavigationOptions options; + private readonly ThrustVectors thrustVectors; + + public SimpleNavigation(GridInstance gridInstance, NavigationOptions options, Scalar thrustModifier) { + this.gridInstance = gridInstance; + this.options = options; + thrustVectors = new ThrustVectors(thrustModifier); + } public ITarget LookAt { private get; set; } public ITarget MoveTo { private get; set; } - public IThrustVectors ThrustVectors => thrustVectors; - public SimpleNavigation(Ship ship, NavigationOptions options, Scalar thrustModifier) { - this.ship = ship; - this.options = options; - this.thrustVectors = new ThrustVectors(thrustModifier); + public IThrustVectors ThrustVectors { + get => thrustVectors; } public void Update(float deltaTime) { @@ -28,37 +29,40 @@ public void Update(float deltaTime) { if (MoveTo != null) { UpdatePosition(); + } else { + ThrustVectors.SetGraphics(new Vector2(0, 0)); } } private void UpdatePosition() { - var currentPosition = ship.GetPosition(); + var currentPosition = gridInstance.GetPosition(); var moveToTargetPosition = MoveTo.GetPosition(currentPosition); if (currentPosition == moveToTargetPosition) { ThrustVectors.SetGraphics(Vector2.zero); + return; } - var headingAngle = ship.Rigidbody2D.rotation; + var headingAngle = gridInstance.Rigidbody2D.rotation; var direction = (moveToTargetPosition - currentPosition).Rotate(-headingAngle).normalized; ThrustVectors.SetGraphics(direction); var deltaTime = Time.fixedDeltaTime; var newPosition = Vector2.MoveTowards(currentPosition, moveToTargetPosition, 30 * deltaTime); - ship.Rigidbody2D.position = newPosition; + gridInstance.Rigidbody2D.position = newPosition; } private void UpdateRotation() { - var currentPosition = ship.GetPosition(); + var currentPosition = gridInstance.GetPosition(); var lookAtTargetPosition = LookAt.GetPosition(currentPosition); var lookAtDelta = lookAtTargetPosition - currentPosition; var targetRotation = lookAtDelta.GetAngle(); - var currentRotation = ship.Rigidbody2D.rotation; + var currentRotation = gridInstance.Rigidbody2D.rotation; - ship.Rigidbody2D.rotation = Mathf.MoveTowardsAngle(currentRotation, targetRotation, 100 * Time.fixedDeltaTime); + gridInstance.Rigidbody2D.rotation = Mathf.MoveTowardsAngle(currentRotation, targetRotation, 100 * Time.fixedDeltaTime); } } } \ No newline at end of file diff --git a/Assets/Project/Source/Ships/Navigation/ThrustVectors.cs b/Assets/Project/Source/Ships/Navigation/ThrustVectors.cs index 97f2f773..43b2aac5 100644 --- a/Assets/Project/Source/Ships/Navigation/ThrustVectors.cs +++ b/Assets/Project/Source/Ships/Navigation/ThrustVectors.cs @@ -1,34 +1,37 @@ -using Exa.Grids.Blocks.BlockTypes; -using System.Collections.Generic; +using System.Collections.Generic; using Exa.Data; +using Exa.Grids.Blocks.Components; using UnityEngine; -namespace Exa.Ships.Navigation -{ +namespace Exa.Ships.Navigation { // TODO: Clamp the requested thrust vector to what the Ship can output - public class ThrustVectors : IThrustVectors - { + public class ThrustVectors : IThrustVectors { private readonly Dictionary thrusterDict; public ThrustVectors(Scalar thrustModifier) { thrusterDict = new Dictionary { - {0, new ThrusterGroup(thrustModifier)}, - {1, new ThrusterGroup(thrustModifier)}, - {2, new ThrusterGroup(thrustModifier)}, - {3, new ThrusterGroup(thrustModifier)} + { + 0, new ThrusterGroup(thrustModifier) + }, { + 1, new ThrusterGroup(thrustModifier) + }, { + 2, new ThrusterGroup(thrustModifier) + }, { + 3, new ThrusterGroup(thrustModifier) + } }; } - public void Register(IThruster thruster) { + public void Register(ThrusterBehaviour thruster) { SelectGroup(thruster)?.Add(thruster); } - public void Unregister(IThruster thruster) { + public void Unregister(ThrusterBehaviour thruster) { SelectGroup(thruster)?.Remove(thruster); } /// - /// Sets the graphics using a local space scalar vector + /// Sets the graphics using a local space scalar vector /// /// public void SetGraphics(Vector2 directionScalar) { @@ -38,30 +41,34 @@ public void SetGraphics(Vector2 directionScalar) { SelectVerticalGroup(directionScalar.y, true).SetGraphics(0); } - private ThrusterGroup SelectGroup(IThruster thruster) { + private ThrusterGroup SelectGroup(BlockBehaviour thruster) { var rotation = GetDirection(thruster); + try { return thrusterDict[rotation]; - } - catch (KeyNotFoundException) { + } catch (KeyNotFoundException) { Debug.LogWarning( - $"thruster {thruster} with rotation {rotation} cannot find a corresponding thruster group"); + $"thruster {thruster} with rotation {rotation} cannot find a corresponding thruster group" + ); + return null; } } - private ThrusterGroup SelectHorizontalGroup(float x, bool revert) => - x > 0 ^ revert + private ThrusterGroup SelectHorizontalGroup(float x, bool revert) { + return (x > 0) ^ revert ? thrusterDict[0] : thrusterDict[2]; + } - private ThrusterGroup SelectVerticalGroup(float y, bool revert) => - y > 0 ^ revert + private ThrusterGroup SelectVerticalGroup(float y, bool revert) { + return (y > 0) ^ revert ? thrusterDict[1] : thrusterDict[3]; + } - private int GetDirection(IThruster thruster) { - return thruster.Component.block.anchoredBlueprintBlock.blueprintBlock.Direction; + private static int GetDirection(BlockBehaviour thruster) { + return thruster.block.BlueprintBlock.Direction; } } } \ No newline at end of file diff --git a/Assets/Project/Source/Ships/Navigation/ThrusterGroup.cs b/Assets/Project/Source/Ships/Navigation/ThrusterGroup.cs index ee21402d..74cdf7ec 100644 --- a/Assets/Project/Source/Ships/Navigation/ThrusterGroup.cs +++ b/Assets/Project/Source/Ships/Navigation/ThrusterGroup.cs @@ -1,30 +1,30 @@ -using Exa.Data; -using Exa.Grids.Blocks.BlockTypes; -using System.Collections.Generic; - -namespace Exa.Ships.Navigation -{ - public class ThrusterGroup : List - { - private Scalar thrustModifier; - private float thrust = 0f; +using System.Collections.Generic; +using Exa.Data; +using Exa.Grids.Blocks.Components; - public float Thrust => thrustModifier.GetValue(thrust); +namespace Exa.Ships.Navigation { + public class ThrusterGroup : List { + private float thrust; + private Scalar thrustModifier; public ThrusterGroup(Scalar thrustModifier) { this.thrustModifier = thrustModifier; } - public new void Add(IThruster thruster) { + public float Thrust { + get => thrustModifier.GetValue(thrust); + } + + public new void Add(ThrusterBehaviour thruster) { base.Add(thruster); - thrust += thruster.Component.Data.thrust; + thrust += thruster.Data.thrust; } - public new bool Remove(IThruster thruster) { + public new bool Remove(ThrusterBehaviour thruster) { var result = base.Remove(thruster); if (result) { - thrust -= thruster.Component.Data.thrust; + thrust -= thruster.Data.thrust; } return result; diff --git a/Assets/Project/Source/Ships/PlayerStation.cs b/Assets/Project/Source/Ships/PlayerStation.cs new file mode 100644 index 00000000..f79bd3a7 --- /dev/null +++ b/Assets/Project/Source/Ships/PlayerStation.cs @@ -0,0 +1,100 @@ +using Exa.Gameplay; +using Exa.Grids; +using Exa.Grids.Blocks; +using Exa.Grids.Blocks.Components; +using Exa.Grids.Blueprints; +using Exa.Input; +using Exa.UI.Tooltips; +using UnityEngine; +using UnityEngine.InputSystem; +using static Exa.Input.GameControls; + +namespace Exa.Ships { + public class PlayerStation : GridInstance, IPlayerStationActions { + private GameControls gameControls; + + protected override void Awake() { + base.Awake(); + + gameControls = new GameControls(); + gameControls.PlayerStation.SetCallbacks(this); + } + + public void OnEnable() { + gameControls?.Enable(); + GS.UI.stationRotationOverlay.Rc = RotationController; + } + + public void OnDisable() { + gameControls?.Disable(); + GS.UI.stationRotationOverlay.Rc = null; + } + + public void OnFire(InputAction.CallbackContext context) { + if (Controller.TryGetComponent(out var turret)) { + switch (context.phase) { + case InputActionPhase.Started: + turret.StartCharge(); + + break; + case InputActionPhase.Canceled: + turret.EndCharge(); + + break; + } + } + } + + public void OnLook(InputAction.CallbackContext context) { + switch (context.phase) { + case InputActionPhase.Started: + rotationController.SetTargetVector(S.Input.MouseWorldPoint); + + break; + } + } + + public override void Import(Blueprint blueprint, BlockContext blockContext, GridInstanceConfiguration configuration) { + base.Import(blueprint, blockContext, configuration); + Diff = S.Blocks.Diffs.StartWatching(BlockGrid, Blueprint.Grid); + SupportDroneOrchestrator = new SupportDroneOrchestrator(this, Diff); + Overlay = GS.UI.gameplayLayer.coreHealthBar; + } + + public override void SetBlueprint(Blueprint blueprint) { + base.SetBlueprint(blueprint); + Diff.TrackNewTarget(blueprint.Grid); + } + + public override void OnControllerDestroyed() { + base.OnControllerDestroyed(); + gameControls.Disable(); + gameControls = null; + } + + public override ShipSelection GetAppropriateSelection(Formation formation) { + return new FriendlyShipSelection(formation); + } + + public override bool MatchesSelection(ShipSelection selection) { + return selection is FriendlyShipSelection; + } + + public override Vector2 GetPosition() { + return transform.position + Controller.transform.localPosition; + } + + public override void SetPosition(Vector2 position) { + transform.position = position - (Vector2) Controller.transform.localPosition; + } + + protected override TooltipGroup GetDebugTooltipComponents() { + return base.GetDebugTooltipComponents() + .AppendRange( + new TooltipSpacer(), + new TooltipText("Grid diff:"), + Diff.GetDebugTooltipComponents() + ); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Ships/PlayerStation.cs.meta b/Assets/Project/Source/Ships/PlayerStation.cs.meta new file mode 100644 index 00000000..ccd36854 --- /dev/null +++ b/Assets/Project/Source/Ships/PlayerStation.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7cd5925918061a948b2fadecad172f65 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Ships/Rotation.meta b/Assets/Project/Source/Ships/Rotation.meta new file mode 100644 index 00000000..2b7a1d57 --- /dev/null +++ b/Assets/Project/Source/Ships/Rotation.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 3445f8498ffa4db0834e646e8f29c6e4 +timeCreated: 1630228313 \ No newline at end of file diff --git a/Assets/Project/Source/Ships/Rotation/RotationController.cs b/Assets/Project/Source/Ships/Rotation/RotationController.cs new file mode 100644 index 00000000..7d3ce297 --- /dev/null +++ b/Assets/Project/Source/Ships/Rotation/RotationController.cs @@ -0,0 +1,81 @@ +using Exa.Debugging; +using Exa.Math; +using Exa.Utils; +using UnityEngine; + +namespace Exa.Ships.Rotation { + public class RotationController : MonoBehaviour { + private float heading; + private float bearing; + private float angularAcceleration; + private float turnSpeed; + + [SerializeField] private float maxTorque = 1f; + [SerializeField] private float stopThresholdMultiplier = 0.001f; + [SerializeField] private float baseStopThreshold = 0.1f; + [SerializeField] private Rigidbody2D rb; + Vector2? targetVector; + + public Rigidbody2D Rb => rb; + public Vector2? TargetVector => targetVector; + + public float? TargetRotation { + get { + if (targetVector.GetHasValue(out var value)) { + return (value - rb.worldCenterOfMass).GetAngle(); + } + + return null; + } + } + + private void Awake() { + SetMaxTorque(maxTorque); + } + + private void FixedUpdate() { + turnSpeed = rb.angularVelocity; + angularAcceleration = maxTorque / rb.inertia * Mathf.Rad2Deg; + + if (targetVector.GetHasValue(out var value)) { + targetVector += rb.velocity * Time.fixedDeltaTime; + + if (S.Instance == null || DebugMode.Navigation.IsEnabled()) { + Debug.DrawLine(rb.worldCenterOfMass, value); + } + + var localSpaceTargetVector = value - rb.worldCenterOfMass; + + // Calculate the angle from the current rotation to the target vector + var rot = Quaternion.FromToRotation(transform.right * -1f, localSpaceTargetVector); + + var difference = 360f - rot.eulerAngles.z - 180f; + + // Calculate the distance to stop given the current turn speed and angular acceleration + var stopDistance = angularAcceleration * Mathf.Pow(turnSpeed / angularAcceleration, 2f) / 2f; + var torqueDirection = -1f * Mathf.Sign(difference); + + // If the stop distance is longer than the difference between the current and target angle, reverse the direction of the torque + if (stopDistance >= Mathf.Abs(difference)) { + torqueDirection *= -1f; + } + + // If the distance is longer than the threshold, apply the torque, otherwise zero the angular velocity + if (Mathf.Abs(difference) > angularAcceleration * stopThresholdMultiplier + baseStopThreshold) { + rb.AddTorque(torqueDirection * maxTorque); + } else { + rb.angularVelocity = 0; + targetVector = null; + } + } + } + + public void SetMaxTorque(float maxTorque) { + this.maxTorque = maxTorque; + } + + public void SetTargetVector(Vector3 newTarget) { + targetVector = newTarget; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Ships/Rotation/RotationController.cs.meta b/Assets/Project/Source/Ships/Rotation/RotationController.cs.meta new file mode 100644 index 00000000..048fa961 --- /dev/null +++ b/Assets/Project/Source/Ships/Rotation/RotationController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 58ce7c403f8b2954da923fb8735e65a9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Ships/Ship.cs b/Assets/Project/Source/Ships/Ship.cs deleted file mode 100644 index 134578c7..00000000 --- a/Assets/Project/Source/Ships/Ship.cs +++ /dev/null @@ -1,213 +0,0 @@ -using Exa.AI; -using Exa.Debugging; -using Exa.Gameplay; -using Exa.Generics; -using Exa.Grids.Blocks; -using Exa.Grids.Blocks.BlockTypes; -using Exa.Grids.Blueprints; -using Exa.Math; -using Exa.Ships.Navigation; -using Exa.UI; -using Exa.UI.Tooltips; -using System; -using System.Collections.Generic; -using Exa.Grids; -using Exa.Utils; -using UnityEngine; -using UnityEngine.Events; - -#pragma warning disable CS0649 - -namespace Exa.Ships -{ - public abstract class Ship : MonoBehaviour, IRaycastTarget, ITooltipPresenter, IDebugDragable, IGridInstance - { - [Header("References")] - [SerializeField] private Transform pivot; - [SerializeField] private ShipAi shipAi; - [SerializeField] private ShipState state; - [SerializeField] private Rigidbody2D rb; - [SerializeField] private CircleCollider2D mouseOverCollider; - [SerializeField] private NavigationOptions navigationOptions; - - [Header("Settings")] - [SerializeField] private ValueOverride cursorOverride; - public float canvasScaleMultiplier = 1f; - public Font shipDebugFont; - - private Tooltip debugTooltip; - - [Header("Events")] - public UnityEvent ControllerDestroyedEvent; - - public ActionScheduler ActionScheduler { get; private set; } - public BlockContext BlockContext { get; private set; } - public GridInstanceConfiguration Configuration { get; private set; } - public BlockGrid BlockGrid { get; private set; } - public Blueprint Blueprint { get; private set; } - public Controller Controller { get; internal set; } - public INavigation Navigation { get; private set; } - public ShipGridTotals Totals { get; private set; } - public bool Active { get; private set; } - public ShipOverlay Overlay { get; set; } - public Transform Transform => transform; - public Rigidbody2D Rigidbody2D => rb; - public ShipAi Ai => shipAi; - public ShipState State => state; - - protected virtual void Awake() { - debugTooltip = new Tooltip(GetDebugTooltipComponents, shipDebugFont); - } - - private void FixedUpdate() { - if (Active) { - var deltaTime = Time.fixedDeltaTime; - Navigation?.Update(deltaTime); - ActionScheduler.ExecuteActions(deltaTime); - } - - mouseOverCollider.offset = rb.centerOfMass; - - if (debugTooltip != null) { - debugTooltip.ShouldRefresh = true; - } - } - - // TODO: Make this look nicer by breaking up the ship and adding an explosion - public virtual void OnControllerDestroyed() { - ControllerDestroyedEvent?.Invoke(); - Active = false; - - foreach (var thruster in BlockGrid.Metadata.QueryByType()) { - thruster.PowerDown(); - } - } - - public virtual void Import(Blueprint blueprint, BlockContext blockContext, GridInstanceConfiguration configuration) { - if (blueprint.Blocks.Controller == null) { - throw new ArgumentException("Blueprint must have a controller reference"); - } - - Totals = new ShipGridTotals(this); - BlockGrid = new BlockGrid(pivot, OnGridEmpty, this); - Configuration = configuration; - ActionScheduler = new ActionScheduler(this); - Active = true; - BlockContext = blockContext; - - var radius = blueprint.Blocks.MaxSize / 2f * canvasScaleMultiplier; - mouseOverCollider.radius = radius; - Navigation = navigationOptions.GetNavigation(this, blueprint); - BlockGrid.Import(blueprint); - Blueprint = blueprint; - - UpdateCanvasSize(blueprint); - - shipAi.Init(); - } - - public string GetInstanceString() { - return $"({GetType().Name}) {Blueprint.name} : {gameObject.GetInstanceID()}"; - } - - public virtual void OnRaycastEnter() { - if (!Active) return; - - Overlay.overlayCircle.IsHovered = true; - Systems.UI.mouseCursor.stateManager.Add(cursorOverride); - - if (DebugMode.Ships.IsEnabled()) { - Systems.UI.tooltips.shipAIDebugTooltip.Show(this); - } - } - - public virtual void OnRaycastExit() { - if (!Active) return; - - Overlay.overlayCircle.IsHovered = false; - Systems.UI.mouseCursor.stateManager.Remove(cursorOverride); - - if (DebugMode.Ships.IsEnabled()) { - Systems.UI.tooltips.shipAIDebugTooltip.Hide(); - } - } - - // TODO: Somehow cache this, or let the results come from a central manager - public IEnumerable QueryNeighbours(float radius, ShipMask shipMask, bool mustBeActive = false) { - var colliders = Physics2D.OverlapCircleAll(transform.position, radius, shipMask.LayerMask); - - foreach (var collider in colliders) { - var neighbour = collider.gameObject.GetComponent(); - if (neighbour == null) { - continue; - } - - var passesContextMask = (neighbour.BlockContext & shipMask.ContextMask) != 0; - if (!ReferenceEquals(neighbour, this) && passesContextMask) { - if (mustBeActive && !neighbour.Active) { - continue; - } - - yield return neighbour; - } - } - } - - public Tooltip GetTooltip() { - return debugTooltip; - } - - public abstract ShipSelection GetAppropriateSelection(Formation formation); - - public abstract bool MatchesSelection(ShipSelection selection); - - private void UpdateCanvasSize(Blueprint blueprint) { - var size = blueprint.Blocks.MaxSize * 10 * canvasScaleMultiplier; - Overlay.rectContainer.sizeDelta = new Vector2(size, size); - } - - private TooltipGroup GetDebugTooltipComponents() => new TooltipGroup(new ITooltipComponent[] { - new TooltipTitle(GetInstanceString(), false), - new TooltipSpacer(), - new TooltipText("Blueprint:"), - new TooltipGroup(Blueprint.GetDebugTooltipComponents(), 1), - new TooltipSpacer(), - new TooltipText("BlockGrid:"), - new TooltipGroup(BlockGrid.GetDebugTooltipComponents(), 1), - new TooltipSpacer(), - new TooltipText("State:"), - new TooltipGroup(state.GetDebugTooltipComponents(), 1), - new TooltipSpacer(), - new TooltipText("State:"), - new TooltipGroup(new ITooltipComponent[] { - new TooltipText($"Rotation: {rb.rotation}"), - new TooltipText($"Clamped Rotation: {MathUtils.NormalizeAngle360(rb.rotation)}"), - }, 1), - new TooltipSpacer(), - new TooltipText("AI:"), - new TooltipGroup(shipAi.GetDebugTooltipComponents(), 1) - }); - - public Vector2 GetDebugDraggerPosition() { - return transform.position; - } - - public Vector2 GetPosition() { - return Rigidbody2D.worldCenterOfMass; - } - - public void SetDebugDraggerGlobals(Vector2 position, Vector2 velocity) { - transform.position = position; - rb.velocity = velocity; - } - - public void Rotate(float degrees) { - Rigidbody2D.rotation += degrees; - } - - private void OnGridEmpty() { - if (gameObject) - Destroy(gameObject); - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Ships/ShipDebugTooltip.cs b/Assets/Project/Source/Ships/ShipDebugTooltip.cs index 84299b7d..728b0168 100644 --- a/Assets/Project/Source/Ships/ShipDebugTooltip.cs +++ b/Assets/Project/Source/Ships/ShipDebugTooltip.cs @@ -1,9 +1,7 @@ using Exa.UI.Tooltips; -namespace Exa.Ships -{ - public class ShipDebugTooltip : TooltipView - { +namespace Exa.Ships { + public class ShipDebugTooltip : TooltipView { protected override void Update() { Root?.Refresh(tooltip.GetRootData()); diff --git a/Assets/Project/Source/Ships/ShipFactory.cs b/Assets/Project/Source/Ships/ShipFactory.cs index 62de9cc4..53f6cef1 100644 --- a/Assets/Project/Source/Ships/ShipFactory.cs +++ b/Assets/Project/Source/Ships/ShipFactory.cs @@ -1,53 +1,67 @@ -using System; -using Exa.Grids; +using Exa.Grids; using Exa.Grids.Blocks; using Exa.Grids.Blueprints; +using Exa.Utils; using UnityEngine; #pragma warning disable CS0649 -namespace Exa.Ships -{ - public class ShipFactory : MonoBehaviour - { - [SerializeField] private GameObject friendlyShipPrefab; +namespace Exa.Ships { + public class ShipFactory : MonoBehaviour { [SerializeField] private GameObject enemyShipPrefab; + [SerializeField] private GameObject friendlyStationPrefab; [SerializeField] private GameObject shipOverlayPrefab; - [SerializeField] private Transform overlayContainer; - public FriendlyShip CreateFriendly(Blueprint blueprint, Vector2 worldPos, GridInstanceConfiguration configuration) { - var shipGo = Instantiate(friendlyShipPrefab, GameSystems.SpawnLayer.ships); - return Configure(shipGo, worldPos, blueprint, BlockContext.UserGroup, configuration); + public PlayerStation CreateStation(Blueprint blueprint, Vector2 worldPos, GridInstanceConfiguration? configuration = null) { + return Configure( + friendlyStationPrefab, + worldPos, + blueprint, + BlockContext.UserGroup, + configuration + ); } - public EnemyShip CreateEnemy(Blueprint blueprint, Vector2 worldPos, GridInstanceConfiguration configuration) { - var shipGo = Instantiate(enemyShipPrefab, GameSystems.SpawnLayer.ships); - return Configure(shipGo, worldPos, blueprint, BlockContext.EnemyGroup, configuration); + public EnemyGrid CreateEnemy(Blueprint blueprint, Vector2 worldPos, GridInstanceConfiguration? configuration = null) { + return Configure( + enemyShipPrefab, + worldPos, + blueprint, + BlockContext.EnemyGroup, + configuration + ); } - private T Configure(GameObject shipGo, Vector2 worldPos, Blueprint blueprint, BlockContext blockContext, GridInstanceConfiguration configuration) - where T : Ship { - shipGo.transform.position = worldPos; - var ship = shipGo.GetComponent(); - var overlay = CreateOverlay(ship); - ship.Import(blueprint, blockContext, configuration); + private T Configure(GameObject prefab, Vector2 worldPos, Blueprint blueprint, BlockContext blockContext, GridInstanceConfiguration? configuration) + where T : GridInstance { + var grid = prefab.Create(GS.SpawnLayer.ships); - var instanceString = ship.GetInstanceString(); - overlay.gameObject.name = $"Overlay: {instanceString}"; - shipGo.name = instanceString; + grid.Import( + blueprint, + blockContext, + configuration ?? + new GridInstanceConfiguration { + Invulnerable = false + } + ); - return ship; + grid.SetPosition(worldPos); + grid.name = grid.GetInstanceString(); + + Physics2D.SyncTransforms(); + + return grid; } - private ShipOverlay CreateOverlay(Ship ship) { - var overlayGo = Instantiate(shipOverlayPrefab, overlayContainer); - ship.ControllerDestroyedEvent.AddListener(() => { - Destroy(overlayGo); - }); + public GridOverlay CreateOverlay(GridInstance gridInstance) { + var overlayGo = Instantiate(shipOverlayPrefab, GS.SpawnLayer.overlay); + gridInstance.ControllerDestroyed += () => { Destroy(overlayGo); }; + + var overlay = overlayGo.GetComponent(); + overlay.SetGrid(gridInstance); + overlay.Update(); + overlay.gameObject.name = $"Overlay: {gridInstance.GetInstanceString()}"; - var overlay = overlayGo.GetComponent(); - overlay.ship = ship; - ship.Overlay = overlay; return overlay; } } diff --git a/Assets/Project/Source/Ships/ShipGridTotals.cs b/Assets/Project/Source/Ships/ShipGridTotals.cs deleted file mode 100644 index 87c5647d..00000000 --- a/Assets/Project/Source/Ships/ShipGridTotals.cs +++ /dev/null @@ -1,13 +0,0 @@ -using Exa.Grids; - -namespace Exa.Ships -{ - public class ShipGridTotals : GridTotals - { - private readonly Ship ship; - - public ShipGridTotals(Ship ship) { - this.ship = ship; - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Ships/ShipGridTotals.cs.meta b/Assets/Project/Source/Ships/ShipGridTotals.cs.meta deleted file mode 100644 index 5340694d..00000000 --- a/Assets/Project/Source/Ships/ShipGridTotals.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: a03309279436a2d428b2207fab9e140a -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/Ships/ShipMask.cs b/Assets/Project/Source/Ships/ShipMask.cs deleted file mode 100644 index eb8e0bd9..00000000 --- a/Assets/Project/Source/Ships/ShipMask.cs +++ /dev/null @@ -1,15 +0,0 @@ -using Exa.Grids.Blocks; - -namespace Exa.Ships -{ - public readonly struct ShipMask - { - public int LayerMask { get; } - public BlockContext ContextMask { get; } - - public ShipMask(BlockContext blockContext) { - LayerMask = UnityEngine.LayerMask.GetMask("unit"); - ContextMask = blockContext; - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Ships/ShipOverlay.cs b/Assets/Project/Source/Ships/ShipOverlay.cs deleted file mode 100644 index a7dfa459..00000000 --- a/Assets/Project/Source/Ships/ShipOverlay.cs +++ /dev/null @@ -1,18 +0,0 @@ -using UnityEngine; - -namespace Exa.Ships -{ - public class ShipOverlay : MonoBehaviour - { - public Ship ship; - - public RectTransform rectContainer; - public ShipOverlayHullBar overlayHullBar; - public ShipOverlayEnergyBar overlayEnergyBar; - public ShipOverlayCircle overlayCircle; - - private void Update() { - transform.position = ship.GetPosition(); - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Ships/ShipOverlayCircle.cs b/Assets/Project/Source/Ships/ShipOverlayCircle.cs index 941d2d2d..0a293311 100644 --- a/Assets/Project/Source/Ships/ShipOverlayCircle.cs +++ b/Assets/Project/Source/Ships/ShipOverlayCircle.cs @@ -2,17 +2,11 @@ #pragma warning disable CS0649 -namespace Exa.Ships -{ - public class ShipOverlayCircle : MonoBehaviour - { +namespace Exa.Ships { + public class ShipOverlayCircle : MonoBehaviour { [SerializeField] private CanvasGroup canvasGroup; - private bool isSelected; private bool isHovered; - - private void Awake() { - CalculateState(); - } + private bool isSelected; public bool IsSelected { private get => isSelected; @@ -30,13 +24,16 @@ public bool IsHovered { } } + private void Awake() { + CalculateState(); + } + private void CalculateState() { gameObject.SetActive(IsSelected || IsHovered); if (IsSelected) { canvasGroup.alpha = 0.5f; - } - else if (IsHovered) { + } else if (IsHovered) { canvasGroup.alpha = 0.2f; } } diff --git a/Assets/Project/Source/Ships/ShipOverlayEnergyBar.cs b/Assets/Project/Source/Ships/ShipOverlayEnergyBar.cs index 52c2ec6f..842b4f12 100644 --- a/Assets/Project/Source/Ships/ShipOverlayEnergyBar.cs +++ b/Assets/Project/Source/Ships/ShipOverlayEnergyBar.cs @@ -3,10 +3,8 @@ #pragma warning disable CS0649 -namespace Exa.Ships -{ - public class ShipOverlayEnergyBar : MonoBehaviour - { +namespace Exa.Ships { + public class ShipOverlayEnergyBar : MonoBehaviour { [SerializeField] private Image image; public void SetFill(float fill) { diff --git a/Assets/Project/Source/Ships/ShipOverlayHullBar.cs b/Assets/Project/Source/Ships/ShipOverlayHullBar.cs index 469372a3..2953c9da 100644 --- a/Assets/Project/Source/Ships/ShipOverlayHullBar.cs +++ b/Assets/Project/Source/Ships/ShipOverlayHullBar.cs @@ -2,15 +2,13 @@ using UnityEngine; using UnityEngine.UI; -namespace Exa.Ships -{ - public class ShipOverlayHullBar : MonoBehaviour - { +namespace Exa.Ships { + public class ShipOverlayHullBar : MonoBehaviour { public Image actualFillImage; public Image rememberedFillImage; + [SerializeField] private readonly float rememberedFillSpeed = 0.4f; [SerializeField] private readonly float timeToUpdateRememberedFill = 3f; - [SerializeField] private readonly float rememberedFillSpeed = 0.4f; private float actualFill = 1f; private float rememberedFill = 1f; private float timeSinceFillChange; @@ -41,7 +39,9 @@ private void Update() { } public void SetFill(float value) { - if (ActualFill == value) return; + if (ActualFill == value) { + return; + } ActualFill = value; timeSinceFillChange = 0f; diff --git a/Assets/Project/Source/Ships/ShipPivot.cs b/Assets/Project/Source/Ships/ShipPivot.cs index fa839fbb..6ad04edd 100644 --- a/Assets/Project/Source/Ships/ShipPivot.cs +++ b/Assets/Project/Source/Ships/ShipPivot.cs @@ -1,9 +1,7 @@ using UnityEngine; -namespace Exa.Ships -{ - public class ShipPivot : MonoBehaviour - { - public Ship ship; +namespace Exa.Ships { + public class ShipPivot : MonoBehaviour { + public GridInstance gridInstance; } } \ No newline at end of file diff --git a/Assets/Project/Source/Ships/ShipState.cs b/Assets/Project/Source/Ships/ShipState.cs deleted file mode 100644 index 4e4312af..00000000 --- a/Assets/Project/Source/Ships/ShipState.cs +++ /dev/null @@ -1,38 +0,0 @@ -using Exa.UI.Tooltips; -using System.Collections.Generic; -using UnityEngine; - -namespace Exa.Ships -{ - public class ShipState : MonoBehaviour - { - public Ship ship; - - private float hullIntegrity; - - public float HullIntegrity { - get => hullIntegrity; - set { - hullIntegrity = value; - - if (ship.Active) - ship.Overlay.overlayHullBar.SetFill(value); - } - } - - public void Update() { - var currentHull = ship.BlockGrid.Totals.Hull; - var totalHull = ship.Blueprint.Blocks.Totals.Hull; - HullIntegrity = currentHull / totalHull; - } - - public float GetTurningRate() { - return ship.BlockGrid.Totals.TurningPower / ship.BlockGrid.Totals.Mass; - } - - public IEnumerable GetDebugTooltipComponents() => new ITooltipComponent[] { - new TooltipText($"HullIntegrity: {HullIntegrity}"), - new TooltipText($"TurningRate: {GetTurningRate()}") - }; - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Ships/ShipState.cs.meta b/Assets/Project/Source/Ships/ShipState.cs.meta deleted file mode 100644 index c89790ac..00000000 --- a/Assets/Project/Source/Ships/ShipState.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: dbac3dbbc1c2fcc42874dd2c059632be -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/Ships/Targeting/ITarget.cs b/Assets/Project/Source/Ships/Targeting/ITarget.cs index c7523b2e..49b363f1 100644 --- a/Assets/Project/Source/Ships/Targeting/ITarget.cs +++ b/Assets/Project/Source/Ships/Targeting/ITarget.cs @@ -1,18 +1,15 @@ using UnityEngine; -namespace Exa.Ships.Targeting -{ - public interface ITarget - { +namespace Exa.Ships.Targeting { + public interface ITarget { /// - /// Gets the world position of the target (not the delta) + /// Gets the world position of the target (not the delta) /// /// Current position Vector2 GetPosition(Vector2 current); } - public interface IWeaponTarget : ITarget - { + public interface IWeaponTarget : ITarget { bool GetTargetValid(); } } \ No newline at end of file diff --git a/Assets/Project/Source/Ships/Targeting/ShipTarget.cs b/Assets/Project/Source/Ships/Targeting/ShipTarget.cs index 60c3a62c..3e6cbeba 100644 --- a/Assets/Project/Source/Ships/Targeting/ShipTarget.cs +++ b/Assets/Project/Source/Ships/Targeting/ShipTarget.cs @@ -1,21 +1,19 @@ using UnityEngine; -namespace Exa.Ships.Targeting -{ - public readonly struct ShipTarget : IWeaponTarget - { - private readonly Ship ship; +namespace Exa.Ships.Targeting { + public readonly struct ShipTarget : IWeaponTarget { + private readonly GridInstance gridInstance; - public ShipTarget(Ship ship) { - this.ship = ship; + public ShipTarget(GridInstance gridInstance) { + this.gridInstance = gridInstance; } public Vector2 GetPosition(Vector2 current) { - return ship.Controller.transform.position; + return gridInstance.Controller.transform.position; } public bool GetTargetValid() { - return ship != null && ship.Active; + return gridInstance != null && gridInstance.Active; } } } \ No newline at end of file diff --git a/Assets/Project/Source/Ships/Targeting/StaticAngleTarget.cs b/Assets/Project/Source/Ships/Targeting/StaticAngleTarget.cs index c6571280..bc30a2ab 100644 --- a/Assets/Project/Source/Ships/Targeting/StaticAngleTarget.cs +++ b/Assets/Project/Source/Ships/Targeting/StaticAngleTarget.cs @@ -1,10 +1,8 @@ using Exa.Math; using UnityEngine; -namespace Exa.Ships.Targeting -{ - public readonly struct StaticAngleTarget : ITarget - { +namespace Exa.Ships.Targeting { + public readonly struct StaticAngleTarget : ITarget { private readonly float directionAngle; private readonly float magnitude; @@ -14,13 +12,14 @@ public StaticAngleTarget(float directionAngle, float magnitude = 10) { } public StaticAngleTarget(Vector2 from, Vector2 to, float magnitude = 10) { - this.directionAngle = (to - from).GetAngle(); + directionAngle = (to - from).GetAngle(); this.magnitude = magnitude; } public Vector2 GetPosition(Vector2 current) { var offset = (Vector2.right * magnitude).Rotate(directionAngle); var directionVector = current + offset; + return directionVector; } } diff --git a/Assets/Project/Source/Ships/Targeting/StaticPositionTarget.cs b/Assets/Project/Source/Ships/Targeting/StaticPositionTarget.cs index 39e34455..dd651707 100644 --- a/Assets/Project/Source/Ships/Targeting/StaticPositionTarget.cs +++ b/Assets/Project/Source/Ships/Targeting/StaticPositionTarget.cs @@ -1,9 +1,7 @@ using UnityEngine; -namespace Exa.Ships.Targeting -{ - public readonly struct StaticPositionTarget : ITarget - { +namespace Exa.Ships.Targeting { + public readonly struct StaticPositionTarget : ITarget { private readonly Vector2 position; public StaticPositionTarget(Vector2 position) { diff --git a/Assets/Project/Source/Ships/TurretList.cs b/Assets/Project/Source/Ships/TurretList.cs deleted file mode 100644 index 0c5d2808..00000000 --- a/Assets/Project/Source/Ships/TurretList.cs +++ /dev/null @@ -1,15 +0,0 @@ -using Exa.Grids.Blocks.BlockTypes; -using Exa.Ships.Targeting; -using System.Collections.Generic; - -namespace Exa.Ships -{ - public class TurretList : List - { - public void SetTarget(IWeaponTarget target) { - foreach (var turret in this) { - turret.SetTarget(target); - } - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/Ships/TurretList.cs.meta b/Assets/Project/Source/Ships/TurretList.cs.meta deleted file mode 100644 index fd3df000..00000000 --- a/Assets/Project/Source/Ships/TurretList.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 263bed672ded5f241a35e069ad4f75a7 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/Types.meta b/Assets/Project/Source/Types.meta new file mode 100644 index 00000000..5675d241 --- /dev/null +++ b/Assets/Project/Source/Types.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 48cfec823641fd544b3c3d057bbd9cd2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Types/ActivePair.cs b/Assets/Project/Source/Types/ActivePair.cs new file mode 100644 index 00000000..3d650e06 --- /dev/null +++ b/Assets/Project/Source/Types/ActivePair.cs @@ -0,0 +1,18 @@ +using System; + +namespace Exa.Data { + [Serializable] + public class ActivePair { + public T active; + public T inactive; + + public ActivePair(T active, T inactive) { + this.active = active; + this.inactive = inactive; + } + + public T GetValue(bool active) { + return active ? this.active : inactive; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Data/ActivePair.cs.meta b/Assets/Project/Source/Types/ActivePair.cs.meta similarity index 83% rename from Assets/Project/Source/Data/ActivePair.cs.meta rename to Assets/Project/Source/Types/ActivePair.cs.meta index 4f1aa0a5..f7186675 100644 --- a/Assets/Project/Source/Data/ActivePair.cs.meta +++ b/Assets/Project/Source/Types/ActivePair.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 69e59594a8abc464c8660b95b9903597 +guid: 8962360cd1f39f94db1218198a6e6b90 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Project/Source/Data/Bindings.meta b/Assets/Project/Source/Types/Bindings.meta similarity index 100% rename from Assets/Project/Source/Data/Bindings.meta rename to Assets/Project/Source/Types/Bindings.meta diff --git a/Assets/Project/Source/Data/Bindings/AbstractCollectionObserver.cs b/Assets/Project/Source/Types/Bindings/AbstractCollectionObserver.cs similarity index 77% rename from Assets/Project/Source/Data/Bindings/AbstractCollectionObserver.cs rename to Assets/Project/Source/Types/Bindings/AbstractCollectionObserver.cs index bad3251d..5ddaaddc 100644 --- a/Assets/Project/Source/Data/Bindings/AbstractCollectionObserver.cs +++ b/Assets/Project/Source/Types/Bindings/AbstractCollectionObserver.cs @@ -1,23 +1,23 @@ using UnityEngine; -namespace Exa.Bindings -{ - public abstract class AbstractCollectionObserver : MonoBehaviour, ICollectionObserver - { - private IObservableEnumerable source = null; +namespace Exa.Types.Binding { + public abstract class AbstractCollectionObserver : MonoBehaviour, ICollectionObserver { + private IObservableEnumerable source; public virtual IObservableEnumerable Source { get => source; set { // If the new source is the same, do nothing - if (source == value) + if (source == value) { return; + } // If there is already a source, unregister if (source != null) { // Unregistered if we are registered - if (source.Observers.Contains(this)) + if (source.Observers.Contains(this)) { source.Observers.Remove(this); + } source = null; } @@ -25,6 +25,7 @@ public virtual IObservableEnumerable Source { // if the new value is supposed to be null, clear views and return if (value == null) { OnClear(); + return; } @@ -35,15 +36,16 @@ public virtual IObservableEnumerable Source { // Clear views OnClear(); - foreach (var item in source) + foreach (var item in source) { OnAdd(item); + } } } public abstract void OnAdd(T value); - public abstract void OnClear(); - public abstract void OnRemove(T value); + + public abstract void OnClear(); } } \ No newline at end of file diff --git a/Assets/Project/Source/Data/Bindings/AbstractCollectionObserver.cs.meta b/Assets/Project/Source/Types/Bindings/AbstractCollectionObserver.cs.meta similarity index 100% rename from Assets/Project/Source/Data/Bindings/AbstractCollectionObserver.cs.meta rename to Assets/Project/Source/Types/Bindings/AbstractCollectionObserver.cs.meta diff --git a/Assets/Project/Source/Data/Bindings/CompositeObservableEnumerable.cs b/Assets/Project/Source/Types/Bindings/CompositeObservableEnumerable.cs similarity index 82% rename from Assets/Project/Source/Data/Bindings/CompositeObservableEnumerable.cs rename to Assets/Project/Source/Types/Bindings/CompositeObservableEnumerable.cs index 0e55d9cc..1fe01b76 100644 --- a/Assets/Project/Source/Data/Bindings/CompositeObservableEnumerable.cs +++ b/Assets/Project/Source/Types/Bindings/CompositeObservableEnumerable.cs @@ -3,37 +3,38 @@ using System.Collections.Generic; using System.Linq; -namespace Exa.Bindings -{ - public class CompositeObservableEnumerable : IObservableEnumerable, ICollectionObserver - { +namespace Exa.Types.Binding { + public class CompositeObservableEnumerable : IObservableEnumerable, ICollectionObserver { private readonly IObservableEnumerable[] children; - public List> Observers { get; } - - public IObservableEnumerable Source { - get => throw new InvalidOperationException("Getting source directly not supported"); - set => throw new InvalidOperationException("Setting source directly not supported"); - } - public CompositeObservableEnumerable(params IObservableEnumerable[] children) { this.children = children; Observers = new List>(); - foreach (var child in children) + foreach (var child in children) { child.Observers.Add(this); + } + } + + public IObservableEnumerable Source { + get => throw new InvalidOperationException("Getting source directly not supported"); + set => throw new InvalidOperationException("Setting source directly not supported"); } public void OnAdd(T value) { - foreach (var observer in Observers) + foreach (var observer in Observers) { observer.OnAdd(value); + } } public void OnRemove(T value) { - foreach (var observer in Observers) + foreach (var observer in Observers) { observer.OnRemove(value); + } } + public List> Observers { get; } + public IEnumerator GetEnumerator() { return children.SelectMany(elem => elem).GetEnumerator(); } diff --git a/Assets/Project/Source/Data/Bindings/CompositeObservableEnumerable.cs.meta b/Assets/Project/Source/Types/Bindings/CompositeObservableEnumerable.cs.meta similarity index 100% rename from Assets/Project/Source/Data/Bindings/CompositeObservableEnumerable.cs.meta rename to Assets/Project/Source/Types/Bindings/CompositeObservableEnumerable.cs.meta diff --git a/Assets/Project/Source/Types/Bindings/ICollectionObserver.cs b/Assets/Project/Source/Types/Bindings/ICollectionObserver.cs new file mode 100644 index 00000000..275ec2bc --- /dev/null +++ b/Assets/Project/Source/Types/Bindings/ICollectionObserver.cs @@ -0,0 +1,11 @@ +namespace Exa.Types.Binding { + /// + /// Interface to support sending push-based notification of changes in a collection + /// + /// Model type + public interface ICollectionObserver { + void OnAdd(T value); + + void OnRemove(T value); + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Data/Bindings/ICollectionObserver.cs.meta b/Assets/Project/Source/Types/Bindings/ICollectionObserver.cs.meta similarity index 100% rename from Assets/Project/Source/Data/Bindings/ICollectionObserver.cs.meta rename to Assets/Project/Source/Types/Bindings/ICollectionObserver.cs.meta diff --git a/Assets/Project/Source/Types/Bindings/IObservableEnumerable.cs b/Assets/Project/Source/Types/Bindings/IObservableEnumerable.cs new file mode 100644 index 00000000..b367398f --- /dev/null +++ b/Assets/Project/Source/Types/Bindings/IObservableEnumerable.cs @@ -0,0 +1,11 @@ +using System.Collections.Generic; + +namespace Exa.Types.Binding { + /// + /// Provides + /// + /// + public interface IObservableEnumerable : IEnumerable { + List> Observers { get; } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Data/Bindings/IObservableEnumerable.cs.meta b/Assets/Project/Source/Types/Bindings/IObservableEnumerable.cs.meta similarity index 100% rename from Assets/Project/Source/Data/Bindings/IObservableEnumerable.cs.meta rename to Assets/Project/Source/Types/Bindings/IObservableEnumerable.cs.meta diff --git a/Assets/Project/Source/Types/Bindings/IObverser.cs b/Assets/Project/Source/Types/Bindings/IObverser.cs new file mode 100644 index 00000000..27903b3c --- /dev/null +++ b/Assets/Project/Source/Types/Bindings/IObverser.cs @@ -0,0 +1,5 @@ +namespace Exa.Types.Binding { + public interface IObserver { + void OnUpdate(T data); + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Data/Bindings/IObverser.cs.meta b/Assets/Project/Source/Types/Bindings/IObverser.cs.meta similarity index 100% rename from Assets/Project/Source/Data/Bindings/IObverser.cs.meta rename to Assets/Project/Source/Types/Bindings/IObverser.cs.meta diff --git a/Assets/Project/Source/Types/Bindings/Observable.cs b/Assets/Project/Source/Types/Bindings/Observable.cs new file mode 100644 index 00000000..03128d16 --- /dev/null +++ b/Assets/Project/Source/Types/Bindings/Observable.cs @@ -0,0 +1,94 @@ +using System; +using System.Collections.Generic; +using Newtonsoft.Json; + +namespace Exa.Types.Binding { + /// + /// Wrapper that provides a model a way to notify views of changes + /// + /// + public class Observable : IEquatable> + where T : class { + [JsonIgnore] protected List> observers = new List>(); + + public Observable(T data) { + Data = data; + } + + public T Data { get; protected set; } + + public bool Equals(Observable other) { + if (other == null) { + return false; + } + + return Data.Equals(other.Data); + } + + public virtual void SetData(T data, bool notify = true) { + Data = data; + + if (notify) { + Notify(); + } + } + + public virtual void Notify() { + foreach (var observer in observers) { + observer.OnUpdate(Data); + } + } + + public virtual void Register(IObserver observer) { + if (observers.Contains(observer)) { + return; + } + + observers.Add(observer); + } + + public virtual void Unregister(IObserver observer) { + if (!observers.Contains(observer)) { + return; + } + + observers.Remove(observer); + } + + public override bool Equals(object obj) { + if (obj is Observable other) { + return Data.Equals(other.Data); + } + + return false; + } + + public static bool operator ==(Observable a, Observable b) { + if (ReferenceEquals(a, b)) { + return true; + } + + if (a is null) { + return false; + } + + if (b is null) { + return false; + } + + return a.Data.Equals(b.Data); + } + + public static bool operator !=(Observable a, Observable b) { + return !(a == b); + } + + public override int GetHashCode() { + return Data.GetHashCode(); + } + + public override string ToString() { + return Data.ToString(); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Data/Bindings/Observable.cs.meta b/Assets/Project/Source/Types/Bindings/Observable.cs.meta similarity index 100% rename from Assets/Project/Source/Data/Bindings/Observable.cs.meta rename to Assets/Project/Source/Types/Bindings/Observable.cs.meta diff --git a/Assets/Project/Source/Types/Bindings/ObservableCollection.cs b/Assets/Project/Source/Types/Bindings/ObservableCollection.cs new file mode 100644 index 00000000..cfa023e0 --- /dev/null +++ b/Assets/Project/Source/Types/Bindings/ObservableCollection.cs @@ -0,0 +1,104 @@ +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Exa.Types.Binding { + /// + /// Base class for virtual collection that notifies observers of model changes + /// + /// This is preferable to just an observable> because it only needs to refresh views that are changed + /// + /// + /// + [Serializable] + public class ObservableCollection : IObservableEnumerable, ICollection { + private List collection; + + public ObservableCollection() { + collection = new List(); + } + + public ObservableCollection(List collection) { + this.collection = collection; + } + + public int Count { + get => collection.Count; + } + + public bool IsReadOnly { + get => false; + } + + public virtual void Add(T item) { + collection.Add(item); + + foreach (var observer in Observers) { + observer.OnAdd(item); + } + } + + public virtual void Clear() { + collection.Clear(); + + foreach (var observer in Observers) + foreach (var item in this) { + observer.OnRemove(item); + } + } + + public virtual bool Contains(T item) { + return collection.Contains(item); + } + + public virtual void CopyTo(T[] array, int arrayIndex) { + collection.CopyTo(array, arrayIndex); + } + + public virtual bool Remove(T item) { + var removed = collection.Remove(item); + + if (removed) { + foreach (var observer in Observers) { + observer.OnRemove(item); + } + } + + return removed; + } + + public List> Observers { get; } = new List>(); + + public virtual IEnumerator GetEnumerator() { + return collection.GetEnumerator(); + } + + IEnumerator IEnumerable.GetEnumerator() { + return collection.GetEnumerator(); + } + + /// + /// Add an observer to the observer collection + /// + /// + public virtual void Register(ICollectionObserver observer) { + if (Observers.Contains(observer)) { + return; + } + + Observers.Add(observer); + } + + /// + /// Remove an observer from the observer collection + /// + /// + public virtual void Unregister(ICollectionObserver observer) { + if (!Observers.Contains(observer)) { + return; + } + + Observers.Remove(observer); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Data/Bindings/ObservableCollection.cs.meta b/Assets/Project/Source/Types/Bindings/ObservableCollection.cs.meta similarity index 100% rename from Assets/Project/Source/Data/Bindings/ObservableCollection.cs.meta rename to Assets/Project/Source/Types/Bindings/ObservableCollection.cs.meta diff --git a/Assets/Project/Source/Types/Bindings/ViewBinder.cs b/Assets/Project/Source/Types/Bindings/ViewBinder.cs new file mode 100644 index 00000000..5d0857a3 --- /dev/null +++ b/Assets/Project/Source/Types/Bindings/ViewBinder.cs @@ -0,0 +1,71 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace Exa.Types.Binding { + /// + /// Controls views for a collection of models + /// + /// Handles instantiating views, binding model observables to their corresponding views, and deleting views + /// + /// + /// View type, must be an observer of + /// Model observable type + /// Model type + public class ViewBinder : AbstractCollectionObserver + where TView : MonoBehaviour, IObserver + where TContainer : Observable + where TModel : class { + [SerializeField] protected Transform viewContainer; + [SerializeField] protected GameObject viewPrefab; + + protected Dictionary views = new Dictionary(); + + /// + /// Add observable + /// + /// + public override void OnAdd(TContainer value) { + CreateView(value, viewContainer); + } + + /// + /// Add Observable with specified view container + /// + /// + /// + protected virtual TView CreateView(TContainer value, Transform container) { + var blockObject = Instantiate(viewPrefab, container); + var view = blockObject.GetComponent(); + view.OnUpdate(value.Data); + value.Register(view); + views.Add(value, view); + + return view; + } + + /// + /// Clear views + /// + public override void OnClear() { + foreach (var key in views.Keys) { + OnRemove(key); + } + + views = new Dictionary(); + } + + /// + /// Remove view + /// + /// + public override void OnRemove(TContainer value) { + var view = views[value]; + value.Unregister(view); + Destroy(view.gameObject); + } + + public TView GetView(TContainer container) { + return views[container]; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Types/Bindings/ViewBinder.cs.meta b/Assets/Project/Source/Types/Bindings/ViewBinder.cs.meta new file mode 100644 index 00000000..db01413c --- /dev/null +++ b/Assets/Project/Source/Types/Bindings/ViewBinder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c0f76f86a205f46459433f902600fdd2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Types/ContextfulException.cs b/Assets/Project/Source/Types/ContextfulException.cs new file mode 100644 index 00000000..1c556e0a --- /dev/null +++ b/Assets/Project/Source/Types/ContextfulException.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Exa.Utils; + +namespace Exa.Types { + public class ContextfulException { + private readonly Exception innerException; + private readonly Dictionary context; + + public ContextfulException(Exception innerException) { + this.innerException = innerException; + context = new Dictionary(); + } + + public void Add(string key, object value) { + context.Add(key, value); + } + + public override string ToString() { + var sb = new StringBuilder(); + + foreach (var (key, value) in context.Unpack()) { + sb.AppendLine($"{key}={value}"); + } + + sb.AppendLine(innerException.ToString()); + + return sb.ToString(); + } + } + + public static class ContextfulExceptionExtensions { + public static ContextfulException Context(this Exception exception) { + return new ContextfulException(exception); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Types/ContextfulException.cs.meta b/Assets/Project/Source/Types/ContextfulException.cs.meta new file mode 100644 index 00000000..a5990597 --- /dev/null +++ b/Assets/Project/Source/Types/ContextfulException.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: fb446d28232049f282befc751be92a98 +timeCreated: 1629398211 \ No newline at end of file diff --git a/Assets/Project/Source/Data.meta b/Assets/Project/Source/Types/Data.meta similarity index 100% rename from Assets/Project/Source/Data.meta rename to Assets/Project/Source/Types/Data.meta diff --git a/Assets/Project/Source/Types/Data/ISettings.cs b/Assets/Project/Source/Types/Data/ISettings.cs new file mode 100644 index 00000000..bec5ce73 --- /dev/null +++ b/Assets/Project/Source/Types/Data/ISettings.cs @@ -0,0 +1,9 @@ +namespace Exa.Data { + public interface ISettings { + void Load(); + + void Save(); + + void Apply(); + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Data/ISettings.cs.meta b/Assets/Project/Source/Types/Data/ISettings.cs.meta similarity index 100% rename from Assets/Project/Source/Data/ISettings.cs.meta rename to Assets/Project/Source/Types/Data/ISettings.cs.meta diff --git a/Assets/Project/Source/Types/Data/SaveableSettings.cs b/Assets/Project/Source/Types/Data/SaveableSettings.cs new file mode 100644 index 00000000..380749e4 --- /dev/null +++ b/Assets/Project/Source/Types/Data/SaveableSettings.cs @@ -0,0 +1,48 @@ +using System; +using System.IO; +using Exa.IO; + +namespace Exa.Data { + /// + /// Provides base functionality for a settings object that is serialized and stored in the data directory + /// + /// + public abstract class SaveableSettings : ISettings + where T : class, IEquatable { + /// + /// Default setting values + /// + public abstract T DefaultValues { get; } + + /// + /// Current setting values + /// + public T Values { get; set; } + + protected abstract string Key { get; } + + /// + /// Applies the current values to the client + /// + public abstract void Apply(); + + public virtual void Save() { + var path = Tree.Root.Settings.CombineWith($"{Key}.json"); + IOUtils.ToJsonPath(Values, path, SerializationMode.Settings); + } + + public virtual void Load() { + var path = Tree.Root.Settings.CombineWith($"{Key}.json"); + + Values = File.Exists(path) + ? DeserializeValues(path) ?? DefaultValues + : DefaultValues; + } + + public abstract T Clone(); + + protected virtual T DeserializeValues(string path) { + return IOUtils.FromJsonPath(path, SerializationMode.Settings); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Data/SaveableSettings.cs.meta b/Assets/Project/Source/Types/Data/SaveableSettings.cs.meta similarity index 100% rename from Assets/Project/Source/Data/SaveableSettings.cs.meta rename to Assets/Project/Source/Types/Data/SaveableSettings.cs.meta diff --git a/Assets/Project/Source/Types/Data/SettingsManager.cs b/Assets/Project/Source/Types/Data/SettingsManager.cs new file mode 100644 index 00000000..bcbfbcd4 --- /dev/null +++ b/Assets/Project/Source/Types/Data/SettingsManager.cs @@ -0,0 +1,22 @@ +using Exa.UI.Settings; +using UnityEngine; + +namespace Exa.Data { + public class SettingsManager : MonoBehaviour { + [SerializeField] private VideoSettingsPanel videoSettings; + [SerializeField] private AudioSettingsPanel audioSettings; + + public ExaVideoSettings VideoSettings { + get => videoSettings.Container; + } + + public ExaAudioSettings AudioSettings { + get => audioSettings.Container; + } + + public void Load() { + videoSettings.Init(); + audioSettings.Init(); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Data/SettingsManager.cs.meta b/Assets/Project/Source/Types/Data/SettingsManager.cs.meta similarity index 100% rename from Assets/Project/Source/Data/SettingsManager.cs.meta rename to Assets/Project/Source/Types/Data/SettingsManager.cs.meta diff --git a/Assets/Project/Source/Types/DefaultDict.cs b/Assets/Project/Source/Types/DefaultDict.cs new file mode 100644 index 00000000..104ca262 --- /dev/null +++ b/Assets/Project/Source/Types/DefaultDict.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using Exa.Utils; + +namespace Exa.Types { + public class DefaultDict : Dictionary { + private readonly Func factory; + + public DefaultDict(Func factory) { + this.factory = factory; + } + + public new TValue this[TKey key] { + get { + if (!ContainsKey(key)) { + Add(key, value: factory(key)); + } + + return base[key]; + } + set => base[key] = value; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Types/DefaultDict.cs.meta b/Assets/Project/Source/Types/DefaultDict.cs.meta new file mode 100644 index 00000000..8bbb0ee4 --- /dev/null +++ b/Assets/Project/Source/Types/DefaultDict.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e8d651bebdb192f4f8003dd83b2b8027 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Generics.meta b/Assets/Project/Source/Types/Generics.meta similarity index 100% rename from Assets/Project/Source/Generics.meta rename to Assets/Project/Source/Types/Generics.meta diff --git a/Assets/Project/Source/Generics/Builders.meta b/Assets/Project/Source/Types/Generics/Builders.meta similarity index 100% rename from Assets/Project/Source/Generics/Builders.meta rename to Assets/Project/Source/Types/Generics/Builders.meta diff --git a/Assets/Project/Source/Types/Generics/Builders/BuilderException.cs b/Assets/Project/Source/Types/Generics/Builders/BuilderException.cs new file mode 100644 index 00000000..5b68d50f --- /dev/null +++ b/Assets/Project/Source/Types/Generics/Builders/BuilderException.cs @@ -0,0 +1,8 @@ +using System; + +namespace Exa.Generics { + public class BuilderException : Exception { + public BuilderException(string message) + : base(message) { } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Generics/Builders/BuilderException.cs.meta b/Assets/Project/Source/Types/Generics/Builders/BuilderException.cs.meta similarity index 100% rename from Assets/Project/Source/Generics/Builders/BuilderException.cs.meta rename to Assets/Project/Source/Types/Generics/Builders/BuilderException.cs.meta diff --git a/Assets/Project/Source/Types/Generics/Builders/IBuilder.cs b/Assets/Project/Source/Types/Generics/Builders/IBuilder.cs new file mode 100644 index 00000000..5005dca7 --- /dev/null +++ b/Assets/Project/Source/Types/Generics/Builders/IBuilder.cs @@ -0,0 +1,5 @@ +namespace Exa.Generics { + public interface IBuilder { + T Build(); + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Generics/Builders/IBuilder.cs.meta b/Assets/Project/Source/Types/Generics/Builders/IBuilder.cs.meta similarity index 100% rename from Assets/Project/Source/Generics/Builders/IBuilder.cs.meta rename to Assets/Project/Source/Types/Generics/Builders/IBuilder.cs.meta diff --git a/Assets/Project/Source/Types/Generics/IKeySelector.cs b/Assets/Project/Source/Types/Generics/IKeySelector.cs new file mode 100644 index 00000000..3e1034f0 --- /dev/null +++ b/Assets/Project/Source/Types/Generics/IKeySelector.cs @@ -0,0 +1,9 @@ +namespace Exa.Types.Generics { + /// + /// Supports an object that provides a key that may change + /// + /// + public interface IKeySelector { + T Key { get; } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Generics/IKeySelector.cs.meta b/Assets/Project/Source/Types/Generics/IKeySelector.cs.meta similarity index 100% rename from Assets/Project/Source/Generics/IKeySelector.cs.meta rename to Assets/Project/Source/Types/Generics/IKeySelector.cs.meta diff --git a/Assets/Project/Source/Types/Generics/IValueOverride.cs b/Assets/Project/Source/Types/Generics/IValueOverride.cs new file mode 100644 index 00000000..daec6362 --- /dev/null +++ b/Assets/Project/Source/Types/Generics/IValueOverride.cs @@ -0,0 +1,5 @@ +namespace Exa.Types.Generics { + public interface IValueOverride { + public T Value { get; } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Types/Generics/IValueOverride.cs.meta b/Assets/Project/Source/Types/Generics/IValueOverride.cs.meta new file mode 100644 index 00000000..457b7fe2 --- /dev/null +++ b/Assets/Project/Source/Types/Generics/IValueOverride.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7050c805e8f77b342ac3be89504ae093 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Types/Generics/LabeledValue.cs b/Assets/Project/Source/Types/Generics/LabeledValue.cs new file mode 100644 index 00000000..b8bedea9 --- /dev/null +++ b/Assets/Project/Source/Types/Generics/LabeledValue.cs @@ -0,0 +1,30 @@ +using System; +using Exa.UI.Tooltips; +using UnityEngine; + +namespace Exa.Types.Generics { + public struct LabeledValue : ILabeledValue, IEquatable>, ITooltipComponent { + public string Label { get; set; } + public T Value { get; set; } + + public LabeledValue(string label, T value) { + Label = label; + Value = value; + } + + public bool Equals(LabeledValue other) { + return + Label.Equals(other.Label) && + Value.Equals(other.Value); + } + + public TooltipComponentView InstantiateComponentView(Transform parent) { + return S.UI.Tooltips.tooltipGenerator.GenerateTooltipProperty(parent, this); + } + } + + public interface ILabeledValue { + string Label { get; } + T Value { get; } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Generics/LabeledValue.cs.meta b/Assets/Project/Source/Types/Generics/LabeledValue.cs.meta similarity index 100% rename from Assets/Project/Source/Generics/LabeledValue.cs.meta rename to Assets/Project/Source/Types/Generics/LabeledValue.cs.meta diff --git a/Assets/Project/Source/Types/Generics/LazyCache.cs b/Assets/Project/Source/Types/Generics/LazyCache.cs new file mode 100644 index 00000000..1f73de53 --- /dev/null +++ b/Assets/Project/Source/Types/Generics/LazyCache.cs @@ -0,0 +1,44 @@ +using System; + +namespace Exa.Types.Generics { + /// + /// Supports a value with lazy initialization that can be invalidated + /// + /// + public class LazyCache { + protected T value; + protected Func valueFactory; + protected bool valueUpdated; + + public LazyCache(Func valueFactory) { + this.valueFactory = valueFactory; + } + + public T Value { + get { + // If value is not up to date, create it and set the flag + if (!valueUpdated) { + value = valueFactory(); + valueUpdated = true; + } + + return value; + } + } + + /// + /// Invalidate a value so it needs to be recalculated next time it's requested + /// + public void Invalidate() { + valueUpdated = false; + } + + public static implicit operator T(LazyCache cache) { + if (cache == null) { + throw new ArgumentNullException(nameof(cache)); + } + + return cache.Value; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Generics/LazyCache.cs.meta b/Assets/Project/Source/Types/Generics/LazyCache.cs.meta similarity index 100% rename from Assets/Project/Source/Generics/LazyCache.cs.meta rename to Assets/Project/Source/Types/Generics/LazyCache.cs.meta diff --git a/Assets/Project/Source/Types/Generics/MinMax.cs b/Assets/Project/Source/Types/Generics/MinMax.cs new file mode 100644 index 00000000..49931145 --- /dev/null +++ b/Assets/Project/Source/Types/Generics/MinMax.cs @@ -0,0 +1,39 @@ +using System; +using UnityEngine; + +namespace Exa.Types.Generics { + [Serializable] + public struct MinMax { + public T min; + public T max; + + public MinMax(T min, T max) { + this.min = min; + this.max = max; + } + + public static MinMax ZeroOne { + get => new MinMax(0f, 1f); + } + + public (T, T) AsTuple() { + return (min, max); + } + + public override string ToString() { + return $"({min})-({max})"; + } + } + + public static class MinMaxHelpers { + public static float Evaluate(this MinMax minMax, float t) { + var diff = minMax.max - minMax.min; + + return minMax.min + diff * t; + } + + public static float Clamp(this MinMax minMax, float value) { + return Mathf.Clamp(value, minMax.min, minMax.max); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Generics/MinMax.cs.meta b/Assets/Project/Source/Types/Generics/MinMax.cs.meta similarity index 100% rename from Assets/Project/Source/Generics/MinMax.cs.meta rename to Assets/Project/Source/Types/Generics/MinMax.cs.meta diff --git a/Assets/Project/Source/Types/Generics/MonoOverride.cs b/Assets/Project/Source/Types/Generics/MonoOverride.cs new file mode 100644 index 00000000..75e91c4e --- /dev/null +++ b/Assets/Project/Source/Types/Generics/MonoOverride.cs @@ -0,0 +1,21 @@ +using UnityEngine; + +namespace Exa.Types.Generics { + public abstract class MonoOverride : MonoBehaviour, IValueOverride { + [SerializeField] protected T value; + + protected virtual void OnEnable() { + GetPath().Add(this); + } + + protected virtual void OnDisable() { + GetPath().Remove(this); + } + + public T Value { + get => value; + } + + protected abstract OverrideList GetPath(); + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Types/Generics/MonoOverride.cs.meta b/Assets/Project/Source/Types/Generics/MonoOverride.cs.meta new file mode 100644 index 00000000..38470e69 --- /dev/null +++ b/Assets/Project/Source/Types/Generics/MonoOverride.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dcf9668de5f1ca34391e166a45c964a4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Types/Generics/ObservableDictionary.cs b/Assets/Project/Source/Types/Generics/ObservableDictionary.cs new file mode 100644 index 00000000..fcc5f738 --- /dev/null +++ b/Assets/Project/Source/Types/Generics/ObservableDictionary.cs @@ -0,0 +1,44 @@ +using System.Collections.Generic; +using Exa.Types.Binding; + +namespace Exa.Types.Generics { + // NOTE: Poor lookup time, don't use for large datasets + public class ObservableDictionary : ObservableCollection + where TValue : IKeySelector { + private readonly IEqualityComparer comparer; + + public ObservableDictionary(IEqualityComparer comparer) { + this.comparer = comparer; + } + + public TValue this[TKey key] { + get { + foreach (var item in this) { + if (comparer.Equals(key, KeySelector(item))) { + return item; + } + } + + throw new KeyNotFoundException(); + } + } + + public bool ContainsKey(TKey key) { + foreach (var item in this) { + if (comparer.Equals(key, KeySelector(item))) { + return true; + } + } + + return false; + } + + public override bool Contains(TValue item) { + return ContainsKey(KeySelector(item)); + } + + protected virtual TKey KeySelector(TValue value) { + return value.Key; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Generics/ObservableDictionary.cs.meta b/Assets/Project/Source/Types/Generics/ObservableDictionary.cs.meta similarity index 100% rename from Assets/Project/Source/Generics/ObservableDictionary.cs.meta rename to Assets/Project/Source/Types/Generics/ObservableDictionary.cs.meta diff --git a/Assets/Project/Source/Types/Generics/OverrideList.cs b/Assets/Project/Source/Types/Generics/OverrideList.cs new file mode 100644 index 00000000..937a2185 --- /dev/null +++ b/Assets/Project/Source/Types/Generics/OverrideList.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; + +namespace Exa.Types.Generics { + public class OverrideList : IEnumerable> { + protected readonly Action onValueChange; + protected T defaultValue; + protected List> overrides = new List>(); + + public OverrideList(T defaultValue, Action onValueChange) { + this.defaultValue = defaultValue; + this.onValueChange = onValueChange; + } + + public IEnumerator> GetEnumerator() { + return overrides.GetEnumerator(); + } + + IEnumerator IEnumerable.GetEnumerator() { + return GetEnumerator(); + } + + public virtual void Add(IValueOverride valueOverride) { + overrides.Add(valueOverride); + onValueChange(SelectValue()); + } + + public virtual void Remove(IValueOverride valueOverride) { + overrides.Remove(valueOverride); + onValueChange(SelectValue()); + } + + protected virtual T SelectValue() { + return overrides.Count == 0 + ? defaultValue + : overrides.Last().Value; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Generics/OverrideList.cs.meta b/Assets/Project/Source/Types/Generics/OverrideList.cs.meta similarity index 100% rename from Assets/Project/Source/Generics/OverrideList.cs.meta rename to Assets/Project/Source/Types/Generics/OverrideList.cs.meta diff --git a/Assets/Project/Source/Types/Generics/ScriptableObjectBag.cs b/Assets/Project/Source/Types/Generics/ScriptableObjectBag.cs new file mode 100644 index 00000000..c4aee36f --- /dev/null +++ b/Assets/Project/Source/Types/Generics/ScriptableObjectBag.cs @@ -0,0 +1,43 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; + +namespace Exa.Types.Generics { + public class ScriptableObjectBag : ScriptableObjectBagBase, IEnumerable + where T : ScriptableObject { + [SerializeField] protected List objects = new List(); + + public virtual IEnumerator GetEnumerator() { + return objects.GetEnumerator(); + } + + IEnumerator IEnumerable.GetEnumerator() { + return objects.GetEnumerator(); + } + + public override void FindObjects() { + objects = new List(GetAllInstances()); + } + + protected virtual IEnumerable GetAllInstances() { + #if UNITY_EDITOR + foreach (var guid in QueryGUIDs()) { + var path = AssetDatabase.GUIDToAssetPath(guid); + + yield return AssetDatabase.LoadAssetAtPath(path); + } + #else + throw new System.Exception("Cannot get instances in runtime"); + #endif + } + + protected virtual string[] QueryGUIDs() { + #if UNITY_EDITOR + return AssetDatabase.FindAssets("t:" + typeof(T).Name); + #else + throw new System.Exception("Cannot QueryGUIDs in runtime"); + #endif + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Generics/ScriptableObjectBag.cs.meta b/Assets/Project/Source/Types/Generics/ScriptableObjectBag.cs.meta similarity index 100% rename from Assets/Project/Source/Generics/ScriptableObjectBag.cs.meta rename to Assets/Project/Source/Types/Generics/ScriptableObjectBag.cs.meta diff --git a/Assets/Project/Source/Types/Generics/SerializableDictionary.cs b/Assets/Project/Source/Types/Generics/SerializableDictionary.cs new file mode 100644 index 00000000..61a5159b --- /dev/null +++ b/Assets/Project/Source/Types/Generics/SerializableDictionary.cs @@ -0,0 +1,170 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; + +namespace Exa.Types.Generics { + public class SerializableDictionary { } + + [Serializable] + public class SerializableDictionary : SerializableDictionary, ISerializationCallbackReceiver, IDictionary { + [SerializeField] + private List list = new List(); + + [Serializable] + public struct SerializableKeyValuePair { + public TKey key; + public TValue value; + + public SerializableKeyValuePair(TKey key, TValue value) { + this.key = key; + this.value = value; + } + + public void SetValue(TValue value) { + this.value = value; + } + } + + private Dictionary KeyPositions { + get => keyPositions.Value; + } + + private Lazy> keyPositions; + + public SerializableDictionary() { + keyPositions = new Lazy>(MakeKeyPositions); + } + + private Dictionary MakeKeyPositions() { + var numEntries = list.Count; + var result = new Dictionary(numEntries); + + for (var i = 0; i < numEntries; i++) { + result[list[i].key] = (uint) i; + } + + return result; + } + + public void OnBeforeSerialize() { } + + public void OnAfterDeserialize() { + // After deserialization, the key positions might be changed + keyPositions = new Lazy>(MakeKeyPositions); + } + + #region IDictionary + + public TValue this[TKey key] { + get => list[(int) KeyPositions[key]].value; + set { + if (KeyPositions.TryGetValue(key, out uint index)) { + list[(int) index].SetValue(value); + } else { + KeyPositions[key] = (uint) list.Count; + list.Add(new SerializableKeyValuePair(key, value)); + } + } + } + + public ICollection Keys { + get => list.Select(tuple => tuple.key).ToArray(); + } + + public ICollection Values { + get => list.Select(tuple => tuple.value).ToArray(); + } + + public void Add(TKey key, TValue value) { + if (KeyPositions.ContainsKey(key)) { + throw new ArgumentException("An element with the same key already exists in the dictionary."); + } + + KeyPositions[key] = (uint) list.Count; + list.Add(new SerializableKeyValuePair(key, value)); + } + + public bool ContainsKey(TKey key) => KeyPositions.ContainsKey(key); + + public bool Remove(TKey key) { + if (KeyPositions.TryGetValue(key, out uint index)) { + var kp = KeyPositions; + kp.Remove(key); + + var numEntries = list.Count; + + list.RemoveAt((int) index); + + for (uint i = index; i < numEntries; i++) { + kp[list[(int) i].key] = i; + } + + return true; + } + + return false; + } + + public bool TryGetValue(TKey key, out TValue value) { + if (KeyPositions.TryGetValue(key, out uint index)) { + value = list[(int) index].value; + + return true; + } + + value = default; + + return false; + } + + #endregion + + #region ICollection > + + public int Count { + get => list.Count; + } + + public bool IsReadOnly { + get => false; + } + + public void Add(KeyValuePair kvp) => Add(kvp.Key, kvp.Value); + + public void Clear() => list.Clear(); + + public bool Contains(KeyValuePair kvp) => KeyPositions.ContainsKey(kvp.Key); + + public void CopyTo(KeyValuePair[] array, int arrayIndex) { + var numKeys = list.Count; + + if (array.Length - arrayIndex < numKeys) { + throw new ArgumentException("arrayIndex"); + } + + for (var i = 0; i < numKeys; i++, arrayIndex++) { + var entry = list[i]; + array[arrayIndex] = new KeyValuePair(entry.key, entry.value); + } + } + + public bool Remove(KeyValuePair kvp) => Remove(kvp.Key); + + #endregion + + #region IEnumerable > + + public IEnumerator> GetEnumerator() { + return list.Select(ToKeyValuePair).GetEnumerator(); + + KeyValuePair ToKeyValuePair(SerializableKeyValuePair skvp) { + return new KeyValuePair(skvp.key, skvp.value); + } + } + + IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); + #endregion + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Types/Generics/SerializableDictionary.cs.meta b/Assets/Project/Source/Types/Generics/SerializableDictionary.cs.meta new file mode 100644 index 00000000..2bb08955 --- /dev/null +++ b/Assets/Project/Source/Types/Generics/SerializableDictionary.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 20f9cedcfc554ff1b85e5c1de2cfbe07 +timeCreated: 1630492908 \ No newline at end of file diff --git a/Assets/Project/Source/Types/Generics/ValueOverride.cs b/Assets/Project/Source/Types/Generics/ValueOverride.cs new file mode 100644 index 00000000..32be34e3 --- /dev/null +++ b/Assets/Project/Source/Types/Generics/ValueOverride.cs @@ -0,0 +1,18 @@ +using System; +using UnityEngine; + +namespace Exa.Types.Generics { + [Serializable] + public class ValueOverride : IValueOverride { + [SerializeField] private T value; + + public ValueOverride(T value) { + this.value = value; + } + + public T Value { + get => value; + set => this.value = value; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Generics/ValueOverride.cs.meta b/Assets/Project/Source/Types/Generics/ValueOverride.cs.meta similarity index 100% rename from Assets/Project/Source/Generics/ValueOverride.cs.meta rename to Assets/Project/Source/Types/Generics/ValueOverride.cs.meta diff --git a/Assets/Project/Source/Generics/MarkerContainer.cs b/Assets/Project/Source/Types/MarkerContainer.cs similarity index 84% rename from Assets/Project/Source/Generics/MarkerContainer.cs rename to Assets/Project/Source/Types/MarkerContainer.cs index 791493d4..d1f9ae03 100644 --- a/Assets/Project/Source/Generics/MarkerContainer.cs +++ b/Assets/Project/Source/Types/MarkerContainer.cs @@ -1,11 +1,9 @@ using System; -namespace Exa.Generics -{ - public class MarkerContainer - { +namespace Exa.Types { + public class MarkerContainer { + private readonly Action onChangeContainsItem; private int count; - private Action onChangeContainsItem; public MarkerContainer(Action onChangeContainsItem) { this.onChangeContainsItem = onChangeContainsItem; diff --git a/Assets/Project/Source/Generics/MarkerContainer.cs.meta b/Assets/Project/Source/Types/MarkerContainer.cs.meta similarity index 100% rename from Assets/Project/Source/Generics/MarkerContainer.cs.meta rename to Assets/Project/Source/Types/MarkerContainer.cs.meta diff --git a/Assets/Project/Source/Types/Scalar.cs b/Assets/Project/Source/Types/Scalar.cs new file mode 100644 index 00000000..cddd4c47 --- /dev/null +++ b/Assets/Project/Source/Types/Scalar.cs @@ -0,0 +1,59 @@ +using System; +using UnityEngine; + +namespace Exa.Data { + [Serializable] + public struct Scalar : IFormattable { + [SerializeField] private float scalar; + + public Scalar(float value) { + if (value < 0f || value > 1f) { + throw new ArgumentOutOfRangeException(nameof(value), $"value {value} must be between 0 and 1"); + } + + scalar = value; + } + + public string ToString(string format, IFormatProvider formatProvider) { + return scalar.ToString(format, formatProvider); + } + + public float GetValue(float real) { + return real * scalar; + } + + public Vector2 GetValue(Vector2 real) { + return real * scalar; + } + + public static implicit operator Scalar(float a) { + return new Scalar(a); + } + + public static implicit operator float(Scalar a) { + return a.scalar; + } + + #region Operators + public static bool operator >(Scalar a, Scalar b) { + return a.scalar > b.scalar; + } + + public static bool operator <(Scalar a, Scalar b) { + return a.scalar < b.scalar; + } + + public static Scalar operator -(Scalar a, Scalar b) { + return new Scalar(a.scalar - b.scalar); + } + + public static Scalar operator +(Scalar a, Scalar b) { + return new Scalar(a.scalar + b.scalar); + } + #endregion + + public override string ToString() { + return scalar.ToString(); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Data/Scalar.cs.meta b/Assets/Project/Source/Types/Scalar.cs.meta similarity index 83% rename from Assets/Project/Source/Data/Scalar.cs.meta rename to Assets/Project/Source/Types/Scalar.cs.meta index 99c526ae..7e8afd8a 100644 --- a/Assets/Project/Source/Data/Scalar.cs.meta +++ b/Assets/Project/Source/Types/Scalar.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: e1f5e98de0aa75b47921ebeb68d19697 +guid: b40497030eca4e742937f9127b1dff3d MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Project/Source/Types/ScriptableObjectBagBase.cs b/Assets/Project/Source/Types/ScriptableObjectBagBase.cs new file mode 100644 index 00000000..ae703b45 --- /dev/null +++ b/Assets/Project/Source/Types/ScriptableObjectBagBase.cs @@ -0,0 +1,7 @@ +using UnityEngine; + +namespace Exa.Types { + public abstract class ScriptableObjectBagBase : ScriptableObject { + public abstract void FindObjects(); + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Types/ScriptableObjectBagBase.cs.meta b/Assets/Project/Source/Types/ScriptableObjectBagBase.cs.meta new file mode 100644 index 00000000..c0951961 --- /dev/null +++ b/Assets/Project/Source/Types/ScriptableObjectBagBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 44609584a92425448a09c3f735975fb1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/UI/Components/UIAnimateable.meta b/Assets/Project/Source/UI/Components/Animations.meta similarity index 100% rename from Assets/Project/Source/UI/Components/UIAnimateable.meta rename to Assets/Project/Source/UI/Components/Animations.meta diff --git a/Assets/Project/Source/UI/Components/Animations/ElementTracker.cs b/Assets/Project/Source/UI/Components/Animations/ElementTracker.cs new file mode 100644 index 00000000..b3634b6a --- /dev/null +++ b/Assets/Project/Source/UI/Components/Animations/ElementTracker.cs @@ -0,0 +1,71 @@ +using System; +using DG.Tweening; +using Exa.Utils; +using UnityEngine; +using UnityEngine.UI; + +[Flags] +public enum AnimationMode { + Height = 1 << 0, + Width = 1 << 1, + Both = Height | Width +} + +public class ElementTracker : MonoBehaviour { + [SerializeField] private LayoutElement layoutElement; + [SerializeField] private RectTransform targetRect; + [SerializeField] private float duration = 0.5f; + [SerializeField] private AnimationMode animationMode = AnimationMode.Both; + + private Tween currentAnimation; + + private Vector2 targetSize { + get => targetRect.rect.size; + } + + public void TrackOnce() { + TrackOnce(true); + } + + public void TrackOnce(bool animate) { + (animate ? (Action) Animate : SetSize)(targetSize); + } + + public void Hide() { + Animate(Vector2.zero); + } + + private void SetSize(Vector2 size) { + currentAnimation?.Kill(); + + switch (animationMode) { + case AnimationMode.Both: + layoutElement.SetPreferredSize(size); + + break; + case AnimationMode.Height: + layoutElement.preferredHeight = size.x; + + break; + case AnimationMode.Width: + layoutElement.preferredWidth = size.y; + + break; + default: + throw new ArgumentOutOfRangeException(); + } + } + + private void Animate(Vector2 size) { + SelectTween(size).Replace(ref currentAnimation); + } + + private Tween SelectTween(Vector2 size) { + return animationMode switch { + AnimationMode.Both => layoutElement.DOPreferredSize(size, duration), + AnimationMode.Height => layoutElement.DOPreferredHeight(size.y, duration), + AnimationMode.Width => layoutElement.DOPreferredWidth(size.x, duration), + _ => throw new ArgumentOutOfRangeException() + }; + } +} \ No newline at end of file diff --git a/Assets/Project/Source/UI/Components/Animations/ElementTracker.cs.meta b/Assets/Project/Source/UI/Components/Animations/ElementTracker.cs.meta new file mode 100644 index 00000000..a17dff18 --- /dev/null +++ b/Assets/Project/Source/UI/Components/Animations/ElementTracker.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3601d10cf046df54c84cfa2c41681337 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/UI/Components/UIAnimateable/UIAnimateable.Medium.preset b/Assets/Project/Source/UI/Components/Animations/UIAnimateable.Medium.preset similarity index 100% rename from Assets/Project/Source/UI/Components/UIAnimateable/UIAnimateable.Medium.preset rename to Assets/Project/Source/UI/Components/Animations/UIAnimateable.Medium.preset diff --git a/Assets/Project/Source/UI/Components/UIAnimateable/UIAnimateable.Medium.preset.meta b/Assets/Project/Source/UI/Components/Animations/UIAnimateable.Medium.preset.meta similarity index 100% rename from Assets/Project/Source/UI/Components/UIAnimateable/UIAnimateable.Medium.preset.meta rename to Assets/Project/Source/UI/Components/Animations/UIAnimateable.Medium.preset.meta diff --git a/Assets/Project/Source/UI/Components/Animations/UIAnimateable.cs b/Assets/Project/Source/UI/Components/Animations/UIAnimateable.cs new file mode 100644 index 00000000..31b64a23 --- /dev/null +++ b/Assets/Project/Source/UI/Components/Animations/UIAnimateable.cs @@ -0,0 +1,115 @@ +using System.Collections; +using DG.Tweening; +using Exa.Math; +using Exa.Utils; +using UnityEngine; + +namespace Exa.UI.Components { + public enum AnimationDirection { + none = 0, + top = 1, + left = 2, + bottom = 3, + right = 4 + } + + [RequireComponent(typeof(RectTransform))] + [RequireComponent(typeof(CanvasGroup))] + [DisallowMultipleComponent] + public class UIAnimateable : MonoBehaviour { + public float msLocalAnimationOffset; + + // movement animation + public AnimationDirection movementDirection = AnimationDirection.none; + + public float movementSmoothDamp = 0.1f; + public float movementMagnitude = 20f; + + // Alpha animation + public bool animateAlpha; + + public float alphaSpeed = 8f; + + private Tween alphaTween; + + private CanvasGroup canvasGroup; + + private Vector2 elementVelocity = Vector2.zero; + private float originalAlpha; + private Vector2 originalPos; + private RectTransform rect; + + private void Awake() { + canvasGroup = GetComponent(); + rect = GetComponent(); + } + + private void OnEnable() { + originalAlpha = canvasGroup.alpha; + + if (animateAlpha) { + canvasGroup.alpha = 0f; + + canvasGroup.DOFade(1, 1 / alphaSpeed) + .SetDelay(msLocalAnimationOffset / 1000) + .Replace(ref alphaTween); + } + + if (movementDirection == AnimationDirection.none) { + return; + } + + originalPos = rect.anchoredPosition; + + // Create a vector that points upwards and rotate it by the animation direction + // This is used as an offset from the original rect position + var offset = new Vector2(0, movementMagnitude).Rotate(movementDirection.GetRotation()); + + rect.anchoredPosition = originalPos + offset; + + StartDelayedCoroutine(msLocalAnimationOffset / 1000f, SlideIn(originalPos)); + } + + private void OnDisable() { + SkipAnimations(); + } + + private void SkipAnimations() { + StopAllCoroutines(); + alphaTween?.Kill(); + + canvasGroup.alpha = originalAlpha; + + if (movementDirection == AnimationDirection.none) { + return; + } + + rect.anchoredPosition = originalPos; + } + + private IEnumerator SlideIn(Vector2 towards) { + while (rect.anchoredPosition != towards) { + rect.anchoredPosition = Vector2.SmoothDamp( + rect.anchoredPosition, + towards, + ref elementVelocity, + movementSmoothDamp + ); + + yield return null; + } + } + + private void StartDelayedCoroutine(float seconds, IEnumerator routine) { + StartCoroutine(DelayCoroutine(seconds, routine)); + } + + private IEnumerator DelayCoroutine(float seconds, IEnumerator routine) { + if (seconds != 0f) { + yield return new WaitForSeconds(seconds); + } + + StartCoroutine(routine); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/UI/Components/UIAnimateable/UIAnimateable.cs.meta b/Assets/Project/Source/UI/Components/Animations/UIAnimateable.cs.meta similarity index 100% rename from Assets/Project/Source/UI/Components/UIAnimateable/UIAnimateable.cs.meta rename to Assets/Project/Source/UI/Components/Animations/UIAnimateable.cs.meta diff --git a/Assets/Project/Source/UI/Components/UIAnimateable/UIAnimateable.fast.preset b/Assets/Project/Source/UI/Components/Animations/UIAnimateable.fast.preset similarity index 100% rename from Assets/Project/Source/UI/Components/UIAnimateable/UIAnimateable.fast.preset rename to Assets/Project/Source/UI/Components/Animations/UIAnimateable.fast.preset diff --git a/Assets/Project/Source/UI/Components/UIAnimateable/UIAnimateable.fast.preset.meta b/Assets/Project/Source/UI/Components/Animations/UIAnimateable.fast.preset.meta similarity index 100% rename from Assets/Project/Source/UI/Components/UIAnimateable/UIAnimateable.fast.preset.meta rename to Assets/Project/Source/UI/Components/Animations/UIAnimateable.fast.preset.meta diff --git a/Assets/Project/Source/UI/Components/Animations/UIAnimateableHelper.cs b/Assets/Project/Source/UI/Components/Animations/UIAnimateableHelper.cs new file mode 100644 index 00000000..401d3541 --- /dev/null +++ b/Assets/Project/Source/UI/Components/Animations/UIAnimateableHelper.cs @@ -0,0 +1,7 @@ +namespace Exa.UI.Components { + public static class UIAnimateableHelper { + public static int GetRotation(this AnimationDirection animationDirection) { + return (int) animationDirection - 1; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/UI/Components/UIAnimateable/UIAnimateableHelper.cs.meta b/Assets/Project/Source/UI/Components/Animations/UIAnimateableHelper.cs.meta similarity index 100% rename from Assets/Project/Source/UI/Components/UIAnimateable/UIAnimateableHelper.cs.meta rename to Assets/Project/Source/UI/Components/Animations/UIAnimateableHelper.cs.meta diff --git a/Assets/Project/Source/UI/Components/Border.cs b/Assets/Project/Source/UI/Components/Border.cs index 8da8c0e8..e9216482 100644 --- a/Assets/Project/Source/UI/Components/Border.cs +++ b/Assets/Project/Source/UI/Components/Border.cs @@ -6,15 +6,13 @@ #pragma warning disable CS0649 -namespace Exa.UI.Components -{ - public class Border : MonoBehaviour - { - [Header("References")] +namespace Exa.UI.Components { + public class Border : MonoBehaviour { + [Header("References")] [SerializeField] private CanvasGroup canvasGroup; [SerializeField] private Image image; - [Header("Settings")] + [Header("Settings")] [SerializeField] private ActivePair imageAlpha = new ActivePair(1f, 0f); [SerializeField] private float animTime = 0.1f; @@ -27,6 +25,7 @@ public Color Color { public void Show() { gameObject.SetActive(true); + canvasGroup.DOFade(imageAlpha.active, animTime) .Replace(ref alphaTween); } @@ -38,8 +37,11 @@ public void Hide() { } public void SetVisibility(bool value) { - if (value) Show(); - else Hide(); + if (value) { + Show(); + } else { + Hide(); + } } } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/Components/CameraHelper.cs b/Assets/Project/Source/UI/Components/CameraHelper.cs index 874840b4..2ff84891 100644 --- a/Assets/Project/Source/UI/Components/CameraHelper.cs +++ b/Assets/Project/Source/UI/Components/CameraHelper.cs @@ -2,15 +2,13 @@ #pragma warning disable CS0649 -namespace Exa.UI.Components -{ - public class CameraHelper : MonoBehaviour - { +namespace Exa.UI.Components { + public class CameraHelper : MonoBehaviour { [SerializeField] private Canvas canvas; [SerializeField] private float planeDistance; private void Awake() { - canvas.worldCamera = Camera.main; + canvas.worldCamera = S.CameraController.Camera; canvas.planeDistance = planeDistance; } } diff --git a/Assets/Project/Source/UI/Components/ExpandableItem/ExpandableItem.cs b/Assets/Project/Source/UI/Components/ExpandableItem/ExpandableItem.cs index b3e186aa..b40b53fd 100644 --- a/Assets/Project/Source/UI/Components/ExpandableItem/ExpandableItem.cs +++ b/Assets/Project/Source/UI/Components/ExpandableItem/ExpandableItem.cs @@ -4,18 +4,27 @@ #pragma warning disable CS0649 -namespace Exa.UI.Components -{ - public class ExpandableItem : MonoBehaviour - { +namespace Exa.UI.Components { + public class ExpandableItem : MonoBehaviour { + [SerializeField] private Transform content; [SerializeField] private Button button; [SerializeField] private Image shrinkExpandImage; [SerializeField] private Text headerText; [SerializeField] private UIFlip arrowFlip; - [Space] - [SerializeField] private bool contentActive = false; + [Space] + [SerializeField] private bool expanded; - public Transform content; + public Transform Content { + get => content; + } + + public bool Expanded { + get => expanded; + set { + expanded = value; + ReflectExpanded(); + } + } public string HeaderText { set => headerText.text = value; @@ -23,17 +32,16 @@ public string HeaderText { private void Awake() { button.onClick.AddListener(OnClick); - ReflectActive(); + ReflectExpanded(); } private void OnClick() { - contentActive = !contentActive; - ReflectActive(); + Expanded = !Expanded; } - private void ReflectActive() { - content.gameObject.SetActive(contentActive); - arrowFlip.vertical = contentActive; + private void ReflectExpanded() { + content.gameObject.SetActive(Expanded); + arrowFlip.vertical = Expanded; } } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/Components/ExtendedInputField.cs b/Assets/Project/Source/UI/Components/ExtendedInputField.cs index 6519c9a0..c8e1b652 100644 --- a/Assets/Project/Source/UI/Components/ExtendedInputField.cs +++ b/Assets/Project/Source/UI/Components/ExtendedInputField.cs @@ -1,18 +1,16 @@ using UnityEngine.EventSystems; using UnityEngine.UI; -namespace Exa.UI.Components -{ - public class ExtendedInputField : InputField - { +namespace Exa.UI.Components { + public class ExtendedInputField : InputField { public override void OnSelect(BaseEventData eventData) { base.OnSelect(eventData); - Systems.Input.inputIsCaptured = true; + S.Input.inputIsCaptured = true; } public override void OnDeselect(BaseEventData eventData) { base.OnDeselect(eventData); - Systems.Input.inputIsCaptured = false; + S.Input.inputIsCaptured = false; } } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/Components/FlexibleLayoutGroup.cs b/Assets/Project/Source/UI/Components/FlexibleLayoutGroup.cs index 3ad1603b..6e0117b0 100644 --- a/Assets/Project/Source/UI/Components/FlexibleLayoutGroup.cs +++ b/Assets/Project/Source/UI/Components/FlexibleLayoutGroup.cs @@ -1,12 +1,9 @@ using UnityEngine; using UnityEngine.UI; -namespace Exa.UI.Components -{ - public class FlexibleLayoutGroup : LayoutGroup - { - public enum FitType - { +namespace Exa.UI.Components { + public class FlexibleLayoutGroup : LayoutGroup { + public enum FitType { Uniform, Width, Height, @@ -26,21 +23,17 @@ public enum FitType public override void CalculateLayoutInputHorizontal() { base.CalculateLayoutInputHorizontal(); - if (fitType == FitType.Width - || fitType == FitType.Height - || fitType == FitType.Uniform) { + if (fitType == FitType.Width || fitType == FitType.Height || fitType == FitType.Uniform) { var sqrRt = Mathf.Sqrt(transform.childCount); rows = Mathf.CeilToInt(sqrRt); columns = Mathf.CeilToInt(sqrRt); } - if (fitType == FitType.Width - || fitType == FitType.FixedColumns) { + if (fitType == FitType.Width || fitType == FitType.FixedColumns) { rows = Mathf.CeilToInt(transform.childCount / (float) columns); } - if (fitType == FitType.Height - || fitType == FitType.FixedRows) { + if (fitType == FitType.Height || fitType == FitType.FixedRows) { columns = Mathf.CeilToInt(transform.childCount / (float) rows); } @@ -48,28 +41,22 @@ public override void CalculateLayoutInputHorizontal() { var parentHeight = rectTransform.rect.height; var cellWidth = - parentWidth / (float) columns - - spacing.x / (float) columns * 2f - - padding.left / (float) columns - - padding.right / (float) columns; + parentWidth / columns - spacing.x / columns * 2f - padding.left / (float) columns - padding.right / (float) columns; var cellHeight = - parentHeight / (float) rows - - spacing.y / (float) rows * 2f - - padding.top / (float) rows - - padding.bottom / (float) rows; + parentHeight / rows - spacing.y / rows * 2f - padding.top / (float) rows - padding.bottom / (float) rows; cellSize.x = fitX ? cellWidth : cellSize.x; cellSize.y = fitY ? cellHeight : cellSize.y; - for (int i = 0; i < rectChildren.Count; i++) { + for (var i = 0; i < rectChildren.Count; i++) { var rowCount = i / columns; var columnCount = i % columns; var item = rectChildren[i]; - var xPos = (cellSize.x * columnCount) + (spacing.x * columnCount) + padding.left; - var yPos = (cellSize.y * rowCount) + (spacing.y * rowCount) + padding.top; + var xPos = cellSize.x * columnCount + spacing.x * columnCount + padding.left; + var yPos = cellSize.y * rowCount + spacing.y * rowCount + padding.top; SetChildAlongAxis(item, 0, xPos, cellSize.x); SetChildAlongAxis(item, 1, yPos, cellSize.y); diff --git a/Assets/Project/Source/UI/Components/Hoverable.cs b/Assets/Project/Source/UI/Components/Hoverable.cs index 7ba2ffa2..c1a24d7a 100644 --- a/Assets/Project/Source/UI/Components/Hoverable.cs +++ b/Assets/Project/Source/UI/Components/Hoverable.cs @@ -1,30 +1,27 @@ -using Exa.Generics; +using Exa.Types.Generics; +using Exa.UI.Cursor; using UnityEngine; using UnityEngine.Events; using UnityEngine.EventSystems; -namespace Exa.UI -{ +namespace Exa.UI { [RequireComponent(typeof(RectTransform))] [RequireComponent(typeof(CanvasGroup))] - public class Hoverable : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler - { + public class Hoverable : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler { public UnityEvent onPointerEnter = new UnityEvent(); public UnityEvent onPointerExit = new UnityEvent(); - public bool invokeStateChangeOnHover; public ValueOverride cursorOverride; + public bool checkMouseInsideRectOnEnable = true; + private CanvasGroup canvasGroup; - [SerializeField] private bool checkMouseInsideRectOnEnable = true; private RectTransform rectTransform; - private CanvasGroup canvasGroup; - private bool mouseOverControl = false; private bool InvokeStateChange { get => invokeStateChangeOnHover && canvasGroup.interactable; } - public bool MouseOverControl => mouseOverControl; + public bool MouseOverControl { get; private set; } private void Awake() { rectTransform = GetComponent(); @@ -32,8 +29,9 @@ private void Awake() { } private void OnEnable() { - if (checkMouseInsideRectOnEnable) + if (checkMouseInsideRectOnEnable) { CheckMouseInsideRect(); + } } private void OnDisable() { @@ -49,14 +47,16 @@ public void OnPointerExit(PointerEventData eventData) { } public void ForceExit() { - if (!mouseOverControl) + if (!MouseOverControl) { return; + } - mouseOverControl = false; + MouseOverControl = false; onPointerExit?.Invoke(); - if (InvokeStateChange) + if (InvokeStateChange) { OnExit(); + } } public void Refresh() { @@ -64,40 +64,49 @@ public void Refresh() { } private void TryEnter() { - if (mouseOverControl) return; + if (MouseOverControl) { + return; + } - mouseOverControl = true; + MouseOverControl = true; onPointerEnter?.Invoke(); - if (InvokeStateChange) + if (InvokeStateChange) { OnEnter(); + } } private void TryExit() { - if (!mouseOverControl) return; + if (!MouseOverControl) { + return; + } - mouseOverControl = false; + MouseOverControl = false; onPointerExit?.Invoke(); - if (InvokeStateChange) + if (InvokeStateChange) { OnExit(); + } } private void CheckMouseInsideRect(bool exit = false) { - if (mouseOverControl && !exit) return; + if (MouseOverControl && !exit) { + return; + } - if (Systems.Input.GetMouseInsideRect(rectTransform)) + if (S.Input.GetMouseInsideRect(rectTransform)) { TryEnter(); - else if (exit) + } else if (exit) { TryExit(); + } } private void OnEnter() { - Systems.UI.mouseCursor.stateManager.Add(cursorOverride); + S.UI.MouseCursor.stateManager.Add(cursorOverride); } private void OnExit() { - Systems.UI.mouseCursor.stateManager.Remove(cursorOverride); + S.UI.MouseCursor.stateManager.Remove(cursorOverride); } } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/Components/IUIGroup.cs b/Assets/Project/Source/UI/Components/IUIGroup.cs index a0f72d6f..7a657ebc 100644 --- a/Assets/Project/Source/UI/Components/IUIGroup.cs +++ b/Assets/Project/Source/UI/Components/IUIGroup.cs @@ -1,7 +1,5 @@ -namespace Exa.UI -{ - public interface IUIGroup - { +namespace Exa.UI { + public interface IUIGroup { bool Interactable { get; set; } } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/Components/InteractableAdapter.cs b/Assets/Project/Source/UI/Components/InteractableAdapter.cs index 96d55464..770098e2 100644 --- a/Assets/Project/Source/UI/Components/InteractableAdapter.cs +++ b/Assets/Project/Source/UI/Components/InteractableAdapter.cs @@ -2,33 +2,36 @@ #pragma warning disable CS0649 -namespace Exa.UI -{ +namespace Exa.UI { [RequireComponent(typeof(CanvasGroup))] - public class InteractableAdapter : MonoBehaviour, IUIGroup - { + public class InteractableAdapter : MonoBehaviour, IUIGroup { [SerializeField] private CanvasGroup canvasGroup; [SerializeField] private bool setAlpha; [SerializeField] private bool interactable = true; + private void Awake() { + Interactable = interactable; + canvasGroup = GetComponent(); + } + public bool Interactable { get => interactable; set { - if (interactable == value) return; + if (interactable == value) { + return; + } interactable = value; if (canvasGroup != null) { canvasGroup.blocksRaycasts = value; canvasGroup.interactable = value; - if (setAlpha) canvasGroup.alpha = value ? 1f : 0.5f; + + if (setAlpha) { + canvasGroup.alpha = value ? 1f : 0.5f; + } } } } - - private void Awake() { - Interactable = interactable; - canvasGroup = GetComponent(); - } } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/Components/LayoutGroupContext.cs b/Assets/Project/Source/UI/Components/LayoutGroupContext.cs index 76a1036c..ca38e4e3 100644 --- a/Assets/Project/Source/UI/Components/LayoutGroupContext.cs +++ b/Assets/Project/Source/UI/Components/LayoutGroupContext.cs @@ -1,15 +1,13 @@ -using Exa.Utils; -using System.Linq; +using System.Linq; +using Exa.Utils; using UnityEngine; using UnityEngine.UI; -namespace Exa.UI.Components -{ +namespace Exa.UI.Components { /// - /// Sets the ignore layout property to true on the given layout element when there are no children on the transform + /// Sets the ignore layout property to true on the given layout element when there are no children on the transform /// - public class LayoutGroupContext : MonoBehaviour - { + public class LayoutGroupContext : MonoBehaviour { public LayoutElement layoutElement; public void UpdateActiveSelf() { diff --git a/Assets/Project/Source/UI/Components/Navigateable/INavigateable.cs b/Assets/Project/Source/UI/Components/Navigateable/INavigateable.cs index ae9d7955..4de0fb88 100644 --- a/Assets/Project/Source/UI/Components/Navigateable/INavigateable.cs +++ b/Assets/Project/Source/UI/Components/Navigateable/INavigateable.cs @@ -1,7 +1,5 @@ -namespace Exa.UI.Components -{ - public interface INavigateable - { +namespace Exa.UI.Components { + public interface INavigateable { void OnExit(); void OnNavigate(INavigateable navigateable); diff --git a/Assets/Project/Source/UI/Components/Navigateable/Navigateable.cs b/Assets/Project/Source/UI/Components/Navigateable/Navigateable.cs index 620d8f36..c510e13f 100644 --- a/Assets/Project/Source/UI/Components/Navigateable/Navigateable.cs +++ b/Assets/Project/Source/UI/Components/Navigateable/Navigateable.cs @@ -1,16 +1,13 @@ using UnityEngine; -namespace Exa.UI.Components -{ - public class NavigationArgs - { +namespace Exa.UI.Components { + public class NavigationArgs { public Navigateable current; public bool isReturning; } // TODO: Add a manager that implements a command pattern to store user Navigation actions - public class Navigateable : MonoBehaviour, IUIGroup - { + public class Navigateable : MonoBehaviour, IUIGroup { public bool Interactable { get; set; } = true; public virtual void HandleExit(Navigateable target) { @@ -23,9 +20,13 @@ public virtual void HandleEnter(NavigationArgs args) { public virtual void NavigateTo(Navigateable target, NavigationArgs args = null) { HandleExit(target); - target.HandleEnter(args ?? new NavigationArgs { - current = this - }); + + target.HandleEnter( + args ?? + new NavigationArgs { + current = this + } + ); } } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/Components/Navigateable/NavigateableTabButton.cs b/Assets/Project/Source/UI/Components/Navigateable/NavigateableTabButton.cs index bacd54e2..924a06d1 100644 --- a/Assets/Project/Source/UI/Components/Navigateable/NavigateableTabButton.cs +++ b/Assets/Project/Source/UI/Components/Navigateable/NavigateableTabButton.cs @@ -8,10 +8,8 @@ #pragma warning disable CS0649 -namespace Exa.UI.Components -{ - public class NavigateableTabButton : Navigateable - { +namespace Exa.UI.Components { + public class NavigateableTabButton : Navigateable { public int order; [Header("References")] @@ -20,26 +18,30 @@ public class NavigateableTabButton : Navigateable [SerializeField] private Image image; [SerializeField] private AnimatedTabContent content; - [Header("Settings")] + [Header("Settings")] [SerializeField] private float duration; [SerializeField] private ActivePair animArgs; + private Tween fontTween; + private Tween imageTween; private Tween rectTween; - private Tween imageTween; - private Tween fontTween; public override void HandleExit(Navigateable target) { - content.HandleExit(target is NavigateableTabButton button - ? Vector2.left * (button.order > order).To1() - : Vector2.zero); + content.HandleExit( + target is NavigateableTabButton button + ? Vector2.right * (button.order > order).To1() + : Vector2.zero + ); Animate(animArgs.inactive); } public override void HandleEnter(NavigationArgs args) { - content.HandleEnter(args?.current is NavigateableTabButton button - ? Vector2.right * (button.order > order).To1() - : Vector2.zero); + content.HandleEnter( + args?.current is NavigateableTabButton button + ? Vector2.left * (button.order > order).To1() + : Vector2.zero + ); Animate(animArgs.active); } @@ -47,15 +49,16 @@ public override void HandleEnter(NavigationArgs args) { private void Animate(AnimationArgs args) { self.DOSizeDelta(self.sizeDelta.SetY(args.height), duration) .Replace(ref rectTween); + image.DOColor(args.color, duration) .Replace(ref imageTween); + text.DOFontSize(args.fontSize, duration) .Replace(ref fontTween); } [Serializable] - private struct AnimationArgs - { + private struct AnimationArgs { public Color color; public float height; public int fontSize; diff --git a/Assets/Project/Source/UI/Components/Navigateable/ReturnNavigateable.cs b/Assets/Project/Source/UI/Components/Navigateable/ReturnNavigateable.cs index 1d5c3c88..b67dc27f 100644 --- a/Assets/Project/Source/UI/Components/Navigateable/ReturnNavigateable.cs +++ b/Assets/Project/Source/UI/Components/Navigateable/ReturnNavigateable.cs @@ -7,50 +7,56 @@ #pragma warning disable CS0649 -namespace Exa.UI.Components -{ - public class ReturnNavigateable : Navigateable, IReturnNavigateableActions - { - public GameControls gameControls; - +namespace Exa.UI.Components { + public class ReturnNavigateable : Navigateable, IReturnNavigateableActions { + [SerializeField] private Sound menuTransitionOut; [SerializeField] private GlobalAudioPlayerProxy audioPlayer; - private Navigateable returnTarget = null; + private GameControls gameControls; + private Navigateable returnTarget; protected virtual void Awake() { gameControls = new GameControls(); gameControls.ReturnNavigateable.SetCallbacks(this); } - public override void HandleEnter(NavigationArgs args) { - if (!args.isReturning) { - returnTarget = args.current; - } - - base.HandleEnter(args); + protected virtual void OnEnable() { + gameControls.Enable(); } - protected virtual void Return(bool force = false) { - if (!Interactable && !force) return; - - audioPlayer.Play("UI_SFX_MenuTransitionOut"); - NavigateTo(returnTarget, new NavigationArgs { - current = this, - isReturning = true - }); + protected virtual void OnDisable() { + gameControls.Disable(); } public void OnReturn(CallbackContext context) { - if (context.phase != InputActionPhase.Started) return; + if (context.phase != InputActionPhase.Started) { + return; + } Return(); } - protected virtual void OnEnable() { - gameControls.Enable(); + public override void HandleEnter(NavigationArgs args) { + if (!args.isReturning) { + returnTarget = args.current; + } + + base.HandleEnter(args); } - protected virtual void OnDisable() { - gameControls.Disable(); + public virtual void Return(bool force = false) { + if (!Interactable && !force) { + return; + } + + audioPlayer.Play(menuTransitionOut); + + NavigateTo( + returnTarget, + new NavigationArgs { + current = this, + isReturning = true + } + ); } } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/Components/ProgressBar.cs b/Assets/Project/Source/UI/Components/ProgressBar.cs new file mode 100644 index 00000000..465d56df --- /dev/null +++ b/Assets/Project/Source/UI/Components/ProgressBar.cs @@ -0,0 +1,12 @@ +using System; +using UnityEngine; + +namespace Exa.UI.Components { + public class ProgressBar : MonoBehaviour, IProgress { + [SerializeField] private RectTransform barTransform; + + public void Report(float value) { + barTransform.localScale = new Vector2(value, 1); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/UI/Components/ProgressBar.cs.meta b/Assets/Project/Source/UI/Components/ProgressBar.cs.meta new file mode 100644 index 00000000..706c193e --- /dev/null +++ b/Assets/Project/Source/UI/Components/ProgressBar.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8737b87fbfe189e47b37336b45dbdc1b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/UI/Components/SkewedImage.cs b/Assets/Project/Source/UI/Components/SkewedImage.cs deleted file mode 100644 index fff62dd5..00000000 --- a/Assets/Project/Source/UI/Components/SkewedImage.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; -using UnityEngine.UI; - -#pragma warning disable CS0649 - -namespace Exa.UI -{ - public class SkewedImage : Image - { - public float skewX; - public float skewY; - - protected override void OnPopulateMesh(VertexHelper vh) - { - base.OnPopulateMesh(vh); - var r = GetPixelAdjustedRect(); - var v = new Vector4(r.x, r.y, r.x + r.width, r.y + r.height); - Color32 color32 = color; - vh.Clear(); - vh.AddVert(new Vector3(v.x - skewX, v.y - skewY), color32, new Vector2(0f, 0f)); - vh.AddVert(new Vector3(v.x + skewX, v.w - skewY), color32, new Vector2(0f, 1f)); - vh.AddVert(new Vector3(v.z + skewX, v.w + skewY), color32, new Vector2(1f, 1f)); - vh.AddVert(new Vector3(v.z - skewX, v.y + skewY), color32, new Vector2(1f, 0f)); - vh.AddTriangle(0, 1, 2); - vh.AddTriangle(2, 3, 0); - } - } -} - diff --git a/Assets/Project/Source/UI/Components/SkewedImage.cs.meta b/Assets/Project/Source/UI/Components/SkewedImage.cs.meta deleted file mode 100644 index c3b6325d..00000000 --- a/Assets/Project/Source/UI/Components/SkewedImage.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 39a376d3e897ed845a3a7c208560675b -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/UI/Components/SkewedImage.meta b/Assets/Project/Source/UI/Components/SkewedImage.meta new file mode 100644 index 00000000..6bc8d0e4 --- /dev/null +++ b/Assets/Project/Source/UI/Components/SkewedImage.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 68e309dfd17e4ffeaa25da25872ac7ce +timeCreated: 1613424053 \ No newline at end of file diff --git a/Assets/Project/Source/UI/Components/SkewedImage/AngleSkewedImage.cs b/Assets/Project/Source/UI/Components/SkewedImage/AngleSkewedImage.cs new file mode 100644 index 00000000..e55f5d28 --- /dev/null +++ b/Assets/Project/Source/UI/Components/SkewedImage/AngleSkewedImage.cs @@ -0,0 +1,33 @@ +using Exa.Math; +using UnityEngine; + +namespace Exa.UI { + public class AngleSkewedImage : PixelSkewedImage { + private Vector2? pixelSkew; + + private void Update() { + if (transform.hasChanged) { + transform.hasChanged = false; + + InvalidatePixels(); + } + } + + public void InvalidatePixels() { + pixelSkew = null; + } + + protected override Vector2 GetPixelSkew() { + return pixelSkew ??= RecalculatePixels(); + } + + private Vector2 RecalculatePixels() { + var r = GetPixelAdjustedRect(); + + return new Vector2 { + x = new Vector2(0, r.height / 2).Rotate(-skew.x).x, + y = new Vector2(r.width / 2, 0).Rotate(-skew.y).y + }; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/UI/Components/SkewedImage/AngleSkewedImage.cs.meta b/Assets/Project/Source/UI/Components/SkewedImage/AngleSkewedImage.cs.meta new file mode 100644 index 00000000..3248702f --- /dev/null +++ b/Assets/Project/Source/UI/Components/SkewedImage/AngleSkewedImage.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 5d06e1cd33074c5daca1981ae29d4034 +timeCreated: 1613423823 \ No newline at end of file diff --git a/Assets/Project/Source/UI/Components/SkewedImage/PixelSkewedImage.cs b/Assets/Project/Source/UI/Components/SkewedImage/PixelSkewedImage.cs new file mode 100644 index 00000000..2172e05b --- /dev/null +++ b/Assets/Project/Source/UI/Components/SkewedImage/PixelSkewedImage.cs @@ -0,0 +1,26 @@ +using UnityEngine; +using UnityEngine.UI; + +namespace Exa.UI { + public class PixelSkewedImage : Image { + public Vector2 skew; + + protected override void OnPopulateMesh(VertexHelper vh) { + base.OnPopulateMesh(vh); + var r = GetPixelAdjustedRect(); + var v = new Vector4(r.x, r.y, r.x + r.width, r.y + r.height); + vh.Clear(); + var skew = GetPixelSkew(); + vh.AddVert(new Vector3(v.x - skew.x, v.y - skew.y), color, Vector2.zero); + vh.AddVert(new Vector3(v.x + skew.x, v.w - skew.y), color, Vector2.up); + vh.AddVert(new Vector3(v.z + skew.x, v.w + skew.y), color, Vector2.one); + vh.AddVert(new Vector3(v.z - skew.x, v.y + skew.y), color, Vector2.right); + vh.AddTriangle(0, 1, 2); + vh.AddTriangle(2, 3, 0); + } + + protected virtual Vector2 GetPixelSkew() { + return skew; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/UI/Components/SkewedImage/PixelSkewedImage.cs.meta b/Assets/Project/Source/UI/Components/SkewedImage/PixelSkewedImage.cs.meta new file mode 100644 index 00000000..6b7cbc29 --- /dev/null +++ b/Assets/Project/Source/UI/Components/SkewedImage/PixelSkewedImage.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 04847869393f43a78271bc94361db0ab +timeCreated: 1613424068 \ No newline at end of file diff --git a/Assets/Project/Source/UI/Components/Tabs/AnimatedTabContent.cs b/Assets/Project/Source/UI/Components/Tabs/AnimatedTabContent.cs index 5d677190..7a97fbcc 100644 --- a/Assets/Project/Source/UI/Components/Tabs/AnimatedTabContent.cs +++ b/Assets/Project/Source/UI/Components/Tabs/AnimatedTabContent.cs @@ -6,14 +6,12 @@ #pragma warning disable CS0649 -namespace Exa.UI.Components -{ - public class AnimatedTabContent : MonoBehaviour - { +namespace Exa.UI.Components { + public class AnimatedTabContent : MonoBehaviour { [SerializeField] private RectTransform rectTransform; [SerializeField] private CanvasGroup canvasGroup; - [Header("Settings")] + [Header("Settings")] [SerializeField] private float duration = 0.25f; [SerializeField] private ActivePair animArgs; @@ -38,14 +36,14 @@ protected virtual void Animate(AnimationArgs args, Vector2 initialPos, Vector2 t .Replace(ref alphaTween); rectTransform.anchoredPosition = initialPos; + rectTransform.DOAnchorPos(targetPos, duration) .SetEase(args.ease) .Replace(ref positionTween); } [Serializable] - public struct AnimationArgs - { + public struct AnimationArgs { public float targetAlpha; public float animAmplitude; public Ease ease; diff --git a/Assets/Project/Source/UI/Components/Tabs/NavigateableTabManager.cs b/Assets/Project/Source/UI/Components/Tabs/NavigateableTabManager.cs index 2a1df96f..f2f6cc4c 100644 --- a/Assets/Project/Source/UI/Components/Tabs/NavigateableTabManager.cs +++ b/Assets/Project/Source/UI/Components/Tabs/NavigateableTabManager.cs @@ -2,34 +2,37 @@ #pragma warning disable CS0649 -namespace Exa.UI.Components -{ +namespace Exa.UI.Components { // TODO: Hide tooltip when not hovering over a tab button - public class NavigateableTabManager : MonoBehaviour - { + public class NavigateableTabManager : MonoBehaviour { [SerializeField] private Navigateable defaultTab; - private Navigateable activeTab; - public Navigateable ActiveTab => activeTab; + public Navigateable ActiveTab { get; private set; } private void Start() { - if (defaultTab != null) + if (defaultTab != null) { SetDefaultActive(defaultTab); + } } public void SetDefaultActive(Navigateable tab) { - activeTab = tab; - activeTab.HandleEnter(null); + ActiveTab = tab; + ActiveTab.HandleEnter(null); } public void SwitchTo(Navigateable newTab) { - if (newTab == activeTab) return; - - activeTab.NavigateTo(newTab, new NavigationArgs { - current = activeTab - }); - - activeTab = newTab; + if (newTab == ActiveTab) { + return; + } + + ActiveTab.NavigateTo( + newTab, + new NavigationArgs { + current = ActiveTab + } + ); + + ActiveTab = newTab; } } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/Components/Tabs/SettingsTab.cs b/Assets/Project/Source/UI/Components/Tabs/SettingsTab.cs index e8008239..3c4c9b08 100644 --- a/Assets/Project/Source/UI/Components/Tabs/SettingsTab.cs +++ b/Assets/Project/Source/UI/Components/Tabs/SettingsTab.cs @@ -1,9 +1,7 @@ using UnityEngine; -namespace Exa.UI.Components -{ - public class SettingsTab : MonoBehaviour - { +namespace Exa.UI.Components { + public class SettingsTab : MonoBehaviour { public string tabName; } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/Components/TextAnimator.cs b/Assets/Project/Source/UI/Components/TextAnimator.cs index 0cec3145..0e10590b 100644 --- a/Assets/Project/Source/UI/Components/TextAnimator.cs +++ b/Assets/Project/Source/UI/Components/TextAnimator.cs @@ -7,17 +7,15 @@ #pragma warning disable CS0649 -namespace Exa.UI -{ - public class TextAnimator : MonoBehaviour - { +namespace Exa.UI { + public class TextAnimator : MonoBehaviour { [SerializeField] private float charTime; [SerializeField] private Text text; [SerializeField] private bool animateOnEnable = true; - [SerializeField] private float animateOnEnableDelay = 0f; + [SerializeField] private float animateOnEnableDelay; + private bool animating; private float startTime; private SignificantCharStringReader stringReader; - private bool animating; public float CharTime { get => charTime; @@ -28,22 +26,10 @@ private void Awake() { text = text ?? GetComponent(); } - public void OnEnable() { - if (!animateOnEnable) return; - - var enumerator = EnumeratorUtils.Delay(() => AnimateTo(text.text), animateOnEnableDelay); - StartCoroutine(enumerator); - } - - public void AnimateTo(string str) { - text.text = ""; - animating = true; - startTime = Time.time; - stringReader = new SignificantCharStringReader(str); - } - public void Update() { - if (!animating) return; + if (!animating) { + return; + } var timeSinceStart = Time.time - startTime; var charIndex = Mathf.FloorToInt(timeSinceStart / charTime); @@ -54,29 +40,44 @@ public void Update() { if (targetString == stringReader.Str) { text.text = stringReader.Str; animating = false; + return; } text.text = (targetString + StringExtensions.GetRandomChar()).PadRight(stringReader.Str.Length); - } - catch (IndexOutOfRangeException) { + } catch (IndexOutOfRangeException) { text.text = stringReader.Str; animating = false; } } - public class SignificantCharStringReader - { - public int SignificantSize { get; private set; } - public string Str { get; private set; } - private Dictionary indices; + public void OnEnable() { + if (!animateOnEnable) { + return; + } + var enumerator = EnumeratorUtils.Delay(() => AnimateTo(text.text), animateOnEnableDelay); + StartCoroutine(enumerator); + } + + public void AnimateTo(string str) { + text.text = ""; + animating = true; + startTime = Time.time; + stringReader = new SignificantCharStringReader(str); + } + + public class SignificantCharStringReader { + private Dictionary indices; public SignificantCharStringReader(string str) { - this.Str = str; + Str = str; BuildIndices(); } + public int SignificantSize { get; private set; } + public string Str { get; } + public string GetStringToSignificantIndex(int index) { if (index < 0 || index >= SignificantSize) { throw new IndexOutOfRangeException(); @@ -95,9 +96,13 @@ public string GetStringToSignificantIndex(int index) { private void BuildIndices() { indices = new Dictionary(Str.Length); var significantIndex = 0; + for (var i = 0; i < Str.Length; i++) { var currentChar = Str[i]; - if (currentChar == ' ' || currentChar == '\t') continue; + + if (currentChar == ' ' || currentChar == '\t') { + continue; + } indices[significantIndex] = i; significantIndex++; diff --git a/Assets/Project/Source/UI/Components/TextColorLerper.cs b/Assets/Project/Source/UI/Components/TextColorLerper.cs index 0910bb20..b6f275e5 100644 --- a/Assets/Project/Source/UI/Components/TextColorLerper.cs +++ b/Assets/Project/Source/UI/Components/TextColorLerper.cs @@ -6,10 +6,8 @@ #pragma warning disable CS0649 -namespace Exa.UI.Components -{ - public class TextColorLerper : MonoBehaviour - { +namespace Exa.UI.Components { + public class TextColorLerper : MonoBehaviour { [SerializeField] private Text text; [SerializeField] private ActivePair color; diff --git a/Assets/Project/Source/UI/Components/UIAnimateable/UIAnimateable.cs b/Assets/Project/Source/UI/Components/UIAnimateable/UIAnimateable.cs deleted file mode 100644 index 45f76445..00000000 --- a/Assets/Project/Source/UI/Components/UIAnimateable/UIAnimateable.cs +++ /dev/null @@ -1,125 +0,0 @@ -using Exa.Math; -using System.Collections; -using UnityEngine; - -namespace Exa.UI.Components -{ - public enum AnimationDirection - { - none = 0, - top = 1, - left = 2, - bottom = 3, - right = 4, - } - - [RequireComponent(typeof(RectTransform))] - [RequireComponent(typeof(CanvasGroup))] - [DisallowMultipleComponent] - public class UIAnimateable : MonoBehaviour - { - public float msLocalAnimationOffset = 0f; - - // movement animation - public AnimationDirection movementDirection = AnimationDirection.none; - - public float movementSmoothDamp = 0.1f; - public float movementMagnitude = 20f; - - // Alpha animation - public bool animateAlpha; - - public float alphaSpeed = 8f; - private float originalAlpha = 0f; - - private Vector2 elementVelocity = Vector2.zero; - private Vector2 originalPos; - - private CanvasGroup canvasGroup; - private RectTransform rect; - - private float Alpha { - get => canvasGroup.alpha; - set => canvasGroup.alpha = Mathf.Clamp(value, 0, 1); - } - - private void Awake() { - canvasGroup = GetComponent(); - rect = GetComponent(); - } - - private void OnEnable() { - originalAlpha = Alpha; - - if (animateAlpha) { - Alpha = 0f; - StartDelayedCoroutine(msLocalAnimationOffset / 1000f, FadeIn(originalAlpha)); - } - - if (movementDirection == AnimationDirection.none) return; - - originalPos = rect.anchoredPosition; - - // Create a vector that points upwards and rotate it by the animation direction - // This is used as an offset from the original rect position - var offset = new Vector2 { - x = 0, - y = movementMagnitude - }.Rotate(movementDirection.GetRotation()); - - rect.anchoredPosition = originalPos + offset; - - StartDelayedCoroutine(msLocalAnimationOffset / 1000f, SlideIn(originalPos)); - } - - private void OnDisable() { - SkipAnimations(); - } - - public void SkipAnimations() { - StopAllCoroutines(); - - Alpha = originalAlpha; - - if (movementDirection == AnimationDirection.none) return; - - rect.anchoredPosition = originalPos; - } - - private IEnumerator FadeIn(float target) { - if (Alpha < target) { - Alpha += Time.deltaTime * alphaSpeed; - - yield return null; - - StartCoroutine(FadeIn(target)); - } - } - - private IEnumerator SlideIn(Vector2 towards) { - if (rect.anchoredPosition != towards) { - rect.anchoredPosition = Vector2.SmoothDamp( - rect.anchoredPosition, - towards, - ref elementVelocity, - movementSmoothDamp); - - yield return null; - - StartCoroutine(SlideIn(towards)); - } - } - - private void StartDelayedCoroutine(float seconds, IEnumerator routine) { - StartCoroutine(DelayCoroutine(seconds, routine)); - } - - private IEnumerator DelayCoroutine(float seconds, IEnumerator routine) { - if (seconds != 0f) { - yield return new WaitForSeconds(seconds); - } - - StartCoroutine(routine); - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/UI/Components/UIAnimateable/UIAnimateableHelper.cs b/Assets/Project/Source/UI/Components/UIAnimateable/UIAnimateableHelper.cs deleted file mode 100644 index 8374101b..00000000 --- a/Assets/Project/Source/UI/Components/UIAnimateable/UIAnimateableHelper.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Exa.UI.Components -{ - public static class UIAnimateableHelper - { - public static int GetRotation(this AnimationDirection animationDirection) { - return ((int) animationDirection) - 1; - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/UI/Controls/Button.meta b/Assets/Project/Source/UI/Controls/Button.meta new file mode 100644 index 00000000..bb9227fa --- /dev/null +++ b/Assets/Project/Source/UI/Controls/Button.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 405ff6d20e6f404bbc193a1d5318fec2 +timeCreated: 1612796474 \ No newline at end of file diff --git a/Assets/Project/Source/UI/Controls/Button/ButtonControl.cs b/Assets/Project/Source/UI/Controls/Button/ButtonControl.cs new file mode 100644 index 00000000..03b3a208 --- /dev/null +++ b/Assets/Project/Source/UI/Controls/Button/ButtonControl.cs @@ -0,0 +1,31 @@ +using UnityEngine; +using UnityEngine.Events; +using UnityEngine.UI; + +namespace Exa.UI.Controls { + public class ButtonControl : MonoBehaviour { + [SerializeField] private Button button; + [SerializeField] private Text text; + [SerializeField] private LayoutElement layoutElement; + + public Button Button { + get => button; + } + + public LayoutElement LayoutElement { + get => layoutElement; + } + + public UnityEvent OnClick { + get => button.onClick; + } + + public static ButtonControl Create(Transform container, string label) { + return S.UI.Controls.CreateButton(container, label); + } + + public void Setup(string label) { + text.text = label; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/UI/Controls/Button/ButtonControl.cs.meta b/Assets/Project/Source/UI/Controls/Button/ButtonControl.cs.meta new file mode 100644 index 00000000..3c6350fa --- /dev/null +++ b/Assets/Project/Source/UI/Controls/Button/ButtonControl.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e54039b4af8949c2b115f76c693da40a +timeCreated: 1612796480 \ No newline at end of file diff --git a/Assets/Project/Source/UI/Controls/ControlFactory.cs b/Assets/Project/Source/UI/Controls/ControlFactory.cs index 5f233f03..cbe60c87 100644 --- a/Assets/Project/Source/UI/Controls/ControlFactory.cs +++ b/Assets/Project/Source/UI/Controls/ControlFactory.cs @@ -1,44 +1,73 @@ -using Exa.Generics; -using System; +using System; using System.Collections.Generic; +using Exa.Types.Generics; +using Exa.Utils; using UnityEngine; #pragma warning disable CS0649 -namespace Exa.UI.Controls -{ - public class ControlFactory : MonoBehaviour - { +namespace Exa.UI.Controls { + public class ControlFactory : MonoBehaviour { + [SerializeField] private GameObject buttonPrefab; [SerializeField] private GameObject dropdownPrefab; [SerializeField] private GameObject inputFieldPrefab; [SerializeField] private GameObject radioPrefab; [SerializeField] private GameObject sliderPrefab; - public DropdownControl CreateDropdown(Transform container, string label, - IEnumerable> possibleValues, Action setter, - Action onTabCreated = null) { - void TSetter(object obj) => setter((T) obj); - void TOnTabCreate(object obj, DropdownTab tab) => onTabCreated?.Invoke((T) obj, tab); + public ButtonControl CreateButton(Transform container, string label) { + var control = buttonPrefab.Create(container); + control.Setup(label); + + return control; + } + + public DropdownControl CreateDropdown( + Transform container, + string label, + IEnumerable> possibleValues, + Action setter, + Action onTabCreated = null + ) { + void TSetter(object obj) { + setter((T) obj); + } + + void TOnTabCreate(object obj, DropdownTab tab) { + onTabCreated?.Invoke((T) obj, tab); + } IEnumerable> GetPossibleValues() { - foreach (var possibleValue in possibleValues) + foreach (var possibleValue in possibleValues) { yield return possibleValue as ILabeledValue; + } } - return CreateDropdown(container, label, GetPossibleValues(), TSetter, TOnTabCreate); + return CreateDropdown( + container, + label, + GetPossibleValues(), + TSetter, + TOnTabCreate + ); } - public DropdownControl CreateDropdown(Transform container, string label, - IEnumerable> possibleValues, Action setter, - Action onTabCreated = null) { + public DropdownControl CreateDropdown( + Transform container, + string label, + IEnumerable> possibleValues, + Action setter, + Action onTabCreated = null + ) { var dropdown = CreateControl(container, dropdownPrefab, label, setter); dropdown.CreateTabs(possibleValues, onTabCreated); + return dropdown; } public InputFieldControl CreateInputField(Transform container, string label, Action setter) { var inputField = CreateControl(container, inputFieldPrefab, label, setter); inputField.Setup($"input {label.ToLower()}..."); + return inputField; } @@ -46,10 +75,15 @@ public RadioControl CreateRadio(Transform container, string label, Action return CreateControl(container, radioPrefab, label, setter); } - public SliderControl CreateSlider(Transform container, string label, Action setter, - MinMax? minMax = null) { + public SliderControl CreateSlider( + Transform container, + string label, + Action setter, + MinMax? minMax = null + ) { var slider = CreateControl(container, sliderPrefab, label, setter); slider.SetMinMax(minMax ?? MinMax.ZeroOne); + return slider; } @@ -58,6 +92,7 @@ private T CreateControl(Transform container, GameObject prefab, string lab var control = Instantiate(prefab, container).GetComponent(); control.SetLabelText(label); control.OnValueChange.AddListener(obj => setter(obj)); + return control; } } diff --git a/Assets/Project/Source/UI/Controls/Dropdown/DropdownControl.cs b/Assets/Project/Source/UI/Controls/Dropdown/DropdownControl.cs index 2ea59fb3..fdc9588a 100644 --- a/Assets/Project/Source/UI/Controls/Dropdown/DropdownControl.cs +++ b/Assets/Project/Source/UI/Controls/Dropdown/DropdownControl.cs @@ -1,39 +1,49 @@ -using Coffee.UIEffects; -using Exa.Audio; -using Exa.Generics; -using System; +using System; using System.Collections.Generic; using System.Linq; +using Coffee.UIEffects; +using Exa.Audio; +using Exa.Types.Generics; using UnityEngine; using UnityEngine.Events; using UnityEngine.InputSystem; using UnityEngine.UI; -namespace Exa.UI.Controls -{ +namespace Exa.UI.Controls { [Serializable] - public class DropdownControl : InputControl - { - protected DropdownStateContainer stateContainer = new DropdownStateContainer(); - - [SerializeField] private Text selectedText; + public class DropdownControl : InputControl { + [Header("References")] + [SerializeField] private Sound buttonSelectPositive; + [SerializeField] private Sound buttonSelectNegative; [SerializeField] private GlobalAudioPlayerProxy playerProxy; + + [Space] + [SerializeField] private Text selectedText; [SerializeField] private UIFlip tabArrow; [SerializeField] private Button button; [SerializeField] private RectTransform selectedTab; [SerializeField] private RectTransform tabContainer; [SerializeField] private GameObject tabPrefab; [SerializeField] private InputAction clickAction; + + [Space] + [SerializeField] private DropdownTabSelected onValueChange = new DropdownTabSelected(); + + private bool isFoldedOpen; + + protected DropdownStateContainer stateContainer = new DropdownStateContainer(); private object value; public override object Value { get => value; protected set { - if (!stateContainer.ContainsValue(value)) - throw new ArgumentException("Value not found", nameof(value)); + if (!stateContainer.ContainsValue(value)) { + throw new ArgumentException($"Value {value} not found", nameof(value)); + } - if (stateContainer.ContainsValue(this.value)) + if (stateContainer.ContainsValue(this.value)) { stateContainer.GetTab(this.value).Selected = false; + } this.value = value; var name = stateContainer.GetName(value); @@ -42,8 +52,6 @@ protected set { } } - private bool isFoldedOpen; - private bool IsFoldedOpen { get => isFoldedOpen; set { @@ -51,20 +59,21 @@ private bool IsFoldedOpen { tabContainer.gameObject.SetActive(value); tabArrow.vertical = value; - playerProxy.Play(value ? "UI_SFX_ButtonSelectPositive" : "UI_SFX_ButtonSelectNegative"); + playerProxy.Play(value ? buttonSelectPositive : buttonSelectNegative); } } - - [SerializeField] private DropdownTabSelected onValueChange = new DropdownTabSelected(); - - public override UnityEvent OnValueChange => onValueChange; + public override UnityEvent OnValueChange { + get => onValueChange; + } protected virtual void Awake() { button.onClick.AddListener(ToggleContainer); + clickAction.started += context => { - if (IsFoldedOpen && GetMouseOutsideControl()) + if (IsFoldedOpen && GetMouseOutsideControl()) { IsFoldedOpen = false; + } }; } @@ -76,19 +85,40 @@ private void OnDisable() { clickAction.Disable(); } - public virtual void CreateTabs(IEnumerable> options, - Action onTabCreated = null) { + public static DropdownControl Create( + Transform container, + string label, + IEnumerable> possibleValues, + Action setter, + Action onTabCreated = null + ) { + return S.UI.Controls.CreateDropdown( + container, + label, + possibleValues, + setter, + onTabCreated + ); + } + + public virtual void CreateTabs( + IEnumerable> options, + Action onTabCreated = null + ) { foreach (var option in options) { var tab = Instantiate(tabPrefab, tabContainer).GetComponent(); tab.Text = option.Label; - tab.button.onClick.AddListener(() => { - Value = option.Value; - ToggleContainer(); - }); + + tab.button.onClick.AddListener( + () => { + SetValue(option.Value); + ToggleContainer(); + } + ); onTabCreated?.Invoke(option.Value, tab); - stateContainer.Add(option, tab); + stateContainer.Add(option as ILabeledValue, tab); } SelectFirst(); @@ -107,11 +137,10 @@ private void ToggleContainer() { } private bool GetMouseOutsideControl() { - return !Systems.Input.GetMouseInsideRect(tabContainer, selectedTab); + return !S.Input.GetMouseInsideRect(tabContainer, selectedTab); } [Serializable] - public class DropdownTabSelected : UnityEvent - { } + public class DropdownTabSelected : UnityEvent { } } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/Controls/Dropdown/DropdownStateContainer.cs b/Assets/Project/Source/UI/Controls/Dropdown/DropdownStateContainer.cs index 7a55b863..a4b7b2a6 100644 --- a/Assets/Project/Source/UI/Controls/Dropdown/DropdownStateContainer.cs +++ b/Assets/Project/Source/UI/Controls/Dropdown/DropdownStateContainer.cs @@ -1,14 +1,20 @@ -using Exa.Generics; -using System.Collections; +using System.Collections; using System.Collections.Generic; +using Exa.Types.Generics; -namespace Exa.UI.Controls -{ - public class DropdownStateContainer : IEnumerable - { - private readonly HashSet values = new HashSet(); +namespace Exa.UI.Controls { + public class DropdownStateContainer : IEnumerable { private readonly Dictionary> contextByValue = new Dictionary>(); private readonly Dictionary tabByValue = new Dictionary(); + private readonly HashSet values = new HashSet(); + + public IEnumerator GetEnumerator() { + return values.GetEnumerator(); + } + + IEnumerator IEnumerable.GetEnumerator() { + return values.GetEnumerator(); + } public void Add(ILabeledValue namedValue, DropdownTab tab) { contextByValue.Add(namedValue.Value, namedValue); @@ -20,15 +26,10 @@ public bool ContainsValue(T value) { return values.Contains(value); } - public IEnumerator GetEnumerator() { - return values.GetEnumerator(); - } - public string GetName(T value) { try { return contextByValue[value].Label; - } - catch (KeyNotFoundException) { + } catch (KeyNotFoundException) { throw new KeyNotFoundException($"value {value} doesn't exist"); } } @@ -36,9 +37,5 @@ public string GetName(T value) { public DropdownTab GetTab(T value) { return tabByValue[value]; } - - IEnumerator IEnumerable.GetEnumerator() { - return values.GetEnumerator(); - } } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/Controls/Dropdown/DropdownTab.cs b/Assets/Project/Source/UI/Controls/Dropdown/DropdownTab.cs index 7dd26797..f398a2ef 100644 --- a/Assets/Project/Source/UI/Controls/Dropdown/DropdownTab.cs +++ b/Assets/Project/Source/UI/Controls/Dropdown/DropdownTab.cs @@ -4,20 +4,14 @@ #pragma warning disable CS0649 -namespace Exa.UI.Controls -{ +namespace Exa.UI.Controls { [RequireComponent(typeof(Button))] - public class DropdownTab : MonoBehaviour - { + public class DropdownTab : MonoBehaviour { public Button button; [SerializeField] private Text text; [SerializeField] private ActivePair color; - private void Awake() { - Selected = false; - } - public string Text { set => text.text = value; } @@ -25,5 +19,9 @@ public string Text { public bool Selected { set => text.color = color.GetValue(value); } + + private void Awake() { + Selected = false; + } } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/Controls/IControl.cs b/Assets/Project/Source/UI/Controls/IControl.cs index ef95201f..5c8e6dca 100644 --- a/Assets/Project/Source/UI/Controls/IControl.cs +++ b/Assets/Project/Source/UI/Controls/IControl.cs @@ -1,17 +1,15 @@ -namespace Exa.UI.Controls -{ +namespace Exa.UI.Controls { /// - /// Supports a user control that can be checked for a changed value + /// Supports a user control that can be checked for a changed value /// - public interface IControl - { + public interface IControl { /// - /// Checks if the value is up-to-date + /// Checks if the value is up-to-date /// bool IsDirty { get; } /// - /// Marks the current value as being up-to-date + /// Marks the current value as being up-to-date /// void SetClean(); } diff --git a/Assets/Project/Source/UI/Controls/InputControl.cs b/Assets/Project/Source/UI/Controls/InputControl.cs index 469e9f90..5286c95d 100644 --- a/Assets/Project/Source/UI/Controls/InputControl.cs +++ b/Assets/Project/Source/UI/Controls/InputControl.cs @@ -4,26 +4,25 @@ #pragma warning disable CS0649 -namespace Exa.UI.Controls -{ - public abstract class InputControl : InputControl - { +namespace Exa.UI.Controls { + public abstract class InputControl : InputControl { /// - /// Gets the current value + /// Gets the current value /// public abstract T Value { get; protected set; } + public abstract UnityEvent OnValueChange { get; } + public virtual void SetValue(T value, bool notify = true) { Value = value; - if (notify) + + if (notify) { OnValueChange?.Invoke(value); + } } - - public abstract UnityEvent OnValueChange { get; } } - public abstract class InputControl : MonoBehaviour - { + public abstract class InputControl : MonoBehaviour { [SerializeField] private Text labelText; public void SetLabelText(string label) { diff --git a/Assets/Project/Source/UI/Controls/InputField/InputFieldControl.cs b/Assets/Project/Source/UI/Controls/InputField/InputFieldControl.cs index 7e4bb772..c82d1825 100644 --- a/Assets/Project/Source/UI/Controls/InputField/InputFieldControl.cs +++ b/Assets/Project/Source/UI/Controls/InputField/InputFieldControl.cs @@ -1,29 +1,33 @@ -using Exa.UI.Components; -using System; +using System; +using Exa.UI.Components; using UnityEngine; using UnityEngine.Events; using UnityEngine.UI; -namespace Exa.UI.Controls -{ - public class InputFieldControl : InputControl - { +namespace Exa.UI.Controls { + public class InputFieldControl : InputControl { public Text placeholderText; public ExtendedInputField inputField; + [SerializeField] private readonly InputFieldEvent onValueChange = new InputFieldEvent(); + public override string Value { get => inputField.text; - protected set => inputField.text = value; + protected set => inputField.SetTextWithoutNotify(value); } - [SerializeField] private readonly InputFieldEvent onValueChange = new InputFieldEvent(); - - public override UnityEvent OnValueChange => onValueChange; + public override UnityEvent OnValueChange { + get => onValueChange; + } private void Awake() { inputField.onEndEdit.AddListener(onValueChange.Invoke); } + public static InputFieldControl Create(Transform container, string label, Action setter) { + return S.UI.Controls.CreateInputField(container, label, setter); + } + public void SetValueWithoutNotify(string value) { inputField.SetTextWithoutNotify(value); } @@ -34,7 +38,6 @@ public void Setup(string valuePlaceholder, string value = "") { } [Serializable] - public class InputFieldEvent : UnityEvent - { } + public class InputFieldEvent : UnityEvent { } } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/Controls/Radio/RadioControl.cs b/Assets/Project/Source/UI/Controls/Radio/RadioControl.cs index f8605b53..0a6e38b3 100644 --- a/Assets/Project/Source/UI/Controls/Radio/RadioControl.cs +++ b/Assets/Project/Source/UI/Controls/Radio/RadioControl.cs @@ -4,13 +4,13 @@ using UnityEngine.Events; using UnityEngine.UI; -namespace Exa.UI.Controls -{ +namespace Exa.UI.Controls { [Serializable] - public class RadioControl : InputControl - { + public class RadioControl : InputControl { [SerializeField] private Image buttonImage; [SerializeField] private ActivePair colors; + + private RadioCheckEvent onValueChange = new RadioCheckEvent(); private bool value; public override bool Value { @@ -21,18 +21,19 @@ protected set { } } - private RadioCheckEvent onValueChange = new RadioCheckEvent(); - public override UnityEvent OnValueChange { get => onValueChange; } + public static RadioControl Create(Transform container, string label, Action setter) { + return S.UI.Controls.CreateRadio(container, label, setter); + } + public void Toggle() { Value = !value; } [Serializable] - public class RadioCheckEvent : UnityEvent - { } + public class RadioCheckEvent : UnityEvent { } } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/Controls/Slider/SliderControl.cs b/Assets/Project/Source/UI/Controls/Slider/SliderControl.cs index ce9d3b72..09f6f0ba 100644 --- a/Assets/Project/Source/UI/Controls/Slider/SliderControl.cs +++ b/Assets/Project/Source/UI/Controls/Slider/SliderControl.cs @@ -1,5 +1,7 @@ -using Exa.Generics; +using System; +using Exa.Types.Generics; using Exa.UI.Components; +using Exa.UI.Cursor; using UnityEngine; using UnityEngine.Events; using UnityEngine.UI; @@ -7,14 +9,14 @@ #pragma warning disable CS0649 -namespace Exa.UI.Controls -{ - public class SliderControl : InputControl - { +namespace Exa.UI.Controls { + public class SliderControl : InputControl { [SerializeField] private Slider slider; [SerializeField] private ExtendedInputField inputField; [SerializeField] private ValueOverride cursorState; + [SerializeField] private readonly SliderEvent onValueChanged = new SliderEvent(); + public override float Value { get => slider.value; protected set { @@ -23,9 +25,9 @@ protected set { } } - [SerializeField] private readonly SliderEvent onValueChanged = new SliderEvent(); - - public override UnityEvent OnValueChange => onValueChanged; + public override UnityEvent OnValueChange { + get => onValueChanged; + } private void Awake() { slider.onValueChanged.AddListener(OnSliderValueChanged); @@ -35,6 +37,15 @@ private void Awake() { inputField.text = FormatFloat(slider.value); } + public static SliderControl Create( + Transform container, + string label, + Action setter, + MinMax? minMax = null + ) { + return S.UI.Controls.CreateSlider(container, label, setter, minMax); + } + public void SetMinMax(MinMax minMax) { slider.minValue = minMax.min; slider.maxValue = minMax.max; @@ -49,11 +60,11 @@ public void SetMin() { } public void OnBeginDrag() { - Systems.UI.mouseCursor.stateManager.Add(cursorState); + S.UI.MouseCursor.stateManager.Add(cursorState); } public void OnEndDrag() { - Systems.UI.mouseCursor.stateManager.Remove(cursorState); + S.UI.MouseCursor.stateManager.Remove(cursorState); } private void OnSliderValueChanged(float value) { @@ -61,20 +72,27 @@ private void OnSliderValueChanged(float value) { } private void OnInputFieldValueChanged(string value) { - if (string.IsNullOrEmpty(value)) return; + if (string.IsNullOrEmpty(value)) { + return; + } var valid = int.TryParse(value, out var intValue); if (valid) { inputField.SetTextWithoutNotify(value); - } - else { + } else { inputField.SetTextWithoutNotify(FormatFloat(slider.value)); + return; } - if (intValue < slider.minValue) inputField.text = FormatFloat(slider.minValue); - if (intValue > slider.maxValue) inputField.text = FormatFloat(slider.maxValue); + if (intValue < slider.minValue) { + inputField.text = FormatFloat(slider.minValue); + } + + if (intValue > slider.maxValue) { + inputField.text = FormatFloat(slider.maxValue); + } } private void OnInputFieldEndEdit(string value) { @@ -82,8 +100,7 @@ private void OnInputFieldEndEdit(string value) { if (valid) { slider.value = (float) System.Math.Round(floatValue, 2); - } - else { + } else { inputField.text = FormatFloat(slider.value); } } diff --git a/Assets/Project/Source/UI/Cursor/CursorOverride.cs b/Assets/Project/Source/UI/Cursor/CursorOverride.cs deleted file mode 100644 index 1b103817..00000000 --- a/Assets/Project/Source/UI/Cursor/CursorOverride.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace Exa.UI -{ - public class CursorOverride - { - public readonly CursorState cursorState; - - public CursorOverride(CursorState cursorState) { - this.cursorState = cursorState; - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/UI/Cursor/CursorOverride.cs.meta b/Assets/Project/Source/UI/Cursor/CursorOverride.cs.meta deleted file mode 100644 index 9d8276ac..00000000 --- a/Assets/Project/Source/UI/Cursor/CursorOverride.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: b6741e47ce8b40143b80c73a613ec655 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Project/Source/UI/Cursor/CursorStateOverrideList.cs b/Assets/Project/Source/UI/Cursor/CursorStateOverrideList.cs index 2a1c44cc..f972c5b4 100644 --- a/Assets/Project/Source/UI/Cursor/CursorStateOverrideList.cs +++ b/Assets/Project/Source/UI/Cursor/CursorStateOverrideList.cs @@ -1,29 +1,30 @@ using System; -using Exa.Generics; +using Exa.Types.Generics; using UnityEngine.Events; -namespace Exa.UI -{ - public class CursorStateOverrideList : OverrideList - { - public UnityEvent ContainsItemChange { get; } = new UnityEvent(); - +namespace Exa.UI.Cursor { + public class CursorStateOverrideList : OverrideList { public CursorStateOverrideList(CursorState defaultValue, Action onValueChange) : base(defaultValue, onValueChange) { } - public override void Add(ValueOverride valueOverride) { - if (overrides.Count == 0) + public UnityEvent ContainsItemChange { get; } = new UnityEvent(); + + public override void Add(IValueOverride valueOverride) { + if (overrides.Count == 0) { ContainsItemChange?.Invoke(true); + } base.Add(valueOverride); } - public override void Remove(ValueOverride valueOverride) { - if (overrides.Contains(valueOverride)) + public override void Remove(IValueOverride valueOverride) { + if (overrides.Contains(valueOverride)) { base.Remove(valueOverride); + } - if (overrides.Count == 0) + if (overrides.Count == 0) { ContainsItemChange?.Invoke(false); + } } } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/Cursor/HardwareMouseCursor.cs b/Assets/Project/Source/UI/Cursor/HardwareMouseCursor.cs index d6b4ce5e..0d35981e 100644 --- a/Assets/Project/Source/UI/Cursor/HardwareMouseCursor.cs +++ b/Assets/Project/Source/UI/Cursor/HardwareMouseCursor.cs @@ -1,12 +1,10 @@ -using Exa.Generics; +using Exa.Types; using UnityEngine; #pragma warning disable CS0649 -namespace Exa.UI -{ - public class HardwareMouseCursor : MonoBehaviour, ICursor - { +namespace Exa.UI.Cursor { + public class HardwareMouseCursor : MonoBehaviour, ICursor { [SerializeField] private Texture2D idleMouseTexture; [SerializeField] private Texture2D activeMouseTexture; [SerializeField] private Texture2D removeMouseTexture; @@ -15,8 +13,10 @@ public class HardwareMouseCursor : MonoBehaviour, ICursor public MarkerContainer HoverMarkerContainer { get; } = null; + public CursorFacades CursorFacades => null; + private void OnEnable() { - Cursor.visible = true; + UnityEngine.Cursor.visible = true; } public void SetActive(bool active) { @@ -25,7 +25,7 @@ public void SetActive(bool active) { public void SetState(CursorState cursorState) { var tex = GetTexture(cursorState); - Cursor.SetCursor(tex, Vector2.zero, CursorMode.Auto); + UnityEngine.Cursor.SetCursor(tex, Vector2.zero, CursorMode.Auto); } public void OnEnterViewport() { } diff --git a/Assets/Project/Source/UI/Cursor/ICursor.cs b/Assets/Project/Source/UI/Cursor/ICursor.cs index db2a1391..3eaea51d 100644 --- a/Assets/Project/Source/UI/Cursor/ICursor.cs +++ b/Assets/Project/Source/UI/Cursor/ICursor.cs @@ -1,7 +1,5 @@ -namespace Exa.UI -{ - public enum CursorState - { +namespace Exa.UI.Cursor { + public enum CursorState { idle, active, remove, @@ -9,11 +7,15 @@ public enum CursorState input } - public interface ICursor - { + public interface ICursor { + CursorFacades CursorFacades { get; } + void SetActive(bool active); + void SetState(CursorState cursorState); + void OnEnterViewport(); + void OnExitViewport(); } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/Cursor/MouseCursorController.cs b/Assets/Project/Source/UI/Cursor/MouseCursorController.cs index 44c1cb1d..2260df67 100644 --- a/Assets/Project/Source/UI/Cursor/MouseCursorController.cs +++ b/Assets/Project/Source/UI/Cursor/MouseCursorController.cs @@ -2,40 +2,36 @@ #pragma warning disable CS0649 -namespace Exa.UI -{ - public enum CursorType - { +namespace Exa.UI.Cursor { + public enum CursorType { HardwareCursor, VirtualCursor } - public class MouseCursorController : MonoBehaviour - { - public CursorStateOverrideList stateManager; - + public class MouseCursorController : MonoBehaviour { [SerializeField] private CursorType cursorType = CursorType.HardwareCursor; [SerializeField] private VirtualMouseCursor virtualMouseCursor; [SerializeField] private HardwareMouseCursor hardwareMouseCursor; [SerializeField] private CursorState cursorState; - private ICursor cursor; + public CursorStateOverrideList stateManager; public bool MouseInViewport { get; private set; } - public ICursor CurrentCursor => cursor; + public ICursor CurrentCursor { get; private set; } + public VirtualMouseCursor VirtualMouseCursor => virtualMouseCursor; private void Start() { // Activates the default cursor type SetCursor(cursorType); - stateManager = new CursorStateOverrideList(cursorState, cursor.SetState); + stateManager = new CursorStateOverrideList(cursorState, CurrentCursor.SetState); virtualMouseCursor.Init(stateManager); - cursor.SetState(cursorState); + CurrentCursor.SetState(cursorState); } public void SetCursor(CursorType cursorType) { - cursor?.SetActive(false); - cursor = GetCursor(cursorType); - cursor.SetActive(true); + CurrentCursor?.SetActive(false); + CurrentCursor = GetCursor(cursorType); + CurrentCursor.SetActive(true); } public void UpdateMouseInViewport(bool value) { @@ -47,24 +43,18 @@ public void UpdateMouseInViewport(bool value) { public void SetMouseInViewport(bool value) { if (value) { - cursor.OnEnterViewport(); - } - else { - cursor.OnExitViewport(); + CurrentCursor.OnEnterViewport(); + } else { + CurrentCursor.OnExitViewport(); } } private ICursor GetCursor(CursorType cursorType) { - switch (cursorType) { - case CursorType.HardwareCursor: - return hardwareMouseCursor; - - case CursorType.VirtualCursor: - return virtualMouseCursor; - - default: - return null; - } + return cursorType switch { + CursorType.HardwareCursor => hardwareMouseCursor, + CursorType.VirtualCursor => virtualMouseCursor, + _ => null + }; } } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/Cursor/VirtualCursor.meta b/Assets/Project/Source/UI/Cursor/VirtualCursor.meta new file mode 100644 index 00000000..5f5451e9 --- /dev/null +++ b/Assets/Project/Source/UI/Cursor/VirtualCursor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 468151b2aeaa4c6c8531665c416edd97 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/UI/Cursor/VirtualCursor/CursorFacades.cs b/Assets/Project/Source/UI/Cursor/VirtualCursor/CursorFacades.cs new file mode 100644 index 00000000..b6619340 --- /dev/null +++ b/Assets/Project/Source/UI/Cursor/VirtualCursor/CursorFacades.cs @@ -0,0 +1,9 @@ +using System; +using Exa.Types.Generics; + +namespace Exa.UI.Cursor { + public class CursorFacades : OverrideList { + public CursorFacades(VirtualCursorFacade defaultValue, Action onValueChange) + : base(defaultValue, onValueChange) { } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/UI/Cursor/VirtualCursor/CursorFacades.cs.meta b/Assets/Project/Source/UI/Cursor/VirtualCursor/CursorFacades.cs.meta new file mode 100644 index 00000000..affa820a --- /dev/null +++ b/Assets/Project/Source/UI/Cursor/VirtualCursor/CursorFacades.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 9a65878702094e8fa65d8bd25a12ca5a +timeCreated: 1630842160 \ No newline at end of file diff --git a/Assets/Project/Source/UI/Cursor/VirtualCursor/GaussCannonCursorDecal.cs b/Assets/Project/Source/UI/Cursor/VirtualCursor/GaussCannonCursorDecal.cs new file mode 100644 index 00000000..a014300d --- /dev/null +++ b/Assets/Project/Source/UI/Cursor/VirtualCursor/GaussCannonCursorDecal.cs @@ -0,0 +1,57 @@ +using System; +using DG.Tweening; +using Exa.Data; +using Exa.Grids.Blocks.Components; +using Exa.Math; +using Exa.Utils; +using UnityEngine; + +namespace Exa.UI.Cursor { + public class GaussCannonCursorDecal : MonoBehaviour { + [SerializeField] private GaussCannonCursorDecalCoil coil1; + [SerializeField] private GaussCannonCursorDecalCoil coil2; + [SerializeField] private GaussCannonCursorDecalCoil coil3; + [SerializeField] private CanvasGroup canvasGroup; + [SerializeField] private ActivePair targetAlpha; + [SerializeField] private ActivePair alphaAnimTime; + + private Tween activeTween; + + public void SetActive(bool active) { + canvasGroup.DOFade(targetAlpha.GetValue(active), alphaAnimTime.GetValue(active)) + .Replace(ref activeTween); + } + + public void SetProgress(float progress, bool coolingDown) { + if (!coolingDown) { + + // Animate coils sequentially + var coilStep = progress.DivRem(GaussCannonBehaviour.StepSize, out var rem); + + for (var i = 0; i < GaussCannonBehaviour.StepCount; i++) { + var coilProgress = coilStep > i + ? 1f // Progress for the current coil is 1 (Fully extended) + : coilStep == i // Whether or not to animate this coil + ? rem / GaussCannonBehaviour.StepSize // Divide remainder by step size to get a 0 - 1 normalized progress for the coil + : 0f; // Otherwise 0 progress (Fully retracted) + + CoilByIndex(i).SetProgress(coilProgress); + } + } else { + // Cooldown animation animates all coils simultaneously + for (var i = 0; i < GaussCannonBehaviour.StepCount; i++) { + CoilByIndex(i).SetProgress(progress); + } + } + } + + private GaussCannonCursorDecalCoil CoilByIndex(int index) { + return index switch { + 0 => coil1, + 1 => coil2, + 2 => coil3, + _ => throw new ArgumentException("Index out of range", nameof(index)) + }; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/UI/Cursor/VirtualCursor/GaussCannonCursorDecal.cs.meta b/Assets/Project/Source/UI/Cursor/VirtualCursor/GaussCannonCursorDecal.cs.meta new file mode 100644 index 00000000..ed16b5ad --- /dev/null +++ b/Assets/Project/Source/UI/Cursor/VirtualCursor/GaussCannonCursorDecal.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 273042c29e8847aaa23857ed200dff27 +timeCreated: 1630853712 \ No newline at end of file diff --git a/Assets/Project/Source/UI/Cursor/VirtualCursor/GaussCannonCursorDecalCoil.cs b/Assets/Project/Source/UI/Cursor/VirtualCursor/GaussCannonCursorDecalCoil.cs new file mode 100644 index 00000000..e4df32d6 --- /dev/null +++ b/Assets/Project/Source/UI/Cursor/VirtualCursor/GaussCannonCursorDecalCoil.cs @@ -0,0 +1,25 @@ +using Exa.UI.Tweening; +using Exa.Utils; +using UnityEditor.UIElements; +using UnityEngine; +using UnityEngine.UI; + +namespace Exa.UI.Cursor { + public class GaussCannonCursorDecalCoil : MonoBehaviour { + [SerializeField] private float magnitude; + [SerializeField] private Image left; + [SerializeField] private Image right; + [SerializeField] private ExaEase progressToMagnitude; + [SerializeField] private Gradient gradientMap; + + public void SetProgress(float progress) { + var currentMagnitude = progressToMagnitude.Evaluate(progress) * magnitude; + left.rectTransform.anchoredPosition = new Vector2(-currentMagnitude, currentMagnitude); + right.rectTransform.anchoredPosition = new Vector2(currentMagnitude, currentMagnitude); + + var color = gradientMap.Evaluate(progress); + left.color = color; + right.color = color; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/UI/Cursor/VirtualCursor/GaussCannonCursorDecalCoil.cs.meta b/Assets/Project/Source/UI/Cursor/VirtualCursor/GaussCannonCursorDecalCoil.cs.meta new file mode 100644 index 00000000..45c95d24 --- /dev/null +++ b/Assets/Project/Source/UI/Cursor/VirtualCursor/GaussCannonCursorDecalCoil.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: eff35b8e819445368d9889186289b0a7 +timeCreated: 1630853074 \ No newline at end of file diff --git a/Assets/Project/Source/UI/Cursor/VirtualCursor/GaussCannonCursorFacade.cs b/Assets/Project/Source/UI/Cursor/VirtualCursor/GaussCannonCursorFacade.cs new file mode 100644 index 00000000..bcb9bf5f --- /dev/null +++ b/Assets/Project/Source/UI/Cursor/VirtualCursor/GaussCannonCursorFacade.cs @@ -0,0 +1,60 @@ +using System; +using DG.Tweening; +using Exa.Grids.Blocks.Components; +using Exa.Math; +using Exa.Utils; +using UnityEngine; + +namespace Exa.UI.Cursor { + [Serializable] + public class GaussCannonCursorFacade : VirtualCursorFacade { + [Header("Anim settings")] + [SerializeField] private float fillRecoverTime; + [SerializeField] private Color color; + [SerializeField] private float colorAnimTime; + [SerializeField] private CursorDragAnimSettings trackFiringDirection; + + private Tween fillRecoverTween; + private Tween colorTween; + private GaussCannonBehaviour gaussCannon; + + public void Init(VirtualMouseCursor mouse, GaussCannonBehaviour gaussCannon) { + this.mouse = mouse; + this.gaussCannon = gaussCannon; + } + + public override void OnEnable() { + base.OnEnable(); + + fillRecoverTween?.Kill(); + + mouse.gaussCannonCursorDecal.SetActive(true); + mouse.backgroundImage.DOColor(color, colorAnimTime) + .Replace(ref colorTween); + } + + public void Update(float progress, bool coolingDown) { + if (!Enabled) { + return; + } + + mouse.gaussCannonCursorDecal.SetProgress(progress, coolingDown); + + if (!coolingDown) { + mouse.backgroundImage.fillAmount = progress; + var angle = DiffToAngle(gaussCannon.transform.position.ToVector2() - S.Input.MouseWorldPoint); + AnimCursorDirection(angle, trackFiringDirection); + } + } + + public override void OnDisable() { + base.OnDisable(); + + colorTween?.Kill(); + + mouse.gaussCannonCursorDecal.SetActive(false); + mouse.backgroundImage.DOFillAmount(1f, fillRecoverTime) + .Replace(ref fillRecoverTween); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/UI/Cursor/VirtualCursor/GaussCannonCursorFacade.cs.meta b/Assets/Project/Source/UI/Cursor/VirtualCursor/GaussCannonCursorFacade.cs.meta new file mode 100644 index 00000000..da1a9992 --- /dev/null +++ b/Assets/Project/Source/UI/Cursor/VirtualCursor/GaussCannonCursorFacade.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: bf96e65140f44de3a8fe99db665179bd +timeCreated: 1630840838 \ No newline at end of file diff --git a/Assets/Project/Source/UI/Cursor/VirtualCursor/StandardCursorFacade.cs b/Assets/Project/Source/UI/Cursor/VirtualCursor/StandardCursorFacade.cs new file mode 100644 index 00000000..abb7b465 --- /dev/null +++ b/Assets/Project/Source/UI/Cursor/VirtualCursor/StandardCursorFacade.cs @@ -0,0 +1,166 @@ +using System; +using DG.Tweening; +using Exa.Data; +using Exa.Math; +using Exa.UI.Tweening; +using Exa.Utils; +using UnityEngine; +using UnityEngine.InputSystem; + +namespace Exa.UI.Cursor { + [Serializable] + public class StandardCursorFacade : VirtualCursorFacade { + [Header("Color settings")] + [SerializeField] private Color idleColor; + [SerializeField] private Color activeColor; + [SerializeField] private Color removeColor; + [SerializeField] private Color infoColor; + [SerializeField] private float cursorColorAnimTime = 0.25f; + + [Header("Size anim settings")] + [SerializeField] private float cursorScaleAnimTime = 0.25f; + [SerializeField] private ActivePair hoverableCursorSize; + [SerializeField] private ActivePair sizeAnimSettings; + + [Header("Drag anim settings")] + [SerializeField] private float cursorDragDistanceTolerance = 30f; + [SerializeField] private ActivePair dragAnimSettings; + + [Header("Input")] + [SerializeField] private InputAction inputAction; + + private Tween cursorClickAlphaTween; + private Tween cursorColorTween; + + private CursorDragState cursorDragState = CursorDragState.NotDragging; + private FloatTweenBlender cursorScaleBlender; + private CursorState cursorState = CursorState.idle; + private CursorState? pendingCursorState; + + public Vector2? DragPivot { get; set; } + + public override void OnEnable() { + base.OnEnable(); + inputAction.Enable(); + + if (pendingCursorState.GetHasValue(out var value)) { + SetState(value); + + pendingCursorState = null; + } else { + SetState(cursorState); + } + + AnimCursorDirection(0, dragAnimSettings.active); + } + + public override void OnDisable() { + base.OnDisable(); + + cursorClickAlphaTween?.Kill(); + cursorColorTween?.Kill(); + + inputAction.Disable(); + } + + public override void Update(Vector2 viewportPoint) { + cursorScaleBlender.Update(); + UpdateCursorScaleAnim(viewportPoint); + } + + public void Init(CursorStateOverrideList overrides) { + overrides.ContainsItemChange.AddListener( + active => { + cursorScaleBlender.To(0, hoverableCursorSize.GetValue(active), cursorScaleAnimTime); + }); + + inputAction.started += OnLeftMouseStarted; + inputAction.canceled += OnLeftMouseCanceled; + + cursorScaleBlender = new FloatTweenBlender( + 1f, + value => mouse.rectTransform.localScale = new Vector3(value, value, 1), + (current, blender) => current * blender + ); + } + + public void SetState(CursorState state) { + if (!Enabled) { + pendingCursorState = state; + + return; + } + + SwitchActive(cursorState, false); + cursorState = state; + SwitchActive(cursorState, true); + + mouse.backgroundImage.DOColor(GetCursorColor(state), cursorColorAnimTime) + .Replace(ref cursorColorTween); + } + + private void UpdateCursorScaleAnim(Vector2 viewportPoint) { + if (!DragPivot.HasValue || cursorDragState == CursorDragState.NotDragging) { + return; + } + + var difference = viewportPoint - DragPivot.Value; + + if (cursorDragState == CursorDragState.BeginDragging && difference.magnitude > cursorDragDistanceTolerance) { + cursorDragState = CursorDragState.Dragging; + } + + if (cursorDragState == CursorDragState.Dragging) { + AnimCursorDirection(DiffToAngle(difference), dragAnimSettings.active); + } + } + + private void OnLeftMouseStarted(InputAction.CallbackContext context) { + AnimCursorSize(sizeAnimSettings.active); + cursorDragState = CursorDragState.BeginDragging; + DragPivot = S.Input.MouseScaledViewportPoint; + } + + private void OnLeftMouseCanceled(InputAction.CallbackContext context) { + AnimCursorSize(sizeAnimSettings.inactive); + cursorDragState = CursorDragState.NotDragging; + DragPivot = null; + AnimCursorDirection(0f, dragAnimSettings.inactive); + } + + private void AnimCursorSize(CursorSizeAnimSettings args) { + cursorScaleBlender.To(1, args.sizeTarget, args.animTime) + .SetEase(args.ease); + + mouse.backgroundGroup.DOFade(args.alphaTarget, args.animTime) + .SetEase(args.ease) + .Replace(ref cursorClickAlphaTween); + } + + private void SwitchActive(CursorState state, bool active) { + switch (state) { + case CursorState.idle: + case CursorState.active: + case CursorState.remove: + case CursorState.info: + mouse.normalCursor.gameObject.SetActive(active); + break; + case CursorState.input: + mouse.inputCursor.gameObject.SetActive(active); + break; + default: + throw new ArgumentOutOfRangeException(nameof(state), state, null); + } + } + + private Color GetCursorColor(CursorState state) { + return state switch { + CursorState.idle => idleColor, + CursorState.active => activeColor, + CursorState.remove => removeColor, + CursorState.info => infoColor, + _ => throw new ArgumentOutOfRangeException() + }; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/UI/Cursor/VirtualCursor/StandardCursorFacade.cs.meta b/Assets/Project/Source/UI/Cursor/VirtualCursor/StandardCursorFacade.cs.meta new file mode 100644 index 00000000..620c1236 --- /dev/null +++ b/Assets/Project/Source/UI/Cursor/VirtualCursor/StandardCursorFacade.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 5109a293461f4affa3802f542ba835e7 +timeCreated: 1630835345 \ No newline at end of file diff --git a/Assets/Project/Source/UI/Cursor/VirtualCursor/VirtualCursorFacade.cs b/Assets/Project/Source/UI/Cursor/VirtualCursor/VirtualCursorFacade.cs new file mode 100644 index 00000000..f60c1952 --- /dev/null +++ b/Assets/Project/Source/UI/Cursor/VirtualCursor/VirtualCursorFacade.cs @@ -0,0 +1,37 @@ +using DG.Tweening; +using Exa.Math; +using Exa.UI.Tweening; +using Exa.Utils; +using UnityEngine; + +namespace Exa.UI.Cursor { + public abstract class VirtualCursorFacade { + protected Tween cursorDragRotateTween; + [SerializeField] protected VirtualMouseCursor mouse; + + public bool Enabled { get; protected set; } + + protected void AnimCursorDirection(float angle, CursorDragAnimSettings args) { + var targetVector = new Vector3(0, 0, angle); + + mouse.normalCursor.DORotate(targetVector, args.animTime) + .SetEase(args.ease) + .Replace(ref cursorDragRotateTween); + } + + protected float DiffToAngle(Vector2 diff) { + return (diff.GetAngle() + 90f - 22.5f) % 360f; + } + + public virtual void OnEnable() { + Enabled = true; + } + + public virtual void OnDisable() { + Enabled = false; + cursorDragRotateTween?.Kill(); + } + + public virtual void Update(Vector2 viewportPoint) { } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/UI/Cursor/VirtualCursor/VirtualCursorFacade.cs.meta b/Assets/Project/Source/UI/Cursor/VirtualCursor/VirtualCursorFacade.cs.meta new file mode 100644 index 00000000..80e46786 --- /dev/null +++ b/Assets/Project/Source/UI/Cursor/VirtualCursor/VirtualCursorFacade.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: a36b1db21e8b4051a7d856c131404ee5 +timeCreated: 1630835045 \ No newline at end of file diff --git a/Assets/Project/Source/UI/Cursor/VirtualMouseCursor.cs b/Assets/Project/Source/UI/Cursor/VirtualMouseCursor.cs index aa87383c..e17043fb 100644 --- a/Assets/Project/Source/UI/Cursor/VirtualMouseCursor.cs +++ b/Assets/Project/Source/UI/Cursor/VirtualMouseCursor.cs @@ -1,201 +1,89 @@ using System; -using Exa.Utils; -using DG.Tweening; -using Exa.Data; -using Exa.Math; using Exa.UI.Tweening; using UnityEngine; -using UnityEngine.InputSystem; using UnityEngine.UI; #pragma warning disable CS0649 -namespace Exa.UI -{ - public class VirtualMouseCursor : MonoBehaviour, ICursor - { +namespace Exa.UI.Cursor { + public class VirtualMouseCursor : MonoBehaviour, ICursor { [Header("References")] - [SerializeField] private Image backgroundImage; - [SerializeField] private CanvasGroup backgroundGroup; - [SerializeField] private RectTransform rectTransform; - [SerializeField] private RectTransform normalCursor; - [SerializeField] private RectTransform inputCursor; - - [Header("Color settings")] - [SerializeField] private Color idleColor; - [SerializeField] private Color activeColor; - [SerializeField] private Color removeColor; - [SerializeField] private Color infoColor; - [SerializeField] private float cursorColorAnimTime = 0.25f; - - [Header("Size anim settings")] - [SerializeField] private float cursorScaleAnimTime = 0.25f; - [SerializeField] private ActivePair hoverableCursorSize; - [SerializeField] private ActivePair sizeAnimSettings; - - [Header("Drag anim settings")] - [SerializeField] private float cursorDragDistanceTolerance = 30f; - [SerializeField] private ActivePair dragAnimSettings; - - [Header("Input")] - [SerializeField] private InputAction inputAction; - - private CursorDragState cursorDragState = CursorDragState.NotDragging; - private CursorState cursorState = CursorState.idle; - private Tween cursorColorTween; - private Tween cursorClickAlphaTween; - private Tween cursorDragRotateTween; - private FloatTweenBlender cursorScaleBlender; - - public Vector2? DragPivot { get; set; } - - public void Init(CursorStateOverrideList overrides) { - overrides.ContainsItemChange.AddListener(active => { - cursorScaleBlender.To(0, hoverableCursorSize.GetValue(active), cursorScaleAnimTime); - }); - - inputAction.started += OnLeftMouseStarted; - inputAction.canceled += OnLeftMouseCanceled; - - cursorScaleBlender = new FloatTweenBlender(1f, - value => rectTransform.localScale = new Vector3(value, value, 1), - (current, blender) => current * blender); + [SerializeField] internal Image backgroundImage; + [SerializeField] internal CanvasGroup backgroundGroup; + [SerializeField] internal RectTransform rectTransform; + [SerializeField] internal RectTransform normalCursor; + [SerializeField] internal RectTransform inputCursor; + [SerializeField] internal GaussCannonCursorDecal gaussCannonCursorDecal; + + [Header("Facades")] + [SerializeField] private StandardCursorFacade standardCursorFacade; + + private VirtualCursorFacade currentFacade; + + public CursorFacades CursorFacades { get; private set; } + + private void Update() { + var viewportPoint = S.Input.MouseScaledViewportPoint; + rectTransform.anchoredPosition = viewportPoint; + currentFacade.Update(viewportPoint); } private void OnEnable() { - inputAction.Enable(); + CursorFacades = new CursorFacades(standardCursorFacade, SetFacade); + SetFacade(standardCursorFacade); } private void OnDisable() { - inputAction.Disable(); - } - - private void Update() { - var viewportPoint = Systems.Input.ScaledViewportPoint; - rectTransform.anchoredPosition = viewportPoint; - cursorScaleBlender.Update(); - UpdateCursorScaleAnim(viewportPoint); + CursorFacades = null; + SetFacade(null); } - private void UpdateCursorScaleAnim(Vector2 viewportPoint) { - if (!DragPivot.HasValue || cursorDragState == CursorDragState.NotDragging) - return; - - var difference = DragPivot.Value - viewportPoint; - - - if (cursorDragState == CursorDragState.BeginDragging && difference.magnitude > cursorDragDistanceTolerance) - cursorDragState = CursorDragState.Dragging; - - if (cursorDragState == CursorDragState.Dragging) { - var angle = (difference.GetAngle() + 270f - 22.5f) % 360; - AnimCursorDirection(angle, dragAnimSettings.active); - } + public void SetFacade(VirtualCursorFacade facade) { + currentFacade?.OnDisable(); + currentFacade = facade; + currentFacade?.OnEnable(); } public void SetActive(bool active) { gameObject.SetActive(active); } - public void SetState(CursorState state) { - SwitchActive(cursorState, false); - SwitchActive(state, true); - cursorState = state; - - backgroundImage.DOColor(GetCursorColor(state), cursorColorAnimTime) - .Replace(ref cursorColorTween); + public void SetState(CursorState cursorState) { + standardCursorFacade.SetState(cursorState); } public void OnEnterViewport() { gameObject.SetActive(true); - Cursor.visible = false; + UnityEngine.Cursor.visible = false; } public void OnExitViewport() { gameObject.SetActive(false); - Cursor.visible = true; + UnityEngine.Cursor.visible = true; } - private void OnLeftMouseStarted(InputAction.CallbackContext context) { - AnimCursorSize(sizeAnimSettings.active); - cursorDragState = CursorDragState.BeginDragging; - DragPivot = Systems.Input.ScaledViewportPoint; - } - - private void OnLeftMouseCanceled(InputAction.CallbackContext context) { - AnimCursorSize(sizeAnimSettings.inactive); - cursorDragState = CursorDragState.NotDragging; - DragPivot = null; - AnimCursorDirection(0f, dragAnimSettings.inactive); - } - - private void AnimCursorSize(CursorSizeAnimSettings args) { - cursorScaleBlender.To(1, args.sizeTarget, args.animTime) - .SetEase(args.ease); - - backgroundGroup.DOFade(args.alphaTarget, args.animTime) - .SetEase(args.ease) - .Replace(ref cursorClickAlphaTween); - } - - private void AnimCursorDirection(float angle, CursorDragAnimSettings args) { - var targetVector = new Vector3(0, 0, angle); - normalCursor.DORotate(targetVector, args.animTime) - .SetEase(args.ease) - .Replace(ref cursorDragRotateTween); - } - - private void SwitchActive(CursorState state, bool active) { - switch (state) { - case CursorState.idle: - case CursorState.active: - case CursorState.remove: - case CursorState.info: - normalCursor.gameObject.SetActive(active); - break; - - case CursorState.input: - inputCursor.gameObject.SetActive(active); - break; - } - } - - private Color GetCursorColor(CursorState state) { - switch (state) { - case CursorState.idle: - return idleColor; - case CursorState.active: - return activeColor; - case CursorState.remove: - return removeColor; - case CursorState.info: - return infoColor; - default: - throw new ArgumentOutOfRangeException(); - } - } - - [Serializable] - private struct CursorSizeAnimSettings - { - public float sizeTarget; - public float alphaTarget; - public float animTime; - public ExaEase ease; + public void Init(CursorStateOverrideList overrides) { + standardCursorFacade.Init(overrides); } + } + + public enum CursorDragState { + NotDragging, + BeginDragging, + Dragging + } - [Serializable] - private struct CursorDragAnimSettings - { - public float animTime; - public ExaEase ease; - } + [Serializable] + public struct CursorSizeAnimSettings { + public float sizeTarget; + public float alphaTarget; + public float animTime; + public ExaEase ease; + } - private enum CursorDragState - { - NotDragging, - BeginDragging, - Dragging - } + [Serializable] + public struct CursorDragAnimSettings { + public float animTime; + public ExaEase ease; } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/Diagnostics/DiagnosticsPanel.cs b/Assets/Project/Source/UI/Diagnostics/DiagnosticsPanel.cs index f053c3a3..83340889 100644 --- a/Assets/Project/Source/UI/Diagnostics/DiagnosticsPanel.cs +++ b/Assets/Project/Source/UI/Diagnostics/DiagnosticsPanel.cs @@ -1,7 +1,5 @@ using UnityEngine; -namespace Exa.UI.Diagnostics -{ - public class DiagnosticsPanel : MonoBehaviour - { } +namespace Exa.UI.Diagnostics { + public class DiagnosticsPanel : MonoBehaviour { } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/Diagnostics/FpsCounter.cs b/Assets/Project/Source/UI/Diagnostics/FpsCounter.cs index 8d782c93..e85eaaf2 100644 --- a/Assets/Project/Source/UI/Diagnostics/FpsCounter.cs +++ b/Assets/Project/Source/UI/Diagnostics/FpsCounter.cs @@ -3,10 +3,8 @@ #pragma warning disable CS0649 -namespace Exa.UI.Diagnostics -{ - public class FpsCounter : MonoBehaviour - { +namespace Exa.UI.Diagnostics { + public class FpsCounter : MonoBehaviour { [SerializeField] private Text fpsText; public void Update() { diff --git a/Assets/Project/Source/UI/ErrorList/ErrorListController.cs b/Assets/Project/Source/UI/ErrorList/ErrorListController.cs index 2d0ce660..9076643b 100644 --- a/Assets/Project/Source/UI/ErrorList/ErrorListController.cs +++ b/Assets/Project/Source/UI/ErrorList/ErrorListController.cs @@ -1,31 +1,34 @@ -using Exa.Utils; +using System.Collections.Generic; +using Exa.Utils; using Exa.Validation; -using System.Collections.Generic; using UnityEngine; #pragma warning disable CS0649 -namespace Exa.UI.Controls -{ +namespace Exa.UI.Controls { /// - /// Used to provide a list of error panels reflecting the current unresolved errors for multiple validators + /// Used to provide a list of error panels reflecting the current unresolved errors for multiple validators /// - public class ErrorListController : MonoBehaviour - { + public class ErrorListController : MonoBehaviour { [SerializeField] protected RectTransform container; - // Error container - protected ValidationState state; + [SerializeField] private GameObject errorPanelPrefab; // Dictionary linking an error with the current view protected Dictionary panelByError = new Dictionary(); - [SerializeField] private GameObject errorPanelPrefab; + // Error container + protected ValidationState state; private void Awake() { - var builder = CreateSchemaBuilder(); - state = builder.Build(); + state = CreateSchemaBuilder().Build(); + } + + public void OnEnable() { + container.DestroyChildren(); + panelByError = new Dictionary(); + state.lastControlErrors = new Dictionary>(); } public virtual ValidationResult Validate(IValidator validator, T args) { @@ -36,14 +39,8 @@ public void ApplyResults(ValidationResult errors) { state.ApplyResults(errors); } - public void OnEnable() { - container.DestroyChildren(); - panelByError = new Dictionary(); - state.lastControlErrors = new Dictionary>(); - } - /// - /// Supports configuring the + /// Supports configuring the /// /// public virtual ValidationErrorContainerBuilder CreateSchemaBuilder() { @@ -53,12 +50,12 @@ public virtual ValidationErrorContainerBuilder CreateSchemaBuilder() { public virtual void UnhandledErrorHandler(ValidationError validationError) { var id = validationError.Id; + if (!panelByError.ContainsKey(id)) { var panel = Instantiate(errorPanelPrefab, container).GetComponent(); panel.Text = validationError.Message; panelByError[id] = panel; - } - else { + } else { var panel = panelByError[id]; panel.Text = validationError.Message; panel.gameObject.SetActive(true); diff --git a/Assets/Project/Source/UI/FormGenerator/FormGenerator.cs b/Assets/Project/Source/UI/FormGenerator/FormGenerator.cs index 65484ff7..2afbd49b 100644 --- a/Assets/Project/Source/UI/FormGenerator/FormGenerator.cs +++ b/Assets/Project/Source/UI/FormGenerator/FormGenerator.cs @@ -3,10 +3,8 @@ #pragma warning disable CS0649 -namespace Exa.UI -{ - public class FormGenerator : MonoBehaviour - { +namespace Exa.UI { + public class FormGenerator : MonoBehaviour { [SerializeField] private Transform controlsContainer; public void GenerateForm(ModelDescriptor modelDescriptor) { diff --git a/Assets/Project/Source/UI/FormGenerator/ModelDescriptor.cs b/Assets/Project/Source/UI/FormGenerator/ModelDescriptor.cs index 02e0ed44..6d48a7de 100644 --- a/Assets/Project/Source/UI/FormGenerator/ModelDescriptor.cs +++ b/Assets/Project/Source/UI/FormGenerator/ModelDescriptor.cs @@ -1,13 +1,11 @@ using UnityEngine; -namespace Exa.UI -{ +namespace Exa.UI { /// - /// Base class for objects that generate a form view and store form data + /// Base class for objects that generate a form view and store form data /// /// - public abstract class ModelDescriptor - { + public abstract class ModelDescriptor { public abstract TModel FromDescriptor(); public abstract void GenerateView(Transform container); diff --git a/Assets/Project/Source/UI/Gameplay/CoreHealthBar.cs b/Assets/Project/Source/UI/Gameplay/CoreHealthBar.cs new file mode 100644 index 00000000..3579db40 --- /dev/null +++ b/Assets/Project/Source/UI/Gameplay/CoreHealthBar.cs @@ -0,0 +1,21 @@ +using Exa.Ships; +using Exa.Utils; +using UnityEngine; +using UnityEngine.UI; + +namespace Exa.Gameplay { + public class CoreHealthBar : MonoBehaviour, IGridOverlay { + [SerializeField] private RectTransform bar; + [SerializeField] private float maxHullSize; + [SerializeField] private Text maxHullText; + [SerializeField] private Text currentHullText; + + public void SetEnergyFill(float current, float max) { } + + public void SetHullFill(float current, float max) { + bar.SetRight(4 + Mathf.Min((1 - current / max) * maxHullSize, maxHullSize)); + currentHullText.text = Mathf.RoundToInt(current).ToString(); + maxHullText.text = Mathf.RoundToInt(max).ToString(); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/UI/Gameplay/CoreHealthBar.cs.meta b/Assets/Project/Source/UI/Gameplay/CoreHealthBar.cs.meta new file mode 100644 index 00000000..ee1dea91 --- /dev/null +++ b/Assets/Project/Source/UI/Gameplay/CoreHealthBar.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 73da3c9fbe373574b98b04ff34b9302b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/UI/Gameplay/DamageOverlay.cs b/Assets/Project/Source/UI/Gameplay/DamageOverlay.cs new file mode 100644 index 00000000..af28eb93 --- /dev/null +++ b/Assets/Project/Source/UI/Gameplay/DamageOverlay.cs @@ -0,0 +1,21 @@ +using DG.Tweening; +using Exa.Utils; +using UnityEngine; +using UnityEngine.UI; + +namespace Exa.UI.Gameplay { + public class DamageOverlay : MonoBehaviour { + [SerializeField] private Image image; + [SerializeField] private float alpha; + [SerializeField] private float duration; + + private Tween alphaTween; + + public void NotifyDamage() { + image.color = image.color.SetAlpha(alpha); + + image.DOFade(0, duration) + .Replace(ref alphaTween); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/UI/Gameplay/DamageOverlay.cs.meta b/Assets/Project/Source/UI/Gameplay/DamageOverlay.cs.meta new file mode 100644 index 00000000..ff53d5e7 --- /dev/null +++ b/Assets/Project/Source/UI/Gameplay/DamageOverlay.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f1624a5113f8e854bb35700791f1adcf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/UI/Gameplay/EnemyWarningCircle.cs b/Assets/Project/Source/UI/Gameplay/EnemyWarningCircle.cs new file mode 100644 index 00000000..e28906c2 --- /dev/null +++ b/Assets/Project/Source/UI/Gameplay/EnemyWarningCircle.cs @@ -0,0 +1,55 @@ +using Exa.Math; +using Exa.Types.Generics; +using Exa.Utils; +using UnityEngine; +using UnityEngine.UI; + +namespace Exa.Project.Source.UI.Gameplay { + public class EnemyWarningCircle : MonoBehaviour { + [SerializeField] private Image circleImage; + [SerializeField] private float arcLengthMultiplier; + [SerializeField] private float arcLengthBase; + private IEnemyWarningCircleSource source; + private float arcLengthDegrees; + + public void Setup(IEnemyWarningCircleSource source) { + this.source = source; + UpdateLocals(); + } + + private void SetArcLength(float lengthDegrees) { + circleImage.fillAmount = lengthDegrees / 360f; + arcLengthDegrees = lengthDegrees; + } + + public void UpdateLocals() { + var position = source.GetPosition(); + + // Only show warning for offscreen enemies + var viewportPoint = S.CameraController.Camera.WorldToViewportPoint(position); + + // 0.0/1.0 range to -1.0/1.0 range + var centreOffset = MathUtils.ViewportPointToCentreOffset(viewportPoint); + var centreOffsetMagnitude = centreOffset.magnitude; + var active = centreOffsetMagnitude > 1.1f; + + gameObject.SetActive(active); + + if (!active) { + return; + } + + // Fade as it gets closer + var alpha = centreOffsetMagnitude.Remap(1.1f, 1.5f, 0f, 0.8f); + circleImage.color = circleImage.color.SetAlpha(alpha); + + // Use the distance magnitude and size along a base value to calculate the degrees this + var length = arcLengthMultiplier / centreOffset.magnitude * source.GetSize() + arcLengthBase; + SetArcLength(length); + + var distance = position - S.CameraController.CurrentPosition; + var rot = distance.GetAngle() - arcLengthDegrees / 2f; + transform.localRotation = Quaternion.Euler(0, 0, rot); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/UI/Gameplay/EnemyWarningCircle.cs.meta b/Assets/Project/Source/UI/Gameplay/EnemyWarningCircle.cs.meta new file mode 100644 index 00000000..da657a3f --- /dev/null +++ b/Assets/Project/Source/UI/Gameplay/EnemyWarningCircle.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 3bfe744d54474a44a3e300faf6415237 +timeCreated: 1624973994 \ No newline at end of file diff --git a/Assets/Project/Source/UI/Gameplay/EnemyWarningCircleManager.cs b/Assets/Project/Source/UI/Gameplay/EnemyWarningCircleManager.cs new file mode 100644 index 00000000..862d5b03 --- /dev/null +++ b/Assets/Project/Source/UI/Gameplay/EnemyWarningCircleManager.cs @@ -0,0 +1,47 @@ +using System.Collections.Generic; +using Exa.Ships; +using Exa.Utils; +using UnityEngine; + +namespace Exa.Project.Source.UI.Gameplay { + public interface IEnemyWarningCircleSource { + Vector2 GetPosition(); + + float GetSize(); + } + + public class EnemyWarningCircleManager : MonoBehaviour { + [SerializeField] private GameObject enemyWarningCirclePrefab; + + private IDictionary circles; + + private void Awake() { + circles = new Dictionary(); + } + + private void Update() { + foreach (var view in circles.Values) { + view.UpdateLocals(); + } + } + + public void Add(IEnemyWarningCircleSource source) { + var circle = enemyWarningCirclePrefab.Create(transform); + circle.Setup(source); + circles.Add(source, circle); + + // Debug.Log($"Function: Add, {(source as EnemyGrid).gameObject.name}"); + } + + public void Remove(IEnemyWarningCircleSource source) { + if (!circles.ContainsKey(source)) { + throw new KeyNotFoundException($"Cannot remove source: {(source as MonoBehaviour).gameObject.name}"); + } + + circles[source].gameObject.Destroy(); + circles.Remove(source); + + // Debug.Log($"Function: Remove, {(source as EnemyGrid).gameObject.name}"); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/UI/Gameplay/EnemyWarningCircleManager.cs.meta b/Assets/Project/Source/UI/Gameplay/EnemyWarningCircleManager.cs.meta new file mode 100644 index 00000000..04e90ea9 --- /dev/null +++ b/Assets/Project/Source/UI/Gameplay/EnemyWarningCircleManager.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 1ec8872db54d4f00958b8a34e085c8bb +timeCreated: 1624973676 \ No newline at end of file diff --git a/Assets/Project/Source/UI/Gameplay/GameOverMenu.cs b/Assets/Project/Source/UI/Gameplay/GameOverMenu.cs new file mode 100644 index 00000000..bab8da77 --- /dev/null +++ b/Assets/Project/Source/UI/Gameplay/GameOverMenu.cs @@ -0,0 +1,22 @@ +using System; +using Exa.UI.Components; + +namespace Exa.UI.Gameplay { + public class GameOverMenu : Navigateable { + public ScoreView scoreView; + + public void Retry() { + throw new NotImplementedException(); + } + + public void QuitToMenu() { + GS.Navigateable.NavigateTo(S.UI.Root.navigateable); + S.Scenes.UnloadAsync("Game"); + GS.MissionManager.UnloadMission(); + } + + public void QuitToDesktop() { + S.Quit(); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/UI/Gameplay/GameOverMenu.cs.meta b/Assets/Project/Source/UI/Gameplay/GameOverMenu.cs.meta new file mode 100644 index 00000000..dcfb5706 --- /dev/null +++ b/Assets/Project/Source/UI/Gameplay/GameOverMenu.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: af977a08f2e3406c8c79827952742e67 +timeCreated: 1621972519 \ No newline at end of file diff --git a/Assets/Project/Source/UI/Gameplay/GameplayLayer.cs b/Assets/Project/Source/UI/Gameplay/GameplayLayer.cs index a8bea7be..068cb612 100644 --- a/Assets/Project/Source/UI/Gameplay/GameplayLayer.cs +++ b/Assets/Project/Source/UI/Gameplay/GameplayLayer.cs @@ -1,13 +1,16 @@ -using Exa.UI.Components; -using UnityEngine; +using Exa.Gameplay; +using Exa.Project.Source.UI.Gameplay; +using Exa.UI.Components; -namespace Exa.UI.Gameplay -{ - public class GameplayLayer : MonoBehaviour - { +namespace Exa.UI.Gameplay { + public class GameplayLayer : Navigateable { public SelectionOverlay selectionOverlay; public SelectionHotbar selectionHotbar; public SelectionArea selectionArea; - public Navigateable navigateable; + public CoreHealthBar coreHealthBar; + public BlockCostsView currentResources; + public MissionState missionState; + public DamageOverlay damageOverlay; + public EnemyWarningCircleManager warningCircleOverlay; } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/Gameplay/GameplayUI.cs b/Assets/Project/Source/UI/Gameplay/GameplayUI.cs index 4d3d7c67..591bf613 100644 --- a/Assets/Project/Source/UI/Gameplay/GameplayUI.cs +++ b/Assets/Project/Source/UI/Gameplay/GameplayUI.cs @@ -1,26 +1,10 @@ -using Exa.UI.Components; -using UnityEngine; +using UnityEngine; -namespace Exa.UI.Gameplay -{ - public class GameplayUI : MonoBehaviour - { +namespace Exa.UI.Gameplay { + public class GameplayUI : MonoBehaviour { public GameplayLayer gameplayLayer; public PauseMenu pauseMenu; - - private bool isPaused = false; - - private void Awake() { - pauseMenu.continueAction = TogglePause; - } - - public void TogglePause() { - Navigateable Select(bool revert = false) => isPaused ^ revert - ? pauseMenu - : gameplayLayer.navigateable; - - Select().NavigateTo(Select(true)); - isPaused = !isPaused; - } + public GameOverMenu gameOverMenu; + public RotationOverlay stationRotationOverlay; } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/Gameplay/MissionState.cs b/Assets/Project/Source/UI/Gameplay/MissionState.cs new file mode 100644 index 00000000..b709adaf --- /dev/null +++ b/Assets/Project/Source/UI/Gameplay/MissionState.cs @@ -0,0 +1,60 @@ +using Exa.Utils; +using UnityEngine; +using UnityEngine.InputSystem; +using UnityEngine.UI; + +namespace Exa.UI.Gameplay { + public class MissionState : MonoBehaviour { + [Header("References")] + [SerializeField] private Text headerText; + [SerializeField] private Text infoText; + [SerializeField] private ElementTracker headerTracker; + [SerializeField] private ElementTracker buttonTracker; + [SerializeField] private ElementTracker infoTracker; + + [Header("Input")] + [SerializeField] private InputAction editorAction; + + private bool buttonIsVisible; + + private bool ShouldEnableButton { + get => gameObject.activeSelf && buttonIsVisible; + } + + private void Awake() { + editorAction.started += context => { GS.MissionManager.StartEditing(); }; + } + + private void OnEnable() { + editorAction.SetEnabled(ShouldEnableButton); + } + + private void OnDisable() { + editorAction.SetEnabled(false); + } + + public void SetText(string headerText, string infoText, bool animate = true) { + this.headerText.text = headerText; + this.infoText.text = infoText; + + this.DelayOneFrame( + () => { + headerTracker.TrackOnce(animate); + infoTracker.TrackOnce(animate); + } + ); + } + + public void ShowEditorButton() { + buttonIsVisible = true; + editorAction.SetEnabled(ShouldEnableButton); + this.DelayOneFrame(buttonTracker.TrackOnce); + } + + public void HideEditorButton() { + buttonIsVisible = false; + editorAction.SetEnabled(false); + buttonTracker.Hide(); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/UI/Gameplay/MissionState.cs.meta b/Assets/Project/Source/UI/Gameplay/MissionState.cs.meta new file mode 100644 index 00000000..7a8f1a9b --- /dev/null +++ b/Assets/Project/Source/UI/Gameplay/MissionState.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 82bace075c35b1d48a96ee0cf1230e03 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/UI/Gameplay/PauseMenu.cs b/Assets/Project/Source/UI/Gameplay/PauseMenu.cs index baeed9c6..5f165f95 100644 --- a/Assets/Project/Source/UI/Gameplay/PauseMenu.cs +++ b/Assets/Project/Source/UI/Gameplay/PauseMenu.cs @@ -1,28 +1,22 @@ using System; using Exa.UI.Components; -namespace Exa.UI.Gameplay -{ - public class PauseMenu : Navigateable - { - public Action continueAction; +namespace Exa.UI.Gameplay { + public class PauseMenu : ReturnNavigateable { + public bool Paused { get; private set; } - public override void HandleEnter(NavigationArgs args) - { - GameSystems.Raycaster.IsRaycasting = false; + public override void HandleEnter(NavigationArgs args) { + GS.Raycaster.IsRaycasting = false; + Paused = true; base.HandleEnter(args); } - public override void HandleExit(Navigateable target) - { - GameSystems.Raycaster.IsRaycasting = true; + public override void HandleExit(Navigateable target) { + GS.Raycaster.IsRaycasting = true; + Paused = false; base.HandleExit(target); } - public void Continue() { - continueAction(); - } - public void Save() { throw new NotImplementedException(); } @@ -32,12 +26,13 @@ public void Load() { } public void QuitToMenu() { - GameSystems.Navigateable.NavigateTo(Systems.UI.root.navigateable); - Systems.Scenes.UnloadAsync("Game"); + GS.Navigateable.NavigateTo(S.UI.Root.navigateable); + S.Scenes.UnloadAsync("Game"); + GS.MissionManager.UnloadMission(); } public void QuitToDesktop() { - Systems.Quit(); + S.Quit(); } } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/Gameplay/RotationOverlay.cs b/Assets/Project/Source/UI/Gameplay/RotationOverlay.cs new file mode 100644 index 00000000..fdd34bd1 --- /dev/null +++ b/Assets/Project/Source/UI/Gameplay/RotationOverlay.cs @@ -0,0 +1,79 @@ +using Exa.Math; +using Exa.Ships.Rotation; +using Exa.Types.Generics; +using Exa.Utils; +using UnityEngine; +using UnityEngine.Serialization; +using Vectrosity; + +namespace Exa.UI.Gameplay { + public class RotationOverlay : MonoBehaviour { + [Header("References")] + [SerializeField] private VectorObject2D targetRotation; + [SerializeField] private VectorObject2D currRotation; + + [Header("Settings")] + [SerializeField] private MinMax worldUnit; + [SerializeField] private float sizeMultiplier; + + private UnityEngine.Camera cam; + private VectorLine targetLine; + private VectorLine currLine; + private RotationController rc; + + public RotationController Rc { + get => rc; + set { + rc = value; + + gameObject.SetActive(value != null); + } + } + + private void Awake() { + cam = UnityEngine.Camera.main; + targetLine = targetRotation.vectorLine; + currLine = currRotation.vectorLine; + } + + public void Update() { + var lineWith = 1f / cam.orthographicSize * sizeMultiplier; + + currLine.lineWidth = lineWith; + targetLine.lineWidth = lineWith; + + var currRot = Rc.Rb.rotation; + var pivot = Rc.Rb.worldCenterOfMass; + + var startPos = MathUtils.FromAngledMagnitude(worldUnit.min, currRot) + pivot; + var endPos = MathUtils.FromAngledMagnitude(worldUnit.max, currRot) + pivot; + DrawLine(currLine, startPos, endPos); + + var isRotatingTowardsTarget = Rc.TargetRotation.GetHasValue(out var targetRot); + targetRotation.enabled = isRotatingTowardsTarget; + + if (isRotatingTowardsTarget) { + var startTargetPos = MathUtils.FromAngledMagnitude(worldUnit.min, targetRot) + pivot; + var endTargetPos = MathUtils.FromAngledMagnitude(worldUnit.max, targetRot) + pivot; + targetLine.color = GetTargetLineColor(currRot, targetRot); + DrawLine(targetLine, startTargetPos, endTargetPos); + } + } + + private Color GetTargetLineColor(float currRot, float targetRot) { + var delta = Mathf.Abs(Mathf.DeltaAngle(currRot, targetRot)); + + return Colors.Verdigris.SetAlpha(delta > 15f ? 1f : delta / 15f); + } + + private void DrawLine(VectorLine line, Vector2 start, Vector2 end) { + line.points2[0] = ScreenPoint(start); + line.points2[1] = ScreenPoint(end); + line.Draw(); + } + + private Vector2 ScreenPoint(Vector2 worldPoint) { + return cam.WorldToScreenPoint(worldPoint); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/UI/Gameplay/RotationOverlay.cs.meta b/Assets/Project/Source/UI/Gameplay/RotationOverlay.cs.meta new file mode 100644 index 00000000..02d3680d --- /dev/null +++ b/Assets/Project/Source/UI/Gameplay/RotationOverlay.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 44cdea69361b4574b6d1ac285d277d45 +timeCreated: 1632163844 \ No newline at end of file diff --git a/Assets/Project/Source/UI/Gameplay/ScoreView.cs b/Assets/Project/Source/UI/Gameplay/ScoreView.cs new file mode 100644 index 00000000..5e570a3b --- /dev/null +++ b/Assets/Project/Source/UI/Gameplay/ScoreView.cs @@ -0,0 +1,21 @@ +using Exa.Gameplay.Missions; +using Exa.UI.Tooltips; +using UnityEngine; + +namespace Exa.UI.Gameplay { + public class ScoreView : MonoBehaviour { + [SerializeField] private PropertyView collectedResourcesView; + [SerializeField] private PropertyView enemiesDestroyedView; + [SerializeField] private PropertyView totalScoreView; + + public void PresentStats(MissionStats stats) { + collectedResourcesView.SetLabel($"{stats.CollectedResources.creditCost}x credits collected"); + collectedResourcesView.SetValue(stats.CollectedResourcesScore); + + enemiesDestroyedView.SetLabel($"{stats.DestroyedShips}x enemies destroyed"); + enemiesDestroyedView.SetValue(stats.DestroyedShipsScore); + + totalScoreView.SetValue(stats.TotalScore); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/UI/Gameplay/ScoreView.cs.meta b/Assets/Project/Source/UI/Gameplay/ScoreView.cs.meta new file mode 100644 index 00000000..aaff341a --- /dev/null +++ b/Assets/Project/Source/UI/Gameplay/ScoreView.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 2a45dfe7e64e4e6e8986139a55e601f0 +timeCreated: 1624221658 \ No newline at end of file diff --git a/Assets/Project/Source/UI/Gameplay/SelectionArea.cs b/Assets/Project/Source/UI/Gameplay/SelectionArea.cs index c5258fe2..5934bd8f 100644 --- a/Assets/Project/Source/UI/Gameplay/SelectionArea.cs +++ b/Assets/Project/Source/UI/Gameplay/SelectionArea.cs @@ -2,13 +2,11 @@ #pragma warning disable CS0649 -namespace Exa.UI.Gameplay -{ - public class SelectionArea : MonoBehaviour - { +namespace Exa.UI.Gameplay { + public class SelectionArea : MonoBehaviour { [SerializeField] private RectTransform rect; - private Vector2 startWorldPoint; private Vector2 endWorldPoint; + private Vector2 startWorldPoint; private void Awake() { startWorldPoint = Vector2.zero; @@ -53,7 +51,7 @@ private void SetPosition() { } private Vector2 GetScreenSpace(Vector2 worldPos) { - return Camera.main.WorldToScreenPoint(worldPos); + return S.CameraController.Camera.WorldToScreenPoint(worldPos); } } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/Gameplay/SelectionHotbar.cs b/Assets/Project/Source/UI/Gameplay/SelectionHotbar.cs index 852f283b..3acd2f2c 100644 --- a/Assets/Project/Source/UI/Gameplay/SelectionHotbar.cs +++ b/Assets/Project/Source/UI/Gameplay/SelectionHotbar.cs @@ -1,13 +1,11 @@ -using Exa.Gameplay; -using System.Collections.Generic; +using System.Collections.Generic; +using Exa.Gameplay; using UnityEngine; #pragma warning disable CS0649 -namespace Exa.UI.Gameplay -{ - public class SelectionHotbar : MonoBehaviour - { +namespace Exa.UI.Gameplay { + public class SelectionHotbar : MonoBehaviour { [SerializeField] private Transform container; [SerializeField] private GameObject selectionHotbarItemPrefab; private Dictionary itemDict; @@ -39,6 +37,7 @@ public ShipSelection Select(int index = -1) { // If the selected index is the same as the current, treat it as it should be deselected if (selectedIndex == index) { selectedIndex = -1; + return null; } @@ -47,6 +46,7 @@ public ShipSelection Select(int index = -1) { if (IsInRange(selectedIndex)) { var selection = itemDict[index]; selection.Selected = true; + return Clone(selection.ShipSelection); } @@ -55,6 +55,7 @@ public ShipSelection Select(int index = -1) { public void Save(ShipSelection selection, int? pIndex = null) { var index = pIndex ?? selectedIndex; + if (index >= 0 && index <= 9) { var item = itemDict[index]; item.ShipSelection = Clone(selection); @@ -62,8 +63,9 @@ public void Save(ShipSelection selection, int? pIndex = null) { } private void CreatePrefabs() { - for (int i = 1; i < 10; i++) + for (var i = 1; i < 10; i++) { CreatePrefab(i); + } CreatePrefab(0); } diff --git a/Assets/Project/Source/UI/Gameplay/SelectionHotbarItem.cs b/Assets/Project/Source/UI/Gameplay/SelectionHotbarItem.cs index 2644c742..c7cbb496 100644 --- a/Assets/Project/Source/UI/Gameplay/SelectionHotbarItem.cs +++ b/Assets/Project/Source/UI/Gameplay/SelectionHotbarItem.cs @@ -4,28 +4,18 @@ #pragma warning disable CS0649 -namespace Exa.UI.Gameplay -{ - public class SelectionHotbarItem : MonoBehaviour - { +namespace Exa.UI.Gameplay { + public class SelectionHotbarItem : MonoBehaviour { [SerializeField] private CanvasGroup canvasGroup; [SerializeField] private Text text; [SerializeField] private Color inactiveColor; [SerializeField] private Color activeColor; [SerializeField] private Color emptyColor; - private ShipSelection shipSelection; private bool selected; + private ShipSelection shipSelection; - public bool HasShipSelection => shipSelection != null && shipSelection.Count > 0; - - private void Awake() { - selected = false; - - UpdateView(); - } - - public void Setup(int index) { - text.text = index.ToString(); + public bool HasShipSelection { + get => shipSelection != null && shipSelection.Count > 0; } public ShipSelection ShipSelection { @@ -44,6 +34,16 @@ public bool Selected { } } + private void Awake() { + selected = false; + + UpdateView(); + } + + public void Setup(int index) { + text.text = index.ToString(); + } + private void UpdateView() { canvasGroup.alpha = selected ? 1f diff --git a/Assets/Project/Source/UI/Gameplay/SelectionOverlay.cs b/Assets/Project/Source/UI/Gameplay/SelectionOverlay.cs index abccd8a4..ce6360cf 100644 --- a/Assets/Project/Source/UI/Gameplay/SelectionOverlay.cs +++ b/Assets/Project/Source/UI/Gameplay/SelectionOverlay.cs @@ -1,16 +1,14 @@ -using Exa.Bindings; +using System.Collections.Generic; +using System.Linq; using Exa.Gameplay; using Exa.Ships; -using System.Collections.Generic; -using System.Linq; +using Exa.Types.Binding; using UnityEngine; #pragma warning disable CS0649 -namespace Exa.UI.Gameplay -{ - public class SelectionOverlay : AbstractCollectionObserver - { +namespace Exa.UI.Gameplay { + public class SelectionOverlay : AbstractCollectionObserver { [SerializeField] private GameObject shipViewPrefab; [SerializeField] private Transform container; @@ -20,13 +18,13 @@ private void Awake() { container.gameObject.SetActive(false); } - public override void OnAdd(Ship value) { + public override void OnAdd(GridInstance value) { var view = SelectOrCreateView(value); view.Add(value); ProcessEnabled(); } - public override void OnRemove(Ship value) { + public override void OnRemove(GridInstance value) { var key = value.Blueprint.name; var view = shipViews[key]; @@ -51,22 +49,23 @@ public override void OnClear() { } public void Reflect(ShipSelection shipSelection) { - this.Source = shipSelection; + Source = shipSelection; ProcessEnabled(); } - private ShipView SelectOrCreateView(Ship ship) { - var key = ship.Blueprint.name; + private ShipView SelectOrCreateView(GridInstance gridInstance) { + var key = gridInstance.Blueprint.name; + if (!shipViews.ContainsKey(key)) { var viewGO = Instantiate(shipViewPrefab, container); var view = viewGO.GetComponent(); - view.SetThumbnail(ship.Blueprint.Thumbnail); + view.SetThumbnail(gridInstance.Blueprint.Thumbnail); shipViews.Add(key, view); + return view; } - else { - return shipViews[key]; - } + + return shipViews[key]; } private void ProcessEnabled() { diff --git a/Assets/Project/Source/UI/Gameplay/ShipView.cs b/Assets/Project/Source/UI/Gameplay/ShipView.cs index 21993fb7..076cf9fd 100644 --- a/Assets/Project/Source/UI/Gameplay/ShipView.cs +++ b/Assets/Project/Source/UI/Gameplay/ShipView.cs @@ -1,22 +1,20 @@ -using Exa.Ships; -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; +using Exa.Ships; using UnityEngine; using UnityEngine.UI; #pragma warning disable CS0649 -namespace Exa.UI.Gameplay -{ - public class ShipView : MonoBehaviour - { +namespace Exa.UI.Gameplay { + public class ShipView : MonoBehaviour { [SerializeField] private Gradient colorGradient; [SerializeField] private Text countText; [SerializeField] private Slider slider; [SerializeField] private Image sliderImage; [SerializeField] private Image thumbnailImage; + private readonly List ships = new List(); private int count; - private readonly List ships = new List(); public int Count { get => count; @@ -27,7 +25,7 @@ private set { } private void Update() { - var total = ships.Average(ship => ship.State.HullIntegrity); + var total = ships.Average(ship => ship.HullIntegrity); SetHull(total); } @@ -37,13 +35,13 @@ public void SetThumbnail(Texture2D thumbnail) { thumbnailImage.sprite = Sprite.Create(thumbnail, thumbnailRect, thumbnailPivot); } - public void Add(Ship ship) { - ships.Add(ship); + public void Add(GridInstance gridInstance) { + ships.Add(gridInstance); Count++; } - public void Remove(Ship ship) { - ships.Remove(ship); + public void Remove(GridInstance gridInstance) { + ships.Remove(gridInstance); Count--; } diff --git a/Assets/Project/Source/UI/LoadingScreen.cs b/Assets/Project/Source/UI/LoadingScreen.cs index 4cd7e07e..0b8dae99 100644 --- a/Assets/Project/Source/UI/LoadingScreen.cs +++ b/Assets/Project/Source/UI/LoadingScreen.cs @@ -1,23 +1,19 @@ using System; using System.Collections; using DG.Tweening; -using Exa.Generics; using Exa.Utils; using UnityEngine; using UnityEngine.UI; #pragma warning disable CS0649 -namespace Exa.UI -{ - public enum LoadingScreenDuration - { +namespace Exa.UI { + public enum LoadingScreenDuration { Short, Long } - public class LoadingScreen : MonoBehaviour - { + public class LoadingScreen : MonoBehaviour { [Header("References")] [SerializeField] private GameObject background; [SerializeField] private RectTransform foreground; @@ -27,16 +23,16 @@ public class LoadingScreen : MonoBehaviour [SerializeField] private CanvasGroup wipNoticeGroup; [SerializeField] private Text loadingMessage; - [Header("Options")] - [SerializeField] private bool forceDisplay = false; + [Header("Options")] + [SerializeField] private bool forceDisplay; + + private Tween foregroundAlphaTween; + private Tween foregroundAnchoredPosTween; private bool loaded; private float minimumTimeActive; - private float timeActive; private bool shouldDisplay; - - private Tween foregroundAlphaTween; - private Tween foregroundAnchoredPosTween; + private float timeActive; private Tween wipNoticeAnchoredPosTween; public void Init() { @@ -44,7 +40,9 @@ public void Init() { } public void ShowScreen(LoadingScreenDuration duration) { - if (!shouldDisplay) return; + if (!shouldDisplay) { + return; + } minimumTimeActive = GetDuration(duration); timeActive = 0f; @@ -57,11 +55,16 @@ public void ShowScreen(LoadingScreenDuration duration) { foregroundAnchoredPosTween = SlowSlide(foreground); wipNoticeGroup.alpha = 0f; - this.Delay(() => { - wipNoticeGroup.DOFade(1f, 1f); - SlideIn(wipNotice) - .OnComplete(() => wipNoticeAnchoredPosTween = SlowSlide(wipNotice)); - }, 0.5f); + + this.Delay( + () => { + wipNoticeGroup.DOFade(1f, 1f); + + SlideIn(wipNotice) + .OnComplete(() => wipNoticeAnchoredPosTween = SlowSlide(wipNotice)); + }, + 0.5f + ); foregroundGroup.alpha = 0; foregroundAlphaTween = foregroundGroup.DOFade(1f, 1f); @@ -69,8 +72,19 @@ public void ShowScreen(LoadingScreenDuration duration) { StartCoroutine(WaitForDeactivation()); } + public void UpdateMessage(string thing, float progress) { + UpdateMessage($"Loading {thing} ({Mathf.RoundToInt(progress * 100)}% complete)"); + } + + // Creates a new progress object that updates the loading screen message when reporting + public IProgress GetLoadReporter(string label) { + return new Progress(value => { UpdateMessage(label, value); }); + } + public void UpdateMessage(string message) { - if (!shouldDisplay) return; + if (!shouldDisplay) { + return; + } loadingMessage.gameObject.SetActive(message != ""); loadingMessage.text = message; @@ -81,7 +95,9 @@ public void HideScreen() { } public void HideScreen(string message) { - if (!shouldDisplay) return; + if (!shouldDisplay) { + return; + } loaded = true; loadingMessage.text = message; @@ -105,22 +121,28 @@ private IEnumerator WaitForDeactivation() { foregroundAnchoredPosTween = SlideOut(foreground); foregroundAlphaTween = foregroundGroup.DOFade(0f, 1f); - this.Delay(() => { - foregroundAnchoredPosTween?.Kill(); - foregroundAlphaTween?.Kill(); - gameObject.SetActive(false); - }, 1f); + + this.Delay( + () => { + foregroundAnchoredPosTween?.Kill(); + foregroundAlphaTween?.Kill(); + gameObject.SetActive(false); + }, + 1f + ); } private Tween SlideIn(RectTransform target) { gameObject.SetActive(true); target.anchoredPosition = new Vector2(50, 0); + return target.DOAnchorPos(new Vector2(0, 0), 1f) .SetEase(Ease.OutSine); } private Tween SlideOut(RectTransform target) { var targetPos = target.anchoredPosition - new Vector2(50, 0); + return target.DOAnchorPos(targetPos, 1f) .SetEase(Ease.InSine); } @@ -130,21 +152,20 @@ private Tween SlowSlide(RectTransform target) { .SetEase(Ease.Linear); } - private bool GetShouldDisplay() - { -#if !UNITY_EDITOR + private bool GetShouldDisplay() { + #if !UNITY_EDITOR return true; -#else + #else return forceDisplay; -#endif + #endif } private float GetDuration(LoadingScreenDuration duration) { - switch (duration) { - case LoadingScreenDuration.Long: return 5f; - case LoadingScreenDuration.Short: return 2f; - default: throw new ArgumentOutOfRangeException(nameof(duration)); - } + return duration switch { + LoadingScreenDuration.Long => 5f, + LoadingScreenDuration.Short => 2f, + _ => throw new ArgumentOutOfRangeException(nameof(duration)) + }; } } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/MainUI.cs b/Assets/Project/Source/UI/MainUI.cs index 873c7bdc..f7421c9d 100644 --- a/Assets/Project/Source/UI/MainUI.cs +++ b/Assets/Project/Source/UI/MainUI.cs @@ -1,27 +1,78 @@ using Exa.ShipEditor; using Exa.UI.Controls; +using Exa.UI.Cursor; using Exa.UI.Diagnostics; using Exa.UI.Tooltips; using UCommandConsole; using UnityEngine; -namespace Exa.UI -{ - public class MainUI : MonoBehaviour - { - public Canvas rootCanvas; - public RectTransform rootTransform; - public LoadingScreen loadingScreen; - public ShipEditorOverlay editorOverlay; - public RootNavigation root; - public VariableTooltipManager tooltips; - public Console console; - public UserExceptionLogger logger; - public MouseCursorController mouseCursor; - public PromptController promptController; - public DiagnosticsPanel diagnostics; - public ControlFactory controlFactory; - public WipScreen wipScreen; +namespace Exa.UI { + public class MainUI : MonoBehaviour { + [SerializeField] private Canvas rootCanvas; + [SerializeField] private RectTransform rootTransform; + [SerializeField] private LoadingScreen loadingScreen; + [SerializeField] private ShipEditorOverlay editorOverlay; + [SerializeField] private RootNavigation root; + [SerializeField] private VariableTooltipManager tooltips; + [SerializeField] private Console console; + [SerializeField] private NotificationLogger logger; + [SerializeField] private MouseCursorController mouseCursor; + [SerializeField] private PromptController promptController; + [SerializeField] private DiagnosticsPanel diagnostics; + [SerializeField] private ControlFactory controlFactory; + [SerializeField] private WipScreen wipScreen; + + public Canvas RootCanvas { + get => rootCanvas; + } + + public RectTransform RootTransform { + get => rootTransform; + } + + public LoadingScreen LoadingScreen { + get => loadingScreen; + } + + public ShipEditorOverlay EditorOverlay { + get => editorOverlay; + } + + public RootNavigation Root { + get => root; + } + + public VariableTooltipManager Tooltips { + get => tooltips; + } + + public Console Console { + get => console; + } + + public NotificationLogger Logger { + get => logger; + } + + public MouseCursorController MouseCursor { + get => mouseCursor; + } + + public PromptController Prompts { + get => promptController; + } + + public DiagnosticsPanel Diagnostics { + get => diagnostics; + } + + public ControlFactory Controls { + get => controlFactory; + } + + public WipScreen WipScreen { + get => wipScreen; + } private void Awake() { console.Initialize(); diff --git a/Assets/Project/Source/UI/UserExceptionLogger.meta b/Assets/Project/Source/UI/Notifications.meta similarity index 100% rename from Assets/Project/Source/UI/UserExceptionLogger.meta rename to Assets/Project/Source/UI/Notifications.meta diff --git a/Assets/Project/Source/UI/Notifications/NotificationLogger.cs b/Assets/Project/Source/UI/Notifications/NotificationLogger.cs new file mode 100644 index 00000000..a0179ade --- /dev/null +++ b/Assets/Project/Source/UI/Notifications/NotificationLogger.cs @@ -0,0 +1,27 @@ +using Exa.Misc; +using Exa.Utils; +using UnityEngine; + +namespace Exa.UI { + public class NotificationLogger : MonoBehaviour { + [SerializeField] private GameObject notificationPrefab; + [SerializeField] private Transform container; + + public void NotifyNowPlaying(string name) { + Notify("Now playing", name); + } + + public void LogException(UserException exception) { + LogException(exception.Message); + } + + public void LogException(string message, bool unhandled = true) { + var header = unhandled ? "Unhandled exception" : "Error"; + Notify(header, message); + } + + public void Notify(string header, string message) { + notificationPrefab.Create(container).Setup(header, message); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/UI/UserExceptionLogger/UserExceptionLogger.cs.meta b/Assets/Project/Source/UI/Notifications/NotificationLogger.cs.meta similarity index 100% rename from Assets/Project/Source/UI/UserExceptionLogger/UserExceptionLogger.cs.meta rename to Assets/Project/Source/UI/Notifications/NotificationLogger.cs.meta diff --git a/Assets/Project/Source/UI/Notifications/NotificationView.cs b/Assets/Project/Source/UI/Notifications/NotificationView.cs new file mode 100644 index 00000000..a0e41fef --- /dev/null +++ b/Assets/Project/Source/UI/Notifications/NotificationView.cs @@ -0,0 +1,28 @@ +using DG.Tweening; +using Exa.Utils; +using UnityEngine; +using UnityEngine.UI; + +#pragma warning disable CS0649 + +namespace Exa.UI { + public class NotificationView : MonoBehaviour { + [SerializeField] private CanvasGroup canvasGroup; + [SerializeField] private Text header; + [SerializeField] private Text body; + + private void Awake() { + canvasGroup.alpha = 0f; + canvasGroup.DOFade(1, 0.2f); + + StartCoroutine(EnumeratorUtils.Delay(() => { canvasGroup.DOFade(0f, 0.2f); }, 3f)); + + StartCoroutine(EnumeratorUtils.Delay(() => { Destroy(gameObject); }, 3.2f)); + } + + public void Setup(string header, string body) { + this.header.text = header; + this.body.text = body; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/UI/UserExceptionLogger/UserExceptionView.cs.meta b/Assets/Project/Source/UI/Notifications/NotificationView.cs.meta similarity index 100% rename from Assets/Project/Source/UI/UserExceptionLogger/UserExceptionView.cs.meta rename to Assets/Project/Source/UI/Notifications/NotificationView.cs.meta diff --git a/Assets/Project/Source/UI/Prompt.cs b/Assets/Project/Source/UI/Prompt.cs new file mode 100644 index 00000000..84205343 --- /dev/null +++ b/Assets/Project/Source/UI/Prompt.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using Exa.Utils; +using UnityEngine; + +namespace Exa.UI { + public class Prompt { + private readonly Action cleanUp; + private readonly PromptController controller; + private readonly IUIGroup group; + private readonly IEnumerable uiObjects; + + public Prompt(PromptController controller, string message, IUIGroup group, Action cleanUp, IEnumerable uiObjects) { + this.controller = controller; + this.group = group; + this.cleanUp = cleanUp; + this.uiObjects = uiObjects; + + uiObjects?.ForEach(uiObject => uiObject.SetActive(true)); + controller.ActivateMessage(message, group); + } + + public void CleanUp() { + cleanUp?.Invoke(); + + controller.DeactivateMessage(group); + uiObjects?.ForEach(uiObject => uiObject.SetActive(true)); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/UI/Prompt.cs.meta b/Assets/Project/Source/UI/Prompt.cs.meta new file mode 100644 index 00000000..db873192 --- /dev/null +++ b/Assets/Project/Source/UI/Prompt.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2122b24ba18278d49b72ebc01f76e724 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/UI/PromptController.cs b/Assets/Project/Source/UI/PromptController.cs index 56ebe8bd..01ba5c62 100644 --- a/Assets/Project/Source/UI/PromptController.cs +++ b/Assets/Project/Source/UI/PromptController.cs @@ -1,13 +1,12 @@ using System; +using Exa.UI.Components; using UnityEngine; using UnityEngine.UI; #pragma warning disable CS0649 -namespace Exa.UI -{ - public class PromptController : MonoBehaviour - { +namespace Exa.UI { + public class PromptController : MonoBehaviour { [SerializeField] private Transform ownerObject; [SerializeField] private Button yesButton; [SerializeField] private Button noButton; @@ -15,68 +14,128 @@ public class PromptController : MonoBehaviour [SerializeField] private Transform yesNoContainer; [SerializeField] private Button okButton; [SerializeField] private Text promptText; + [SerializeField] private ProgressBar progressBar; - public Action PromptTextSetter => value => promptText.text = value; + public Action PromptTextSetter { + get => value => promptText.text = value; + } + + public Prompt PromptForm( + string message, + IUIGroup uiGroup, + ModelDescriptor modelDescriptor, + Action onSubmit + ) { + var prompt = new Prompt( + this, + message, + uiGroup, + () => { okButton.onClick.RemoveAllListeners(); }, + new[] { + okButton.gameObject, + formGenerator.gameObject + } + ); - public void PromptForm(string message, IUIGroup uiGroup, ModelDescriptor modelDescriptor, - Action onSubmit) { - ActivateMessage(message, uiGroup); - okButton.gameObject.SetActive(true); - formGenerator.gameObject.SetActive(true); formGenerator.GenerateForm(modelDescriptor); - okButton.onClick.AddListener(() => { - onSubmit(modelDescriptor.FromDescriptor()); - okButton.gameObject.SetActive(false); - formGenerator.gameObject.SetActive(false); - DeactivateMessage(uiGroup); - }); + okButton.onClick.AddListener( + () => { + onSubmit(modelDescriptor.FromDescriptor()); + prompt.CleanUp(); + } + ); + + return prompt; } - public void PromptYesNo(string message, IUIGroup uiGroup, Action onClosePrompt = null) { - ActivateMessage(message, uiGroup); - yesNoContainer.gameObject.SetActive(true); + public Prompt PromptYesNo(string message, IUIGroup uiGroup, Action onClosePrompt = null) { + var prompt = new Prompt( + this, + message, + uiGroup, + () => { + yesButton.onClick.RemoveAllListeners(); + noButton.onClick.RemoveAllListeners(); + }, + new[] { + yesNoContainer.gameObject + } + ); + + yesButton.onClick.AddListener( + () => { + onClosePrompt?.Invoke(true); + prompt.CleanUp(); + } + ); - yesButton.onClick.AddListener(() => { - onClosePrompt?.Invoke(true); - CleanupYesNo(uiGroup); - }); + noButton.onClick.AddListener( + () => { + onClosePrompt?.Invoke(false); + prompt.CleanUp(); + } + ); - noButton.onClick.AddListener(() => { - onClosePrompt?.Invoke(false); - CleanupYesNo(uiGroup); - }); + return prompt; } - public void PromptOk(string message, IUIGroup uiGroup, Action onClosePrompt = null) { - ActivateMessage(message, uiGroup); - okButton.gameObject.SetActive(true); + public Prompt PromptOk(string message, IUIGroup uiGroup, Action onClosePrompt = null) { + var prompt = new Prompt( + this, + message, + uiGroup, + () => { okButton.onClick.RemoveAllListeners(); }, + new[] { + okButton.gameObject + } + ); - okButton.onClick.AddListener(() => { - onClosePrompt?.Invoke(); - okButton.gameObject.SetActive(false); - uiGroup.Interactable = true; - gameObject.SetActive(false); - }); + okButton.onClick.AddListener( + () => { + onClosePrompt?.Invoke(); + prompt.CleanUp(); + } + ); + + return prompt; } - public void CleanupYesNo(IUIGroup uiGroup = null) { - yesNoContainer.gameObject.SetActive(false); - DeactivateMessage(uiGroup); + public IProgress PromptProgress(string message, IUIGroup uiGroup) { + var prompt = null as Prompt; + + return new Progress( + value => { + if (value == 0f) { + prompt = new Prompt( + this, + message, + uiGroup, + () => { progressBar.Report(0f); }, + new[] { + progressBar.gameObject + } + ); + } + + if (value == 1f) { + prompt.CleanUp(); + } + + progressBar.Report(value); + } + ); } - public void ActivateMessage(string message, IUIGroup uiGroup) { + internal void ActivateMessage(string message, IUIGroup uiGroup) { ownerObject.gameObject.SetActive(true); uiGroup.Interactable = false; promptText.text = message; } - public void DeactivateMessage(IUIGroup uiGroup) { + internal void DeactivateMessage(IUIGroup uiGroup) { ownerObject.gameObject.SetActive(false); uiGroup.Interactable = true; - okButton.onClick.RemoveAllListeners(); - yesButton.onClick.RemoveAllListeners(); - noButton.onClick.RemoveAllListeners(); } } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/RootNavigation/BlueprintSelector/BlueprintDetails.cs b/Assets/Project/Source/UI/RootNavigation/BlueprintSelector/BlueprintDetails.cs index 1dae46a6..d7b95bb6 100644 --- a/Assets/Project/Source/UI/RootNavigation/BlueprintSelector/BlueprintDetails.cs +++ b/Assets/Project/Source/UI/RootNavigation/BlueprintSelector/BlueprintDetails.cs @@ -1,14 +1,13 @@ -using Exa.Grids.Blueprints; +using Exa.Grids.Blocks; +using Exa.Grids.Blueprints; using Exa.UI.Tooltips; using UnityEngine; using UnityEngine.UI; #pragma warning disable CS0649 -namespace Exa.UI -{ - public class BlueprintDetails : MonoBehaviour - { +namespace Exa.UI { + public class BlueprintDetails : MonoBehaviour { [SerializeField] private GameObject container; [SerializeField] private Image thumbnailImage; [SerializeField] private Text nameText; @@ -17,34 +16,37 @@ public class BlueprintDetails : MonoBehaviour [SerializeField] private PropertyView massView; [SerializeField] private PropertyView energyView; + private void OnEnable() { + container.SetActive(false); + } + public void Reflect(Blueprint blueprint) { if (blueprint == null) { container.SetActive(false); + return; } - if (!container.activeSelf) container.SetActive(true); + if (!container.activeSelf) { + container.SetActive(true); + } try { var thumbnailRect = new Rect(0, 0, 512, 512); var thumbnailPivot = new Vector2(0.5f, 0.5f); thumbnailImage.sprite = Sprite.Create(blueprint.Thumbnail, thumbnailRect, thumbnailPivot); - } - catch { + } catch { Debug.LogWarning("Error setting blueprint thumbnail"); } nameText.text = blueprint.name; - Vector2Int size = blueprint.Blocks.Size; + Vector2Int size = blueprint.Grid.Size; - blockCountView.SetValue(blueprint.Blocks.GetMemberCount()); - sizeView.SetValue($"{size.x}x{size.y}"); - massView.SetValue($"{blueprint.Blocks.Totals.Mass:0} Tonne"); - energyView.SetValue($"{blueprint.Blocks.Totals.PowerGeneration:0} KW"); - } + var totals = blueprint.Grid.GetTotals(BlockContext.UserGroup); - private void OnEnable() { - container.SetActive(false); + blockCountView.SetValue(blueprint.Grid.GetMemberCount()); + sizeView.SetValue($"{size.x}x{size.y}"); + massView.SetValue($"{totals.Mass:0} Tonne"); } } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/RootNavigation/BlueprintSelector/BlueprintSelector.cs b/Assets/Project/Source/UI/RootNavigation/BlueprintSelector/BlueprintSelector.cs index 52dfbfd1..39d74954 100644 --- a/Assets/Project/Source/UI/RootNavigation/BlueprintSelector/BlueprintSelector.cs +++ b/Assets/Project/Source/UI/RootNavigation/BlueprintSelector/BlueprintSelector.cs @@ -2,16 +2,17 @@ using System; using System.Collections.Generic; -using Exa.Bindings; using Exa.Grids.Blueprints; using Exa.IO; +using Exa.ShipEditor; +using Exa.Types.Binding; using Exa.UI.Components; using UnityEngine; -namespace Exa.UI -{ - public class BlueprintSelector : ViewController, IUIGroup - { +namespace Exa.UI { + + public class BlueprintSelector : ViewBinder, IUIGroup { + [SerializeField] private Navigateable blueprintSelectorNavigateable; [SerializeField] private Navigateable shipEditorNavigateable; [SerializeField] private BlueprintDetails blueprintDetails; @@ -28,30 +29,111 @@ public bool Interactable { } public void OnAddNewBlueprint() { - Systems.UI.promptController.PromptForm( - message: "Add blueprint", - uiGroup: this, - modelDescriptor: new BlueprintOptionsDescriptor(), - onSubmit: ImportBlueprintWithOptions); + S.UI.Prompts.PromptForm( + "Add blueprint", + this, + new BlueprintOptionsDescriptor(), + ImportBlueprintWithOptions + ); + } + + public void TrySave(BlueprintContainer container) { + if (Source is ICollection collection) { + if (!collection.Contains(container)) { + collection.Add(container); + } + } else { + throw new InvalidOperationException("Source must be an observable collection"); + } } - #region Clipboard import + protected override BlueprintView CreateView(BlueprintContainer value, Transform container) { + var view = base.CreateView(value, container); + + view.button.onClick.AddListener( + () => { + if (!Interactable) { + return; + } + + blueprintSelectorNavigateable.NavigateTo( + shipEditorNavigateable, + new NavigationArgs { + current = blueprintSelectorNavigateable + } + ); + + S.Editor.Import(new ContainerImportArgs(value, TrySave)); + } + ); + + view.deleteButton.onClick.AddListener( + () => { + if (!Interactable) { + return; + } + + S.UI.Prompts.PromptYesNo( + "Are you sure you want to delete this blueprint?", + this, + yes => { + if (!yes) { + return; + } + + if (Source is ICollection collection) { + collection.Remove(value); + } else { + throw new InvalidOperationException("Source must be an observable collection"); + } + } + ); + } + ); + + view.hoverable.onPointerEnter.AddListener(() => { blueprintDetails.Reflect(value.Data); }); + view.hoverable.onPointerExit.AddListener(() => { blueprintDetails.Reflect(null); }); + + return view; + } + + private void ImportBlueprintWithOptions(BlueprintOptions options) { + var blueprint = new Blueprint(options); + + if (S.Blueprints.ContainsName(blueprint.name)) { + S.UI.Logger.LogException($"Blueprint name \"{blueprint.name}\" is already used"); + + return; + } + + var args = new BlueprintContainerArgs(blueprint); + var container = new BlueprintContainer(args); + + blueprintSelectorNavigateable.NavigateTo(shipEditorNavigateable); + S.Editor.Import(new ContainerImportArgs(container, TrySave)); + } + + #region Clipboard import public void OnClipboardImport() { var clipboardText = GUIUtility.systemCopyBuffer; if (string.IsNullOrEmpty(clipboardText)) { - Systems.UI.logger.Log("Clipboard is empty"); + S.UI.Logger.LogException("Clipboard is empty"); + return; } - if (!OnClipboardImportDeserialize(clipboardText, out var blueprint)) return; + if (!OnClipboardImportDeserialize(clipboardText, out var blueprint)) { + return; + } var args = new BlueprintContainerArgs(blueprint); var container = new BlueprintContainer(args); - if (Systems.Blueprints.ContainsName(blueprint.name)) { - Systems.UI.logger.Log("Blueprint with given name already added"); + if (S.Blueprints.ContainsName(blueprint.name)) { + S.UI.Logger.LogException("Blueprint with given name already added"); + return; } @@ -61,74 +143,19 @@ public void OnClipboardImport() { private bool OnClipboardImportDeserialize(string json, out Blueprint blueprint) { try { - blueprint = IOUtils.JsonDeserializeWithSettings(json); + blueprint = IOUtils.FromJson(json); + return true; - } - catch { - Systems.UI.logger.Log("Clipboard data is formatted incorrectly"); + } catch { + S.UI.Logger.LogException("Clipboard data is formatted incorrectly", false); blueprint = null; - return false; - } - } - - #endregion - public void TrySave(BlueprintContainer container) { - Systems.Thumbnails.GenerateThumbnail(container.Data); - container.ThumbnailFileHandle.Refresh(); - container.BlueprintFileHandle.Refresh(); - - if (Source is ICollection collection) { - if (!collection.Contains(container)) - collection.Add(container); + return false; } - else - throw new InvalidOperationException("Source must be an observable collection"); } - protected override BlueprintView OnAdd(BlueprintContainer value, Transform container) { - var view = base.OnAdd(value, container); - - view.button.onClick.AddListener(() => { - if (!Interactable) return; - - blueprintSelectorNavigateable.NavigateTo(shipEditorNavigateable, new NavigationArgs { - current = blueprintSelectorNavigateable - }); - Systems.Editor.Import(value, TrySave); - }); - view.deleteButton.onClick.AddListener(() => { - if (!Interactable) return; - - Systems.UI.promptController.PromptYesNo("Are you sure you want to delete this blueprint?", this, - yes => { - if (!yes) return; - - if (Source is ICollection collection) - collection.Remove(value); - else - throw new InvalidOperationException("Source must be an observable collection"); - }); - }); - view.hoverable.onPointerEnter.AddListener(() => { blueprintDetails.Reflect(value.Data); }); - view.hoverable.onPointerExit.AddListener(() => { blueprintDetails.Reflect(null); }); + #endregion - return view; - } - - private void ImportBlueprintWithOptions(BlueprintOptions options) { - var blueprint = new Blueprint(options); - - if (Systems.Blueprints.ContainsName(blueprint.name)) { - Systems.UI.logger.Log($"Blueprint name \"{blueprint.name}\" is already used"); - return; - } - - var args = new BlueprintContainerArgs(blueprint); - var container = new BlueprintContainer(args); - - blueprintSelectorNavigateable.NavigateTo(shipEditorNavigateable); - Systems.Editor.Import(container, TrySave); - } } + } \ No newline at end of file diff --git a/Assets/Project/Source/UI/RootNavigation/BlueprintSelector/BlueprintTypeTooltip.cs b/Assets/Project/Source/UI/RootNavigation/BlueprintSelector/BlueprintTypeTooltip.cs index 5a679d69..375b0c5c 100644 --- a/Assets/Project/Source/UI/RootNavigation/BlueprintSelector/BlueprintTypeTooltip.cs +++ b/Assets/Project/Source/UI/RootNavigation/BlueprintSelector/BlueprintTypeTooltip.cs @@ -1,8 +1,6 @@ using Exa.Grids.Blueprints; using Exa.UI.Tooltips; -namespace Exa.UI -{ - public class BlueprintTypeTooltip : TooltipView - { } +namespace Exa.UI { + public class BlueprintTypeTooltip : TooltipView { } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/RootNavigation/BlueprintSelector/BlueprintView.cs b/Assets/Project/Source/UI/RootNavigation/BlueprintSelector/BlueprintView.cs index 2a104fe4..83977a47 100644 --- a/Assets/Project/Source/UI/RootNavigation/BlueprintSelector/BlueprintView.cs +++ b/Assets/Project/Source/UI/RootNavigation/BlueprintSelector/BlueprintView.cs @@ -1,14 +1,13 @@ using Exa.Grids.Blueprints; +using Exa.Types.Binding; using UnityEngine; using UnityEngine.UI; #pragma warning disable CS0649 -namespace Exa.UI -{ - public class BlueprintView : MonoBehaviour, Bindings.IObserver - { - [Header("References")] +namespace Exa.UI { + public class BlueprintView : MonoBehaviour, IObserver { + [Header("References")] public Button deleteButton; public Button button; public Hoverable hoverable; @@ -24,8 +23,7 @@ public void OnUpdate(Blueprint data) { var thumbnailRect = new Rect(0, 0, 512, 512); var thumbnailPivot = new Vector2(0.5f, 0.5f); thumbnailImage.sprite = Sprite.Create(data.Thumbnail, thumbnailRect, thumbnailPivot); - } - catch { + } catch { Debug.LogWarning("Error setting blueprint thumbnail"); } } diff --git a/Assets/Project/Source/UI/RootNavigation/BlueprintsButton.cs b/Assets/Project/Source/UI/RootNavigation/BlueprintsButton.cs new file mode 100644 index 00000000..e89c7352 --- /dev/null +++ b/Assets/Project/Source/UI/RootNavigation/BlueprintsButton.cs @@ -0,0 +1,13 @@ +using UnityEngine; + +namespace Exa.UI { + public class BlueprintsButton : MonoBehaviour { + [SerializeField] private bool allowAnytime; + + private void Start() { + if (!Application.isEditor && !allowAnytime) { + gameObject.SetActive(false); + } + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/UI/RootNavigation/BlueprintsButton.cs.meta b/Assets/Project/Source/UI/RootNavigation/BlueprintsButton.cs.meta new file mode 100644 index 00000000..1d57eb5d --- /dev/null +++ b/Assets/Project/Source/UI/RootNavigation/BlueprintsButton.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fae5fa3f420917b4f9d93d45c1d77f13 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/UI/RootNavigation/MainMenu/BuildMessage.cs b/Assets/Project/Source/UI/RootNavigation/MainMenu/BuildMessage.cs index b2cab282..3fd5533d 100644 --- a/Assets/Project/Source/UI/RootNavigation/MainMenu/BuildMessage.cs +++ b/Assets/Project/Source/UI/RootNavigation/MainMenu/BuildMessage.cs @@ -1,10 +1,8 @@ using UnityEngine; -namespace Exa.UI -{ +namespace Exa.UI { [CreateAssetMenu(fileName = "buildMessage", menuName = "UI/MainMenu/BuildMessage")] - public class BuildMessage : ScriptableObject - { + public class BuildMessage : ScriptableObject { [TextArea(3, 100)] public string buildMessage; } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/RootNavigation/MainMenu/BuildMessageView.cs b/Assets/Project/Source/UI/RootNavigation/MainMenu/BuildMessageView.cs index eaa9faf2..4308d1cf 100644 --- a/Assets/Project/Source/UI/RootNavigation/MainMenu/BuildMessageView.cs +++ b/Assets/Project/Source/UI/RootNavigation/MainMenu/BuildMessageView.cs @@ -3,10 +3,8 @@ #pragma warning disable CS0649 -namespace Exa.UI -{ - public class BuildMessageView : MonoBehaviour - { +namespace Exa.UI { + public class BuildMessageView : MonoBehaviour { [SerializeField] private Text buildMessageText; [SerializeField] private BuildMessage buildMessage; diff --git a/Assets/Project/Source/UI/RootNavigation/MainMenu/ExitNavigateableTabButton.cs b/Assets/Project/Source/UI/RootNavigation/MainMenu/ExitNavigateableTabButton.cs index 5710e623..9d6c13f1 100644 --- a/Assets/Project/Source/UI/RootNavigation/MainMenu/ExitNavigateableTabButton.cs +++ b/Assets/Project/Source/UI/RootNavigation/MainMenu/ExitNavigateableTabButton.cs @@ -1,15 +1,13 @@ using Exa.UI.Components; -namespace Exa.UI -{ - public class ExitNavigateableTabButton : Navigateable - { +namespace Exa.UI { + public class ExitNavigateableTabButton : Navigateable { public override void HandleEnter(NavigationArgs args) { Exit(); } public void Exit() { - Systems.Quit(); + S.Quit(); } } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/RootNavigation/MainMenu/MainMenuDebug.cs b/Assets/Project/Source/UI/RootNavigation/MainMenu/MainMenuDebug.cs index e74c0681..92258d26 100644 --- a/Assets/Project/Source/UI/RootNavigation/MainMenu/MainMenuDebug.cs +++ b/Assets/Project/Source/UI/RootNavigation/MainMenu/MainMenuDebug.cs @@ -1,17 +1,14 @@ using Exa.Debugging; -using Exa.Utils; using UnityEngine; #pragma warning disable CS0649 -namespace Exa.UI -{ - public class MainMenuDebug : DebugBehaviour - { +namespace Exa.UI { + public class MainMenuDebug : DebugBehaviour { [SerializeField] private GameObject gameEditorButton; public override void OnDebugStateChange(DebugMode state) { - gameEditorButton.SetActive(state.Is(DebugMode.Global)); + gameEditorButton.SetActive(state.HasFlag(DebugMode.Global)); } } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/RootNavigation/MainMenu/VersionWatermark.cs b/Assets/Project/Source/UI/RootNavigation/MainMenu/VersionWatermark.cs index 3da571c9..c7a36f9b 100644 --- a/Assets/Project/Source/UI/RootNavigation/MainMenu/VersionWatermark.cs +++ b/Assets/Project/Source/UI/RootNavigation/MainMenu/VersionWatermark.cs @@ -3,10 +3,8 @@ #pragma warning disable CS0649 -namespace Exa.UI -{ - public class VersionWatermark : MonoBehaviour - { +namespace Exa.UI { + public class VersionWatermark : MonoBehaviour { [SerializeField] private Text versionText; private void Awake() { diff --git a/Assets/Project/Source/UI/RootNavigation/MenuTooltip.cs b/Assets/Project/Source/UI/RootNavigation/MenuTooltip.cs index bbe2e8d2..7ffcb043 100644 --- a/Assets/Project/Source/UI/RootNavigation/MenuTooltip.cs +++ b/Assets/Project/Source/UI/RootNavigation/MenuTooltip.cs @@ -3,15 +3,14 @@ #pragma warning disable CS0649 -namespace Exa.UI -{ - public class MenuTooltip : MonoBehaviour - { +namespace Exa.UI { + public class MenuTooltip : MonoBehaviour { [SerializeField] private Text text; public void DisplayTooltip(string message) { if (message == "") { gameObject.SetActive(false); + return; } diff --git a/Assets/Project/Source/UI/RootNavigation/MenuTooltipTrigger.cs b/Assets/Project/Source/UI/RootNavigation/MenuTooltipTrigger.cs index 37dfe46e..36ff09e4 100644 --- a/Assets/Project/Source/UI/RootNavigation/MenuTooltipTrigger.cs +++ b/Assets/Project/Source/UI/RootNavigation/MenuTooltipTrigger.cs @@ -1,11 +1,9 @@ using UnityEngine; using UnityEngine.Events; -namespace Exa.UI -{ +namespace Exa.UI { [RequireComponent(typeof(Hoverable))] - public class MenuTooltipTrigger : MonoBehaviour - { + public class MenuTooltipTrigger : MonoBehaviour { public string message; public UnityEvent onHover = new UnityEvent(); diff --git a/Assets/Project/Source/UI/RootNavigation/MissionSetup/FleetBuilder/BlueprintTypeButton.cs b/Assets/Project/Source/UI/RootNavigation/MissionSetup/FleetBuilder/BlueprintTypeButton.cs index c815fdfc..fe936cef 100644 --- a/Assets/Project/Source/UI/RootNavigation/MissionSetup/FleetBuilder/BlueprintTypeButton.cs +++ b/Assets/Project/Source/UI/RootNavigation/MissionSetup/FleetBuilder/BlueprintTypeButton.cs @@ -1,50 +1,61 @@ using DG.Tweening; using Exa.Grids.Blueprints; +using Exa.Math; using Exa.UI.Components; +using Exa.Utils; using UnityEngine; using UnityEngine.UI; -using Exa.Math; -using Exa.Utils; #pragma warning disable CS0649 -namespace Exa.UI -{ - public class BlueprintTypeButton : Navigateable - { +namespace Exa.UI { + public class BlueprintTypeButton : Navigateable { public int order; [SerializeField] private Button button; [SerializeField] private Text text; [SerializeField] private LayoutElement layoutElement; private BlueprintTypeTabContent content; - private Tween sizeTween; public BlueprintTypeSelectEvent SelectType = new BlueprintTypeSelectEvent(); + private Tween sizeTween; - public void Init(BlueprintType blueprintType, BlueprintTypeTabContent content, int order, - NavigateableTabManager tabManager) { + public void Init( + BlueprintType blueprintType, + BlueprintTypeTabContent content, + int order, + NavigateableTabManager tabManager + ) { this.content = content; this.order = order; text.text = blueprintType.displayName; - button.onClick.AddListener(() => { - SelectType?.Invoke(blueprintType); - tabManager.SwitchTo(this); - }); + + button.onClick.AddListener( + () => { + SelectType?.Invoke(blueprintType); + tabManager.SwitchTo(this); + } + ); } public override void HandleExit(Navigateable target) { Animate(48f); - content.HandleExit(target is BlueprintTypeButton button - ? Vector2.up * (button.order > order).To1() - : Vector2.zero); + + content.HandleExit( + target is BlueprintTypeButton button + ? Vector2.up * (button.order > order).To1() + : Vector2.zero + ); } public override void HandleEnter(NavigationArgs args) { Animate(72f); - content.HandleEnter(args?.current is BlueprintTypeButton button - ? Vector2.down * (button.order > order).To1() - : Vector2.zero); + + content.HandleEnter( + args?.current is BlueprintTypeButton button + ? Vector2.down * (button.order > order).To1() + : Vector2.zero + ); } private void Animate(float target) { diff --git a/Assets/Project/Source/UI/RootNavigation/MissionSetup/FleetBuilder/BlueprintTypeTabContent.cs b/Assets/Project/Source/UI/RootNavigation/MissionSetup/FleetBuilder/BlueprintTypeTabContent.cs index 288307f5..5515b634 100644 --- a/Assets/Project/Source/UI/RootNavigation/MissionSetup/FleetBuilder/BlueprintTypeTabContent.cs +++ b/Assets/Project/Source/UI/RootNavigation/MissionSetup/FleetBuilder/BlueprintTypeTabContent.cs @@ -3,10 +3,8 @@ using UnityEngine; using UnityEngine.UI; -namespace Exa.UI -{ - public class BlueprintTypeTabContent : AnimatedTabContent - { +namespace Exa.UI { + public class BlueprintTypeTabContent : AnimatedTabContent { public Transform container; [SerializeField] private Text emptyContentNotice; private int childCount; @@ -15,8 +13,10 @@ public int ChildCount { get => childCount; set { var targetState = value == 0; - if (emptyContentNotice.gameObject.activeSelf != targetState) + + if (emptyContentNotice.gameObject.activeSelf != targetState) { emptyContentNotice.gameObject.SetActive(targetState); + } childCount = value; } diff --git a/Assets/Project/Source/UI/RootNavigation/MissionSetup/FleetBuilder/FleetBlueprintViewBinder.cs b/Assets/Project/Source/UI/RootNavigation/MissionSetup/FleetBuilder/FleetBlueprintViewBinder.cs new file mode 100644 index 00000000..48cc08cd --- /dev/null +++ b/Assets/Project/Source/UI/RootNavigation/MissionSetup/FleetBuilder/FleetBlueprintViewBinder.cs @@ -0,0 +1,58 @@ +using System.Collections.Generic; +using Exa.Grids.Blueprints; +using Exa.Types.Binding; +using UnityEngine; +using UnityEngine.Events; + +namespace Exa.UI { + public class FleetBlueprintViewBinder : ViewBinder { + [SerializeField] private GameObject tabPrefab; + + private readonly UnityEvent selectedViewRemoved = new UnityEvent(); + + private readonly Dictionary tabsByType = + new Dictionary(); + + private UnityAction viewButtonCallback; + + public void Init( + UnityAction viewButtonCallback, + UnityAction viewSelectionCallback, + IObservableEnumerable enumerable + ) { + this.viewButtonCallback = viewButtonCallback; + + selectedViewRemoved.AddListener(viewSelectionCallback); + Source = enumerable; + } + + public override void OnAdd(BlueprintContainer value) { + var tab = tabsByType[value.Data.BlueprintType]; + + var view = base.CreateView(value, tab.container); + tab.ChildCount++; + + view.ParentTab = tab; + view.button.onClick.AddListener(() => viewButtonCallback?.Invoke(value)); + } + + public override void OnRemove(BlueprintContainer value) { + if (GetView(value).Selected) { + selectedViewRemoved.Invoke(value); + } + + base.OnRemove(value); + } + + public BlueprintTypeTabContent CreateTab(BlueprintType blueprintType) { + var tab = Instantiate(tabPrefab, transform) + .GetComponent(); + + tab.SetType(blueprintType); + tabsByType.Add(blueprintType, tab); + tab.gameObject.SetActive(false); + + return tab; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/UI/RootNavigation/MissionSetup/FleetBuilder/FleetBlueprintViewController.cs.meta b/Assets/Project/Source/UI/RootNavigation/MissionSetup/FleetBuilder/FleetBlueprintViewBinder.cs.meta similarity index 100% rename from Assets/Project/Source/UI/RootNavigation/MissionSetup/FleetBuilder/FleetBlueprintViewController.cs.meta rename to Assets/Project/Source/UI/RootNavigation/MissionSetup/FleetBuilder/FleetBlueprintViewBinder.cs.meta diff --git a/Assets/Project/Source/UI/RootNavigation/MissionSetup/FleetBuilder/FleetBlueprintViewController.cs b/Assets/Project/Source/UI/RootNavigation/MissionSetup/FleetBuilder/FleetBlueprintViewController.cs deleted file mode 100644 index 6f129ae7..00000000 --- a/Assets/Project/Source/UI/RootNavigation/MissionSetup/FleetBuilder/FleetBlueprintViewController.cs +++ /dev/null @@ -1,57 +0,0 @@ -using System.Collections.Generic; -using Exa.Bindings; -using Exa.Grids.Blueprints; -using UnityEngine; -using UnityEngine.Events; - -namespace Exa.UI -{ - public class - FleetBlueprintViewController : ViewController - { - [SerializeField] private GameObject tabPrefab; - - private Dictionary tabsByType = - new Dictionary(); - - private UnityAction viewButtonCallback; - - private UnityEvent selectedViewRemoved = new UnityEvent(); - - public void Init( - UnityAction viewButtonCallback, - UnityAction viewSelectionCallback, - IObservableEnumerable enumerable) { - this.viewButtonCallback = viewButtonCallback; - - selectedViewRemoved.AddListener(viewSelectionCallback); - Source = enumerable; - } - - public override void OnAdd(BlueprintContainer value) { - var tab = tabsByType[value.Data.BlueprintType]; - - var view = base.OnAdd(value, tab.container); - tab.ChildCount++; - - view.ParentTab = tab; - view.button.onClick.AddListener(() => viewButtonCallback?.Invoke(value)); - } - - public override void OnRemove(BlueprintContainer value) { - if (GetView(value).Selected) - selectedViewRemoved.Invoke(value); - - base.OnRemove(value); - } - - public BlueprintTypeTabContent CreateTab(BlueprintType blueprintType) { - var tab = Instantiate(tabPrefab, transform) - .GetComponent(); - tab.SetType(blueprintType); - tabsByType.Add(blueprintType, tab); - tab.gameObject.SetActive(false); - return tab; - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/UI/RootNavigation/MissionSetup/FleetBuilder/FleetBuilder.cs b/Assets/Project/Source/UI/RootNavigation/MissionSetup/FleetBuilder/FleetBuilder.cs index e97e248d..77b1d153 100644 --- a/Assets/Project/Source/UI/RootNavigation/MissionSetup/FleetBuilder/FleetBuilder.cs +++ b/Assets/Project/Source/UI/RootNavigation/MissionSetup/FleetBuilder/FleetBuilder.cs @@ -1,44 +1,44 @@ -using Exa.Bindings; -using Exa.Grids.Blueprints; +using Exa.Grids.Blueprints; using Exa.Ships; +using Exa.Types.Binding; using Exa.Validation; using UnityEngine; using UnityEngine.Events; #pragma warning disable CS0649 -namespace Exa.UI -{ - public class FleetBuilder : MonoBehaviour - { - [Header("References")] +namespace Exa.UI { + public class FleetBuilder : MonoBehaviour { + [Header("References")] [SerializeField] private FleetView fleetView; - [SerializeField] private FleetBlueprintViewController viewController; + [SerializeField] private FleetBlueprintViewBinder viewBinder; [SerializeField] private FleetBuilderBlueprintTypes blueprintTypes; - [Header("Events")] + [Header("Events")] public UnityEvent fleetValidation = new UnityEvent(); private FleetValidator fleetValidator; - public Fleet Fleet => fleetView.Fleet; + public Fleet Fleet { + get => fleetView.Fleet; + } + + private void OnDisable() { + fleetView.Clear(5); + } public void Init(IObservableEnumerable source) { - blueprintTypes.BuildList(viewController.CreateTab); - viewController.Init(fleetView.Toggle, fleetView.Remove, source); + blueprintTypes.BuildList(viewBinder.CreateTab); + viewBinder.Init(fleetView.Toggle, fleetView.Remove, source); // NOTE: placeholder value, should be updated later var unityCapacity = 5; - fleetView.Create(unityCapacity, viewController.GetView); + fleetView.Create(unityCapacity, viewBinder.GetView); fleetValidator = new FleetValidator(); Validate(); } - private void OnDisable() { - fleetView.Clear(5); - } - public void Validate() { var validationResult = fleetValidator.Validate(Fleet); fleetValidation.Invoke(validationResult); diff --git a/Assets/Project/Source/UI/RootNavigation/MissionSetup/FleetBuilder/FleetBuilderBlueprintTypes.cs b/Assets/Project/Source/UI/RootNavigation/MissionSetup/FleetBuilder/FleetBuilderBlueprintTypes.cs index d999ab25..6470c7b5 100644 --- a/Assets/Project/Source/UI/RootNavigation/MissionSetup/FleetBuilder/FleetBuilderBlueprintTypes.cs +++ b/Assets/Project/Source/UI/RootNavigation/MissionSetup/FleetBuilder/FleetBuilderBlueprintTypes.cs @@ -7,22 +7,18 @@ #pragma warning disable CS0649 -namespace Exa.UI -{ - public class BlueprintTypeSelectEvent : UnityEvent - { } - - public class FleetBuilderBlueprintTypes : NavigateableTabManager - { - public BlueprintTypeSelectEvent SelectType = new BlueprintTypeSelectEvent(); +namespace Exa.UI { + public class BlueprintTypeSelectEvent : UnityEvent { } + public class FleetBuilderBlueprintTypes : NavigateableTabManager { [SerializeField] private Transform container; [SerializeField] private GameObject buttonPrefab; + public BlueprintTypeSelectEvent SelectType = new BlueprintTypeSelectEvent(); public void BuildList(Func tabFactory) { var index = 0; - foreach (var blueprintType in Systems.Blueprints.blueprintTypes.Reverse()) { + foreach (var blueprintType in S.Blueprints.blueprintTypes.Reverse()) { var blueprintTypeButton = Instantiate(buttonPrefab, container) .GetComponent(); @@ -30,8 +26,9 @@ public void BuildList(Func tabFactory) { blueprintTypeButton.Init(blueprintType, tab, index, this); blueprintTypeButton.SelectType.AddListener(SelectType.Invoke); - if (index == 0) + if (index == 0) { SetDefaultActive(blueprintTypeButton); + } index++; } diff --git a/Assets/Project/Source/UI/RootNavigation/MissionSetup/FleetBuilder/FleetBuilderBlueprintView.cs b/Assets/Project/Source/UI/RootNavigation/MissionSetup/FleetBuilder/FleetBuilderBlueprintView.cs index f393b4b5..42a26408 100644 --- a/Assets/Project/Source/UI/RootNavigation/MissionSetup/FleetBuilder/FleetBuilderBlueprintView.cs +++ b/Assets/Project/Source/UI/RootNavigation/MissionSetup/FleetBuilder/FleetBuilderBlueprintView.cs @@ -1,19 +1,18 @@ using DG.Tweening; -using Exa.Bindings; using Exa.Data; using Exa.Grids.Blueprints; +using Exa.Types.Binding; using Exa.UI.Components; +using Exa.UI.Cursor; using Exa.Utils; using UnityEngine; using UnityEngine.UI; #pragma warning disable CS0649 -namespace Exa.UI -{ - public class FleetBuilderBlueprintView : MonoBehaviour, IObserver - { - [Header("References")] +namespace Exa.UI { + public class FleetBuilderBlueprintView : MonoBehaviour, IObserver { + [Header("References")] public Button button; public Hoverable hoverable; [SerializeField] private Image thumbnailImage; @@ -25,13 +24,13 @@ public class FleetBuilderBlueprintView : MonoBehaviour, IObserver [SerializeField] private Border borderOutline; [SerializeField] private Text overlayText; - [Header("Settings")] + [Header("Settings")] [SerializeField] private ActivePair selectedColor; - public BlueprintTypeTabContent ParentTab { get; set; } - private bool selected; + public BlueprintTypeTabContent ParentTab { get; set; } + public bool Selected { get => selected; set { @@ -51,8 +50,7 @@ public void OnUpdate(Blueprint data) { var thumbnailRect = new Rect(0, 0, 512, 512); var thumbnailPivot = new Vector2(0.5f, 0.5f); thumbnailImage.sprite = Sprite.Create(data.Thumbnail, thumbnailRect, thumbnailPivot); - } - catch { + } catch { Debug.LogWarning("Error setting blueprint thumbnail"); } } diff --git a/Assets/Project/Source/UI/RootNavigation/MissionSetup/FleetBuilder/FleetView.cs b/Assets/Project/Source/UI/RootNavigation/MissionSetup/FleetBuilder/FleetView.cs index aaa855a0..f54f6fd2 100644 --- a/Assets/Project/Source/UI/RootNavigation/MissionSetup/FleetBuilder/FleetView.cs +++ b/Assets/Project/Source/UI/RootNavigation/MissionSetup/FleetBuilder/FleetView.cs @@ -9,50 +9,50 @@ using UnityEngine.Events; using UnityEngine.UI; -namespace Exa.UI -{ - public class FleetView : MonoBehaviour - { - [Header("References")] +namespace Exa.UI { + public class FleetView : MonoBehaviour { + [Header("References")] [SerializeField] private Transform mothershipContainer; [SerializeField] private Transform unitsContainer; [SerializeField] private Text unitCountText; - [Header("Settings")] + [Header("Settings")] [SerializeField] private AnimationArgs animationArgs; - [Header("Events")] + [Header("Events")] public UnityEvent fleetChange = new UnityEvent(); + private Tween colorTween; private Tween fontSizeTween; - private Tween colorTween; private Func viewFactory; public Fleet Fleet { get; private set; } public void Create(int capacity, Func viewFactory) { - this.Fleet = new Fleet(capacity); + Fleet = new Fleet(capacity); this.viewFactory = viewFactory; } public void Toggle(BlueprintContainer blueprint) { - if (Fleet.Contains(blueprint)) + if (Fleet.Contains(blueprint)) { Remove(blueprint); - else + } else { Insert(blueprint); + } } public void Insert(BlueprintContainer blueprint) { - if (blueprint.Data.BlueprintType.IsMothership) + if (blueprint.Data.BlueprintType.IsMothership) { AddMothership(blueprint); - else + } else { AddUnit(blueprint); + } } public void Remove(BlueprintContainer blueprint) { - if (blueprint.Data.BlueprintType.IsMothership) + if (blueprint.Data.BlueprintType.IsMothership) { Fleet.mothership = null; - else { + } else { Fleet.units.Remove(blueprint); UpdateUnitCountText(); } @@ -63,15 +63,19 @@ public void Remove(BlueprintContainer blueprint) { public void Clear(int capacity) { var blueprints = Fleet.Where(blueprint => blueprint != null); - foreach (var blueprint in blueprints) + + foreach (var blueprint in blueprints) { SetSelected(blueprint, false); + } + Fleet = new Fleet(capacity); UpdateUnitCountText(); } private void AddMothership(BlueprintContainer blueprint) { - if (Fleet.mothership != null) + if (Fleet.mothership != null) { SetSelected(Fleet.mothership, false); + } Fleet.mothership = blueprint; fleetChange.Invoke(); @@ -82,6 +86,7 @@ private void AddMothership(BlueprintContainer blueprint) { private void AddUnit(BlueprintContainer blueprint) { if (Fleet.units.Count == Fleet.units.Capacity) { OnUnitsFull(animationArgs); + return; } @@ -99,8 +104,7 @@ private void SetSelected(BlueprintContainer blueprint, bool active, Transform co if (container != null) { view.transform.SetParent(container); view.ParentTab.ChildCount--; - } - else { + } else { view.transform.SetParent(view.ParentTab.container); view.ParentTab.ChildCount++; } @@ -110,10 +114,12 @@ private void SetSelected(BlueprintContainer blueprint, bool active, Transform co private void OnUnitsFull(AnimationArgs args) { unitCountText.fontSize = args.fontSize.active; + unitCountText.DOFontSize(args.fontSize.inactive, args.animTime) .Replace(ref fontSizeTween); unitCountText.color = args.color.active; + unitCountText.DOColor(args.color.inactive, args.animTime) .Replace(ref colorTween); } @@ -123,8 +129,7 @@ private void UpdateUnitCountText() { } [Serializable] - public struct AnimationArgs - { + public struct AnimationArgs { public float animTime; public ActivePair fontSize; public ActivePair color; diff --git a/Assets/Project/Source/UI/RootNavigation/MissionSetup/FleetBuilder/Validation/FleetValidator.cs b/Assets/Project/Source/UI/RootNavigation/MissionSetup/FleetBuilder/Validation/FleetValidator.cs index 85540a20..a3501204 100644 --- a/Assets/Project/Source/UI/RootNavigation/MissionSetup/FleetBuilder/Validation/FleetValidator.cs +++ b/Assets/Project/Source/UI/RootNavigation/MissionSetup/FleetBuilder/Validation/FleetValidator.cs @@ -1,16 +1,15 @@ using Exa.Ships; using Exa.Validation; -namespace Exa.UI -{ - public class FleetValidator : Validator - { +namespace Exa.UI { + public class FleetValidator : Validator { protected override void AddErrors(ValidationResult errors, Fleet args) { - if (args.mothership == null) + if (args.mothership == null) { errors.Throw("fleet-mothership-null-error", "Fleet must have a mothership"); + } if (args.units.Capacity > args.units.Count) { - var message = $"Fleet capacity not fully utilized"; + var message = "Fleet capacity not fully utilized"; errors.Throw("fleet-units-capacity-suggestion", message, ErrorType.Suggestion); } } diff --git a/Assets/Project/Source/UI/RootNavigation/MissionSetup/MissionOptions.cs b/Assets/Project/Source/UI/RootNavigation/MissionSetup/MissionOptions.cs index 3439cbba..8ad8f8d8 100644 --- a/Assets/Project/Source/UI/RootNavigation/MissionSetup/MissionOptions.cs +++ b/Assets/Project/Source/UI/RootNavigation/MissionSetup/MissionOptions.cs @@ -1,27 +1,55 @@ -using Exa.Gameplay.Missions; +using System; +using System.Linq; +using Exa.Gameplay.Missions; using Exa.UI.Controls; using Exa.UI.Tooltips; +using Exa.Utils; using Exa.Validation; using UnityEngine; -namespace Exa.UI -{ - public class MissionOptions : MonoBehaviour - { +namespace Exa.UI { + public class MissionOptions : MonoBehaviour { [SerializeField] private MissionBag missionBag; [SerializeField] private DropdownControl missionDropdown; [SerializeField] private InteractableAdapter button; [SerializeField] private TextTooltipTrigger tooltipTrigger; - + [SerializeField] private Transform container; + public Mission SelectedMission { get; private set; } + public Transform MissionStartOptionContainer { + get => container; + } private void Awake() { - missionDropdown.CreateTabs(missionBag); - missionDropdown.OnValueChange.AddListener(item => SelectedMission = item as Mission); + missionDropdown.CreateTabs( + missionBag, + (mission, tab) => { + tab.gameObject + .AddComponent() + .SetText(mission.missionDescription); + } + ); + + missionDropdown.OnValueChange.AddListener( + item => { + var mission = item as Mission; + SelectedMission = mission; + RenderMissionStartOptions(mission); + }); SelectedMission = missionDropdown.Value as Mission; } + private void OnEnable() { + RenderMissionStartOptions(SelectedMission); + } + + private void RenderMissionStartOptions(Mission mission) { + container.GetChildren().ForEach(child => child.gameObject.Destroy()); + mission.BuildStartOptions(this); + container.gameObject.SetActive(container.GetChildren().Any()); + } + public void ReflectFleetBuilderResult(ValidationResult result) { button.Interactable = result; tooltipTrigger.SetText(result.GetFirstBySeverity()?.Message); diff --git a/Assets/Project/Source/UI/RootNavigation/MissionSetup/MissionSetup.cs b/Assets/Project/Source/UI/RootNavigation/MissionSetup/MissionSetup.cs index 15caea62..394a7a15 100644 --- a/Assets/Project/Source/UI/RootNavigation/MissionSetup/MissionSetup.cs +++ b/Assets/Project/Source/UI/RootNavigation/MissionSetup/MissionSetup.cs @@ -1,30 +1,30 @@ using Exa.Gameplay.Missions; using Exa.SceneManagement; +using Exa.UI.Components; using UnityEngine; using UnityEngine.SceneManagement; -namespace Exa.UI -{ - public class MissionSetup : MonoBehaviour - { +namespace Exa.UI { + public class MissionSetup : AnimatedTabContent { public MissionOptions options; - public FleetBuilder fleetBuilder; public void NavigateToMission() { - var transition = Systems.Scenes.Transition("Game", new TransitionArgs { - loadSceneMode = LoadSceneMode.Additive, - loadScreenMode = LoadScreenMode.CloseOnPrepared, - setActiveScene = true, - reportProgress = true - }); + var transition = S.Scenes.Transition( + "Game", + new TransitionArgs { + loadSceneMode = LoadSceneMode.Additive, + loadScreenMode = LoadScreenMode.CloseOnPrepared, + setActiveScene = true, + reportProgress = true + } + ); - var fleet = fleetBuilder.Fleet; - transition.onPrepared.AddListener(() => { - Systems.UI.root.navigateable.NavigateTo(GameSystems.Navigateable); - GameSystems.Instance.LoadMission(options.SelectedMission, new MissionArgs { - fleet = fleet - }); - }); + transition.onPrepared.AddListener( + () => { + S.UI.Root.navigateable.NavigateTo(GS.Navigateable); + GS.MissionManager.LoadMission(options.SelectedMission); + } + ); } } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/RootNavigation/RootNavigation.cs b/Assets/Project/Source/UI/RootNavigation/RootNavigation.cs index 04539e65..76e10cf9 100644 --- a/Assets/Project/Source/UI/RootNavigation/RootNavigation.cs +++ b/Assets/Project/Source/UI/RootNavigation/RootNavigation.cs @@ -4,13 +4,11 @@ #pragma warning disable CS0649 -namespace Exa.UI -{ - public class RootNavigation : MonoBehaviour - { +namespace Exa.UI { + public class RootNavigation : MonoBehaviour { public InteractableAdapter interactableAdapter; public BlueprintSelector blueprintSelector; - public SettingsManager settings; + [SerializeField] private SettingsManager settings; public MissionSetup missionSetup; public Navigateable navigateable; diff --git a/Assets/Project/Source/UI/RootNavigation/RootNavigationContent.cs b/Assets/Project/Source/UI/RootNavigation/RootNavigationContent.cs index 125a93b1..87d29660 100644 --- a/Assets/Project/Source/UI/RootNavigation/RootNavigationContent.cs +++ b/Assets/Project/Source/UI/RootNavigation/RootNavigationContent.cs @@ -5,10 +5,8 @@ #pragma warning disable CS0649 -namespace Exa.UI -{ - public class RootNavigationContent : MonoBehaviour - { +namespace Exa.UI { + public class RootNavigationContent : MonoBehaviour { [SerializeField] private LayoutElement tooltipContainer; [SerializeField] private TextAnimator textAnimator; diff --git a/Assets/Project/Source/UI/RootNavigation/Settings/AudioSettings.cs b/Assets/Project/Source/UI/RootNavigation/Settings/AudioSettings.cs index 707604af..ad9381c7 100644 --- a/Assets/Project/Source/UI/RootNavigation/Settings/AudioSettings.cs +++ b/Assets/Project/Source/UI/RootNavigation/Settings/AudioSettings.cs @@ -1,28 +1,86 @@ -using Exa.Data; +using System; +using Exa.Audio; +using Exa.Data; +using Exa.Utils; using UnityEngine; -namespace Exa.UI.Settings -{ - public class ExaAudioSettings : SaveableSettings - { - public override AudioSettingsValues DefaultValues => new AudioSettingsValues { - masterVolume = 0.75f, - musicVolume = 0.5f, - effectsVolume = 0.5f - }; +namespace Exa.UI.Settings { + public class ExaAudioSettings : SaveableSettings { + public SoundTrackLoadHandler LoadHandler { get; set; } - protected override string Key => "audioSettings"; + public override AudioSettingsValues DefaultValues { + get => new AudioSettingsValues { + masterVolume = 0.75f, + musicVolume = 0.5f, + effectsVolume = 0.5f, + soundTrackName = GetDefaultSoundTrackName() + }; + } + + protected override string Key { + get => "audioSettings"; + } public override void Apply() { AudioListener.volume = Values.masterVolume; - Systems.Audio.ST_AudioTrack.Volume = Values.musicVolume; - Systems.Audio.UI_SFX_AudioTrack.Volume = Values.effectsVolume; + S.Audio.Music.Volume = Values.musicVolume; + S.Audio.Effects.Volume = Values.effectsVolume; + LoadSoundTrack(); + } + + private void LoadSoundTrack() { + if (LoadHandler == null) { + throw new InvalidOperationException("Load handler not set when loading soundtrack"); + } + + var music = S.Audio.Music; + + if (music.CurrentSoundtrack != null && + music.CurrentSoundtrack.Description.Name == Values.soundTrackName) { + return; + } + + var provider = music.Provider; + + // Make sure we can atleast load the default soundtrack + var description = provider.Find(Values.soundTrackName); + + if (description == null) { + S.UI.Logger.LogException($"Could not find soundtrack by name \"{Values.soundTrackName}\""); + provider.DefaultSoundTrack.LoadSoundTrack(LoadHandler); + } else { + description.LoadSoundTrack(LoadHandler); + } + + LoadHandler.LoadEnumerator = LoadHandler.LoadEnumerator.Then( + () => { + S.Audio.Music.CurrentSoundtrack = LoadHandler.OutputSoundtrack; + LoadHandler.LoadEnumerator = null; + } + ); } - public override AudioSettingsValues Clone() => new AudioSettingsValues { - masterVolume = Values.masterVolume, - effectsVolume = Values.effectsVolume, - musicVolume = Values.musicVolume - }; + private string GetDefaultSoundTrackName() { + return S.Audio.Music.Provider.DefaultSoundTrack.Name; + } + + public override AudioSettingsValues Clone() { + return new AudioSettingsValues { + masterVolume = Values.masterVolume, + effectsVolume = Values.effectsVolume, + musicVolume = Values.musicVolume, + soundTrackName = Values.soundTrackName + }; + } + + protected override AudioSettingsValues DeserializeValues(string path) { + var values = base.DeserializeValues(path); + + if (S.Audio.Music.Provider.Find(values.soundTrackName) == null) { + values.soundTrackName = GetDefaultSoundTrackName(); + } + + return values; + } } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/RootNavigation/Settings/AudioSettingsPanel.cs b/Assets/Project/Source/UI/RootNavigation/Settings/AudioSettingsPanel.cs index 73d692c6..4133a761 100644 --- a/Assets/Project/Source/UI/RootNavigation/Settings/AudioSettingsPanel.cs +++ b/Assets/Project/Source/UI/RootNavigation/Settings/AudioSettingsPanel.cs @@ -1,24 +1,82 @@ -using Exa.UI.Controls; +using System.Diagnostics; +using System.Linq; +using Exa.Audio.Music; +using Exa.IO; +using Exa.UI.Controls; +using Exa.UI.Tooltips; +using Exa.Utils; +using UnityEngine.UI; -namespace Exa.UI.Settings -{ - public class AudioSettingsPanel : SettingsTab - { +namespace Exa.UI.Settings { + public class AudioSettingsPanel : SettingsTab { public SliderControl masterVolumeSlider; public SliderControl musicVolumeSlider; public SliderControl effectsVolumeSlider; + public DropdownControl soundTrackNameDropdown; + public Button soundTrackNameFolderButton; - public override AudioSettingsValues GetSettingsValues() => - new AudioSettingsValues { + public override void Init() { + CreateSoundTrackDropdownTabs(); + soundTrackNameFolderButton.onClick.AddListener(OpenFolder); + base.Init(); + } + + protected override ExaAudioSettings GetSettingsContainer() { + return new ExaAudioSettings(); + } + + public override AudioSettingsValues GetSettingsValues() { + return new AudioSettingsValues { masterVolume = masterVolumeSlider.Value / 100f, musicVolume = musicVolumeSlider.Value / 100f, - effectsVolume = effectsVolumeSlider.Value / 100f + effectsVolume = effectsVolumeSlider.Value / 100f, + soundTrackName = soundTrackNameDropdown.Value as string }; + } public override void ReflectValues(AudioSettingsValues values) { masterVolumeSlider.SetValue(values.masterVolume * 100f, false); musicVolumeSlider.SetValue(values.musicVolume * 100f, false); effectsVolumeSlider.SetValue(values.effectsVolume * 100f, false); + soundTrackNameDropdown.SetValue(values.soundTrackName, false); + } + + public override void ApplyChanges() { + base.ApplyChanges(); + + if (Container.LoadHandler.LoadEnumerator.IsNotNull(out var enumerator)) { + StartCoroutine( + enumerator.ScheduleWithTargetFramerate() + .Then(() => S.Audio.Music.IsPlaying = true) + ); + } + } + + private void CreateSoundTrackDropdownTabs() { + var dict = S.Audio.Music.Provider.Descriptions + .ToDictionary(description => description.Name); + + var options = dict.Values.Select(description => description.GetLabeledValue()); + + soundTrackNameDropdown.CreateTabs( + options, + (key, tab) => { + tab.gameObject + .AddComponent() + .SetText($"Song count: {dict[key].SongCount}"); + } + ); + } + + private void OpenFolder() { + var path = Tree.Root.CustomSoundTracks.GetPath(); + + var startInfo = new ProcessStartInfo { + Arguments = path, + FileName = "explorer.exe" + }; + + Process.Start(startInfo).Focus(); } } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/RootNavigation/Settings/AudioSettingsValues.cs b/Assets/Project/Source/UI/RootNavigation/Settings/AudioSettingsValues.cs index 7c79053a..5a634b21 100644 --- a/Assets/Project/Source/UI/RootNavigation/Settings/AudioSettingsValues.cs +++ b/Assets/Project/Source/UI/RootNavigation/Settings/AudioSettingsValues.cs @@ -1,34 +1,17 @@ using System; -namespace Exa.UI.Settings -{ - public class AudioSettingsValues : IEquatable - { +namespace Exa.UI.Settings { + public class AudioSettingsValues : IEquatable { + public float effectsVolume; public float masterVolume; public float musicVolume; - public float effectsVolume; + public string soundTrackName; public bool Equals(AudioSettingsValues other) { - if (ReferenceEquals(null, other)) return false; - if (ReferenceEquals(this, other)) return true; - return masterVolume.Equals(other.masterVolume) && musicVolume.Equals(other.musicVolume) && - effectsVolume.Equals(other.effectsVolume); - } - - public override bool Equals(object obj) { - if (ReferenceEquals(null, obj)) return false; - if (ReferenceEquals(this, obj)) return true; - if (obj.GetType() != this.GetType()) return false; - return Equals((AudioSettingsValues) obj); - } - - public override int GetHashCode() { - unchecked { - var hashCode = masterVolume.GetHashCode(); - hashCode = (hashCode * 397) ^ musicVolume.GetHashCode(); - hashCode = (hashCode * 397) ^ effectsVolume.GetHashCode(); - return hashCode; - } + return masterVolume.Equals(other?.masterVolume) && + musicVolume.Equals(other?.musicVolume) && + effectsVolume.Equals(other?.effectsVolume) && + soundTrackName.Equals(other?.soundTrackName); } } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/RootNavigation/Settings/ExaVideoSettings.cs b/Assets/Project/Source/UI/RootNavigation/Settings/ExaVideoSettings.cs index 63110277..9b00b80a 100644 --- a/Assets/Project/Source/UI/RootNavigation/Settings/ExaVideoSettings.cs +++ b/Assets/Project/Source/UI/RootNavigation/Settings/ExaVideoSettings.cs @@ -1,34 +1,46 @@ using Exa.Data; -#if !UNITY_EDITOR using UnityEngine; -#endif -namespace Exa.UI.Settings -{ - public class ExaVideoSettings : SaveableSettings - { - public override VideoSettingsValues DefaultValues => new VideoSettingsValues { - resolution = Resolutions.GetHighestSupportedResolution(), - fullscreen = true - }; +namespace Exa.UI.Settings { + public class ExaVideoSettings : SaveableSettings { + public override VideoSettingsValues DefaultValues { + get => new VideoSettingsValues { + resolution = Resolutions.GetHighestSupportedResolution(), + fullscreen = true + }; + } public Resolutions Resolutions { get; set; } - protected override string Key => "videoSettings"; + protected override string Key { + get => "videoSettings"; + } public override void Apply() { -#if !UNITY_EDITOR + #if !UNITY_EDITOR Screen.SetResolution( width: Values.resolution.width, height: Values.resolution.height, fullscreen: Values.fullscreen, preferredRefreshRate: Values.resolution.refreshRate); -#endif + #endif + } + + public override VideoSettingsValues Clone() { + return new VideoSettingsValues { + resolution = Values.resolution, + fullscreen = Values.fullscreen + }; } - public override VideoSettingsValues Clone() => new VideoSettingsValues { - resolution = Values.resolution, - fullscreen = Values.fullscreen - }; + protected override VideoSettingsValues DeserializeValues(string path) { + var values = base.DeserializeValues(path); + + if (values.resolution.Equals(default(Resolution))) { + values.resolution = Resolutions.GetHighestSupportedResolution(); + } + + return values; + } } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/RootNavigation/Settings/ResolutionDropdown.cs b/Assets/Project/Source/UI/RootNavigation/Settings/ResolutionDropdown.cs index 6d9e3498..38c0c774 100644 --- a/Assets/Project/Source/UI/RootNavigation/Settings/ResolutionDropdown.cs +++ b/Assets/Project/Source/UI/RootNavigation/Settings/ResolutionDropdown.cs @@ -1,11 +1,9 @@ -using Exa.UI.Controls; -using System.Linq; +using System.Linq; +using Exa.UI.Controls; using UnityEngine; -namespace Exa.UI.Settings -{ - public class ResolutionDropdown : DropdownControl - { +namespace Exa.UI.Settings { + public class ResolutionDropdown : DropdownControl { public void FilterByRefreshRate(int refreshRate) { foreach (var value in stateContainer) { var resolution = (Resolution) value; diff --git a/Assets/Project/Source/UI/RootNavigation/Settings/Resolutions.cs b/Assets/Project/Source/UI/RootNavigation/Settings/Resolutions.cs index 74979a8d..7bc4abeb 100644 --- a/Assets/Project/Source/UI/RootNavigation/Settings/Resolutions.cs +++ b/Assets/Project/Source/UI/RootNavigation/Settings/Resolutions.cs @@ -1,19 +1,28 @@ using System.Collections; using System.Collections.Generic; using System.Linq; -using Exa.Generics; using Exa.Math; +using Exa.Types.Generics; using UnityEngine; -namespace Exa.UI.Settings -{ +namespace Exa.UI.Settings { /// - /// A list of resolutions, sorted by resolution size and refresh rate + /// A list of resolutions, sorted by resolution size and refresh rate /// - public class Resolutions : IEnumerable - { + public class Resolutions : IEnumerable { + private readonly int[] acceptedRefreshRates = { + 60, + 75, + 80, + 90, + 100, + 120, + 144, + 165, + 180, + 240 + }; private readonly List resolutions; - private readonly int[] acceptedRefreshRates = {60, 75, 80, 90, 100, 120, 144, 165, 180, 240}; public Resolutions() { var filteredResolutions = Screen @@ -22,14 +31,29 @@ public Resolutions() { .Where(IsAcceptedRatio); // If the are no selected resolutions, - if (!filteredResolutions.Any()) + if (!filteredResolutions.Any()) { filteredResolutions = Screen.resolutions; + } resolutions = new List(filteredResolutions); - resolutions.Sort((x, y) => { - int GetValue(Resolution res) => res.width * res.height + res.refreshRate; - return GetValue(x) - GetValue(y); - }); + + resolutions.Sort( + (x, y) => { + int GetValue(Resolution res) { + return res.width * res.height + res.refreshRate; + } + + return GetValue(x) - GetValue(y); + } + ); + } + + public IEnumerator GetEnumerator() { + return resolutions.GetEnumerator(); + } + + IEnumerator IEnumerable.GetEnumerator() { + return GetEnumerator(); } public Resolution GetHighestSupportedResolution() { @@ -41,24 +65,20 @@ public Resolution GetLowestSupportedResolution() { } public IEnumerable> GetResolutionLabels() { - return this.Select(res => - new LabeledValue($"{res.width}x{res.height}", res) as ILabeledValue); + return this.Select( + res => + new LabeledValue($"{res.width}x{res.height}", res) as ILabeledValue + ); } public IEnumerable> GetRefreshRateLabels() { return this.Select(res => res.refreshRate) .Distinct() .OrderByDescending(res => res) - .Select(res => - new LabeledValue($"{res} hz", res) as ILabeledValue); - } - - public IEnumerator GetEnumerator() { - return resolutions.GetEnumerator(); - } - - IEnumerator IEnumerable.GetEnumerator() { - return GetEnumerator(); + .Select( + res => + new LabeledValue($"{res} hz", res) as ILabeledValue + ); } private bool IsAcceptedRefreshRate(Resolution resolution) { @@ -66,10 +86,12 @@ private bool IsAcceptedRefreshRate(Resolution resolution) { } private bool IsAcceptedRatio(Resolution resolution) { - var ratio = MathUtils.GetRatio(new Vector2Int { - x = resolution.width, - y = resolution.height - }); + var ratio = MathUtils.GetRatio( + new Vector2Int { + x = resolution.width, + y = resolution.height + } + ); return IsRatio(ratio, 21, 9) || diff --git a/Assets/Project/Source/UI/RootNavigation/Settings/SettingsReturnNavigateable.cs b/Assets/Project/Source/UI/RootNavigation/Settings/SettingsReturnNavigateable.cs index 8d1b540c..af47ebb6 100644 --- a/Assets/Project/Source/UI/RootNavigation/Settings/SettingsReturnNavigateable.cs +++ b/Assets/Project/Source/UI/RootNavigation/Settings/SettingsReturnNavigateable.cs @@ -3,22 +3,22 @@ #pragma warning disable CS0649 -namespace Exa.UI.Settings -{ - public class SettingsReturnNavigateable : ReturnNavigateable - { +namespace Exa.UI.Settings { + public class SettingsReturnNavigateable : ReturnNavigateable { [SerializeField] private SettingsTabManager settingsTabManager; - protected override void Return(bool force = false) { + public override void Return(bool force = false) { if (settingsTabManager.activeSettingsTab.IsDirty) { - settingsTabManager.QueryUserConfirmation(yes => { - if (yes) - settingsTabManager.activeSettingsTab.ApplyChanges(); - else - base.Return(true); - }); - } - else { + settingsTabManager.QueryUserConfirmation( + yes => { + if (yes) { + settingsTabManager.activeSettingsTab.ApplyChanges(); + } else { + base.Return(true); + } + } + ); + } else { base.Return(force); } } diff --git a/Assets/Project/Source/UI/RootNavigation/Settings/SettingsTab.cs b/Assets/Project/Source/UI/RootNavigation/Settings/SettingsTab.cs index ac664b37..4b88e65a 100644 --- a/Assets/Project/Source/UI/RootNavigation/Settings/SettingsTab.cs +++ b/Assets/Project/Source/UI/RootNavigation/Settings/SettingsTab.cs @@ -2,46 +2,53 @@ using Exa.Data; using Exa.UI.Components; -namespace Exa.UI.Settings -{ +namespace Exa.UI.Settings { /// - /// Base class for the manager of a settings object + /// Base class for the manager of a settings object /// /// Type of the settings object /// Type of the settings values for the settings object public abstract class SettingsTab : SettingsTabBase - where TSettings : SaveableSettings, new() - where TValues : class, IEquatable - { + where TSettings : SaveableSettings + where TValues : class, IEquatable { /// - /// Current stored settings object + /// Current stored settings object /// - public TSettings settings = new TSettings(); + private TSettings settingsBackingField; - public override bool IsDefault => settings.Values.Equals(settings.DefaultValues); - public override bool IsDirty => !settings.Values.Equals(GetSettingsValues()); + public TSettings Container { + get => settingsBackingField ??= GetSettingsContainer(); + } + + public override bool IsDefault { + get => Container.Values.Equals(Container.DefaultValues); + } + + public override bool IsDirty { + get => !Container.Values.Equals(GetSettingsValues()); + } /// - /// Reflects the values of the settings + /// Reflects the values of the settings /// /// public abstract void ReflectValues(TValues values); /// - /// Gets a settings object + /// Gets a settings object /// /// public abstract TValues GetSettingsValues(); public virtual void Init() { - settings.Load(); - settings.Apply(); - settings.Save(); - ReflectValues(settings.Values); + Container.Load(); + Container.Apply(); + Container.Save(); + ReflectValues(Container.Values); } public override void SetDefaultValues() { - var values = settings.DefaultValues; + var values = Container.DefaultValues; ReflectValues(values); Apply(values); } @@ -51,32 +58,33 @@ public override void ApplyChanges() { } /// - /// Applies the given values + /// Applies the given values /// /// protected void Apply(TValues values) { - settings.Values = values; - settings.Save(); - settings.Apply(); + Container.Values = values; + Container.Save(); + Container.Apply(); } + + protected abstract TSettings GetSettingsContainer(); } - public abstract class SettingsTabBase : SettingsTab - { + public abstract class SettingsTabBase : SettingsTab { /// - /// Denotes wether the current settings object is equal to the default values + /// Denotes wether the current settings object is equal to the default values /// public abstract bool IsDefault { get; } public abstract bool IsDirty { get; } /// - /// Applies the default values + /// Applies the default values /// public abstract void SetDefaultValues(); /// - /// Applies the settings from the controls + /// Applies the settings from the controls /// public abstract void ApplyChanges(); } diff --git a/Assets/Project/Source/UI/RootNavigation/Settings/SettingsTabManager.cs b/Assets/Project/Source/UI/RootNavigation/Settings/SettingsTabManager.cs index 41d59b19..1565ab25 100644 --- a/Assets/Project/Source/UI/RootNavigation/Settings/SettingsTabManager.cs +++ b/Assets/Project/Source/UI/RootNavigation/Settings/SettingsTabManager.cs @@ -1,14 +1,12 @@ -using Exa.UI.Settings; -using System; +using System; +using Exa.UI.Settings; using UnityEngine; using UnityEngine.UI; #pragma warning disable CS0649 -namespace Exa.UI.Components -{ - public class SettingsTabManager : MonoBehaviour - { +namespace Exa.UI.Components { + public class SettingsTabManager : MonoBehaviour { [HideInInspector] public SettingsTabBase activeSettingsTab; [SerializeField] private InteractableAdapter applyButton; @@ -17,48 +15,57 @@ public class SettingsTabManager : MonoBehaviour [SerializeField] private SettingsTabBase defaultSettingsTab; [SerializeField] private InteractableAdapter interactableAdapter; + public void Update() { + applyButton.Interactable = activeSettingsTab.IsDirty; + setDefaultButton.Interactable = !activeSettingsTab.IsDefault; + } + private void OnEnable() { ProcessTab(defaultSettingsTab); } /// - /// Switches to the given if the values are not dirty + /// Switches to the given if the values are not dirty /// /// public void SetActive(SettingsTabBase settingsTab) { - if (activeSettingsTab == settingsTab) return; + if (activeSettingsTab == settingsTab) { + return; + } if (activeSettingsTab != null && !activeSettingsTab.IsDirty) { ProcessTab(settingsTab); - } - else { - QueryUserConfirmation(yes => { - if (yes) { - activeSettingsTab.ApplyChanges(); - } + } else { + QueryUserConfirmation( + yes => { + if (yes) { + activeSettingsTab.ApplyChanges(); + } - ProcessTab(settingsTab); - }); + ProcessTab(settingsTab); + } + ); } } - public void Update() { - applyButton.Interactable = activeSettingsTab.IsDirty; - setDefaultButton.Interactable = !activeSettingsTab.IsDefault; - } - public void QueryUserConfirmation(Action onClosePrompt) { - Systems.UI.promptController.PromptYesNo( + S.UI.Prompts.PromptYesNo( "Changes were not saved, do you wish to apply the changes?", interactableAdapter, - onClosePrompt); + onClosePrompt + ); } /// - /// Switches tab + /// Switches tab /// /// public void ProcessTab(SettingsTabBase settingsTab) { + // Don't need to navigate twice + if (settingsTab == activeSettingsTab) { + return; + } + activeSettingsTab?.gameObject.SetActive(false); activeSettingsTab = settingsTab; activeTabText.text = settingsTab.tabName; diff --git a/Assets/Project/Source/UI/RootNavigation/Settings/VideoSettingsPanel.cs b/Assets/Project/Source/UI/RootNavigation/Settings/VideoSettingsPanel.cs index 39f4948a..d898f7ae 100644 --- a/Assets/Project/Source/UI/RootNavigation/Settings/VideoSettingsPanel.cs +++ b/Assets/Project/Source/UI/RootNavigation/Settings/VideoSettingsPanel.cs @@ -1,35 +1,26 @@ -using System; -using System.Collections; -using System.Linq; +using System.Linq; using Exa.UI.Controls; using Exa.Utils; using UnityEngine; -namespace Exa.UI.Settings -{ - public class VideoSettingsPanel : SettingsTab - { +namespace Exa.UI.Settings { + public class VideoSettingsPanel : SettingsTab { public ResolutionDropdown resolutionDropdown; public DropdownControl refreshRatesDropdown; public RadioControl fullscreenRadio; - private void Awake() { - refreshRatesDropdown.OnValueChange.AddListener(obj => { - resolutionDropdown.FilterByRefreshRate((int) obj); - resolutionDropdown.SelectFirst(); - }); - } - - public override VideoSettingsValues GetSettingsValues() => - new VideoSettingsValues { + public override VideoSettingsValues GetSettingsValues() { + return new VideoSettingsValues { resolution = (Resolution) resolutionDropdown.Value, fullscreen = fullscreenRadio.Value }; + } public override void ReflectValues(VideoSettingsValues values) { // TODO: Notify user of invalid configuration - if (!resolutionDropdown.ContainsItem(values.resolution)) - values.resolution = settings.DefaultValues.resolution; + if (!resolutionDropdown.ContainsItem(values.resolution)) { + values.resolution = Container.DefaultValues.resolution; + } resolutionDropdown.SetValue(values.resolution, false); refreshRatesDropdown.SetValue(values.resolution.refreshRate, false); @@ -37,14 +28,25 @@ public override void ReflectValues(VideoSettingsValues values) { } public override void Init() { - settings.Resolutions = new Resolutions(); - - refreshRatesDropdown.CreateTabs(settings.Resolutions - .GetRefreshRateLabels()); - - resolutionDropdown.CreateTabs(settings.Resolutions - .GetResolutionLabels() - .Reverse()); + Container.Resolutions = new Resolutions(); + + refreshRatesDropdown.CreateTabs( + Container.Resolutions + .GetRefreshRateLabels() + ); + + refreshRatesDropdown.OnValueChange.AddListener( + obj => { + resolutionDropdown.FilterByRefreshRate((int) obj); + resolutionDropdown.SelectFirst(); + } + ); + + resolutionDropdown.CreateTabs( + Container.Resolutions + .GetResolutionLabels() + .Reverse() + ); // Get first refresh rate var firstRefreshRate = (int) refreshRatesDropdown.Value; @@ -57,35 +59,43 @@ public override void ApplyChanges() { const int length = 15; const string format = "Do you wish to keep these settings? (Reverting in {0} seconds)"; - var currentValues = settings.Clone(); - var setter = Systems.UI.promptController.PromptTextSetter; - var uiGroup = Systems.UI.root.interactableAdapter; + var backupValues = Container.Clone(); + var setter = S.UI.Prompts.PromptTextSetter; + var uiGroup = S.UI.Root.interactableAdapter; - var coroutine = StartCoroutine(UpdatePromptCountdown(length, format, setter, () => { - Apply(currentValues); - ReflectValues(currentValues); + var prompt = null as Prompt; - Systems.UI.promptController.CleanupYesNo(uiGroup); - })); + var coroutine = EnumeratorUtils.OnceEverySecond(length, second => { setter(format.Format(length - second)); }) + .Then( + () => { + Apply(backupValues); + ReflectValues(backupValues); - Systems.UI.promptController.PromptYesNo(format.Format(length), uiGroup, value => { - StopCoroutine(coroutine); - if (value) return; + prompt.CleanUp(); + } + ) + .Start(this); - Apply(currentValues); - ReflectValues(currentValues); - }); + prompt = S.UI.Prompts.PromptYesNo( + format.Format(length), + uiGroup, + value => { + StopCoroutine(coroutine); - Apply(GetSettingsValues()); - } + if (value) { + return; + } - private IEnumerator UpdatePromptCountdown(int length, string format, Action setter, Action onCountdownEnd) { - for (var i = length; i > 0; i--) { - setter(format.Format(i)); - yield return new WaitForSeconds(1); - } + Apply(backupValues); + ReflectValues(backupValues); + } + ); + + base.ApplyChanges(); + } - onCountdownEnd(); + protected override ExaVideoSettings GetSettingsContainer() { + return new ExaVideoSettings(); } } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/RootNavigation/Settings/VideoSettingsValues.cs b/Assets/Project/Source/UI/RootNavigation/Settings/VideoSettingsValues.cs index 668bc1a3..da4d9a07 100644 --- a/Assets/Project/Source/UI/RootNavigation/Settings/VideoSettingsValues.cs +++ b/Assets/Project/Source/UI/RootNavigation/Settings/VideoSettingsValues.cs @@ -1,30 +1,13 @@ using System; using UnityEngine; -namespace Exa.UI.Settings -{ - public class VideoSettingsValues : IEquatable - { - public Resolution resolution; +namespace Exa.UI.Settings { + public class VideoSettingsValues : IEquatable { public bool fullscreen; + public Resolution resolution; public bool Equals(VideoSettingsValues other) { - if (ReferenceEquals(null, other)) return false; - if (ReferenceEquals(this, other)) return true; - return resolution.Equals(other.resolution) && fullscreen == other.fullscreen; - } - - public override bool Equals(object obj) { - if (ReferenceEquals(null, obj)) return false; - if (ReferenceEquals(this, obj)) return true; - if (obj.GetType() != this.GetType()) return false; - return Equals((VideoSettingsValues) obj); - } - - public override int GetHashCode() { - unchecked { - return (resolution.GetHashCode() * 397) ^ fullscreen.GetHashCode(); - } + return resolution.Equals(other?.resolution) && fullscreen.Equals(other?.fullscreen); } } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/SharedViews/KeybindingView.cs b/Assets/Project/Source/UI/SharedViews/KeybindingView.cs index 4a87c4af..d6bffbec 100644 --- a/Assets/Project/Source/UI/SharedViews/KeybindingView.cs +++ b/Assets/Project/Source/UI/SharedViews/KeybindingView.cs @@ -3,10 +3,8 @@ #pragma warning disable CS0649 -namespace Exa.UI.Controls -{ - public class KeybindingView : MonoBehaviour - { +namespace Exa.UI.Controls { + public class KeybindingView : MonoBehaviour { [SerializeField] private Text text; public void SetKey(string key) { diff --git a/Assets/Project/Source/UI/Tooltips/ComponentData/TooltipGroup.cs b/Assets/Project/Source/UI/Tooltips/ComponentData/TooltipGroup.cs index 9b29fd68..cd2a9414 100644 --- a/Assets/Project/Source/UI/Tooltips/ComponentData/TooltipGroup.cs +++ b/Assets/Project/Source/UI/Tooltips/ComponentData/TooltipGroup.cs @@ -1,33 +1,44 @@ using System; using System.Collections.Generic; +using System.Linq; using UnityEngine; -namespace Exa.UI.Tooltips -{ - public struct TooltipGroup : ITooltipComponent - { - public IEnumerable Children { get; } +namespace Exa.UI.Tooltips { + public struct TooltipGroup : ITooltipComponent { + public IEnumerable Children { get; private set; } public int Tabs { get; } public int Spacing { get; } public TooltipGroup(IEnumerable children, int tabs = 0, int spacing = 10) { - this.Children = children ?? - throw new ArgumentNullException(nameof(children), - "A collection of children must not be null"); - this.Tabs = tabs; - this.Spacing = spacing; + Children = children ?? + throw new ArgumentNullException( + nameof(children), + "A collection of children must not be null" + ); + + Tabs = tabs; + Spacing = spacing; } public TooltipGroup(int tabs, params ITooltipComponent[] children) { - this.Tabs = tabs; - this.Spacing = 10; - this.Children = children ?? - throw new ArgumentNullException(nameof(children), - "A collection of children must not be null"); + Tabs = tabs; + Spacing = 10; + + Children = children ?? + throw new ArgumentNullException( + nameof(children), + "A collection of children must not be null" + ); + } + + public TooltipGroup AppendRange(params ITooltipComponent[] children) { + Children = Children.Concat(children); + + return this; } public TooltipComponentView InstantiateComponentView(Transform parent) { - return Systems.UI.tooltips.tooltipGenerator.GenerateTooltipGroup(parent, this); + return S.UI.Tooltips.tooltipGenerator.GenerateTooltipGroup(parent, this); } } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/Tooltips/ComponentData/TooltipSpacer.cs b/Assets/Project/Source/UI/Tooltips/ComponentData/TooltipSpacer.cs index bf254568..9fda09d6 100644 --- a/Assets/Project/Source/UI/Tooltips/ComponentData/TooltipSpacer.cs +++ b/Assets/Project/Source/UI/Tooltips/ComponentData/TooltipSpacer.cs @@ -1,11 +1,9 @@ using UnityEngine; -namespace Exa.UI.Tooltips -{ - public struct TooltipSpacer : ITooltipComponent - { +namespace Exa.UI.Tooltips { + public struct TooltipSpacer : ITooltipComponent { public TooltipComponentView InstantiateComponentView(Transform parent) { - return Systems.UI.tooltips.tooltipGenerator.GenerateTooltipSpacer(parent, this); + return S.UI.Tooltips.tooltipGenerator.GenerateTooltipSpacer(parent, this); } } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/Tooltips/ComponentData/TooltipText.cs b/Assets/Project/Source/UI/Tooltips/ComponentData/TooltipText.cs index c4732c43..729fac50 100644 --- a/Assets/Project/Source/UI/Tooltips/ComponentData/TooltipText.cs +++ b/Assets/Project/Source/UI/Tooltips/ComponentData/TooltipText.cs @@ -1,17 +1,15 @@ using UnityEngine; -namespace Exa.UI.Tooltips -{ - public struct TooltipText : ITooltipComponent - { +namespace Exa.UI.Tooltips { + public struct TooltipText : ITooltipComponent { public string Text { get; } public TooltipText(string value) { - this.Text = value; + Text = value; } public TooltipComponentView InstantiateComponentView(Transform parent) { - return Systems.UI.tooltips.tooltipGenerator.GenerateTooltipText(parent, this); + return S.UI.Tooltips.tooltipGenerator.GenerateTooltipText(parent, this); } } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/Tooltips/ComponentData/TooltipTitle.cs b/Assets/Project/Source/UI/Tooltips/ComponentData/TooltipTitle.cs index ae67888b..da9ce08c 100644 --- a/Assets/Project/Source/UI/Tooltips/ComponentData/TooltipTitle.cs +++ b/Assets/Project/Source/UI/Tooltips/ComponentData/TooltipTitle.cs @@ -1,12 +1,10 @@ using UnityEngine; -namespace Exa.UI.Tooltips -{ - public struct TooltipTitle : ITooltipComponent - { +namespace Exa.UI.Tooltips { + public struct TooltipTitle : ITooltipComponent { private readonly bool animated; - public string Text { get; private set; } + public string Text { get; } public TooltipTitle(string text, bool animated = true) { this.animated = animated; @@ -15,7 +13,7 @@ public TooltipTitle(string text, bool animated = true) { } public TooltipComponentView InstantiateComponentView(Transform parent) { - var titleView = Systems.UI.tooltips.tooltipGenerator.GenerateTooltipTitle(parent, this); + var titleView = S.UI.Tooltips.tooltipGenerator.GenerateTooltipTitle(parent, this); if (animated) { titleView.AddAnimator(); diff --git a/Assets/Project/Source/UI/Tooltips/ComponentViews/BlockCostsView.cs b/Assets/Project/Source/UI/Tooltips/ComponentViews/BlockCostsView.cs new file mode 100644 index 00000000..3f559769 --- /dev/null +++ b/Assets/Project/Source/UI/Tooltips/ComponentViews/BlockCostsView.cs @@ -0,0 +1,17 @@ +using Exa.Grids.Blocks; +using Exa.UI.Tooltips; +using TMPro; +using UnityEngine.UI; + +public class BlockCostsView : TooltipComponentView { + public TextMeshProUGUI credits; + public TextMeshProUGUI metals; + + public Image creditsBackground; + public Image metalsBackground; + + protected override void Refresh(BlockCosts value) { + credits.text = value.creditCost.ToString(); + metals.text = value.metalsCost.ToString(); + } +} \ No newline at end of file diff --git a/Assets/Project/Source/UI/Tooltips/ComponentViews/BlockCostsView.cs.meta b/Assets/Project/Source/UI/Tooltips/ComponentViews/BlockCostsView.cs.meta new file mode 100644 index 00000000..7b28842d --- /dev/null +++ b/Assets/Project/Source/UI/Tooltips/ComponentViews/BlockCostsView.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 12834725d7e6e6b409e221744e38d836 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/UI/Tooltips/ComponentViews/GroupView.cs b/Assets/Project/Source/UI/Tooltips/ComponentViews/GroupView.cs index 24b3b9e8..a996c298 100644 --- a/Assets/Project/Source/UI/Tooltips/ComponentViews/GroupView.cs +++ b/Assets/Project/Source/UI/Tooltips/ComponentViews/GroupView.cs @@ -1,14 +1,12 @@ -using Exa.Utils; -using System; +using System; using System.Collections.Generic; +using Exa.Utils; using UnityEngine; using UnityEngine.UI; -namespace Exa.UI.Tooltips -{ +namespace Exa.UI.Tooltips { [Serializable] - public class GroupView : TooltipComponentView - { + public class GroupView : TooltipComponentView { public Transform container; [SerializeField] private VerticalLayoutGroup verticalLayoutGroup; @@ -20,12 +18,12 @@ protected override void Refresh(TooltipGroup value) { if (views == null) { views = new List(); + foreach (var child in value.Children) { views.Add(child.InstantiateComponentView(container)); } - } - else { - foreach (var tuple in EnumerableUtils.AsTupleEnumerable(value.Children, views)) { + } else { + foreach (var tuple in value.Children.AsTupleEnumerable(views)) { tuple.Item2.Refresh(tuple.Item1); } } diff --git a/Assets/Project/Source/UI/Tooltips/ComponentViews/PropertyView.cs b/Assets/Project/Source/UI/Tooltips/ComponentViews/PropertyView.cs index a7596b4a..9f0327ac 100644 --- a/Assets/Project/Source/UI/Tooltips/ComponentViews/PropertyView.cs +++ b/Assets/Project/Source/UI/Tooltips/ComponentViews/PropertyView.cs @@ -1,14 +1,12 @@ -using Exa.Generics; -using System; +using System; +using Exa.Types.Generics; using UnityEngine; using UnityEngine.UI; -namespace Exa.UI.Tooltips -{ +namespace Exa.UI.Tooltips { [Serializable] - public class PropertyView : TooltipComponentView> - { - [Header("References")] + public class PropertyView : TooltipComponentView> { + [Header("References")] [SerializeField] private Text keyText; [SerializeField] private Text valueText; @@ -21,6 +19,10 @@ public void SetValue(object value) { valueText.text = value.ToString(); } + public void SetLabel(string label) { + keyText.text = label; + } + protected override void Refresh(LabeledValue labeledValue) { keyText.text = labeledValue.Label; valueText.text = labeledValue.Value.ToString(); diff --git a/Assets/Project/Source/UI/Tooltips/ComponentViews/SpacerView.cs b/Assets/Project/Source/UI/Tooltips/ComponentViews/SpacerView.cs index 0531ed7d..ed98802a 100644 --- a/Assets/Project/Source/UI/Tooltips/ComponentViews/SpacerView.cs +++ b/Assets/Project/Source/UI/Tooltips/ComponentViews/SpacerView.cs @@ -1,7 +1,5 @@ -namespace Exa.UI.Tooltips -{ - public class SpacerView : TooltipComponentView - { +namespace Exa.UI.Tooltips { + public class SpacerView : TooltipComponentView { protected override void Refresh(TooltipSpacer value) { } } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/Tooltips/ComponentViews/TextView.cs b/Assets/Project/Source/UI/Tooltips/ComponentViews/TextView.cs index ebdb4359..8852abe8 100644 --- a/Assets/Project/Source/UI/Tooltips/ComponentViews/TextView.cs +++ b/Assets/Project/Source/UI/Tooltips/ComponentViews/TextView.cs @@ -2,11 +2,9 @@ using UnityEngine; using UnityEngine.UI; -namespace Exa.UI.Tooltips -{ +namespace Exa.UI.Tooltips { [Serializable] - public class TextView : TooltipComponentView - { + public class TextView : TooltipComponentView { [SerializeField] private Text text; public void SetFont(Font font) { diff --git a/Assets/Project/Source/UI/Tooltips/ComponentViews/TitleView.cs b/Assets/Project/Source/UI/Tooltips/ComponentViews/TitleView.cs index 6de1eaff..a9550878 100644 --- a/Assets/Project/Source/UI/Tooltips/ComponentViews/TitleView.cs +++ b/Assets/Project/Source/UI/Tooltips/ComponentViews/TitleView.cs @@ -1,13 +1,11 @@ -using Exa.UI.Components; -using System; +using System; +using Exa.UI.Components; using UnityEngine; using UnityEngine.UI; -namespace Exa.UI.Tooltips -{ +namespace Exa.UI.Tooltips { [Serializable] - public class TitleView : TooltipComponentView - { + public class TitleView : TooltipComponentView { [SerializeField] private Text text; public void SetFont(Font font) { diff --git a/Assets/Project/Source/UI/Tooltips/FloatingTooltip.cs b/Assets/Project/Source/UI/Tooltips/FloatingTooltip.cs index 8bb2a3b0..880bb409 100644 --- a/Assets/Project/Source/UI/Tooltips/FloatingTooltip.cs +++ b/Assets/Project/Source/UI/Tooltips/FloatingTooltip.cs @@ -4,19 +4,17 @@ #pragma warning disable CS0649 -namespace Exa.UI.Tooltips -{ +namespace Exa.UI.Tooltips { /// - /// A tooltip that follows cursor movement and stays inside screen bounds - /// Supports padding and offset + /// A tooltip that follows cursor movement and stays inside screen bounds + /// Supports padding and offset /// - public class FloatingTooltip : MonoBehaviour - { - [Header("References")] + public class FloatingTooltip : MonoBehaviour { + [Header("References")] [SerializeField] protected RectTransform tooltipRoot; [SerializeField] protected RectTransform itemsContainer; - [Header("Settings")] + [Header("Settings")] [SerializeField] private Vector2 offset = new Vector2(4f, 4f); [SerializeField] private float padding = 4f; [SerializeField] private float animTime = 0.1f; @@ -26,7 +24,8 @@ public class FloatingTooltip : MonoBehaviour private Rect RootRect { get { - rootRect = rootRect ?? Systems.UI.rootTransform.rect; + rootRect = rootRect ?? S.UI.RootTransform.rect; + return rootRect.Value; } } @@ -36,18 +35,18 @@ protected virtual void Update() { } /// - /// Update the position of the tooltip + /// Update the position of the tooltip /// /// public void UpdatePosition(bool immediate = false) { // Get the mouse position - var mousePos = Systems.Input.ScaledViewportPoint; + var mousePos = S.Input.MouseScaledViewportPoint; var clampedCorner = ClampPos(mousePos + offset); SetAnchoredPos(clampedCorner, immediate); } /// - /// Clamp the mouse position + /// Clamp the mouse position /// /// /// @@ -56,7 +55,8 @@ protected virtual Vector2 ClampPos(Vector2 input) { var pivot = tooltipRoot.pivot; var min = GetMinBounds(size, pivot); var max = GetMaxBounds(size, pivot, GetSize(RootRect)); - return MathUtils.Clamp(input, min, max); + + return input.Clamp(min, max); } protected virtual Vector2 GetTooltipSize() { @@ -69,11 +69,13 @@ protected Vector2 GetSize(Rect rect) { private Vector2 GetMinBounds(Vector2 size, Vector2 pivot) { var result = size * pivot; + return AddFloat(result, padding); } private Vector2 GetMaxBounds(Vector2 size, Vector2 pivot, Vector2 boundSize) { var result = boundSize - size * (Vector2.one - pivot); + return AddFloat(result, -padding); } @@ -82,17 +84,22 @@ private Vector2 AddFloat(Vector2 vector, float value) { } /// - /// Sets the position of the tooltip + /// Sets the position of the tooltip /// /// Position - /// Whether the update needs to happen now. This is usually used to notify any animation systems that they shouldn't animate, but instead set the position directly + /// + /// Whether the update needs to happen now. This is usually used to notify any animation systems + /// that they shouldn't animate, but instead set the position directly + /// protected virtual void SetAnchoredPos(Vector2 pos, bool immediate) { if (immediate) { tooltipRoot.anchoredPosition = pos; + return; } posTween?.Kill(); + posTween = tooltipRoot.DOAnchorPos(pos, animTime) .SetEase(Ease.OutQuad); } diff --git a/Assets/Project/Source/UI/Tooltips/ITooltipComponent.cs b/Assets/Project/Source/UI/Tooltips/ITooltipComponent.cs index bcf1f8ed..05b3af79 100644 --- a/Assets/Project/Source/UI/Tooltips/ITooltipComponent.cs +++ b/Assets/Project/Source/UI/Tooltips/ITooltipComponent.cs @@ -1,9 +1,7 @@ using UnityEngine; -namespace Exa.UI.Tooltips -{ - public interface ITooltipComponent - { +namespace Exa.UI.Tooltips { + public interface ITooltipComponent { TooltipComponentView InstantiateComponentView(Transform parent); } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/Tooltips/ITooltipPresenter.cs b/Assets/Project/Source/UI/Tooltips/ITooltipPresenter.cs index 2ebf04a9..aa80c8a9 100644 --- a/Assets/Project/Source/UI/Tooltips/ITooltipPresenter.cs +++ b/Assets/Project/Source/UI/Tooltips/ITooltipPresenter.cs @@ -1,12 +1,10 @@ -namespace Exa.UI.Tooltips -{ +namespace Exa.UI.Tooltips { /// - /// Supports objects that may be presented with an in-game tooltip + /// Supports objects that may be presented with an in-game tooltip /// - public interface ITooltipPresenter - { + public interface ITooltipPresenter { /// - /// Get the collection of tooltip components + /// Get the collection of tooltip components /// /// Tooltip GetTooltip(); diff --git a/Assets/Project/Source/UI/Tooltips/TextTooltip.cs b/Assets/Project/Source/UI/Tooltips/TextTooltip.cs index 7b5eca4e..97b55255 100644 --- a/Assets/Project/Source/UI/Tooltips/TextTooltip.cs +++ b/Assets/Project/Source/UI/Tooltips/TextTooltip.cs @@ -1,19 +1,17 @@ using UnityEngine; using UnityEngine.UI; -namespace Exa.UI.Tooltips -{ - public class TextTooltip : FloatingTooltip - { +namespace Exa.UI.Tooltips { + public class TextTooltip : FloatingTooltip { [SerializeField] private Text text; [SerializeField] private RectTransform verticalContainer; public static void ShowTooltip(string message) { - Systems.UI.tooltips.textTooltip.ShowTooltipInternal(message); + S.UI.Tooltips.textTooltip.ShowTooltipInternal(message); } public static void HideTooltip() { - Systems.UI.tooltips.textTooltip.HideTooltipInternal(); + S.UI.Tooltips.textTooltip.HideTooltipInternal(); } protected override Vector2 GetTooltipSize() { @@ -24,16 +22,18 @@ protected override Vector2 GetTooltipSize() { } private void ShowTooltipInternal(string message) { - if (!gameObject.activeSelf) + if (!gameObject.activeSelf) { gameObject.SetActive(true); + } text.text = message; UpdatePosition(true); } private void HideTooltipInternal() { - if (gameObject.activeSelf) + if (gameObject.activeSelf) { gameObject.SetActive(false); + } } } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/Tooltips/TextTooltipTrigger.cs b/Assets/Project/Source/UI/Tooltips/TextTooltipTrigger.cs index 7720fb7c..c6570dcd 100644 --- a/Assets/Project/Source/UI/Tooltips/TextTooltipTrigger.cs +++ b/Assets/Project/Source/UI/Tooltips/TextTooltipTrigger.cs @@ -2,33 +2,41 @@ #pragma warning disable CS0649 -namespace Exa.UI.Tooltips -{ +namespace Exa.UI.Tooltips { [RequireComponent(typeof(Hoverable))] - public class TextTooltipTrigger : MonoBehaviour - { + public class TextTooltipTrigger : MonoBehaviour { [SerializeField] private Hoverable hoverable; [SerializeField] private string message; private void Awake() { - hoverable = hoverable ?? GetComponent(); - hoverable.onPointerEnter.AddListener(() => { - if (!string.IsNullOrEmpty(message)) - TextTooltip.ShowTooltip(message); - }); + hoverable = GetComponent(); + + hoverable.onPointerEnter.AddListener( + () => { + if (!string.IsNullOrEmpty(message)) { + TextTooltip.ShowTooltip(message); + } + } + ); hoverable.onPointerExit.AddListener(TextTooltip.HideTooltip); } public void SetText(string message) { + if (hoverable == null) { + hoverable = GetComponent(); + } + this.message = message; var stringNullOrEmpty = string.IsNullOrEmpty(message); - if (hoverable.MouseOverControl && stringNullOrEmpty) + if (hoverable.MouseOverControl && stringNullOrEmpty) { TextTooltip.HideTooltip(); + } - if (hoverable.MouseOverControl && !stringNullOrEmpty) + if (hoverable.MouseOverControl && !stringNullOrEmpty) { TextTooltip.ShowTooltip(message); + } } } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/Tooltips/Tooltip.cs b/Assets/Project/Source/UI/Tooltips/Tooltip.cs index 23d0aff4..0add4fc3 100644 --- a/Assets/Project/Source/UI/Tooltips/Tooltip.cs +++ b/Assets/Project/Source/UI/Tooltips/Tooltip.cs @@ -1,26 +1,25 @@ using System; using UnityEngine; -namespace Exa.UI.Tooltips -{ +namespace Exa.UI.Tooltips { // TODO: Support value refreshing, without destroying and instantiating ui objects - public class Tooltip - { + public class Tooltip { private readonly Func factory; private TooltipGroup group; - public bool ShouldRefresh { get; set; } - public Font Font { get; private set; } - public Tooltip(Func factory, Font font = null) { this.factory = factory; ShouldRefresh = true; Font = font; } + public bool ShouldRefresh { get; set; } + public Font Font { get; } + public TooltipGroup GetRootData() { - if (ShouldRefresh) + if (ShouldRefresh) { group = factory(); + } return group; } diff --git a/Assets/Project/Source/UI/Tooltips/TooltipComponentView.cs b/Assets/Project/Source/UI/Tooltips/TooltipComponentView.cs index 86d3c938..01b301fd 100644 --- a/Assets/Project/Source/UI/Tooltips/TooltipComponentView.cs +++ b/Assets/Project/Source/UI/Tooltips/TooltipComponentView.cs @@ -1,25 +1,21 @@ using System; using UnityEngine; -namespace Exa.UI.Tooltips -{ +namespace Exa.UI.Tooltips { public abstract class TooltipComponentView : TooltipComponentView - where T : ITooltipComponent - { + where T : ITooltipComponent { protected abstract void Refresh(T value); public override void Refresh(ITooltipComponent value) { try { - Refresh((T) value); - } - catch (InvalidCastException) { - throw new ArgumentException($"{value.GetType()} cannot be converted to {typeof(T)}"); + Refresh(value: (T) value); + } catch (InvalidCastException) { + throw new ArgumentException(message: $"{value.GetType()} cannot be converted to {typeof(T)}"); } } } - public abstract class TooltipComponentView : MonoBehaviour - { + public abstract class TooltipComponentView : MonoBehaviour { public abstract void Refresh(ITooltipComponent value); } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/Tooltips/TooltipFactory.cs b/Assets/Project/Source/UI/Tooltips/TooltipFactory.cs index b5e1a4af..ccc8dd37 100644 --- a/Assets/Project/Source/UI/Tooltips/TooltipFactory.cs +++ b/Assets/Project/Source/UI/Tooltips/TooltipFactory.cs @@ -1,16 +1,16 @@ -using UnityEngine; +using Exa.Grids.Blocks; +using UnityEngine; #pragma warning disable CS0649 -namespace Exa.UI.Tooltips -{ - public class TooltipFactory : MonoBehaviour - { +namespace Exa.UI.Tooltips { + public class TooltipFactory : MonoBehaviour { [SerializeField] private GameObject propertyPrefab; [SerializeField] private GameObject groupPrefab; [SerializeField] private GameObject titlePrefab; [SerializeField] private GameObject spacerPrefab; [SerializeField] private GameObject textPrefab; + [SerializeField] private GameObject metadataPrefab; private Tooltip currentTooltip; @@ -19,6 +19,7 @@ public GroupView CreateRootView(Tooltip tooltip, Transform parent) { var container = tooltip.GetRootData(); var root = container.InstantiateComponentView(parent) as GroupView; currentTooltip = null; + return root; } @@ -50,6 +51,10 @@ public SpacerView GenerateTooltipSpacer(Transform parent, TooltipSpacer value) { return CreateComponent(spacerPrefab, parent, value); } + public BlockCostsView CreateBlockCostsView(Transform parent, BlockCosts metadata) { + return CreateComponent(metadataPrefab, parent, metadata); + } + public TextView GenerateTooltipText(Transform parent, TooltipText value) { var view = CreateComponent(textPrefab, parent, value); @@ -64,6 +69,7 @@ private T CreateComponent(GameObject prefab, Transform parent, ITooltipCompon where T : TooltipComponentView { var component = Instantiate(prefab, parent).GetComponent(); component.Refresh(value); + return component; } } diff --git a/Assets/Project/Source/UI/Tooltips/TooltipView.cs b/Assets/Project/Source/UI/Tooltips/TooltipView.cs index e0bffaac..b459fae4 100644 --- a/Assets/Project/Source/UI/Tooltips/TooltipView.cs +++ b/Assets/Project/Source/UI/Tooltips/TooltipView.cs @@ -1,10 +1,8 @@ using Exa.Utils; -namespace Exa.UI.Tooltips -{ +namespace Exa.UI.Tooltips { public abstract class TooltipView : FloatingTooltip - where T : ITooltipPresenter - { + where T : ITooltipPresenter { protected Tooltip tooltip; public GroupView Root { get; set; } @@ -22,7 +20,7 @@ public void Hide() { public void Rebuild(T data) { itemsContainer.DestroyChildren(); tooltip = data.GetTooltip(); - Root = Systems.UI.tooltips.tooltipGenerator.CreateRootView(tooltip, itemsContainer); + Root = S.UI.Tooltips.tooltipGenerator.CreateRootView(tooltip, itemsContainer); tooltip.ShouldRefresh = false; } } diff --git a/Assets/Project/Source/UI/Tooltips/VariableTooltipManager.cs b/Assets/Project/Source/UI/Tooltips/VariableTooltipManager.cs index 18efd265..883f2050 100644 --- a/Assets/Project/Source/UI/Tooltips/VariableTooltipManager.cs +++ b/Assets/Project/Source/UI/Tooltips/VariableTooltipManager.cs @@ -2,10 +2,8 @@ using Exa.Ships; using UnityEngine; -namespace Exa.UI.Tooltips -{ - public class VariableTooltipManager : MonoBehaviour - { +namespace Exa.UI.Tooltips { + public class VariableTooltipManager : MonoBehaviour { public TooltipFactory tooltipGenerator; public BlockTemplateTooltip blockTemplateTooltip; public BlueprintTypeTooltip blueprintTypeTooltip; diff --git a/Assets/Project/Source/UI/Tweening/CustomTargetTween.cs b/Assets/Project/Source/UI/Tweening/CustomTargetTween.cs index 91d8ed43..851ba04d 100644 --- a/Assets/Project/Source/UI/Tweening/CustomTargetTween.cs +++ b/Assets/Project/Source/UI/Tweening/CustomTargetTween.cs @@ -1,33 +1,31 @@ using DG.Tweening; using DG.Tweening.Core; -namespace Exa.UI.Tweening -{ - public abstract class CustomTargetTween : TweenRef - { +namespace Exa.UI.Tweening { + public abstract class CustomTargetTween : TweenRef { protected DOGetter getter; protected DOSetter setter; public CustomTargetTween DOGetter(DOGetter getter) { this.getter = getter; + return this; } public CustomTargetTween DOSetter(DOSetter setter) { this.setter = setter; + return this; } } - public class FloatTween : CustomTargetTween - { + public class FloatTween : CustomTargetTween { protected override Tween CreateTween(float endValue, float duration) { return DOTween.To(getter, setter, endValue, duration); } } - public class IntTween : CustomTargetTween - { + public class IntTween : CustomTargetTween { protected override Tween CreateTween(int endValue, float duration) { return DOTween.To(getter, setter, endValue, duration); } diff --git a/Assets/Project/Source/UI/Tweening/ExaEase.cs b/Assets/Project/Source/UI/Tweening/ExaEase.cs index 4d478f8f..f534f2f0 100644 --- a/Assets/Project/Source/UI/Tweening/ExaEase.cs +++ b/Assets/Project/Source/UI/Tweening/ExaEase.cs @@ -1,35 +1,64 @@ using System; using DG.Tweening; +using DG.Tweening.Core.Easing; using UnityEngine; -namespace Exa.UI.Tweening -{ +namespace Exa.UI.Tweening { [Serializable] - public struct ExaEase - { + public struct ExaEase { + private static readonly float Tolerance = 0.00001f; + public ExaEaseType easeType; public Ease ease; public AnimationCurve animationCurve; + + public ExaEase(Ease ease) + : this(ExaEaseType.Classic, ease, null) { } + + public ExaEase(AnimationCurve curve) + : this(ExaEaseType.AnimationCurve, Ease.INTERNAL_Zero, curve) { } + + private ExaEase(ExaEaseType easeType, Ease ease, AnimationCurve animationCurve) { + this.easeType = easeType; + this.ease = ease; + this.animationCurve = animationCurve; + } + + public float Evaluate(float time) { + var value = easeType switch { + ExaEaseType.Classic => EaseManager.Evaluate( + ease, + null, + time, + 1f, + 0f, + 0f + ), + ExaEaseType.AnimationCurve => animationCurve.Evaluate(time), + _ => throw new ArgumentOutOfRangeException() + }; + + return value < Tolerance + ? 0f // Return 0 if value is below tolerance + : value > 1f - Tolerance + ? 1f // Return 1 if value is above 1 - tolerance + : value; + } } - public enum ExaEaseType - { + public enum ExaEaseType { Classic, AnimationCurve } - public static class ExaEaseHelper - { + public static class ExaEaseHelper { public static T SetEase(this T tween, ExaEase ease) where T : Tween { - switch (ease.easeType) { - case ExaEaseType.Classic: - return tween.SetEase(ease.ease); - case ExaEaseType.AnimationCurve: - return tween.SetEase(ease.animationCurve); - default: - throw new ArgumentOutOfRangeException(); - } + return ease.easeType switch { + ExaEaseType.Classic => tween.SetEase(ease.ease), + ExaEaseType.AnimationCurve => tween.SetEase(ease.animationCurve), + _ => throw new ArgumentOutOfRangeException() + }; } } } \ No newline at end of file diff --git a/Assets/Project/Source/UI/Tweening/TweenBlender.cs b/Assets/Project/Source/UI/Tweening/TweenBlender.cs index 6052eea6..a9f59d2a 100644 --- a/Assets/Project/Source/UI/Tweening/TweenBlender.cs +++ b/Assets/Project/Source/UI/Tweening/TweenBlender.cs @@ -4,17 +4,14 @@ using DG.Tweening; using Exa.Utils; -namespace Exa.UI.Tweening -{ +namespace Exa.UI.Tweening { public class TweenBlender where T : struct - where TTarget : CustomTargetTween, new() - { - private Action setter; - private T defaultValue; - private Dictionary blenders = new Dictionary(); - - protected Func aggregator = null; + where TTarget : CustomTargetTween, new() { + private readonly Dictionary blenders = new Dictionary(); + private readonly T defaultValue; + private readonly Action setter; + protected Func aggregator; public TweenBlender(T defaultValue, Action setter, Func aggregator) { this.defaultValue = defaultValue; @@ -27,14 +24,21 @@ public Tween To(int id, T endValue, float time) { } public Tween To(int id, T startValue, T endValue, float duration) { - blenders.EnsureCreated(id, () => new Blender { - tween = new TTarget() - .DOGetter(() => blenders[id].value) - .DOSetter(x => blenders[id].value = x) - }); + if (!blenders.ContainsKey(id)) { + blenders.Add( + key: id, + value: new Blender { + tween = new TTarget() + .DOGetter(() => blenders[id].value) + .DOSetter(x => blenders[id].value = x) + } + ); + } blenders[id].value = startValue; - return blenders[id].tween + + return blenders[id] + .tween .To(endValue, duration); } @@ -51,8 +55,9 @@ public void Kill() { } protected virtual T BlendValues(T value, IEnumerable blenders) { - if (aggregator == null) + if (aggregator == null) { throw new InvalidOperationException("Cannot blend values without a given aggregator function"); + } return blenders.Aggregate(value, aggregator); } @@ -63,15 +68,13 @@ private T SelectValue(int id) { : defaultValue; } - private class Blender - { - public T value; + private class Blender { public TweenRef tween; + public T value; } } - public class FloatTweenBlender : TweenBlender - { + public class FloatTweenBlender : TweenBlender { public FloatTweenBlender(float defaultValue, Action setter, Func aggregator) : base(defaultValue, setter, aggregator) { } } diff --git a/Assets/Project/Source/UI/Tweening/TweenRef.cs b/Assets/Project/Source/UI/Tweening/TweenRef.cs index 987b4227..d959abb2 100644 --- a/Assets/Project/Source/UI/Tweening/TweenRef.cs +++ b/Assets/Project/Source/UI/Tweening/TweenRef.cs @@ -1,28 +1,29 @@ using System; using DG.Tweening; -namespace Exa.UI.Tweening -{ - public abstract class TweenRef - { - private Tween tween; +namespace Exa.UI.Tweening { + public abstract class TweenRef { private float? defaultDuration; - public Tween Tween => tween; + public Tween Tween { get; private set; } public Tween To(T endValue) { - return To(endValue, - defaultDuration ?? throw new InvalidOperationException("A default duration must be set")); + return To( + endValue, + defaultDuration ?? throw new InvalidOperationException("A default duration must be set") + ); } public Tween To(T endValue, float time) { - tween?.Kill(); - tween = CreateTween(endValue, time); - return tween; + Tween?.Kill(); + Tween = CreateTween(endValue, time); + + return Tween; } public TweenRef SetDuration(float duration) { - this.defaultDuration = duration; + defaultDuration = duration; + return this; } diff --git a/Assets/Project/Source/UI/Tweening/TweenWrapper.cs b/Assets/Project/Source/UI/Tweening/TweenWrapper.cs index cd232f83..3086bfa1 100644 --- a/Assets/Project/Source/UI/Tweening/TweenWrapper.cs +++ b/Assets/Project/Source/UI/Tweening/TweenWrapper.cs @@ -1,11 +1,9 @@ using System; using DG.Tweening; -namespace Exa.UI.Tweening -{ - public class TweenWrapper : TweenRef - { - private Func tweenFactory; +namespace Exa.UI.Tweening { + public class TweenWrapper : TweenRef { + private readonly Func tweenFactory; public TweenWrapper(Func tweenFactory) { this.tweenFactory = tweenFactory; diff --git a/Assets/Project/Source/UI/UserExceptionLogger/UserExceptionLogger.cs b/Assets/Project/Source/UI/UserExceptionLogger/UserExceptionLogger.cs deleted file mode 100644 index ab63ae89..00000000 --- a/Assets/Project/Source/UI/UserExceptionLogger/UserExceptionLogger.cs +++ /dev/null @@ -1,22 +0,0 @@ -using UnityEngine; -using Exa.Misc; - -#pragma warning disable CS0649 - -namespace Exa.UI -{ - public class UserExceptionLogger : MonoBehaviour - { - [SerializeField] private GameObject userExceptionPrefab; - [SerializeField] private Transform container; - - public void Log(UserException exception) { - Log(exception.Message); - } - - public void Log(string message) { - var exceptionView = Instantiate(userExceptionPrefab, container).GetComponent(); - exceptionView.Message = message; - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/UI/UserExceptionLogger/UserExceptionView.cs b/Assets/Project/Source/UI/UserExceptionLogger/UserExceptionView.cs deleted file mode 100644 index ad83141c..00000000 --- a/Assets/Project/Source/UI/UserExceptionLogger/UserExceptionView.cs +++ /dev/null @@ -1,28 +0,0 @@ -using DG.Tweening; -using Exa.Utils; -using UnityEngine; -using UnityEngine.UI; - -#pragma warning disable CS0649 - -namespace Exa.UI -{ - public class UserExceptionView : MonoBehaviour - { - [SerializeField] private CanvasGroup canvasGroup; - [SerializeField] private Text text; - - public string Message { - set => text.text = value; - } - - private void Awake() { - canvasGroup.alpha = 0f; - canvasGroup.DOFade(1, 0.2f); - - StartCoroutine(EnumeratorUtils.Delay(() => { canvasGroup.DOFade(0f, 0.2f); }, 3f)); - - StartCoroutine(EnumeratorUtils.Delay(() => { Destroy(gameObject); }, 3.2f)); - } - } -} \ No newline at end of file diff --git a/Assets/Project/Source/UI/WIPScreen/WipScreen.cs b/Assets/Project/Source/UI/WIPScreen/WipScreen.cs index 94e669de..cc3da1b3 100644 --- a/Assets/Project/Source/UI/WIPScreen/WipScreen.cs +++ b/Assets/Project/Source/UI/WIPScreen/WipScreen.cs @@ -5,11 +5,9 @@ using UnityEngine; using UnityEngine.UI; -namespace Exa.UI -{ - public class WipScreen : MonoBehaviour - { - [Header("References")] +namespace Exa.UI { + public class WipScreen : MonoBehaviour { + [Header("References")] [SerializeField] private CanvasGroup rootCanvasGroup; [SerializeField] private CanvasGroup textCanvasGroup; [SerializeField] private GameObject wordPrefab; @@ -17,24 +15,25 @@ public class WipScreen : MonoBehaviour [SerializeField] private RectTransform wordContainer; [SerializeField] private HorizontalLayoutGroup wordLayoutGroup; - [Header("Settings")] + [Header("Settings")] [SerializeField] private bool forceShowScreen; [SerializeField] private AnimSettings animSettings; + private Tween textContainerScaleTween; private Tween titleSpacingTween; - private Tween textContainerScaleTween; public void Init() { - if (GetShouldShowScreen()) + if (GetShouldShowScreen()) { ShowScreen(); + } } private bool GetShouldShowScreen() { -#if !UNITY_EDITOR + #if !UNITY_EDITOR return true; -#else + #else return forceShowScreen; -#endif + #endif } private void ShowScreen() { @@ -56,18 +55,23 @@ private void ShowScreen() { private void GenerateTitle(bool scrollAnimation) { var charCount = 0; + foreach (var word in animSettings.message.Split(' ')) { var go = Instantiate(wordPrefab, wordContainer); var text = go.GetComponent(); + if (scrollAnimation) { text.text = ""; var animator = go.AddComponent(); animator.CharTime = animSettings.charTime; - this.Delay(() => animator.AnimateTo(word), - charCount * animSettings.charTime + animSettings.textFadeEnter.delay); - } - else + + this.Delay( + () => animator.AnimateTo(word), + charCount * animSettings.charTime + animSettings.textFadeEnter.delay + ); + } else { text.text = word; + } charCount += word.Length; } @@ -84,14 +88,14 @@ private void GrowText(AnimSettings.TextGrowthArgs args) { // .SetEase(args.ease); var scale = new Vector3(args.scale, args.scale, 1f); + textContainer.DOScale(scale, args.duration) .SetEase(args.ease) .Replace(ref textContainerScaleTween); } [Serializable] - public struct AnimSettings - { + public struct AnimSettings { public TextFadeEnterArgs textFadeEnter; public TextGrowthArgs textGrowthEnter; public TextGrowthArgs textGrowthExit; @@ -102,16 +106,14 @@ public struct AnimSettings public string message; [Serializable] - public struct TextFadeEnterArgs - { + public struct TextFadeEnterArgs { public float delay; public float duration; public ExaEase ease; } [Serializable] - public struct TextGrowthArgs - { + public struct TextGrowthArgs { public float duration; public float scale; public float spacing; diff --git a/Assets/Project/Source/Utils/AssetImporterExtensions.cs b/Assets/Project/Source/Utils/AssetImporterExtensions.cs new file mode 100644 index 00000000..1713091e --- /dev/null +++ b/Assets/Project/Source/Utils/AssetImporterExtensions.cs @@ -0,0 +1,24 @@ +using UnityEditor; +using UnityEngine; + +namespace Exa.Utils { +#if UNITY_EDITOR + public static class AssetImporterExtensions { + public static void ApplyDefaultBlockImportSettings(this TextureImporter importer) { + importer.textureType = TextureImporterType.Sprite; + importer.spriteImportMode = SpriteImportMode.Multiple; + importer.filterMode = FilterMode.Point; + importer.textureCompression = TextureImporterCompression.Uncompressed; + importer.mipmapEnabled = false; + importer.wrapMode = TextureWrapMode.Clamp; + importer.maxTextureSize = 16384; + importer.crunchedCompression = false; + importer.compressionQuality = 100; + importer.spritePixelsPerUnit = 32; + importer.isReadable = false; + importer.textureShape = TextureImporterShape.Texture2D; + importer.npotScale = TextureImporterNPOTScale.None; + } + } +#endif +} \ No newline at end of file diff --git a/Assets/Project/Source/Utils/AssetImporterExtensions.cs.meta b/Assets/Project/Source/Utils/AssetImporterExtensions.cs.meta new file mode 100644 index 00000000..dc78131a --- /dev/null +++ b/Assets/Project/Source/Utils/AssetImporterExtensions.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: ccffeeef14f148029303e680f8de19e1 +timeCreated: 1625521071 \ No newline at end of file diff --git a/Assets/Project/Source/Utils/Collider2DExtensions.cs b/Assets/Project/Source/Utils/Collider2DExtensions.cs index 85cc12dd..7e2c88ff 100644 --- a/Assets/Project/Source/Utils/Collider2DExtensions.cs +++ b/Assets/Project/Source/Utils/Collider2DExtensions.cs @@ -1,13 +1,31 @@ -using UnityEngine; +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; -namespace Exa.Utils -{ - public static class Collider2DExtensions - { +namespace Exa.Utils { + public static class Collider2DExtensions { public static void SetMass(this BoxCollider2D collider, float mass) { var size = collider.size; var area = size.x * size.y; collider.density = mass / area; } + + public static IEnumerable StationaryCast(this Collider2D collider, LayerMask layerMask, int maxHits = 100) { + if (!collider.enabled || !collider.gameObject.activeSelf) { + throw new InvalidOperationException("Cannot perform a cast on a disabled collider"); + } + + var hits = new RaycastHit2D[maxHits]; + + var filter = new ContactFilter2D { + useLayerMask = true, + layerMask = layerMask + }; + + var hitCount = collider.Cast(Vector2.zero, filter, hits); + + return hits.Take(hitCount); + } } } \ No newline at end of file diff --git a/Assets/Project/Source/Utils/ColorExtensions.cs b/Assets/Project/Source/Utils/ColorExtensions.cs new file mode 100644 index 00000000..b28f43f1 --- /dev/null +++ b/Assets/Project/Source/Utils/ColorExtensions.cs @@ -0,0 +1,9 @@ +using UnityEngine; + +namespace Exa.Utils { + public static class ColorExtensions { + public static Color SetAlpha(this Color color, float alpha) { + return new Color(color.r, color.g, color.b, alpha); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Utils/ColorExtensions.cs.meta b/Assets/Project/Source/Utils/ColorExtensions.cs.meta new file mode 100644 index 00000000..a5e1e19e --- /dev/null +++ b/Assets/Project/Source/Utils/ColorExtensions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7796576da6e38b843a149c1b6fd12bad +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Utils/Colors.cs b/Assets/Project/Source/Utils/Colors.cs new file mode 100644 index 00000000..c7b98436 --- /dev/null +++ b/Assets/Project/Source/Utils/Colors.cs @@ -0,0 +1,33 @@ +using UnityEngine; + +namespace Exa.Utils { + public static class Colors { + public static Color White { + get => S.Colors.white; + } + + public static Color DimGray { + get => S.Colors.dimGray; + } + + public static Color Onyx { + get => S.Colors.onyx; + } + + public static Color RaisinBlack { + get => S.Colors.raisinBlack; + } + + public static Color Verdigris { + get => S.Colors.verdigris; + } + + public static Color RoseVale { + get => S.Colors.roseVale; + } + + public static Color GetActiveColor(bool active) { + return active ? Verdigris : RoseVale; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Utils/Colors.cs.meta b/Assets/Project/Source/Utils/Colors.cs.meta new file mode 100644 index 00000000..53f1d05f --- /dev/null +++ b/Assets/Project/Source/Utils/Colors.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 60a6fe80b6be6874d9cd122f3fcac351 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Utils/DictionaryExtensions.cs b/Assets/Project/Source/Utils/DictionaryExtensions.cs index 89d85eb7..32121564 100644 --- a/Assets/Project/Source/Utils/DictionaryExtensions.cs +++ b/Assets/Project/Source/Utils/DictionaryExtensions.cs @@ -2,26 +2,31 @@ using System.Collections.Generic; using System.Linq; -namespace Exa.Utils -{ - public static class DictionaryExtensions - { - public static void EnsureCreated(this IDictionary dictionary, TKey key, - Func factory) { - if (!dictionary.ContainsKey(key)) - dictionary.Add(key, factory()); +namespace Exa.Utils { + public static class DictionaryExtensions { + public static IEnumerable<(TKey key, TValue value)> Unpack(this IDictionary dictionary) { + return dictionary.Select(kvp => (kvp.Key, kvp.Value)); + } + + public static TValue Get(this IDictionary dictionary, Tkey key) + where TValue : class { + return dictionary.ContainsKey(key) ? dictionary[key] : null; } public static bool NestedContainsKey( this IDictionary> dictionary, - TKey1 key1, TKey2 key2) { + TKey1 key1, + TKey2 key2 + ) { return dictionary.ContainsKey(key1) && dictionary[key1].ContainsKey(key2); } - public static IEnumerable WhereKeys(this IDictionary dictionary, - Func predicate) { + public static IEnumerable WhereKeys( + this IDictionary dictionary, + Func predicate + ) { return dictionary.Where(kvp => predicate(kvp.Key)) .Select(kvp => kvp.Value); } diff --git a/Assets/Project/Source/Utils/DisposeableAction.cs b/Assets/Project/Source/Utils/DisposeableAction.cs new file mode 100644 index 00000000..270390be --- /dev/null +++ b/Assets/Project/Source/Utils/DisposeableAction.cs @@ -0,0 +1,52 @@ +using System; +using UnityEngine; + +namespace Exa.Utils { + /// + /// The disposable action. + /// + public class DisposableAction : IDisposable { + private Action dispose; + + /// + /// Initializes a new instance of the class. + /// + /// + /// The dispose. + /// + public DisposableAction(Action dispose) { + this.dispose = dispose ?? throw new ArgumentNullException(nameof(dispose)); + } + + /// + /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + /// + /// 2 + public void Dispose() { + Dispose(true); + GC.SuppressFinalize(this); + } + + /// + /// The dispose. + /// + /// + /// The disposing. + /// + protected virtual void Dispose(bool disposing) { + if (disposing) { + if (dispose == null) { + return; + } + + try { + dispose(); + } catch (Exception ex) { + Debug.LogException(ex); + } + + dispose = null; + } + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Utils/DisposeableAction.cs.meta b/Assets/Project/Source/Utils/DisposeableAction.cs.meta new file mode 100644 index 00000000..b27b52d2 --- /dev/null +++ b/Assets/Project/Source/Utils/DisposeableAction.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 37593747a7294af7917eb3736124a51d +timeCreated: 1625414068 \ No newline at end of file diff --git a/Assets/Project/Source/Utils/EnumExtensions.cs b/Assets/Project/Source/Utils/EnumExtensions.cs index f428ef48..97251dbd 100644 --- a/Assets/Project/Source/Utils/EnumExtensions.cs +++ b/Assets/Project/Source/Utils/EnumExtensions.cs @@ -1,19 +1,30 @@ using System; -namespace Exa.Utils -{ - public static class EnumExtensions - { +namespace Exa.Utils { + public static class EnumExtensions { /// - /// Type constrained version of + /// Type constrained version of /// /// /// /// /// - public static bool Is(this T value, T flag) + public static bool HasValue(this T value, T flag) where T : Enum { return value.HasFlag(flag); } + + public static bool HasAnyValue(this T value, T flags) + where T : Enum { + return ((int) (object) value & (int) (object) flags) != 0; + } + + public static T SetFlag(this T value, T flag, bool set) + where T : Enum { + var valueInt = (int) (object) value; + var flagInt = (int) (object) flag; + + return (T) (object) (set ? valueInt | flagInt : valueInt & ~flagInt); + } } } \ No newline at end of file diff --git a/Assets/Project/Source/Utils/Enumeration/CoroutineUtils.cs b/Assets/Project/Source/Utils/Enumeration/CoroutineUtils.cs index 137a5319..f86f2080 100644 --- a/Assets/Project/Source/Utils/Enumeration/CoroutineUtils.cs +++ b/Assets/Project/Source/Utils/Enumeration/CoroutineUtils.cs @@ -1,16 +1,23 @@ using System; +using System.Collections; using UnityEngine; -namespace Exa.Utils -{ - public static class CoroutineUtils - { +namespace Exa.Utils { + public static class CoroutineUtils { public static Coroutine Delay(this MonoBehaviour monoBehaviour, Action action, float seconds) { - return Systems.Instance.StartCoroutine(EnumeratorUtils.Delay(action, seconds)); + return EnumeratorUtils.Delay(action, seconds).Start(monoBehaviour); + } + + public static Coroutine Start(this IEnumerator enumerator) { + return S.Instance.StartCoroutine(enumerator); + } + + public static Coroutine Start(this IEnumerator enumerator, MonoBehaviour target) { + return target.StartCoroutine(enumerator); } public static Coroutine DelayLocally(this MonoBehaviour monoBehaviour, Action action, float seconds) { - return monoBehaviour.StartCoroutine(EnumeratorUtils.Delay(action, seconds)); + return EnumeratorUtils.Delay(action, seconds).Start(monoBehaviour); } } } \ No newline at end of file diff --git a/Assets/Project/Source/Utils/Enumeration/EnumerableUtils.cs b/Assets/Project/Source/Utils/Enumeration/EnumerableUtils.cs index 9c2b143d..1e47aa0c 100644 --- a/Assets/Project/Source/Utils/Enumeration/EnumerableUtils.cs +++ b/Assets/Project/Source/Utils/Enumeration/EnumerableUtils.cs @@ -1,12 +1,16 @@ using System; +using System.Collections; using System.Collections.Generic; +using System.Linq; +using UnityEngine; +using Random = UnityEngine.Random; -namespace Exa.Utils -{ - public static class EnumerableUtils - { - public static IEnumerable<(T1, T2)> AsTupleEnumerable(this IEnumerable first, - IEnumerable second) { +namespace Exa.Utils { + public static class EnumerableUtils { + public static IEnumerable<(T1, T2)> AsTupleEnumerable( + this IEnumerable first, + IEnumerable second + ) { var firstEnumerator = first.GetEnumerator(); var secondEnumerator = second.GetEnumerator(); @@ -15,8 +19,11 @@ public static class EnumerableUtils } } - public static IEnumerable<(T1, T2, T3)> AsTupleEnumerable(this IEnumerable first, - IEnumerable second, IEnumerable third) { + public static IEnumerable<(T1, T2, T3)> AsTupleEnumerable( + this IEnumerable first, + IEnumerable second, + IEnumerable third + ) { var firstEnumerator = first.GetEnumerator(); var secondEnumerator = second.GetEnumerator(); var thirdEnumerator = third.GetEnumerator(); @@ -26,24 +33,66 @@ public static class EnumerableUtils } } - public static IEnumerable<(T1, T2, T3, T4)> AsTupleEnumerable(this IEnumerable first, - IEnumerable second, IEnumerable third, IEnumerable fourth) { + public static IEnumerable<(T1, T2, T3, T4)> AsTupleEnumerable( + this IEnumerable first, + IEnumerable second, + IEnumerable third, + IEnumerable fourth + ) { var firstEnumerator = first.GetEnumerator(); var secondEnumerator = second.GetEnumerator(); var thirdEnumerator = third.GetEnumerator(); var fourthEnumerator = fourth.GetEnumerator(); - while (firstEnumerator.MoveNext() && secondEnumerator.MoveNext() && thirdEnumerator.MoveNext() && - fourthEnumerator.MoveNext()) { - yield return (firstEnumerator.Current, secondEnumerator.Current, thirdEnumerator.Current, + while (firstEnumerator.MoveNext() && + secondEnumerator.MoveNext() && + thirdEnumerator.MoveNext() && + fourthEnumerator.MoveNext()) { + yield return (firstEnumerator.Current, secondEnumerator.Current, thirdEnumerator.Current, fourthEnumerator.Current); } } - public static void Foreach(this IEnumerable enumerable, Action action) { + public static void ForEach(this IEnumerable enumerable, Action action) { foreach (var element in enumerable) { action(element); } } + + public static IEnumerable SelectNonNull( + this IEnumerable enumerable, + Func selector + ) + where TResult : class { + return enumerable.Select(selector).Where(elem => elem != null); + } + + public static T GetRandomElement(this IEnumerable enumerable) { + var count = enumerable.Count(); + + return count == 0 + ? default + : enumerable.ElementAt(Random.Range(0, count)); + } + + public static TTarget FindFirst(this IEnumerable enumerable) { + foreach (var elem in enumerable) { + if (elem is TTarget target) { + return target; + } + } + + return default; + } + + public static string Join(this IEnumerable enumerable, string separator = "") { + return string.Join(separator, enumerable); + } + + public static void Log(this IEnumerable enumerable, string prefix = "") { + foreach (var value in enumerable) { + Debug.Log(prefix + value); + } + } } } \ No newline at end of file diff --git a/Assets/Project/Source/Utils/Enumeration/EnumeratorUtils.cs b/Assets/Project/Source/Utils/Enumeration/EnumeratorUtils.cs index d5e4fc6f..afeca58b 100644 --- a/Assets/Project/Source/Utils/Enumeration/EnumeratorUtils.cs +++ b/Assets/Project/Source/Utils/Enumeration/EnumeratorUtils.cs @@ -1,29 +1,42 @@ using System; -using System.Linq; using System.Collections; using System.Collections.Generic; +using System.Linq; using UnityEngine; -namespace Exa.Utils -{ - public static class EnumeratorUtils - { +namespace Exa.Utils { + public static class EnumeratorUtils { public static Coroutine DelayOneFrame(this MonoBehaviour monoBehaviour, Action callback) { - return monoBehaviour.StartCoroutine(DelayOneFrame(callback)); + return DelayOneFrame(callback).Start(monoBehaviour); + } + + public static bool MoveNext(this IEnumerator enumerator, out T current) { + var next = enumerator.MoveNext(); + current = enumerator.Current; + + return next; + } + + public static bool MoveNext(this IEnumerator enumerator, out object current) { + var next = enumerator.MoveNext(); + current = enumerator.Current; + + return next; } public static IEnumerator EnumerateSafe(IEnumerator enumerator, Action catcher) { while (true) { object current; + try { if (!enumerator.MoveNext()) { break; } current = enumerator.Current; - } - catch (Exception e) { + } catch (Exception e) { catcher(e); + yield break; } @@ -31,46 +44,77 @@ public static IEnumerator EnumerateSafe(IEnumerator enumerator, Action timeStamp + maxTimeDelta) { - yield return null; - timeStamp = Time.realtimeSinceStartup; + while (enumerator.MoveNext(out var current)) { + if (current is WorkUnit) { + if (Time.realtimeSinceStartup - timeStamp > maxTimeDelta) { + yield return null; + + timeStamp = Time.realtimeSinceStartup; + } + } else { + yield return current; } + } } - public static IEnumerator ReportForeachOperation(IEnumerable enumerable, Func func, - IProgress progress) { + public static IEnumerator ReportForeachOperation( + IEnumerable enumerable, + Func func, + IProgress progress + ) { var index = 0; var list = enumerable.ToList(); progress.Report(0); foreach (var item in list) { var enumerator = func(item); - while (enumerator.MoveNext()) yield return enumerator.Current; + + while (enumerator.MoveNext(out var current)) { + yield return current; + } index++; progress.Report((float) index / list.Count); } } - public static IEnumerator ReportForeachOperation(IEnumerable enumerable, Action action, - IProgress progress) { + public static IEnumerator ReportForeachOperation( + IEnumerable enumerable, + Action action, + IProgress progress + ) { var index = 0; var list = enumerable.ToList(); progress.Report(0); foreach (var item in list) { action(item); + yield return null; index++; @@ -91,5 +135,23 @@ public static IEnumerator Delay(Action callback, float seconds) { callback(); } + + public static IEnumerator OnceEverySecond(int seconds, Action secondCallback, Func timePasses = null) { + var time = 0f; + var currentSecond = -1; + + while (currentSecond < seconds) { + if (timePasses == null || timePasses()) { + if (time > currentSecond) { + currentSecond = Mathf.FloorToInt(time); + secondCallback(currentSecond); + } + + time += Time.deltaTime; + } + + yield return null; + } + } } } \ No newline at end of file diff --git a/Assets/Project/Source/Utils/Enumeration/WorkUnit.cs b/Assets/Project/Source/Utils/Enumeration/WorkUnit.cs new file mode 100644 index 00000000..75ef404c --- /dev/null +++ b/Assets/Project/Source/Utils/Enumeration/WorkUnit.cs @@ -0,0 +1,5 @@ +namespace Exa.Utils { + public class WorkUnit { + // TODO: Make initialization happen once to prevent GC Alloc + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Utils/Enumeration/WorkUnit.cs.meta b/Assets/Project/Source/Utils/Enumeration/WorkUnit.cs.meta new file mode 100644 index 00000000..ecdd004b --- /dev/null +++ b/Assets/Project/Source/Utils/Enumeration/WorkUnit.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bb999f733bf88f64fa1e32a8ff3ee7e7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Utils/ExceptionUtils.cs b/Assets/Project/Source/Utils/ExceptionUtils.cs index f39de400..c2404033 100644 --- a/Assets/Project/Source/Utils/ExceptionUtils.cs +++ b/Assets/Project/Source/Utils/ExceptionUtils.cs @@ -1,21 +1,18 @@ using System; using UnityEngine; -namespace Exa.Utils -{ - public static class ExceptionUtils - { +namespace Exa.Utils { + public static class ExceptionUtils { public static void LogToConsole(this Exception exception) { try { - var output = Systems.UI.console.output; + var output = S.UI.Console.output; output.BeginPrint("An uncaught exception was thrown"); output.DumpExceptionLogRecursively(exception); output.EndPrint(); - } - catch (Exception consoleException) { + } catch (Exception consoleException) { var message = "An exception has occurred while logging an exception to the console (seriously?)"; Debug.LogError(new Exception(message, consoleException)); - Systems.UI.logger.Log(message); + S.UI.Logger.LogException(message); } } } diff --git a/Assets/Project/Source/Utils/Hashing/HashHelpers.cs b/Assets/Project/Source/Utils/Hashing/HashHelpers.cs index a82c35f5..93c67f90 100644 --- a/Assets/Project/Source/Utils/Hashing/HashHelpers.cs +++ b/Assets/Project/Source/Utils/Hashing/HashHelpers.cs @@ -1,25 +1,26 @@ -namespace Exa.Utils.Hashing -{ - public static class HashHelpers - { +namespace Exa.Utils.Hashing { + public static class HashHelpers { /// - /// Get a deterministic hash code for the given string + /// Get a deterministic hash code for the given string /// /// /// public static int GetDeterministicHashCode(this string str) { unchecked { - int hash1 = (5381 << 16) + 5381; - int hash2 = hash1; + var hash1 = (5381 << 16) + 5381; + var hash2 = hash1; - for (int i = 0; i < str.Length; i += 2) { + for (var i = 0; i < str.Length; i += 2) { hash1 = ((hash1 << 5) + hash1) ^ str[i]; - if (i == str.Length - 1) + + if (i == str.Length - 1) { break; + } + hash2 = ((hash2 << 5) + hash2) ^ str[i + 1]; } - return hash1 + (hash2 * 1566083941); + return hash1 + hash2 * 1566083941; } } } diff --git a/Assets/Project/Source/Utils/IComparerExtensions.cs b/Assets/Project/Source/Utils/IComparerExtensions.cs new file mode 100644 index 00000000..0c2d7bea --- /dev/null +++ b/Assets/Project/Source/Utils/IComparerExtensions.cs @@ -0,0 +1,21 @@ +using System.Collections.Generic; + +namespace Exa.Utils { + public static class IComparerExtensions { + public static IComparer ReverseComparer(this IComparer comparer) { + return new ReversedComparer(comparer); + } + } + + public class ReversedComparer : IComparer { + private readonly IComparer originalComparer; + + public ReversedComparer(IComparer originalComparer) { + this.originalComparer = originalComparer; + } + + public int Compare(T x, T y) { + return -originalComparer.Compare(x, y); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Utils/IComparerExtensions.cs.meta b/Assets/Project/Source/Utils/IComparerExtensions.cs.meta new file mode 100644 index 00000000..3835eeb2 --- /dev/null +++ b/Assets/Project/Source/Utils/IComparerExtensions.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: dd2791040bbe405cb73424822dbfb977 +timeCreated: 1620920152 \ No newline at end of file diff --git a/Assets/Project/Source/Utils/InputActionExtensions.cs b/Assets/Project/Source/Utils/InputActionExtensions.cs new file mode 100644 index 00000000..73585fd6 --- /dev/null +++ b/Assets/Project/Source/Utils/InputActionExtensions.cs @@ -0,0 +1,18 @@ +using UnityEngine.InputSystem; + +namespace Exa.Utils { + public static class InputActionExtensions { + public static void SetEnabled(this InputAction inputAction, bool value) { + switch (inputAction.enabled) { + case false when value: + inputAction.Enable(); + + break; + case true when !value: + inputAction.Disable(); + + break; + } + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Utils/InputActionExtensions.cs.meta b/Assets/Project/Source/Utils/InputActionExtensions.cs.meta new file mode 100644 index 00000000..aa037f9a --- /dev/null +++ b/Assets/Project/Source/Utils/InputActionExtensions.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: ca07a84134454e7285a2fd7015e0c7d4 +timeCreated: 1614539642 \ No newline at end of file diff --git a/Assets/Project/Source/Utils/LayoutElementUtils.cs b/Assets/Project/Source/Utils/LayoutElementUtils.cs new file mode 100644 index 00000000..5e5ea402 --- /dev/null +++ b/Assets/Project/Source/Utils/LayoutElementUtils.cs @@ -0,0 +1,11 @@ +using UnityEngine; +using UnityEngine.UI; + +namespace Exa.Utils { + public static class LayoutElementUtils { + public static void SetPreferredSize(this LayoutElement layoutElement, Vector2 size) { + layoutElement.preferredWidth = size.x; + layoutElement.preferredHeight = size.y; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Utils/LayoutElementUtils.cs.meta b/Assets/Project/Source/Utils/LayoutElementUtils.cs.meta new file mode 100644 index 00000000..ef47bdc7 --- /dev/null +++ b/Assets/Project/Source/Utils/LayoutElementUtils.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 2c87817aa11a4ae188f1220ff8293c9d +timeCreated: 1614201886 \ No newline at end of file diff --git a/Assets/Project/Source/Utils/ListExtensions.cs b/Assets/Project/Source/Utils/ListExtensions.cs new file mode 100644 index 00000000..d3342c81 --- /dev/null +++ b/Assets/Project/Source/Utils/ListExtensions.cs @@ -0,0 +1,9 @@ +using System.Collections.Generic; + +namespace Exa.Utils { + public static class ListExtensions { + public static void AddRange(this List list, params T[] elements) { + list.AddRange(elements); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Utils/ListExtensions.cs.meta b/Assets/Project/Source/Utils/ListExtensions.cs.meta new file mode 100644 index 00000000..5359b97b --- /dev/null +++ b/Assets/Project/Source/Utils/ListExtensions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3b288c3b81bb25441aef9fd4c2f3a87e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Utils/NullExtensions.cs b/Assets/Project/Source/Utils/NullExtensions.cs new file mode 100644 index 00000000..46b2066f --- /dev/null +++ b/Assets/Project/Source/Utils/NullExtensions.cs @@ -0,0 +1,15 @@ +namespace Exa.Utils { + public static class NullExtensions { + public static bool IsNotNull(this T input, out T output) + where T : class { + output = input; + + return input.IsNotNull(); + } + + public static bool IsNotNull(this T input) + where T : class { + return input != null; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Utils/NullExtensions.cs.meta b/Assets/Project/Source/Utils/NullExtensions.cs.meta new file mode 100644 index 00000000..56fb8e15 --- /dev/null +++ b/Assets/Project/Source/Utils/NullExtensions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ee5ec042b3551fa4d94fe692e63d3bf2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Utils/NullableExtensions.cs b/Assets/Project/Source/Utils/NullableExtensions.cs new file mode 100644 index 00000000..ea57b6da --- /dev/null +++ b/Assets/Project/Source/Utils/NullableExtensions.cs @@ -0,0 +1,12 @@ +using System; + +namespace Exa.Utils { + public static class NullableExtensions { + public static bool GetHasValue(this T? nullable, out T value) + where T : struct { + value = nullable.GetValueOrDefault(); + + return nullable.HasValue; + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Utils/NullableExtensions.cs.meta b/Assets/Project/Source/Utils/NullableExtensions.cs.meta new file mode 100644 index 00000000..b4cdff7a --- /dev/null +++ b/Assets/Project/Source/Utils/NullableExtensions.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 8fb2f9f90b294dbd8fc6e317ccf437dd +timeCreated: 1630143112 \ No newline at end of file diff --git a/Assets/Project/Source/Utils/ObjectExtensions.cs b/Assets/Project/Source/Utils/ObjectExtensions.cs index 8423eae7..be0599d8 100644 --- a/Assets/Project/Source/Utils/ObjectExtensions.cs +++ b/Assets/Project/Source/Utils/ObjectExtensions.cs @@ -1,18 +1,20 @@ using UnityEngine; -namespace Exa.Utils -{ - public static class ObjectExtensions - { - public static GameObject Instantiate(this Object obj, GameObject prefab, Transform parent, string namePrefix = null) { +namespace Exa.Utils { + public static class ObjectExtensions { + public static GameObject Instantiate(GameObject prefab, Transform parent, string namePrefix = null) { var go = Object.Instantiate(prefab, parent); go.name = $"{namePrefix}: {go.GetInstanceID()}"; + return go; } - public static T InstantiateAndGet(this Object obj, GameObject prefab, Transform parent, string namePrefix = null) { - var go = Instantiate(obj, prefab, parent, namePrefix ?? typeof(T).Name); - return go.GetComponent(); + public static T Create(this GameObject prefab, Transform parent, string name = null) { + return Instantiate(prefab, parent, name ?? typeof(T).Name).GetComponent(); + } + + public static void Destroy(this Object @object) { + Object.Destroy(@object); } } } \ No newline at end of file diff --git a/Assets/Project/Source/Utils/PhysicsExtensions.cs b/Assets/Project/Source/Utils/PhysicsExtensions.cs new file mode 100644 index 00000000..b7937c4e --- /dev/null +++ b/Assets/Project/Source/Utils/PhysicsExtensions.cs @@ -0,0 +1,25 @@ +using System.Collections.Generic; +using System.Linq; +using Exa.Grids.Blocks; +using Exa.Grids.Blocks.BlockTypes; +using Exa.Ships; +using UnityEngine; + +namespace Exa.Utils { + public static class PhysicsExtensions { + public static IEnumerable RaycastAll(Vector2 start, Vector2 direction, float distance, ContextMask contextMask) { + return from hit in Physics2D.RaycastAll(start, direction, distance, contextMask.LayerMask) + let damageable = hit.collider.transform.GetComponent() + where damageable.PassesDamageMask(contextMask.BlockContextMask) + select new RaycastBlockHit { + hit = hit, + damageable = damageable + }; + } + } + + public struct RaycastBlockHit { + public RaycastHit2D hit; + public IDamageable damageable; + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Utils/PhysicsExtensions.cs.meta b/Assets/Project/Source/Utils/PhysicsExtensions.cs.meta new file mode 100644 index 00000000..8653a2fe --- /dev/null +++ b/Assets/Project/Source/Utils/PhysicsExtensions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3ffc5702107fff94d8abdfcf7158a683 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Utils/ProcessExtensions.cs b/Assets/Project/Source/Utils/ProcessExtensions.cs new file mode 100644 index 00000000..9025a574 --- /dev/null +++ b/Assets/Project/Source/Utils/ProcessExtensions.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading; + +namespace Exa.Utils { + public static class ProcessExtensions { + #if UNITY_STANDALONE_WIN || UNITY_EDITOR_WIN + [DllImport("User32.dll")] + private static extern bool SetForegroundWindow(IntPtr handle); + + public static void Focus(this Process process) { + SetForegroundWindow(process.MainWindowHandle); + } + #endif + public static int StartRedirected(this Process process, out List stdOut, out List errOut, int timeout = 5000) { + stdOut = new List(); + errOut = new List(); + + using var stdOutWaitHandle = new AutoResetEvent(false); + using var errOutWaitHandle = new AutoResetEvent(false); + + DataReceivedEventHandler GetHandler(AutoResetEvent handle, List streamOutput) { + return (sender, e) => { + if (e.Data == null) { + handle.Set(); + } else { + streamOutput.Add(e.Data); + } + }; + } + + process.OutputDataReceived += GetHandler(stdOutWaitHandle, stdOut); + process.ErrorDataReceived += GetHandler(errOutWaitHandle, errOut); + + if (!process.Start()) { + throw new Exception("Could not start process"); + } + + process.BeginOutputReadLine(); + process.BeginErrorReadLine(); + + if (process.WaitForExit(timeout) && + stdOutWaitHandle.WaitOne(timeout) && + errOutWaitHandle.WaitOne(timeout)) { + return process.ExitCode; + } + + throw new Exception("Timed out"); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Utils/ProcessExtensions.cs.meta b/Assets/Project/Source/Utils/ProcessExtensions.cs.meta new file mode 100644 index 00000000..796385c0 --- /dev/null +++ b/Assets/Project/Source/Utils/ProcessExtensions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 17f1ce3ad4b3f8b40819aaa8044def3e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Utils/PropertyAdapter.cs b/Assets/Project/Source/Utils/PropertyAdapter.cs new file mode 100644 index 00000000..4e710c31 --- /dev/null +++ b/Assets/Project/Source/Utils/PropertyAdapter.cs @@ -0,0 +1,35 @@ +using System.Collections.Generic; +using System.Linq; + +namespace Exa.Utils { + public class PropertyAdapter : IEnumerable { + private object obj; + + public PropertyAdapter(object obj) { + this.obj = obj; + } + + public override string ToString() { + return obj.ToString(); + } + + public object this[string name] { + get => obj.GetType().GetProperty(name)?.GetValue(obj, null); + } + + public IEnumerable<(string, object)> GetNamesAndValues() { + return this.Select(name => (name, this[name])); + } + + public IEnumerator GetEnumerator() { + return obj.GetType() + .GetProperties() + .Select(pi => pi.Name) + .GetEnumerator(); + } + + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { + return GetEnumerator(); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Utils/PropertyAdapter.cs.meta b/Assets/Project/Source/Utils/PropertyAdapter.cs.meta new file mode 100644 index 00000000..7ba51dd5 --- /dev/null +++ b/Assets/Project/Source/Utils/PropertyAdapter.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 653274f9930a47498e40c3735d9e7a1f +timeCreated: 1626808213 \ No newline at end of file diff --git a/Assets/Project/Source/Utils/RectTransformExtensions.cs b/Assets/Project/Source/Utils/RectTransformExtensions.cs new file mode 100644 index 00000000..e681e340 --- /dev/null +++ b/Assets/Project/Source/Utils/RectTransformExtensions.cs @@ -0,0 +1,21 @@ +using UnityEngine; + +namespace Exa.Utils { + public static class RectTransformExtensions { + public static void SetLeft(this RectTransform rt, float left) { + rt.offsetMin = new Vector2(left, rt.offsetMin.y); + } + + public static void SetRight(this RectTransform rt, float right) { + rt.offsetMax = new Vector2(-right, rt.offsetMax.y); + } + + public static void SetTop(this RectTransform rt, float top) { + rt.offsetMax = new Vector2(rt.offsetMax.x, -top); + } + + public static void SetBottom(this RectTransform rt, float bottom) { + rt.offsetMin = new Vector2(rt.offsetMin.x, bottom); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Utils/RectTransformExtensions.cs.meta b/Assets/Project/Source/Utils/RectTransformExtensions.cs.meta new file mode 100644 index 00000000..3aec2de9 --- /dev/null +++ b/Assets/Project/Source/Utils/RectTransformExtensions.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 9c8e4a6f451344b3b804b24079677caa +timeCreated: 1616253520 \ No newline at end of file diff --git a/Assets/Project/Source/Utils/RendererUtils.cs b/Assets/Project/Source/Utils/RendererUtils.cs new file mode 100644 index 00000000..fa79d0d8 --- /dev/null +++ b/Assets/Project/Source/Utils/RendererUtils.cs @@ -0,0 +1,18 @@ +using Exa.ShipEditor; +using UnityEngine; + +namespace Exa.Utils { + public static class RendererUtils { + public static Material CopyMaterial(this Renderer renderer) { + var materialCopy = new Material(renderer.material); + renderer.material = materialCopy; + + return materialCopy; + } + + public static void SetFlip(this SpriteRenderer renderer, BlockFlip flip) { + renderer.flipX = flip.HasValue(BlockFlip.FlipX); + renderer.flipY = flip.HasFlag(BlockFlip.FlipY); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Utils/RendererUtils.cs.meta b/Assets/Project/Source/Utils/RendererUtils.cs.meta new file mode 100644 index 00000000..dea80bc1 --- /dev/null +++ b/Assets/Project/Source/Utils/RendererUtils.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 766c4a9aef38c6f46966e188546fc782 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Utils/Singleton/MonoSingleton.cs b/Assets/Project/Source/Utils/Singleton/MonoSingleton.cs index bf22132b..ae6d2c76 100644 --- a/Assets/Project/Source/Utils/Singleton/MonoSingleton.cs +++ b/Assets/Project/Source/Utils/Singleton/MonoSingleton.cs @@ -1,34 +1,33 @@ using UnityEngine; -namespace Exa.Utils -{ +namespace Exa.Utils { public class MonoSingleton : MonoSingleton - where T : MonoSingleton - { - protected static T instance = null; + where T : MonoSingleton { + protected static T instance; /// - /// Static reference that can only be set once internally + /// Static reference that can only be set once internally /// public static T Instance { private set { - if (instance != null) - UnityEngine.Debug.LogWarning($"Instance value has already been set on type {typeof(T)}"); - else + if (instance != null) { + Debug.LogWarning($"Instance value has already been set on type {typeof(T)}"); + } else { instance = value; + } } get => instance; } /// - /// Get the component + /// Get the component /// protected virtual void Awake() { - if (instance == null) + if (instance == null) { Instance = GetComponent(); + } } } - public abstract class MonoSingleton : MonoBehaviour - { } + public abstract class MonoSingleton : MonoBehaviour { } } \ No newline at end of file diff --git a/Assets/Project/Source/Utils/StringExtensions.cs b/Assets/Project/Source/Utils/StringExtensions.cs index 442a25f1..77c17e00 100644 --- a/Assets/Project/Source/Utils/StringExtensions.cs +++ b/Assets/Project/Source/Utils/StringExtensions.cs @@ -1,14 +1,18 @@ using System; +using System.Collections.Generic; +using System.Linq; using System.Text; +using UnityEngine; +using Object = UnityEngine.Object; +using Random = System.Random; -namespace Exa.Utils -{ - public static class StringExtensions - { +namespace Exa.Utils { + public static class StringExtensions { public static char GetRandomChar() { var chars = "$%#@!*abcdefghijklmnopqrstuvwxyz1234567890?;:ABCDEFGHIJKLMNOPQRSTUVWXYZ^&"; var r = new Random(); var i = r.Next(chars.Length); + return chars[i]; } @@ -21,5 +25,82 @@ public static void AppendLineIndented(this StringBuilder sb, string line, int ta public static string Format(this string format, params object[] args) { return string.Format(format, args); } + + public static string GetUniqueName(string name, IEnumerable existingNames) { + string NextName(string currentName, int number) { + if (number != 0) { + currentName = $"{currentName}{number}"; + } + + return existingNames.Contains(currentName) + ? NextName(currentName, number + 1) + : currentName; + } + + return NextName(name, 0); + } + + public static void LogInstanceString(this Object obj) { + Debug.Log(GetInstanceString(obj)); + } + + public static string GetInstanceString(this Object obj) { + return $"{obj.name} : {obj.GetInstanceID()}"; + } + + public static string ToGenericString(this Type type) { + if (type.IsGenericType) { + var retType = new StringBuilder(); + var parentType = type.FullName.Split('`'); + // We will build the type here. + var arguments = type.GetGenericArguments(); + var argList = new StringBuilder(); + + foreach (var t in arguments) { + // Let's make sure we get the argument list. + var arg = ToGenericString(t); + + if (argList.Length > 0) { + argList.AppendFormat(", {0}", arg); + } else { + argList.Append(arg); + } + } + + if (argList.Length > 0) { + retType.AppendFormat("{0}<{1}>", parentType[0], argList); + } + + return retType.ToString(); + } + + return type.ToString(); + } + + public static string ToProperCase(this string value) { + // If there are 0 or 1 characters, just return the string. + if (value == null) { + return value; + } + + if (value.Length < 2) { + return value.ToUpper(); + } + + // Start with the first character. + var result = new StringBuilder(value.Substring(0, 1).ToUpper()); + + // Add the remaining characters. + for (var i = 1; i < value.Length; i++) { + if (char.IsUpper(value[i])) { + result.Append(" "); + } + + + result.Append(value[i]); + } + + return result.ToString(); + } } } \ No newline at end of file diff --git a/Assets/Project/Source/Utils/TableParserExtensions.cs b/Assets/Project/Source/Utils/TableParserExtensions.cs index c7dbfe8c..be45c981 100644 --- a/Assets/Project/Source/Utils/TableParserExtensions.cs +++ b/Assets/Project/Source/Utils/TableParserExtensions.cs @@ -1,52 +1,56 @@ -namespace Exa.Utils -{ - using System; - using System.Collections.Generic; - using System.Diagnostics; - using System.Linq; - using System.Linq.Expressions; - using System.Reflection; - using System.Text; - - public static class TableParserExtensions - { - public static string ToStringTable(this IEnumerable values, string[] columnHeaders, - params Func[] valueSelectors) { +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Linq.Expressions; +using System.Reflection; +using System.Text; + +namespace Exa.Utils { + public static class TableParserExtensions { + public static string ToStringTable( + this IEnumerable values, + string[] columnHeaders, + params Func[] valueSelectors + ) { return ToStringTable(values.ToArray(), columnHeaders, valueSelectors); } - public static string ToStringTable(this T[] values, string[] columnHeaders, - params Func[] valueSelectors) { + public static string ToStringTable( + this T[] values, + string[] columnHeaders, + params Func[] valueSelectors + ) { Debug.Assert(columnHeaders.Length == valueSelectors.Length); var arrValues = new string[values.Length + 1, valueSelectors.Length]; // Fill headers - for (int colIndex = 0; colIndex < arrValues.GetLength(1); colIndex++) { + for (var colIndex = 0; colIndex < arrValues.GetLength(1); colIndex++) { arrValues[0, colIndex] = columnHeaders[colIndex]; } // Fill table rows - for (int rowIndex = 1; rowIndex < arrValues.GetLength(0); rowIndex++) { - for (int colIndex = 0; colIndex < arrValues.GetLength(1); colIndex++) { - object value = valueSelectors[colIndex].Invoke(values[rowIndex - 1]); + for (var rowIndex = 1; rowIndex < arrValues.GetLength(0); rowIndex++) + for (var colIndex = 0; colIndex < arrValues.GetLength(1); colIndex++) { + var value = valueSelectors[colIndex].Invoke(values[rowIndex - 1]); - arrValues[rowIndex, colIndex] = value != null ? value.ToString() : "null"; - } + arrValues[rowIndex, colIndex] = value != null ? value.ToString() : "null"; } return ToStringTable(arrValues); } public static string ToStringTable(this string[,] arrValues) { - int[] maxColumnsWidth = GetMaxColumnsWidth(arrValues); + var maxColumnsWidth = GetMaxColumnsWidth(arrValues); var headerSpliter = new string('-', maxColumnsWidth.Sum(i => i + 3) - 1); var sb = new StringBuilder(); - for (int rowIndex = 0; rowIndex < arrValues.GetLength(0); rowIndex++) { - for (int colIndex = 0; colIndex < arrValues.GetLength(1); colIndex++) { + + for (var rowIndex = 0; rowIndex < arrValues.GetLength(0); rowIndex++) { + for (var colIndex = 0; colIndex < arrValues.GetLength(1); colIndex++) { // Print cell - string cell = arrValues[rowIndex, colIndex]; + var cell = arrValues[rowIndex, colIndex]; cell = cell.PadRight(maxColumnsWidth[colIndex]); sb.Append(" | "); sb.Append(cell); @@ -68,36 +72,39 @@ public static string ToStringTable(this string[,] arrValues) { private static int[] GetMaxColumnsWidth(string[,] arrValues) { var maxColumnsWidth = new int[arrValues.GetLength(1)]; - for (int colIndex = 0; colIndex < arrValues.GetLength(1); colIndex++) { - for (int rowIndex = 0; rowIndex < arrValues.GetLength(0); rowIndex++) { - int newLength = arrValues[rowIndex, colIndex].Length; - int oldLength = maxColumnsWidth[colIndex]; - - if (newLength > oldLength) { - maxColumnsWidth[colIndex] = newLength; - } + + for (var colIndex = 0; colIndex < arrValues.GetLength(1); colIndex++) + for (var rowIndex = 0; rowIndex < arrValues.GetLength(0); rowIndex++) { + var newLength = arrValues[rowIndex, colIndex].Length; + var oldLength = maxColumnsWidth[colIndex]; + + if (newLength > oldLength) { + maxColumnsWidth[colIndex] = newLength; } } return maxColumnsWidth; } - public static string ToStringTable(this IEnumerable values, - params Expression>[] valueSelectors) { + public static string ToStringTable( + this IEnumerable values, + params Expression>[] valueSelectors + ) { var headers = valueSelectors.Select(func => GetProperty(func).Name).ToArray(); var selectors = valueSelectors.Select(exp => exp.Compile()).ToArray(); + return ToStringTable(values, headers, selectors); } private static PropertyInfo GetProperty(Expression> expresstion) { - if (expresstion.Body is UnaryExpression) { - if ((expresstion.Body as UnaryExpression).Operand is MemberExpression) { - return ((expresstion.Body as UnaryExpression).Operand as MemberExpression).Member as PropertyInfo; + if (expresstion.Body is UnaryExpression expression) { + if (expression.Operand is MemberExpression memberExpression) { + return memberExpression.Member as PropertyInfo; } } - if ((expresstion.Body is MemberExpression)) { - return (expresstion.Body as MemberExpression).Member as PropertyInfo; + if (expresstion.Body is MemberExpression body) { + return body.Member as PropertyInfo; } return null; diff --git a/Assets/Project/Source/Utils/Texture2DExtensions.cs b/Assets/Project/Source/Utils/Texture2DExtensions.cs new file mode 100644 index 00000000..0eadfe5a --- /dev/null +++ b/Assets/Project/Source/Utils/Texture2DExtensions.cs @@ -0,0 +1,32 @@ +using System.Collections.Generic; +using Exa.Math; +using UnityEngine; + +namespace Exa.Utils { + public static class Texture2DExtensions { + public static Sprite CreateSprite(this Texture2D tex, float pixelsPerUnit = 32) { + var rect = new Rect(0, 0, tex.width, tex.height); + + return Sprite.Create(tex, rect, new Vector2(0.5f, 0.5f), pixelsPerUnit); + } + + public static Texture2D SetDefaults(this Texture2D tex) { + tex.filterMode = FilterMode.Point; + tex.EnumeratePixels().ForEach(pixel => tex.SetPixel(pixel, Color.clear)); + + return tex; + } + + public static IEnumerable EnumeratePixels(this Texture2D tex) { + return MathUtils.EnumerateVectors(tex.width, tex.height); + } + + public static Color GetPixel(this Texture2D tex, Vector2Int point) { + return tex.GetPixel(point.x, point.y); + } + + public static void SetPixel(this Texture2D tex, Vector2Int point, Color color) { + tex.SetPixel(point.x, point.y, color); + } + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Utils/Texture2DExtensions.cs.meta b/Assets/Project/Source/Utils/Texture2DExtensions.cs.meta new file mode 100644 index 00000000..962af3fa --- /dev/null +++ b/Assets/Project/Source/Utils/Texture2DExtensions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ebbef78432166fb4d910e261d00ab04d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Utils/Timer.cs b/Assets/Project/Source/Utils/Timer.cs index a4cee960..dbfe3b33 100644 --- a/Assets/Project/Source/Utils/Timer.cs +++ b/Assets/Project/Source/Utils/Timer.cs @@ -3,11 +3,9 @@ using Exa.Math; using UnityEngine; -namespace Exa.Utils -{ - public class Timer - { - private Dictionary callbackDict; +namespace Exa.Utils { + public class Timer { + private readonly Dictionary callbackDict; private float currentTime; public Timer() { @@ -16,14 +14,16 @@ public Timer() { public void Tick(float? time = null) { var delta = time ?? Time.deltaTime; + callbackDict .WhereKeys(callbackTime => currentTime.Between(callbackTime, callbackTime + delta)) - .Foreach(callback => callback()); + .ForEach(callback => callback()); + currentTime += delta; } public void OnTime(float time, Action callback) { callbackDict.Add(time, callback); - } + } } } \ No newline at end of file diff --git a/Assets/Project/Source/Utils/TransformExtensions.cs b/Assets/Project/Source/Utils/TransformExtensions.cs index 4cd7c266..3bdf9b00 100644 --- a/Assets/Project/Source/Utils/TransformExtensions.cs +++ b/Assets/Project/Source/Utils/TransformExtensions.cs @@ -1,12 +1,10 @@ using System.Collections.Generic; using UnityEngine; -namespace Exa.Utils -{ - public static class TransformExtensions - { +namespace Exa.Utils { + public static class TransformExtensions { /// - /// Provides type safe enumerator for a given transform + /// Provides type safe enumerator for a given transform /// /// /// @@ -27,5 +25,9 @@ public static void DestroyChildren(this Transform transform) { Object.Destroy(child.gameObject); } } + + public static RectTransform GetRectTransform(this Component behaviour) { + return behaviour.transform as RectTransform; + } } } \ No newline at end of file diff --git a/Assets/Project/Source/Utils/TweeningExtensions.cs b/Assets/Project/Source/Utils/TweeningExtensions.cs index 68fe39b4..1e9c0598 100644 --- a/Assets/Project/Source/Utils/TweeningExtensions.cs +++ b/Assets/Project/Source/Utils/TweeningExtensions.cs @@ -5,91 +5,128 @@ using UnityEngine.Experimental.Rendering.Universal; using UnityEngine.UI; -namespace Exa.Utils -{ - public static class TweeningExtensions - { +namespace Exa.Utils { + public static class TweeningExtensions { public static Tween Replace(this Tween tween, ref Tween oldTween) { oldTween?.Kill(); + return oldTween = tween; } - #region Shortcuts + #region Shortcuts - #region Transform + #region Transform - public static TweenerCore DORotate(this Transform target, - Vector3 endValue, float duration) { + public static TweenerCore DORotate( + this Transform target, + Vector3 endValue, + float duration + ) { return ShortcutExtensions.DORotate(target, endValue, duration); } - #endregion + #endregion - #region RectTransform + #region RectTransform - public static TweenerCore DOSizeDelta(this RectTransform target, - Vector2 endValue, float duration) { + public static TweenerCore DOSizeDelta( + this RectTransform target, + Vector2 endValue, + float duration + ) { return DOTweenModuleUI.DOSizeDelta(target, endValue, duration); } - public static TweenerCore DOAnchorPos(this RectTransform target, - Vector2 endValue, float duration) { + public static TweenerCore DOAnchorPos( + this RectTransform target, + Vector2 endValue, + float duration + ) { return DOTweenModuleUI.DOAnchorPos(target, endValue, duration); } - #endregion + #endregion - #region Text + #region Text - public static Tween DOFontSize(this Text target, - int endValue, float duration) { + public static Tween DOFontSize( + this Text target, + int endValue, + float duration + ) { return DOTween .To(() => target.fontSize, x => target.fontSize = x, endValue, duration) .SetTarget(target); } - #endregion + #endregion - #region LayoutElement + #region LayoutElement - public static TweenerCore DOPreferredHeight(this LayoutElement target, - float endValue, float duration) { + public static TweenerCore DOPreferredHeight( + this LayoutElement target, + float endValue, + float duration + ) { return DOTween .To(() => target.preferredHeight, x => target.preferredHeight = x, endValue, duration) .SetTarget(target); } - public static TweenerCore DOPreferredWidth(this LayoutElement target, - float endValue, float duration) { + public static TweenerCore DOPreferredWidth( + this LayoutElement target, + float endValue, + float duration + ) { return DOTween .To(() => target.preferredWidth, x => target.preferredWidth = x, endValue, duration) .SetTarget(target); } - #endregion + #endregion - #region HorizontalLayoutGroup + #region HorizontalLayoutGroup - public static TweenerCore DOSpacing(this HorizontalLayoutGroup target, - float endValue, float duration) { + public static TweenerCore DOSpacing( + this HorizontalLayoutGroup target, + float endValue, + float duration + ) { return DOTween .To(() => target.spacing, x => target.spacing = x, endValue, duration) .SetTarget(target); } - #endregion + #endregion - #region Lights + #region Lights - public static TweenerCore DOIntensity(this Light2D target, - float value, float time) { + public static TweenerCore DOIntensity( + this Light2D target, + float value, + float time + ) { return DOTween .To(() => target.intensity, x => target.intensity = x, value, time) .SetTarget(target); } - #endregion + #endregion + + #region LineRenderer + + public static TweenerCore DOWidthMultiplier( + this LineRenderer target, + float value, + float time + ) { + return DOTween + .To(() => target.widthMultiplier, x => target.widthMultiplier = x, value, time) + .SetTarget(target); + } + + #endregion - #endregion + #endregion } } \ No newline at end of file diff --git a/Assets/Project/Source/Utils/Types/TypeUtils.Reflection.cs b/Assets/Project/Source/Utils/Types/TypeUtils.Reflection.cs index 15d39b91..c7c1b032 100644 --- a/Assets/Project/Source/Utils/Types/TypeUtils.Reflection.cs +++ b/Assets/Project/Source/Utils/Types/TypeUtils.Reflection.cs @@ -2,15 +2,12 @@ using System.Collections.Generic; using System.Linq.Expressions; -namespace Exa.Utils -{ - public static partial class TypeUtils - { +namespace Exa.Utils { + public static class TypeUtils { public static IEnumerable> GetPropertyGetters(Type objectType = null) { if (objectType == null) { objectType = typeof(TObject); - } - else { + } else { if (!typeof(TObject).IsAssignableFrom(objectType)) { throw new Exception("Type mismatch"); } @@ -24,6 +21,7 @@ public static IEnumerable> GetPropertyGetters>(methodCall, input).Compile(); } } diff --git a/Assets/Project/Source/VFX.meta b/Assets/Project/Source/VFX.meta new file mode 100644 index 00000000..4e3de923 --- /dev/null +++ b/Assets/Project/Source/VFX.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8cc8b0ba0b3a337419685d6cdab332c0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/VFX/GaussCannonArcs.cs b/Assets/Project/Source/VFX/GaussCannonArcs.cs new file mode 100644 index 00000000..79ae6881 --- /dev/null +++ b/Assets/Project/Source/VFX/GaussCannonArcs.cs @@ -0,0 +1,107 @@ +using System.Collections.Generic; +using System.Linq; +using Exa.Audio; +using Exa.Data; +using Exa.Grids.Blocks.Components; +using Exa.Logging; +using Exa.Math; +using Exa.Types.Generics; +using Exa.UI.Tweening; +using Exa.Utils; +using UnityEditor; +using UnityEngine; +using MathUtils = Exa.Math.MathUtils; +using Random = System.Random; +#if UNITY_EDITOR +using UnityEditor.SceneManagement; + +#endif + +namespace Exa.VFX { + public class GaussCannonArcs : MonoBehaviour { + private static readonly int NoiseOffsetID = Shader.PropertyToID("_NoiseOffset"); + private static readonly int FlickeringOffsetID = Shader.PropertyToID("_FlickeringOffset"); + + [Header("Arc settings")] + [SerializeField] private ExaEase progressCurve; + [SerializeField] private int arcCount; + [SerializeField] private float arcDistance; + [SerializeField] private GameObject arcPrefab; + [SerializeField] private List arcs; + + private int prevActiveIndex = -1; + + public void SetChargeProgress(Scalar progress) { + var index = Mathf.CeilToInt(EvaluateProgress(progress) * (arcCount - 1f)); + + if (prevActiveIndex == index) { + return; + } + + prevActiveIndex = index; + + SetActiveUpTo(index); + } + + public void Reset() { + prevActiveIndex = -1; + + SetActiveUpTo(0); + } + + public void RandomizeMaterials() { + var random = new Random(); + var propertyBlock = new MaterialPropertyBlock(); + + foreach (var spriteRenderer in arcs.Select(arc => arc.GetComponent())) { + propertyBlock.SetVector(NoiseOffsetID, MathUtils.RandomVector2(10f)); + propertyBlock.SetFloat(FlickeringOffsetID, random.Next() % 1000); + spriteRenderer.SetPropertyBlock(propertyBlock); + } + } + + private float EvaluateProgress(float progress) { + var coilStep = progress.DivRem(GaussCannonBehaviour.StepSize , out var rem); + + return coilStep * GaussCannonBehaviour.StepSize // Get base progress (0 -> 0, 1 -> 0.33, 3 -> 0.67) + + progressCurve.Evaluate(rem / GaussCannonBehaviour.StepSize) * GaussCannonBehaviour.StepSize; // Get current step progress with curve + } + + private void SetActiveUpTo(int index) { + if (index > arcCount) { + Debug.LogWarning($"Index out of range {index}"); + + return; + } + + for (var i = 0; i < arcCount; i++) { + arcs[i].SetActive(i < index); + } + } + + #if UNITY_EDITOR + [ContextMenu("Create Arcs")] + private void CreateArcs() { + foreach (var child in transform.GetChildren().ToList()) { + DestroyImmediate(child.gameObject); + } + + arcs = new List(arcCount); + + for (var i = 0; i < arcCount; i++) { + var go = Instantiate(arcPrefab, transform); + go.name = $"Arc ({i})"; + go.transform.localPosition = new Vector3(i * arcDistance, 0); + go.SetActive(false); + + EditorUtility.SetDirty(go); + EditorSceneManager.MarkSceneDirty(go.scene); + + arcs.Add(go); + } + + EditorUtility.SetDirty(gameObject); + } + #endif + } +} \ No newline at end of file diff --git a/Assets/Project/Source/VFX/GaussCannonArcs.cs.meta b/Assets/Project/Source/VFX/GaussCannonArcs.cs.meta new file mode 100644 index 00000000..c62578fc --- /dev/null +++ b/Assets/Project/Source/VFX/GaussCannonArcs.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ff6b8f5cbe3613e4e9c1117404714da3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Project/Source/Validation/ErrorType.cs b/Assets/Project/Source/Validation/ErrorType.cs index 1b05087c..86d0ace3 100644 --- a/Assets/Project/Source/Validation/ErrorType.cs +++ b/Assets/Project/Source/Validation/ErrorType.cs @@ -1,7 +1,5 @@ -namespace Exa.Validation -{ - public enum ErrorType - { +namespace Exa.Validation { + public enum ErrorType { Error, Warning, Suggestion diff --git a/Assets/Project/Source/Validation/GenericValidationError.cs b/Assets/Project/Source/Validation/GenericValidationError.cs index 6021b305..e92272f5 100644 --- a/Assets/Project/Source/Validation/GenericValidationError.cs +++ b/Assets/Project/Source/Validation/GenericValidationError.cs @@ -1,17 +1,15 @@ -namespace Exa.Validation -{ - public class GenericValidationError : ValidationError - { - public override string Id { get; } - +namespace Exa.Validation { + public class GenericValidationError : ValidationError { public GenericValidationError(string id, string message) { - this.Id = id; - this.Message = message; + Id = id; + Message = message; } public GenericValidationError(string id, string message, ErrorType errorType) : this(id, message) { - this.ErrorType = errorType; + ErrorType = errorType; } + + public override string Id { get; } } } \ No newline at end of file diff --git a/Assets/Project/Source/Validation/IPlugableValidator.cs b/Assets/Project/Source/Validation/IPlugableValidator.cs new file mode 100644 index 00000000..7ec1f7e8 --- /dev/null +++ b/Assets/Project/Source/Validation/IPlugableValidator.cs @@ -0,0 +1,9 @@ +namespace Exa.Validation { + public interface IPlugableValidator : IValidator { + public ValidationResult Result { get; } + + void Add(); + + void Remove(); + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Validation/IPlugableValidator.cs.meta b/Assets/Project/Source/Validation/IPlugableValidator.cs.meta new file mode 100644 index 00000000..6974e592 --- /dev/null +++ b/Assets/Project/Source/Validation/IPlugableValidator.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: cce00b9853324ff8a7d21f91effa588c +timeCreated: 1618084850 \ No newline at end of file diff --git a/Assets/Project/Source/Validation/IValidator.cs b/Assets/Project/Source/Validation/IValidator.cs index c3ba5b59..31abb878 100644 --- a/Assets/Project/Source/Validation/IValidator.cs +++ b/Assets/Project/Source/Validation/IValidator.cs @@ -1,19 +1,16 @@ -namespace Exa.Validation -{ +namespace Exa.Validation { /// - /// Supports an object that validates a model + /// Supports an object that validates a model /// /// Validation model - public interface IValidator : IValidator - { + public interface IValidator : IValidator { /// - /// Validate the model and return a result + /// Validate the model and return a result /// /// Validation model /// Collection of errors ValidationResult Validate(T validationArgs); } - public interface IValidator - { } + public interface IValidator { } } \ No newline at end of file diff --git a/Assets/Project/Source/Validation/PlugableValidator.cs b/Assets/Project/Source/Validation/PlugableValidator.cs new file mode 100644 index 00000000..c0dc5679 --- /dev/null +++ b/Assets/Project/Source/Validation/PlugableValidator.cs @@ -0,0 +1,9 @@ +namespace Exa.Validation { + public abstract class PlugableValidator : Validator, IPlugableValidator { + public ValidationResult Result { get; protected set; } + + public abstract void Add(); + + public abstract void Remove(); + } +} \ No newline at end of file diff --git a/Assets/Project/Source/Validation/PlugableValidator.cs.meta b/Assets/Project/Source/Validation/PlugableValidator.cs.meta new file mode 100644 index 00000000..119dcee4 --- /dev/null +++ b/Assets/Project/Source/Validation/PlugableValidator.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 3fb0934e1d4b4e2b9ad85010576996c8 +timeCreated: 1618085203 \ No newline at end of file diff --git a/Assets/Project/Source/Validation/ValidationError.cs b/Assets/Project/Source/Validation/ValidationError.cs index b0f0c120..41bafd7d 100644 --- a/Assets/Project/Source/Validation/ValidationError.cs +++ b/Assets/Project/Source/Validation/ValidationError.cs @@ -1,14 +1,13 @@ -namespace Exa.Validation -{ +namespace Exa.Validation { /// - /// Supports a validation error + /// Supports a validation error /// - public abstract class ValidationError - { - protected ValidationError() { } - + public abstract class ValidationError { public ErrorType ErrorType { get; set; } = ErrorType.Error; public string Message { get; set; } - public virtual string Id => GetType().Name; + + public virtual string Id { + get => GetType().Name; + } } } \ No newline at end of file diff --git a/Assets/Project/Source/Validation/ValidationErrorContainerBuilder.cs b/Assets/Project/Source/Validation/ValidationErrorContainerBuilder.cs index acb2a244..5290da85 100644 --- a/Assets/Project/Source/Validation/ValidationErrorContainerBuilder.cs +++ b/Assets/Project/Source/Validation/ValidationErrorContainerBuilder.cs @@ -1,16 +1,30 @@ -using Exa.Generics; -using System; +using System; using System.Collections.Generic; +using Exa.Generics; -namespace Exa.Validation -{ - public class ValidationErrorContainerBuilder : IBuilder - { +namespace Exa.Validation { + public class ValidationErrorContainerBuilder : IBuilder { private readonly ValidationState container; private bool onUnhandledErrorSet; + public ValidationErrorContainerBuilder() { + container = new ValidationState(); + onUnhandledErrorSet = false; + } + /// - /// Get the error handler for a given validator + /// + /// + public ValidationState Build() { + if (!onUnhandledErrorSet) { + throw new BuilderException("OnUnhandledError must be called"); + } + + return container; + } + + /// + /// Get the error handler for a given validator /// /// validator identifier /// @@ -23,7 +37,7 @@ private IDictionary> GetHandlerDictionary(IValid } /// - /// Get the error cleaner for a given validator + /// Get the error cleaner for a given validator /// /// validator identifier /// @@ -35,13 +49,8 @@ private IDictionary> GetCleanerDictionary(IValid return container.errorHandlers[validator]; } - public ValidationErrorContainerBuilder() { - container = new ValidationState(); - onUnhandledErrorSet = false; - } - /// - /// Add error handler and cleaner callback + /// Add error handler and cleaner callback /// /// Type of error /// Validator identifier @@ -49,38 +58,34 @@ public ValidationErrorContainerBuilder() { /// Error handler callback /// Error cleaner callback /// Builder - public ValidationErrorContainerBuilder OnError(IValidator validator, string id, - Action errorHandler, Action errorCleaner) + public ValidationErrorContainerBuilder OnError( + IValidator validator, + string id, + Action errorHandler, + Action errorCleaner + ) where TError : ValidationError { GetHandlerDictionary(validator)[id] = errorHandler as Action; GetCleanerDictionary(validator)[id] = errorCleaner as Action; + return this; } /// - /// Add error handler and cleaner callback + /// Add error handler and cleaner callback /// /// Default error handler callback /// Default error cleaner callback /// Builder - public ValidationErrorContainerBuilder OnUnhandledError(Action fallbackHandler, - Action fallbackCleaner) { + public ValidationErrorContainerBuilder OnUnhandledError( + Action fallbackHandler, + Action fallbackCleaner + ) { container.defaultErrorHandler = fallbackHandler; container.defaultErrorCleaner = fallbackCleaner; onUnhandledErrorSet = true; - return this; - } - /// - /// - /// - /// - public ValidationState Build() { - if (!onUnhandledErrorSet) { - throw new BuilderException("OnUnhandledError must be called"); - } - - return container; + return this; } } } \ No newline at end of file diff --git a/Assets/Project/Source/Validation/ValidationErrorPanel.cs b/Assets/Project/Source/Validation/ValidationErrorPanel.cs index cf2c3aaa..06fff592 100644 --- a/Assets/Project/Source/Validation/ValidationErrorPanel.cs +++ b/Assets/Project/Source/Validation/ValidationErrorPanel.cs @@ -3,13 +3,11 @@ #pragma warning disable CS0649 -namespace Exa.Validation -{ +namespace Exa.Validation { /// - /// Validation error view + /// Validation error view /// - public class ValidationErrorPanel : MonoBehaviour - { + public class ValidationErrorPanel : MonoBehaviour { [SerializeField] private Text text; public string Text { diff --git a/Assets/Project/Source/Validation/ValidationOperationResult.cs b/Assets/Project/Source/Validation/ValidationOperationResult.cs index 3797efd6..aa0ff9a8 100644 --- a/Assets/Project/Source/Validation/ValidationOperationResult.cs +++ b/Assets/Project/Source/Validation/ValidationOperationResult.cs @@ -1,17 +1,15 @@ -namespace Exa.Validation -{ +namespace Exa.Validation { /// - /// Represents the result for a single validation operation + /// Represents the result for a single validation operation /// - public struct ValidationOperationResult - { + public struct ValidationOperationResult { /// - /// Error message if applicable + /// Error message if applicable /// public string Message { get; set; } /// - /// Whether the operation was valid + /// Whether the operation was valid /// public bool Valid { get; set; } } diff --git a/Assets/Project/Source/Validation/ValidationResult.cs b/Assets/Project/Source/Validation/ValidationResult.cs index eb8737a9..99542a97 100644 --- a/Assets/Project/Source/Validation/ValidationResult.cs +++ b/Assets/Project/Source/Validation/ValidationResult.cs @@ -3,24 +3,31 @@ using System.Collections.Generic; using System.Linq; -namespace Exa.Validation -{ - public class ValidationResult : IEnumerable - { +namespace Exa.Validation { + public class ValidationResult : IEnumerable { private readonly List collection; - public IValidator Validator { get; private set; } - internal ValidationResult(IValidator validator) { collection = new List(); Validator = validator; } + public IValidator Validator { get; } + + public IEnumerator GetEnumerator() { + return collection.GetEnumerator(); + } + + IEnumerator IEnumerable.GetEnumerator() { + return collection.GetEnumerator(); + } + public TError Throw(string errorMessage) where TError : ValidationError { var error = Activator.CreateInstance(); error.Message = errorMessage; collection.Add(error); + return error; } @@ -28,31 +35,35 @@ public TError Throw(string errorMessage, ErrorType errorType) where TError : ValidationError { var error = Throw(errorMessage); error.ErrorType = errorType; + return error; } public GenericValidationError Throw(string id, string errorMessage) { var error = new GenericValidationError(id, errorMessage); collection.Add(error); + return error; } public GenericValidationError Throw(string id, string errorMessage, ErrorType errorType) { var error = Throw(id, errorMessage); error.ErrorType = errorType; + return error; } /// - /// Test the predicate and on false add an error with the given error message + /// Test the predicate and on false add an error with the given error message /// /// Type of error thrown /// Error message /// Validation condition public void Assert(string errorMessage, bool predicate) where TError : ValidationError { - if (!predicate) + if (!predicate) { Throw(errorMessage); + } } public IEnumerable GetErrorsWith(ErrorType errorType) { @@ -63,20 +74,13 @@ public ValidationError GetFirstBySeverity() { return GetErrorsWith(ErrorType.Error).FirstOrDefault() ?? GetErrorsWith(ErrorType.Warning).FirstOrDefault() ?? - GetErrorsWith(ErrorType.Warning).FirstOrDefault(); - } - - public IEnumerator GetEnumerator() { - return collection.GetEnumerator(); - } - - IEnumerator IEnumerable.GetEnumerator() { - return collection.GetEnumerator(); + GetErrorsWith(ErrorType.Suggestion).FirstOrDefault(); } public static implicit operator bool(ValidationResult errors) { - if (ReferenceEquals(errors, null)) + if (ReferenceEquals(errors, null)) { throw new InvalidOperationException("Cannot implicitly check null validation result"); + } return errors.All(error => error.ErrorType != ErrorType.Error); } diff --git a/Assets/Project/Source/Validation/ValidationState.cs b/Assets/Project/Source/Validation/ValidationState.cs index b6c0dca3..6c646915 100644 --- a/Assets/Project/Source/Validation/ValidationState.cs +++ b/Assets/Project/Source/Validation/ValidationState.cs @@ -3,23 +3,20 @@ using System.Linq; using Exa.Utils; -namespace Exa.Validation -{ +namespace Exa.Validation { /// - /// Used as an error container for multiple validators + /// Used as an error container for multiple validators /// - public class ValidationState - { - // Keep track of error handlers in a nested dictionary - // Access the error handler or cleaner by [validator][error] - internal Dictionary>> errorHandlers; - - internal Dictionary>> errorCleaners; + public class ValidationState { + internal Action defaultErrorCleaner; // Default implementation for the error handlers or cleaners internal Action defaultErrorHandler; - internal Action defaultErrorCleaner; + internal Dictionary>> errorCleaners; + // Keep track of error handlers in a nested dictionary + // Access the error handler or cleaner by [validator][error] + internal Dictionary>> errorHandlers; // Keep track of errors thrown by a specific validator internal Dictionary> lastControlErrors; @@ -44,30 +41,38 @@ public void ApplyResults(ValidationResult errors) { var currErrorIds = errors.Select(error => error.Id); // Error handlers - foreach (var currentError in errors) { - // Check if there is a specific error handler for the error, otherwise use the default one - if (errorHandlers.NestedContainsKey(validator, currentError.Id)) + foreach (var currentError in errors) // Check if there is a specific error handler for the error, otherwise use the default one + { + if (errorHandlers.NestedContainsKey(validator, currentError.Id)) { errorHandlers[validator][currentError.Id](currentError); - else + } else { defaultErrorHandler(currentError); + } } - if (lastControlErrors.ContainsKey(validator)) { - // Get errors from the same validator that were handled last control, but are no longer present + if (lastControlErrors.ContainsKey(validator)) // Get errors from the same validator that were handled last control, but are no longer present + { foreach (var lastControlError in lastControlErrors[validator]) { // If error wasn't thrown in the last control, it doesn't need to be cleaned up - if (currErrorIds.Contains(lastControlError.Id)) continue; + if (currErrorIds.Contains(lastControlError.Id)) { + continue; + } // Check if there is a specific error handler for the error, otherwise use the default one - if (errorHandlers.NestedContainsKey(validator, lastControlError.Id)) + if (errorHandlers.NestedContainsKey(validator, lastControlError.Id)) { errorCleaners[validator][lastControlError.Id](lastControlError); - else + } else { defaultErrorCleaner(lastControlError); + } } } // Keep track of the thrown errors for the current validator lastControlErrors[validator] = errors; } + + public IEnumerable GetActiveErrors() { + return lastControlErrors.SelectMany(kvp => kvp.Value); + } } } \ No newline at end of file diff --git a/Assets/Project/Source/Validation/Validator.cs b/Assets/Project/Source/Validation/Validator.cs index cf125ee6..088aa026 100644 --- a/Assets/Project/Source/Validation/Validator.cs +++ b/Assets/Project/Source/Validation/Validator.cs @@ -1,10 +1,9 @@ -namespace Exa.Validation -{ - public abstract class Validator : IValidator - { +namespace Exa.Validation { + public abstract class Validator : IValidator { public ValidationResult Validate(T args) { var errors = new ValidationResult(this); AddErrors(errors, args); + return errors; } diff --git a/Assets/Project/Source/Weapons/AutocannonPart.cs b/Assets/Project/Source/Weapons/AutocannonPart.cs index 65d67d6e..0bcd42b3 100644 --- a/Assets/Project/Source/Weapons/AutocannonPart.cs +++ b/Assets/Project/Source/Weapons/AutocannonPart.cs @@ -1,28 +1,26 @@ -using UnityEngine; -using UnityEngine.Experimental.Rendering.Universal; -using DG.Tweening; -using Exa.Grids; -using Exa.Utils; +using Exa.Grids; using Exa.Grids.Blocks; +using Exa.Utils; +using UnityEngine; +using UnityEngine.Experimental.Rendering.Universal; #pragma warning disable CS0649 -namespace Exa.Weapons -{ - public class AutocannonPart : MonoBehaviour - { - [Header("References")] +namespace Exa.Weapons { + public class AutocannonPart : MonoBehaviour { + [Header("References")] [SerializeField] private FiringPoint firingPoint; [SerializeField] private Animation barrelAnimator; [SerializeField] private Light2D light2D; - [Header("Settings")] + [Header("Settings")] [SerializeField] private float peakIntensity; [SerializeField] private SpriteRenderer drumRenderer; [SerializeField] private Sprite drumNormal; [SerializeField] private Sprite drumCycling; private float animTime; + private IGridInstance parent; private void OnDisable() { StopAllCoroutines(); @@ -30,15 +28,23 @@ private void OnDisable() { public void Setup(float animTime, IGridInstance parent, BlockContext damageMask) { this.animTime = animTime; + this.parent = parent; barrelAnimator["BarrelAnimation"].speed = 1f / animTime; - firingPoint.Setup(parent, damageMask); + firingPoint.Setup(damageMask); } - public void Fire(float damage) { + public void Fire(float damage, float range) { barrelAnimator.Stop(); barrelAnimator.Play(); - firingPoint.Fire(damage); + firingPoint.Fire( + new Damage { + value = damage, + source = parent + }, + 80f, + range + ); light2D.intensity = peakIntensity; light2D.DOIntensity(0, 0.1f); diff --git a/Assets/Project/Source/Weapons/FiringPoint.cs b/Assets/Project/Source/Weapons/FiringPoint.cs index bb81514b..fd381432 100644 --- a/Assets/Project/Source/Weapons/FiringPoint.cs +++ b/Assets/Project/Source/Weapons/FiringPoint.cs @@ -1,29 +1,31 @@ -using Exa.Grids; -using Exa.Grids.Blocks; +using Exa.Grids.Blocks; using Exa.Utils; using UnityEngine; #pragma warning disable CS0649 -namespace Exa.Weapons -{ - public class FiringPoint : MonoBehaviour - { +namespace Exa.Weapons { + public class FiringPoint : MonoBehaviour { [SerializeField] private GameObject projectilePrefab; [SerializeField] private Transform spawnPoint; private BlockContext damageMask; - private object damageSource; - public void Setup(object damageSource, BlockContext damageMask) { + public void Setup(BlockContext damageMask) { this.damageMask = damageMask; - this.damageSource = damageSource; } - public void Fire(float damage) { + public void Fire(Damage damage, float speed, float range) { // TODO: Pool projectiles - this.InstantiateAndGet(projectilePrefab, GameSystems.SpawnLayer.projectiles) - .Setup(spawnPoint, 80f, 250f, damage, damageSource, damageMask); + projectilePrefab.Create(GS.SpawnLayer.projectiles) + .Setup( + spawnPoint, + speed, + range, + 1.5f, // TODO: Replace this by an actual value + damage, + damageMask + ); } } } \ No newline at end of file diff --git a/Assets/Project/Source/Weapons/Projectile.cs b/Assets/Project/Source/Weapons/Projectile.cs index 584bd40a..3eaa89d9 100644 --- a/Assets/Project/Source/Weapons/Projectile.cs +++ b/Assets/Project/Source/Weapons/Projectile.cs @@ -1,33 +1,22 @@ -using Exa.Grids; -using Exa.Grids.Blocks; -using Exa.Grids.Blocks.BlockTypes; -using Exa.Grids.Blocks.Components; +using Exa.Grids.Blocks; using Exa.Math; -using Exa.Ships; using UnityEngine; -namespace Exa.Weapons -{ - public class Projectile : MonoBehaviour - { +namespace Exa.Weapons { + /// + /// Basic penetrative projectile + /// Projectile is destroyed once the projectile goes beyond its range, or once it has dealt its full potential damage + /// + public class Projectile : MonoBehaviour { [SerializeField] private Rigidbody2D rb; - private float damage; - private float lifeTime; + private Damage damage; private BlockContext damageMask; + private float lifeTime; private float timeAlive; - private object damageSource; - - public void Setup(Transform transform, float speed, float range, float damage, object damageSource, BlockContext damageMask) { - this.transform.position = transform.position; - this.damage = damage; - this.lifeTime = range / speed; - this.damageSource = damageSource; - this.damageMask = damageMask; - - rb.velocity = transform.right * speed; - } public void Update() { + // Instead of tracking the distance from the spawn position for range logic, + // count the time the projectile is alive and compare it to its projected lifetime var deltaTime = Time.deltaTime; timeAlive += deltaTime; @@ -37,28 +26,46 @@ public void Update() { } public void OnTriggerEnter2D(Collider2D collider) { - var block = collider.gameObject.GetComponent(); - if (!block) { - Debug.LogError($"Collided with {collider.gameObject}, but found no block attached"); + var damageable = collider.GetComponent(); + + if (!damageable.PassesDamageMask(damageMask)) { return; } - if (!PassesDamageMask(block)) return; - var damageInstanceData = block.PhysicalBehaviour.AbsorbDamage(damageSource, damage); - damage -= damageInstanceData.absorbedDamage; + // Get the absorbed points of damage of the damageable, subtract from the pooled amount of damage + damage.value -= damageable.TakeDamage(damage).absorbedDamage; - if (damage <= 0f) { + // Once the pooled damage is below 0, destroy the projectile + if (damage.value <= 0f) { Destroy(gameObject); } } - private bool PassesDamageMask(Block block) { - if (block.Parent == null) { - Debug.LogError($"Block {block.GetInstanceID()} has no parent"); - return false; - } + // TODO: Set rotation of the projectile + /// + /// Set initial properties of the projectile + /// + /// Transform of the firing point for the projectile. + /// Position and heading are inherited from the spawn point + /// Units per second the projectile should be traveling at + /// Amount of units the projectile before it is destroyed + /// Degrees in max random offset direction to either side when spawning + /// Damage to apply when hitting damageable that pass the damage mask + /// BlockContext filter to apply when hitting damageables + public void Setup(Transform spawnPoint, float speed, float range, float inaccuracy, Damage damage, BlockContext damageMask) { + transform.position = spawnPoint.position; + lifeTime = range / speed; + this.damage = damage; + this.damageMask = damageMask; + + rb.velocity = GetDirection(spawnPoint.right * speed, inaccuracy); + } - return (block.Parent.BlockContext & damageMask) != 0; + private Vector2 GetDirection(Vector2 baseDirection, float randomOffsetRange) { + var angle = baseDirection.GetAngle(); + var halfOffset = randomOffsetRange / 2; + var randomOffset = Random.value.Remap(0, 1, -halfOffset, halfOffset); + return MathUtils.FromAngledMagnitude(baseDirection.magnitude, angle + randomOffset); } } } \ No newline at end of file diff --git a/Assets/Tests/MathUtilsTest.cs b/Assets/Tests/MathUtilsTest.cs index d44ab0bf..08b8a8eb 100644 --- a/Assets/Tests/MathUtilsTest.cs +++ b/Assets/Tests/MathUtilsTest.cs @@ -1,13 +1,10 @@ using NUnit.Framework; -namespace Tests -{ - public class MathUtilsTest - { +namespace Tests { + public class MathUtilsTest { // A Test behaves as an ordinary method [Test] - public void MathUtilsTestSimplePasses() - { + public void MathUtilsTestSimplePasses() { //var direction = Vector2.left.Rotate(60f); //var max = new Vector2(-2, -2); //var grownDirection = MathUtils.GrowDirectionToMax(direction, max); @@ -15,4 +12,4 @@ public void MathUtilsTestSimplePasses() //Assert.AreEqual(direction.normalized, grownDirection.normalized); } } -} +} \ No newline at end of file diff --git a/Packages/manifest.json b/Packages/manifest.json index 67d374fe..1aa2efac 100644 --- a/Packages/manifest.json +++ b/Packages/manifest.json @@ -3,24 +3,19 @@ "com.coffee.ui-effect": "4.0.0-preview.9", "com.unity.2d.sprite": "1.0.0", "com.unity.2d.tilemap": "1.0.0", - "com.unity.burst": "1.3.0-preview.12", - "com.unity.cinemachine": "2.6.0", - "com.unity.collab-proxy": "1.3.9", - "com.unity.collections": "0.12.0-preview.13", - "com.unity.dots.editor": "0.10.0-preview", - "com.unity.ext.nunit": "1.0.5", - "com.unity.ide.rider": "2.0.7", - "com.unity.ide.visualstudio": "2.0.5", + "com.unity.burst": "1.5.4", + "com.unity.cinemachine": "2.7.4", + "com.unity.collab-proxy": "1.7.1", + "com.unity.ext.nunit": "1.0.6", + "com.unity.ide.rider": "3.0.7", + "com.unity.ide.visualstudio": "2.0.9", "com.unity.ide.vscode": "1.2.3", - "com.unity.inputsystem": "1.0.1", - "com.unity.jobs": "0.2.9-preview.15", - "com.unity.physics": "0.3.2-preview", + "com.unity.inputsystem": "1.0.2", "com.unity.render-pipelines.lightweight": "10.2.2", - "com.unity.rendering.hybrid": "0.8.0-preview.19", - "com.unity.test-framework": "1.1.19", - "com.unity.textmeshpro": "3.0.3", + "com.unity.test-framework": "1.1.27", + "com.unity.textmeshpro": "3.0.6", "com.unity.ugui": "1.0.0", - "com.unity.ui.builder": "1.0.0-preview.7", + "com.unity.visualeffectgraph": "11.0.0", "com.xeleh.enhancer": "https://github.com/xeleh/enhancer.git", "com.unity.modules.ai": "1.0.0", "com.unity.modules.androidjni": "1.0.0", diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index 1e13542f..e1fdab50 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -20,92 +20,53 @@ "dependencies": {} }, "com.unity.burst": { - "version": "1.3.2", - "depth": 1, + "version": "1.5.4", + "depth": 0, "source": "registry", "dependencies": { - "com.unity.mathematics": "1.1.0" + "com.unity.mathematics": "1.2.1" }, "url": "https://packages.unity.com" }, "com.unity.cinemachine": { - "version": "2.6.0", + "version": "2.7.4", "depth": 0, "source": "registry", "dependencies": {}, "url": "https://packages.unity.com" }, "com.unity.collab-proxy": { - "version": "1.3.9", - "depth": 0, - "source": "registry", - "dependencies": {}, - "url": "https://packages.unity.com" - }, - "com.unity.collections": { - "version": "0.12.0-preview.13", - "depth": 0, - "source": "registry", - "dependencies": { - "com.unity.test-framework.performance": "2.3.1-preview", - "com.unity.burst": "1.3.2" - }, - "url": "https://packages.unity.com" - }, - "com.unity.dots.editor": { - "version": "0.10.0-preview", + "version": "1.7.1", "depth": 0, "source": "registry", "dependencies": { - "com.unity.entities": "0.14.0-preview.18", - "com.unity.properties": "1.4.3-preview", - "com.unity.serialization": "1.4.3-preview", - "com.unity.properties.ui": "1.4.3-preview", - "com.unity.jobs": "0.5.0-preview.14", - "com.unity.burst": "1.3.2", - "com.unity.test-framework.performance": "2.3.1-preview" - }, - "url": "https://packages.unity.com" - }, - "com.unity.entities": { - "version": "0.14.0-preview.19", - "depth": 1, - "source": "registry", - "dependencies": { - "com.unity.burst": "1.3.2", - "com.unity.collections": "0.12.0-preview.13", - "com.unity.properties": "1.3.1-preview", - "com.unity.mathematics": "1.1.0", - "com.unity.test-framework.performance": "2.3.1-preview", - "com.unity.serialization": "1.3.1-preview", - "com.unity.nuget.mono-cecil": "0.1.6-preview.2", - "com.unity.jobs": "0.5.0-preview.14", - "com.unity.scriptablebuildpipeline": "1.9.0", - "com.unity.platforms": "0.7.0-preview.8" + "com.unity.nuget.newtonsoft-json": "2.0.0" }, "url": "https://packages.unity.com" }, "com.unity.ext.nunit": { - "version": "1.0.5", + "version": "1.0.6", "depth": 0, "source": "registry", "dependencies": {}, "url": "https://packages.unity.com" }, "com.unity.ide.rider": { - "version": "2.0.7", + "version": "3.0.7", "depth": 0, "source": "registry", "dependencies": { - "com.unity.test-framework": "1.1.1" + "com.unity.ext.nunit": "1.0.6" }, "url": "https://packages.unity.com" }, "com.unity.ide.visualstudio": { - "version": "2.0.5", + "version": "2.0.9", "depth": 0, "source": "registry", - "dependencies": {}, + "dependencies": { + "com.unity.test-framework": "1.1.9" + }, "url": "https://packages.unity.com" }, "com.unity.ide.vscode": { @@ -116,111 +77,43 @@ "url": "https://packages.unity.com" }, "com.unity.inputsystem": { - "version": "1.0.1", + "version": "1.0.2", "depth": 0, "source": "registry", "dependencies": {}, "url": "https://packages.unity.com" }, - "com.unity.jobs": { - "version": "0.5.0-preview.14", - "depth": 1, - "source": "registry", - "dependencies": { - "com.unity.collections": "0.12.0-preview.13", - "com.unity.mathematics": "1.1.0" - }, - "url": "https://packages.unity.com" - }, "com.unity.mathematics": { - "version": "1.1.0", + "version": "1.2.1", "depth": 1, "source": "registry", "dependencies": {}, "url": "https://packages.unity.com" }, - "com.unity.nuget.mono-cecil": { - "version": "0.1.6-preview.2", - "depth": 2, - "source": "registry", - "dependencies": { - "nuget.mono-cecil": "0.1.6-preview" - }, - "url": "https://packages.unity.com" - }, "com.unity.nuget.newtonsoft-json": { - "version": "2.0.0-preview", - "depth": 2, - "source": "registry", - "dependencies": {}, - "url": "https://packages.unity.com" - }, - "com.unity.physics": { - "version": "0.3.2-preview", - "depth": 0, - "source": "registry", - "dependencies": { - "com.unity.burst": "1.3.0-preview.7", - "com.unity.collections": "0.7.1-preview.3", - "com.unity.entities": "0.9.0-preview.6", - "com.unity.jobs": "0.2.8-preview.3", - "com.unity.mathematics": "1.1.0", - "com.unity.test-framework": "1.1.11", - "com.unity.test-framework.performance": "1.3.3-preview", - "com.unity.modules.imgui": "1.0.0", - "com.unity.modules.jsonserialize": "1.0.0" - }, - "url": "https://packages.unity.com" - }, - "com.unity.platforms": { - "version": "0.7.0-preview.8", - "depth": 2, - "source": "registry", - "dependencies": { - "com.unity.properties": "1.3.1-preview", - "com.unity.properties.ui": "1.3.1-preview", - "com.unity.scriptablebuildpipeline": "1.6.4-preview", - "com.unity.searcher": "4.0.9", - "com.unity.serialization": "1.3.1-preview" - }, - "url": "https://packages.unity.com" - }, - "com.unity.postprocessing": { - "version": "2.3.0", + "version": "2.0.0", "depth": 1, "source": "registry", "dependencies": {}, "url": "https://packages.unity.com" }, - "com.unity.properties": { - "version": "1.4.3-preview", - "depth": 1, - "source": "registry", - "dependencies": { - "com.unity.nuget.mono-cecil": "0.1.6-preview.2", - "com.unity.test-framework.performance": "2.0.8-preview" - }, - "url": "https://packages.unity.com" - }, - "com.unity.properties.ui": { - "version": "1.4.3-preview", + "com.unity.postprocessing": { + "version": "3.1.1", "depth": 1, "source": "registry", "dependencies": { - "com.unity.properties": "1.4.3-preview", - "com.unity.serialization": "1.4.3-preview", - "com.unity.modules.uielements": "1.0.0" + "com.unity.modules.physics": "1.0.0" }, "url": "https://packages.unity.com" }, "com.unity.render-pipelines.core": { - "version": "10.2.2", - "depth": 2, - "source": "registry", + "version": "11.0.0", + "depth": 1, + "source": "builtin", "dependencies": { - "com.unity.ugui": "1.0.0" - }, - "url": "https://packages.unity.com" + "com.unity.ugui": "1.0.0", + "com.unity.modules.physics": "1.0.0" + } }, "com.unity.render-pipelines.lightweight": { "version": "10.2.2", @@ -233,85 +126,44 @@ "url": "https://packages.unity.com" }, "com.unity.render-pipelines.universal": { - "version": "10.2.2", + "version": "11.0.0", "depth": 1, - "source": "registry", + "source": "builtin", "dependencies": { "com.unity.mathematics": "1.1.0", - "com.unity.render-pipelines.core": "10.2.2", - "com.unity.shadergraph": "10.2.2" - }, - "url": "https://packages.unity.com" - }, - "com.unity.rendering.hybrid": { - "version": "0.8.0-preview.19", - "depth": 0, - "source": "registry", - "dependencies": { - "com.unity.entities": "0.14.0-preview.19" - }, - "url": "https://packages.unity.com" - }, - "com.unity.scriptablebuildpipeline": { - "version": "1.9.0", - "depth": 2, - "source": "registry", - "dependencies": {}, - "url": "https://packages.unity.com" + "com.unity.render-pipelines.core": "11.0.0", + "com.unity.shadergraph": "11.0.0" + } }, "com.unity.searcher": { - "version": "4.3.1", - "depth": 3, + "version": "4.3.2", + "depth": 2, "source": "registry", "dependencies": {}, "url": "https://packages.unity.com" }, - "com.unity.serialization": { - "version": "1.4.3-preview", - "depth": 1, - "source": "registry", - "dependencies": { - "com.unity.collections": "0.8.0-preview.5", - "com.unity.burst": "1.3.0-preview.12", - "com.unity.jobs": "0.2.9-preview.15", - "com.unity.properties": "1.4.3-preview", - "com.unity.test-framework.performance": "2.0.8-preview" - }, - "url": "https://packages.unity.com" - }, "com.unity.shadergraph": { - "version": "10.2.2", - "depth": 2, - "source": "registry", + "version": "11.0.0", + "depth": 1, + "source": "builtin", "dependencies": { - "com.unity.render-pipelines.core": "10.2.2", + "com.unity.render-pipelines.core": "11.0.0", "com.unity.searcher": "4.3.1" - }, - "url": "https://packages.unity.com" + } }, "com.unity.test-framework": { - "version": "1.1.19", + "version": "1.1.27", "depth": 0, "source": "registry", "dependencies": { - "com.unity.ext.nunit": "1.0.5", + "com.unity.ext.nunit": "1.0.6", "com.unity.modules.imgui": "1.0.0", "com.unity.modules.jsonserialize": "1.0.0" }, "url": "https://packages.unity.com" }, - "com.unity.test-framework.performance": { - "version": "2.3.1-preview", - "depth": 1, - "source": "registry", - "dependencies": { - "com.unity.test-framework": "1.1.0", - "com.unity.nuget.newtonsoft-json": "2.0.0-preview" - }, - "url": "https://packages.unity.com" - }, "com.unity.textmeshpro": { - "version": "3.0.3", + "version": "3.0.6", "depth": 0, "source": "registry", "dependencies": { @@ -328,12 +180,14 @@ "com.unity.modules.imgui": "1.0.0" } }, - "com.unity.ui.builder": { - "version": "1.0.0-preview.7", + "com.unity.visualeffectgraph": { + "version": "11.0.0", "depth": 0, - "source": "registry", - "dependencies": {}, - "url": "https://packages.unity.com" + "source": "builtin", + "dependencies": { + "com.unity.shadergraph": "11.0.0", + "com.unity.render-pipelines.core": "11.0.0" + } }, "com.xeleh.enhancer": { "version": "https://github.com/xeleh/enhancer.git", @@ -342,13 +196,6 @@ "dependencies": {}, "hash": "5e1d0a217b1697a06a4a6082f42fcfcab10c058a" }, - "nuget.mono-cecil": { - "version": "0.1.6-preview", - "depth": 3, - "source": "registry", - "dependencies": {}, - "url": "https://packages.unity.com" - }, "com.unity.modules.ai": { "version": "1.0.0", "depth": 0, diff --git a/ProjectExa.sln.DotSettings b/ProjectExa.sln.DotSettings index 207928ee..ef8cd9c4 100644 --- a/ProjectExa.sln.DotSettings +++ b/ProjectExa.sln.DotSettings @@ -1,6 +1,10 @@  + True + True True True + True + True True True True @@ -19,7 +23,9 @@ True True True + True True + True True True True \ No newline at end of file diff --git a/ProjectSettings/CommonBurstAotSettings.json b/ProjectSettings/CommonBurstAotSettings.json new file mode 100644 index 00000000..3dffdba7 --- /dev/null +++ b/ProjectSettings/CommonBurstAotSettings.json @@ -0,0 +1,6 @@ +{ + "MonoBehaviour": { + "Version": 3, + "DisabledWarnings": "" + } +} diff --git a/ProjectSettings/EditorSettings.asset b/ProjectSettings/EditorSettings.asset index bc7122d1..09d0d73f 100644 --- a/ProjectSettings/EditorSettings.asset +++ b/ProjectSettings/EditorSettings.asset @@ -3,8 +3,7 @@ --- !u!159 &1 EditorSettings: m_ObjectHideFlags: 0 - serializedVersion: 9 - m_ExternalVersionControlSupport: Visible Meta Files + serializedVersion: 11 m_SerializationMode: 2 m_LineEndingsForNewScripts: 0 m_DefaultBehaviorMode: 1 @@ -17,19 +16,25 @@ EditorSettings: m_EtcTextureNormalCompressor: 2 m_EtcTextureBestCompressor: 4 m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmref - m_ProjectGenerationRootNamespace: - m_CollabEditorSettings: - inProgressEnabled: 1 + m_ProjectGenerationRootNamespace: Exa m_EnableTextureStreamingInEditMode: 1 m_EnableTextureStreamingInPlayMode: 1 m_AsyncShaderCompilation: 1 + m_CachingShaderPreprocessor: 1 + m_PrefabModeAllowAutoSave: 1 m_EnterPlayModeOptionsEnabled: 0 m_EnterPlayModeOptions: 3 - m_ShowLightmapResolutionOverlay: 1 + m_GameObjectNamingDigits: 1 + m_GameObjectNamingScheme: 0 + m_AssetNamingUsesSpace: 1 m_UseLegacyProbeSampleCount: 1 + m_SerializeInlineMappingsOnOneLine: 0 + m_DisableCookiesInLightmapper: 1 m_AssetPipelineMode: 1 m_CacheServerMode: 0 m_CacheServerEndpoint: m_CacheServerNamespacePrefix: default m_CacheServerEnableDownload: 1 m_CacheServerEnableUpload: 1 + m_CacheServerEnableAuth: 0 + m_CacheServerEnableTls: 0 diff --git a/ProjectSettings/GraphicsSettings.asset b/ProjectSettings/GraphicsSettings.asset index 79407fec..dc8c78e1 100644 --- a/ProjectSettings/GraphicsSettings.asset +++ b/ProjectSettings/GraphicsSettings.asset @@ -28,6 +28,7 @@ GraphicsSettings: m_LensFlare: m_Mode: 1 m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} + m_VideoShadersIncludeMode: 2 m_AlwaysIncludedShaders: - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} @@ -59,5 +60,5 @@ GraphicsSettings: m_AlbedoSwatchInfos: [] m_LightsUseLinearIntensity: 0 m_LightsUseColorTemperature: 0 + m_DefaultRenderingLayerMask: 1 m_LogWhenShaderIsCompiled: 0 - m_AllowEnlightenSupportForUpgradedProject: 1 diff --git a/ProjectSettings/Physics2DSettings.asset b/ProjectSettings/Physics2DSettings.asset index ed4b101f..b643f61a 100644 --- a/ProjectSettings/Physics2DSettings.asset +++ b/ProjectSettings/Physics2DSettings.asset @@ -53,4 +53,4 @@ Physics2DSettings: m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} - m_LayerCollisionMatrix: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9fffffffefffffffaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + m_LayerCollisionMatrix: fff7fffcfff7fffcfff7fffcfffffffffff7fffcfff7fffcfffffffffffffffffff1fffcfff6fffdfffafffcc8f4fffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8f2fffec8f0fffdffffffffffffffffffffffffffffffffffffffffffffffff diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index dc2066a7..fa47cda4 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -3,7 +3,7 @@ --- !u!129 &1 PlayerSettings: m_ObjectHideFlags: 0 - serializedVersion: 20 + serializedVersion: 22 productGUID: 073129b63a62a9d4c9ec4641f497faf8 AndroidProfiler: 0 AndroidFilterTouchesWhenObscured: 0 @@ -119,48 +119,25 @@ PlayerSettings: stadiaTargetFramerate: 0 vulkanNumSwapchainBuffers: 3 vulkanEnableSetSRGBWrite: 0 + vulkanEnablePreTransform: 0 vulkanEnableLateAcquireNextImage: 0 + vulkanEnableCommandBufferRecycling: 1 m_SupportedAspectRatios: 4:3: 1 5:4: 1 16:10: 1 16:9: 1 Others: 1 - bundleVersion: Alpha 4 + bundleVersion: 0.5.0 preloadedAssets: - {fileID: 11400000, guid: 8b2f1ea3671662a4b9a219d617884990, type: 2} - - {fileID: 11400000, guid: 5e24a587ebe05b846aab9d6a048feba3, type: 2} + - {fileID: 0} metroInputSource: 0 wsaTransparentSwapchain: 0 m_HolographicPauseOnTrackingLoss: 1 xboxOneDisableKinectGpuReservation: 1 xboxOneEnable7thCore: 1 vrSettings: - cardboard: - depthFormat: 0 - enableTransitionView: 0 - daydream: - depthFormat: 0 - useSustainedPerformanceMode: 0 - enableVideoLayer: 0 - useProtectedVideoMemory: 0 - minimumSupportedHeadTracking: 0 - maximumSupportedHeadTracking: 1 - hololens: - depthFormat: 1 - depthBufferSharingEnabled: 1 - lumin: - depthFormat: 0 - frameTiming: 2 - enableGLCache: 0 - glCacheMaxBlobSize: 524288 - glCacheMaxFileSize: 8388608 - oculus: - sharedDepthBuffer: 1 - dashSupport: 1 - lowOverheadMode: 0 - protectedContext: 0 - v2Signing: 0 enable360StereoCapture: 0 isWsaHolographicRemotingEnabled: 0 enableFrameTimingStats: 0 @@ -172,8 +149,12 @@ PlayerSettings: androidSupportedAspectRatio: 1 androidMaxAspectRatio: 2.1 applicationIdentifier: - Standalone: com.Company.ProductName - buildNumber: {} + Standalone: com.Exa.ProjectExa + buildNumber: + Standalone: 0 + iPhone: 0 + tvOS: 0 + overrideDefaultApplicationIdentifier: 0 AndroidBundleVersionCode: 1 AndroidMinSdkVersion: 19 AndroidTargetSdkVersion: 0 @@ -227,8 +208,8 @@ PlayerSettings: iOSLaunchScreeniPadFillPct: 100 iOSLaunchScreeniPadSize: 100 iOSLaunchScreeniPadCustomXibPath: - iOSUseLaunchScreenStoryboard: 0 iOSLaunchScreenCustomStoryboardPath: + iOSLaunchScreeniPadCustomStoryboardPath: iOSDeviceRequirements: [] iOSURLSchemes: [] iOSBackgroundModes: 0 @@ -236,6 +217,7 @@ PlayerSettings: metalEditorSupport: 1 metalAPIValidation: 1 iOSRenderExtraFrameOnPause: 0 + iosCopyPluginsCodeInsteadOfSymlink: 0 appleDeveloperTeamID: iOSManualSigningProvisioningProfileID: tvOSManualSigningProvisioningProfileID: @@ -245,9 +227,17 @@ PlayerSettings: iOSRequireARKit: 0 iOSAutomaticallyDetectAndAddCapabilities: 1 appleEnableProMotion: 0 + shaderPrecisionModel: 0 clonedFromGUID: 5f34be1353de5cf4398729fda238591b templatePackageId: com.unity.template.2d@3.2.5 templateDefaultScene: Assets/Scenes/SampleScene.unity + useCustomMainManifest: 0 + useCustomLauncherManifest: 0 + useCustomMainGradleTemplate: 0 + useCustomLauncherGradleManifest: 0 + useCustomBaseGradleTemplate: 0 + useCustomGradlePropertiesTemplate: 0 + useCustomProguardFile: 0 AndroidTargetArchitectures: 1 AndroidSplashScreenScale: 0 androidSplashScreen: {fileID: 0} @@ -316,6 +306,9 @@ PlayerSettings: - m_BuildTarget: AndroidPlayer m_APIs: 150000000b000000 m_Automatic: 0 + - m_BuildTarget: iOSSupport + m_APIs: 10000000 + m_Automatic: 1 m_BuildTargetVRSettings: [] openGLRequireES31: 0 openGLRequireES31AEP: 0 @@ -327,6 +320,7 @@ PlayerSettings: tvOS: 1 m_BuildTargetGroupLightmapEncodingQuality: [] m_BuildTargetGroupLightmapSettings: [] + m_BuildTargetNormalMapEncoding: [] playModeTestRunnerEnabled: 0 runPlayModeTestAsEditModeTest: 0 actionOnDotNetUnhandledException: 1 @@ -344,6 +338,7 @@ PlayerSettings: switchScreenResolutionBehavior: 2 switchUseCPUProfiler: 0 switchUseGOLDLinker: 0 + switchLTOSetting: 0 switchApplicationID: 0x01004b9000490000 switchNSODependencies: switchTitleNames_0: @@ -361,6 +356,7 @@ PlayerSettings: switchTitleNames_12: switchTitleNames_13: switchTitleNames_14: + switchTitleNames_15: switchPublisherNames_0: switchPublisherNames_1: switchPublisherNames_2: @@ -376,6 +372,7 @@ PlayerSettings: switchPublisherNames_12: switchPublisherNames_13: switchPublisherNames_14: + switchPublisherNames_15: switchIcons_0: {fileID: 0} switchIcons_1: {fileID: 0} switchIcons_2: {fileID: 0} @@ -391,6 +388,7 @@ PlayerSettings: switchIcons_12: {fileID: 0} switchIcons_13: {fileID: 0} switchIcons_14: {fileID: 0} + switchIcons_15: {fileID: 0} switchSmallIcons_0: {fileID: 0} switchSmallIcons_1: {fileID: 0} switchSmallIcons_2: {fileID: 0} @@ -406,6 +404,7 @@ PlayerSettings: switchSmallIcons_12: {fileID: 0} switchSmallIcons_13: {fileID: 0} switchSmallIcons_14: {fileID: 0} + switchSmallIcons_15: {fileID: 0} switchManualHTML: switchAccessibleURLs: switchLegalInformation: @@ -468,6 +467,9 @@ PlayerSettings: switchSocketInitializeEnabled: 1 switchNetworkInterfaceManagerInitializeEnabled: 1 switchPlayerConnectionEnabled: 1 + switchUseNewStyleFilepaths: 0 + switchUseMicroSleepForYield: 1 + switchMicroSleepForYieldTime: 25 ps4NPAgeRating: 12 ps4NPTitleSecret: ps4NPTrophyPackPath: @@ -538,6 +540,7 @@ PlayerSettings: ps4videoRecordingFeaturesUsed: 0 ps4contentSearchFeaturesUsed: 0 ps4CompatibilityPS5: 0 + ps4AllowPS5Detection: 0 ps4GPU800MHz: 1 ps4attribEyeToEyeDistanceSettingVR: 0 ps4IncludedModules: [] @@ -563,7 +566,7 @@ PlayerSettings: webGLThreadsSupport: 0 webGLDecompressionFallback: 0 scriptingDefineSymbols: - 1: UNITY_POST_PROCESSING_STACK_V2 + 1: UNITY_POST_PROCESSING_STACK_V2;ENABLE_BLOCK_LOGS 4: UNITY_POST_PROCESSING_STACK_V2 7: UNITY_POST_PROCESSING_STACK_V2 13: UNITY_POST_PROCESSING_STACK_V2 @@ -575,16 +578,24 @@ PlayerSettings: 28: UNITY_POST_PROCESSING_STACK_V2 29: UNITY_POST_PROCESSING_STACK_V2 30: UNITY_POST_PROCESSING_STACK_V2 + 32: UNITY_POST_PROCESSING_STACK_V2 + 33: UNITY_POST_PROCESSING_STACK_V2 + additionalCompilerArguments: {} platformArchitecture: {} - scriptingBackend: {} - il2cppCompilerConfiguration: {} + scriptingBackend: + Standalone: 0 + il2cppCompilerConfiguration: + Standalone: 0 managedStrippingLevel: {} incrementalIl2cppBuild: {} - allowUnsafeCode: 0 + suppressCommonWarnings: 1 + allowUnsafeCode: 1 useDeterministicCompilation: 1 + enableRoslynAnalyzers: 1 additionalIl2CppArgs: scriptingRuntimeVersion: 1 gcIncremental: 0 + assemblyVersionValidation: 1 gcWBarrierValidation: 0 apiCompatibilityLevelPerPlatform: {} m_RenderingPath: 1 @@ -634,6 +645,7 @@ PlayerSettings: XboxOneCapability: [] XboxOneGameRating: {} XboxOneIsContentPackage: 0 + XboxOneEnhancedXboxCompatibilityMode: 0 XboxOneEnableGPUVariability: 1 XboxOneSockets: {} XboxOneSplashScreen: {fileID: 0} @@ -642,10 +654,7 @@ PlayerSettings: XboxOneXTitleMemory: 8 XboxOneOverrideIdentityName: XboxOneOverrideIdentityPublisher: - vrEditorSettings: - daydream: - daydreamIconForeground: {fileID: 0} - daydreamIconBackground: {fileID: 0} + vrEditorSettings: {} cloudServicesEnabled: UNet: 1 luminIcon: @@ -660,12 +669,12 @@ PlayerSettings: m_VersionCode: 1 m_VersionName: apiCompatibilityLevel: 6 + activeInputHandler: 1 cloudProjectId: framebufferDepthMemorylessMode: 0 + qualitySettingsNames: [] projectName: organizationId: cloudEnabled: 0 - enableNativePlatformBackendsForNewInputSystem: 1 - disableOldInputManagerSupport: 1 legacyClampBlendShapeWeights: 0 virtualTexturingSupportEnabled: 0 diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt index 0560e11d..b9bf3e6e 100644 --- a/ProjectSettings/ProjectVersion.txt +++ b/ProjectSettings/ProjectVersion.txt @@ -1,2 +1,2 @@ -m_EditorVersion: 2020.2.0f1 -m_EditorVersionWithRevision: 2020.2.0f1 (3721df5a8b28) +m_EditorVersion: 2021.1.16f1 +m_EditorVersionWithRevision: 2021.1.16f1 (5fa502fca597) diff --git a/ProjectSettings/QualitySettings.asset b/ProjectSettings/QualitySettings.asset index 7b9605d5..ca1ba605 100644 --- a/ProjectSettings/QualitySettings.asset +++ b/ProjectSettings/QualitySettings.asset @@ -148,7 +148,8 @@ QualitySettings: asyncUploadBufferSize: 16 asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 - customRenderPipeline: {fileID: 0} + customRenderPipeline: {fileID: 11400000, guid: ef22b03bac945dd489a22ea853dae38d, + type: 2} excludedTargetPlatforms: [] - serializedVersion: 2 name: Very High diff --git a/ProjectSettings/SceneTemplateSettings.json b/ProjectSettings/SceneTemplateSettings.json new file mode 100644 index 00000000..6f3e60fd --- /dev/null +++ b/ProjectSettings/SceneTemplateSettings.json @@ -0,0 +1,167 @@ +{ + "templatePinStates": [], + "dependencyTypeInfos": [ + { + "userAdded": false, + "type": "UnityEngine.AnimationClip", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEditor.Animations.AnimatorController", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.AnimatorOverrideController", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEditor.Audio.AudioMixerController", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.ComputeShader", + "ignore": true, + "defaultInstantiationMode": 1, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.Cubemap", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.GameObject", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEditor.LightingDataAsset", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": false + }, + { + "userAdded": false, + "type": "UnityEngine.LightingSettings", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.Material", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEditor.MonoScript", + "ignore": true, + "defaultInstantiationMode": 1, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.PhysicMaterial", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.PhysicsMaterial2D", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.PostProcessing.PostProcessResources", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.VolumeProfile", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEditor.SceneAsset", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": false + }, + { + "userAdded": false, + "type": "UnityEngine.Shader", + "ignore": true, + "defaultInstantiationMode": 1, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.ShaderVariantCollection", + "ignore": true, + "defaultInstantiationMode": 1, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.Texture", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.Texture2D", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.Timeline.TimelineAsset", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + } + ], + "defaultDependencyTypeInfo": { + "userAdded": false, + "type": "", + "ignore": false, + "defaultInstantiationMode": 1, + "supportsModification": true + }, + "newSceneOverride": 0 +} \ No newline at end of file diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset index 2e3d3f34..6fe8af4e 100644 --- a/ProjectSettings/TagManager.asset +++ b/ProjectSettings/TagManager.asset @@ -16,6 +16,7 @@ TagManager: - unit - blocks - projectile + - drones - - - @@ -28,9 +29,8 @@ TagManager: - - - - - - - - - + - editorTurrets + - editorGridItems - - - @@ -47,6 +47,9 @@ TagManager: - name: Prompt uniqueID: 1372706283 locked: 0 + - name: Lower-Overlay + uniqueID: 761055637 + locked: 0 - name: Overlay uniqueID: 842884435 locked: 0 diff --git a/ProjectSettings/UnityConnectSettings.asset b/ProjectSettings/UnityConnectSettings.asset index fa0b1465..6125b308 100644 --- a/ProjectSettings/UnityConnectSettings.asset +++ b/ProjectSettings/UnityConnectSettings.asset @@ -9,6 +9,7 @@ UnityConnectSettings: m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events m_EventUrl: https://cdp.cloud.unity3d.com/v1/events m_ConfigUrl: https://config.uca.cloud.unity3d.com + m_DashboardUrl: https://dashboard.unity3d.com m_TestInitMode: 0 CrashReportingSettings: m_EventUrl: https://perf-events.cloud.unity3d.com diff --git a/ProjectSettings/VFXManager.asset b/ProjectSettings/VFXManager.asset index 57825677..c258b1ce 100644 --- a/ProjectSettings/VFXManager.asset +++ b/ProjectSettings/VFXManager.asset @@ -10,3 +10,5 @@ VFXManager: m_RenderPipeSettingsPath: m_FixedTimeStep: 0.016666668 m_MaxDeltaTime: 0.05 + m_CompiledVersion: 2 + m_RuntimeVersion: 16 diff --git a/UserSettings/EditorUserSettings.asset b/UserSettings/EditorUserSettings.asset deleted file mode 100644 index 8726c9c3..00000000 --- a/UserSettings/EditorUserSettings.asset +++ /dev/null @@ -1,39 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!162 &1 -EditorUserSettings: - m_ObjectHideFlags: 0 - serializedVersion: 4 - m_ConfigSettings: - Advanced Settings: - value: 183b144645154b6805011b0314355e1e15121c1d233a2a343e6b4773e4e1382be78d2b - flags: 0 - Entity Inspector Settings: - value: 183b144645154b72031a09301e2253321714132f222c646a6d795159a2a07478a0c33ffaf7363e251a0de22c0b300431e63e101bf349504b170ff11d14950d - flags: 0 - RecentlyUsedScenePath-0: - value: 224247031146466b1f010627133710231512162f3f670131202c5326ece92021 - flags: 0 - RecentlyUsedScenePath-1: - value: 224247031146466b1f010627133710231512162f3f670b3124275326ece92021 - flags: 0 - UIBuilder.EditorExtensionModeKey: - value: 37434103 - flags: 0 - unity-properties__ui-persistent-state: - value: 183b144645154b7d0202082d05376c0417031d6876681d0d61435d73a2a07608e3e03fe7e62e36333731fb3d103b4365b2313461eb - flags: 0 - vcSharedLogLevel: - value: 0d5e400f0650 - flags: 0 - m_VCAutomaticAdd: 1 - m_VCDebugCom: 0 - m_VCDebugCmd: 0 - m_VCDebugOut: 0 - m_SemanticMergeMode: 2 - m_VCShowFailedCheckout: 1 - m_VCOverwriteFailedCheckoutAssets: 1 - m_VCProjectOverlayIcons: 1 - m_VCHierarchyOverlayIcons: 1 - m_VCOtherOverlayIcons: 1 - m_VCAllowAsyncUpdate: 0